cn.cuizuoli.appranking.service.AppRankingService.java Source code

Java tutorial

Introduction

Here is the source code for cn.cuizuoli.appranking.service.AppRankingService.java

Source

/*
 * Copyright 2014 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package cn.cuizuoli.appranking.service;

import java.util.List;

import javax.annotation.Resource;

import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.joda.time.DateTime;
import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.cuizuoli.appranking.model.AppRanking;
import cn.cuizuoli.appranking.repository.AppRankingDailyRepository;
import cn.cuizuoli.appranking.repository.AppRankingMonthlyRepository;
import cn.cuizuoli.appranking.repository.AppRankingRepository;
import cn.cuizuoli.appranking.repository.AppRankingSeqRepository;
import cn.cuizuoli.appranking.repository.AppRankingWeeklyRepository;

/**
 * AppRankingService
 * @author cuizuoli
 */
@Service
public class AppRankingService {

    @Resource
    private DataFieldMaxValueIncrementer appRankingIncrementer;

    @Resource
    private AppRankingRepository appRankingRepository;

    @Resource
    private AppRankingSeqRepository appRankingSeqRepository;

    @Resource
    private AppRankingDailyRepository appRankingDailyRepository;

    @Resource
    private AppRankingWeeklyRepository appRankingWeeklyRepository;

    @Resource
    private AppRankingMonthlyRepository appRankingMonthlyRepository;

    @Resource
    private SqlSessionFactory sqlSessionFactory;

    /**
     * add
     * @param appRanking
     */
    @Transactional
    public void add(AppRanking appRanking) {
        appRanking.setId(appRankingIncrementer.nextStringValue());
        appRanking.setDateHour(DateTime.now().toString("yyyyMMddHH"));
        appRankingRepository.insert(appRanking);
    }

    /**
     * batchAdd
     * @param appRankingList
     */
    @Transactional
    public void batchAdd(List<AppRanking> appRankingList) {
        SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
        AppRankingRepository batchAppRankingRepository = sqlSession.getMapper(AppRankingRepository.class);
        int i = 1;
        for (AppRanking appRanking : appRankingList) {
            appRanking.setId(appRankingIncrementer.nextStringValue());
            appRanking.setDateHour(DateTime.now().toString("yyyyMMddHH"));
            batchAppRankingRepository.insert(appRanking);
            if (i % 100 == 0) {
                sqlSession.commit();
            }
            i++;
        }
        sqlSession.commit();
        sqlSession.close();
    }

    /**
     * appRankingRepository
     */
    @Transactional
    public void resetSeq() {
        appRankingSeqRepository.update();
    }

    /**
     * addEod
     */
    @Transactional
    public void addEod() {
        appRankingDailyRepository.insert();
    }

    /**
     * addEow
     */
    @Transactional
    public void addEow() {
        appRankingWeeklyRepository.insert();
    }

    /**
     * addEom
     */
    @Transactional
    public void addEom() {
        appRankingMonthlyRepository.insert();
    }

    /**
     * deleteAppRankingHour
     */
    @Transactional
    public void deleteAppRankingHour() {
        String dateHour = DateTime.now().minusWeeks(1).toString("yyyyMMddHH");
        appRankingRepository.delete(dateHour);
        appRankingRepository.optimize();
    }
}