/* * Author: Joseph Wang */ package com.leadpoint.syndication.db.mongo.mortgage; import java.util.Calendar; import java.util.Date; import java.util.TimerTask; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.leadpoint.config.Meta; import com.leadpoint.syndication.global.mortgage.LoanPurposeEnum; public class MorgageOrderStatusUpdaterTask extends TimerTask { private static Meta META = Meta.getMeta(MorgageOrderStatusUpdaterTask.class); private static int refresh_rate = META.getInteger("refreshrate", 300000); private static boolean enable_auto_cache_clear = META.getBoolean("enable_auto_cache_clear", true); private static int cache_clear_day = META.getInteger("cache_clear_day", 1); private static int cache_clear_hour = META.getInteger("cache_clear_hour", 5); private static Log log = LogFactory.getLog(MorgageOrderStatusUpdaterTask.class); private static int last_update_month = 0; public MorgageOrderStatusUpdaterTask() { } public static int getRefreshRate() { return refresh_rate; } public void run() { Date now = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(now); cal.get(Calendar.DAY_OF_MONTH); int day_of_month = cal.get(Calendar.DAY_OF_MONTH); int hour_of_day = cal.get(Calendar.HOUR_OF_DAY); int current_month = cal.get(Calendar.MONTH); MortgageOrderStatusTableUpdater dbUpdater = new MortgageOrderStatusTableUpdater(); if (enable_auto_cache_clear && day_of_month == cache_clear_day && hour_of_day == cache_clear_hour && last_update_month != current_month) { log.info("MorgageOrderStatusUpdaterTask: clear cache"); dbUpdater.execute(LoanPurposeEnum.PURCHASE, true, true); dbUpdater.execute(LoanPurposeEnum.REFINANCE, true, true); last_update_month = cal.get(Calendar.MONTH); } else { dbUpdater.execute(LoanPurposeEnum.PURCHASE, false, false); dbUpdater.execute(LoanPurposeEnum.REFINANCE, false, false); } dbUpdater = null; } public void stop() { this.cancel(); } }