読者です 読者をやめる 読者になる 読者になる

S2Chronos始めました(今更)

趣味で開発している野球リーグスコア管理システム
バッチ処理を新たに2つほど追加しました。

  • 30日間天気予報取得バッチ(6時間ごと)
  • 決め太郎スケジュール変更監視バッチ(4時間ごと)

使っているFWがSAStruts(Seasar2)なのでバッチはS2Chronos
少し設定ファイル書いてやればそのままデプロイできるので割と便利。

@Task
@CronTrigger(expression = "0 0 */6 * * ?")//6時間ごと
public class GetWeatherTask {
	@Resource
	public WeatherService weatherService;
	public List<Weather> weatherList;
	public HashMap<String,WeatherDto> response;

	private static Logger logger = Logger.getLogger("rootLogger");
	// タスク処理
	public void doExecute() {
		weatherList=weatherService.findAllOrderByRegTime();
		response=new HashMap<String,WeatherDto>();
		//テーブル全データ削除
		long t3=System.currentTimeMillis();
		for(int i=0;i<weatherList.size();i++){
			weatherService.delete(weatherList.get(i));
		}
		long t4=System.currentTimeMillis();
		WeatherAction weatherAction =new WeatherAction();
		response=weatherAction.get();
		long t5=System.currentTimeMillis();
		String date="";
		WeatherDto weatherDto= new WeatherDto();
		for(Map.Entry<String, WeatherDto> e : response.entrySet()) {
			date=e.getKey();
			weatherDto=e.getValue();
			Weather weatherBean= new Weather();
			BeanUtil.copyProperties(weatherDto, weatherBean);
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
			java.util.Date formatDate = null;
			String todayStr= new SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date()).replaceAll("-", "/");
			int year=Calendar.getInstance().get(Calendar.YEAR);
			java.util.Date today=null;
			try {
				formatDate = sdf.parse(year+"/"+date);
				today=sdf.parse(todayStr);
			} catch (ParseException e1) {
				e1.printStackTrace();
			}
			if(today.compareTo(formatDate)>0){
				weatherBean.date=Date.valueOf(String.valueOf(year+1)+"-"+date.replaceAll("/", "-"));
			}else{
				weatherBean.date=Date.valueOf(String.valueOf(year)+"-"+date.replaceAll("/", "-"));
			}
			weatherService.insert(weatherBean);
		}
		long t6=System.currentTimeMillis();
		logger.info("天気テーブル全削除:"+(t4-t3));
		logger.info("天気データ取得:"+(t5-t4));
		logger.info("天気データinsert:"+(t6-t5));
		logger.info("タスク終了");
	}
}