package open.dolphin.mbean;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Properties;
import java.util.Timer;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.inject.Inject;
import open.dolphin.session.ChartEventServiceBean;
import open.dolphin.session.SystemServiceBean;
import open.orca.rest.ORCAConnection;
//import open.dolphin.updater.Updater;
/**
* スタートアップ時にUpdaterとStateServiceBeanを自動実行
* @author masuda, Masuda Naika
*/
@Singleton
@Startup
public class ServletStartup {
private static final Logger logger = Logger.getLogger(ServletStartup.class.getSimpleName());
@Inject
private ChartEventServiceBean eventServiceBean;
//s.oh^ 2014/07/08 クラウド0対応
@Inject
private SystemServiceBean systemServiceBean;
//s.oh$
// @Inject
// private Updater updater;
@PostConstruct
public void init() {
// updater.start();
eventServiceBean.start();
}
@PreDestroy
public void stop() {
}
// 日付が変わったらpvtListをクリアしクライアントに伝える
@Schedule(hour="0", minute="0", persistent=false)
public void dayChange() {
Logger.getLogger("open.dolphin").info("Renew pvtlist.");
eventServiceBean.renewPvtList();
}
@Timeout
public void timeout(Timer timer) {
logger.warning("ServletStartup: timeout occurred");
}
// @Schedule(dayOfWeek = "*", hour = "*", minute = "*", second = "*/5",year="2012", persistent = false)
// public void backgroundProcessing() {
// System.out.println("\n\n\t AutomaticSchedulerBean's backgroundProcessing() called....at: "+new Date());
// }
//s.oh^ 2014/07/08 クラウド0対応
/**
* 毎月の1日 AM 5:10 に先月のアクティビティをメールで管理者へ送信する
*/
@Schedule(dayOfMonth="1", hour="5", minute="0", persistent=false)
//@Schedule(hour="15", minute="0", persistent=false)
public void sendMonthlyActivities() {
Logger.getLogger("open.dolphin").info("Send monthly Activities.");
//minagawa^ custom.properties
// Properties config = new Properties();
// StringBuilder sb = new StringBuilder();
// sb.append(System.getProperty("jboss.home.dir"));
// sb.append(File.separator);
// sb.append("custom.properties");
// File f = new File(sb.toString());
// try {
// FileInputStream fin = new FileInputStream(f);
// InputStreamReader r = new InputStreamReader(fin, "JISAutoDetect");
// config.load(r);
// r.close();
// } catch (IOException ex) {
// ex.printStackTrace(System.err);
// throw new RuntimeException(ex.getMessage());
// }
Properties config = ORCAConnection.getInstance().getProperties();
//minagawa$
String zero = config.getProperty("cloud.zero");
if(zero != null && zero.equals("true")) {
// 先月の月と年
GregorianCalendar gc = new GregorianCalendar();
gc.add(Calendar.MONTH, -1);
int year = gc.get(Calendar.YEAR);
int month = gc.get(Calendar.MONTH);
// レポートメール
systemServiceBean.sendMonthlyActivities(year, month);
}
}
//s.oh$
}