package th.co.ais.ssbsrfc.instance; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; import th.co.ais.ssbsrfc.utils.DateUtil; import th.co.ais.ssbsrfc.utils.Global; import th.co.ais.ssbsrfc.utils.Log; import ec02.utils.AppLog; public class ManageTime { private ArrayList listTimeout = new ArrayList(); private EC02Instance ec02Instance = null; public ManageTime() { } public ManageTime(EC02Instance ec02Instance) { this.setStart(ec02Instance, true); } public ManageTime(EC02Instance ec02Instance, boolean isSet) { this.setStart(ec02Instance, isSet); } public void setStart(EC02Instance ec02Instance, boolean isSet) { this.setEc02Instance(ec02Instance); if (isSet) { this.setListTimeout(ec02Instance.getAFInstance().getListTimeout()); } } public Date getNow() { Date date = Calendar.getInstance().getTime(); return date; } public int diffDate(Date date1, Date date2) { Calendar strF_Cal = Calendar.getInstance(); Calendar strL_Cal = Calendar.getInstance(); strF_Cal.setTime(date1); strL_Cal.setTime(date2); Calendar fCal = DateUtil.getCalendar(DateUtil.getDay(strF_Cal), DateUtil .getMonth(strF_Cal), DateUtil.getYear(strF_Cal), DateUtil .getHour(strF_Cal), DateUtil.getMinute(strF_Cal), DateUtil.getSecond(strF_Cal)); Calendar lCal = DateUtil.getCalendar(DateUtil.getDay(strL_Cal), DateUtil .getMonth(strL_Cal), DateUtil.getYear(strL_Cal), DateUtil.getHour(strL_Cal), DateUtil.getMinute(strL_Cal), DateUtil.getSecond(strL_Cal)); long lastLong = lCal.getTime().getTime(); long firstLong = fCal.getTime().getTime(); long diff = lastLong - firstLong; return (new Long(diff / 1000)).intValue(); } public String getTimeout(String name, String timeout) { Date now = this.getNow(); // System.out.println(name + ":" + timeout + ":" + now); String time = this.getTimeout(name, timeout, now); return time; } public String getTimeout(String name, String timeout, Date now) { String inputTimeStamp = Global.inputTimeStamp; for (Timeout item : this.getListTimeout()) { if (inputTimeStamp == null) { int second = item.getTimeout() - this.diffDate(item.getDate(), now); item.setNet(second); } else { if (!item.getInputTimeStamp().equals(inputTimeStamp)) { int second = item.getTimeout() - this.diffDate(item.getDate(), now); item.setNet(second); } else { item.setDate(now); } } } Timeout state = new Timeout(); state.setName(name); state.setInputTimeStamp(inputTimeStamp); state.setDate(now); state.setTimeout(Integer.parseInt(timeout)); state.setNet(Integer.parseInt(timeout)); this.getListTimeout().add(state); Collections.sort(this.getListTimeout(), new Comparator(){ public int compare(Timeout p1, Timeout p2) { return Integer.valueOf(p1.getNet()) .compareTo(Integer.valueOf(p2.getNet())); } }); this.getEc02Instance().getAFInstance().setListTimeout(this.getListTimeout()); String time = ""; if (this.getListTimeout().size() > 0) { time = String.valueOf(this.getListTimeout().get(0).getNet()); if (!time.matches("^\\d+$")) { time = "0"; } } ///////////////////////////////////////////////////// AppLog.d("####### TABLE TIMEOUT #######"); for (Timeout item : this.getListTimeout()) { AppLog.d("NAME :" + item.getName() + " DATE :" + item.getDate() + " TIME :" + item.getTimeout() + " NET :" + item.getNet()); // System.out.println("NAME :" + item.getName() + " DATE :" + item.getDate() + " TIME :" + item.getTimeout() + " NET :" + item.getNet()); } AppLog.d("############# END #############"); ///////////////////////////////////////////////////// return time; } public void setTimeout(String name, String timeout, Date now) { String inputTimeStamp = Global.inputTimeStamp; for (Timeout item : this.getListTimeout()) { if (inputTimeStamp == null) { int second = item.getTimeout() - this.diffDate(item.getDate(), now); item.setNet(second); } else { if (!item.getInputTimeStamp().equals(inputTimeStamp)) { int second = item.getTimeout() - this.diffDate(item.getDate(), now); item.setNet(second); } else { item.setDate(now); } } } Timeout state = new Timeout(); state.setName(name); state.setInputTimeStamp(inputTimeStamp); state.setDate(now); state.setTimeout(Integer.parseInt(timeout)); state.setNet(Integer.parseInt(timeout)); this.getListTimeout().add(state); Collections.sort(this.getListTimeout(), new Comparator(){ public int compare(Timeout p1, Timeout p2) { return Integer.valueOf(p1.getNet()) .compareTo(Integer.valueOf(p2.getNet())); } }); ///////////////////////////////////////////////////// AppLog.d("####### TABLE TIMEOUT #######"); for (Timeout item : this.getListTimeout()) { AppLog.d("NAME :" + item.getName() + " DATE :" + item.getDate() + " TIME :" + item.getTimeout() + " NET :" + item.getNet()); //System.out.println("NAME :" + item.getName() + " DATE :" + item.getDate() + " TIME :" + item.getTimeout() + " NET :" + item.getNet()); } AppLog.d("############# END #############"); ///////////////////////////////////////////////////// } public String getCalTime() { Date now = this.getNow(); for (Timeout item : this.getListTimeout()) { int second = item.getTimeout() - this.diffDate(item.getDate(), now); item.setNet(second); } Collections.sort(this.getListTimeout(), new Comparator(){ public int compare(Timeout p1, Timeout p2) { return Integer.valueOf(p1.getNet()).compareTo(Integer.valueOf(p2.getNet())); } }); String time = null; int second = 0; if (this.getListTimeout().size() > 0) { second = this.getListTimeout().get(0).getNet(); } if (second > 0) { time = "" + second; } return time; } public String getTime() { String time = null; int second = 0; if (this.getListTimeout().size() > 0) { second = this.getListTimeout().get(0).getNet(); } if (second > 0) { time = "" + second; } return time; } public Timeout getInsTime() { Date now = this.getNow(); for (Timeout item : this.getListTimeout()) { int second = item.getTimeout() - this.diffDate(item.getDate(), now); item.setNet(second); } Collections.sort(this.getListTimeout(), new Comparator(){ public int compare(Timeout p1, Timeout p2) { return Integer.valueOf(p1.getNet()).compareTo(Integer.valueOf(p2.getNet())); } }); Timeout ins = null; if (this.getListTimeout().size() > 0) { ins = this.getListTimeout().get(0); } return ins; } public List getState() { List list = this.getState(true); return list; } public List getState(boolean isSet) { Log.dev("####### TABLE TIMEOUT(OLD) #######"); for (Timeout item : this.getListTimeout()) { Log.dev("NAME :" + item.getName() + " DATE :" + item.getDate() + " TIME :" + item.getTimeout() + " NET :" + item.getNet()); // System.out.println("NAME :" + item.getName() + " DATE :" + item.getDate() + " TIME :" + item.getTimeout() + " NET :" + item.getNet()); } Log.dev("############# END #############"); Collections.sort(this.getListTimeout(), new Comparator(){ public int compare(Timeout p1, Timeout p2) { return Integer.valueOf(p1.getNet()).compareTo(Integer.valueOf(p2.getNet())); } }); int second = 0; List list = new ArrayList(); if (this.getListTimeout().size() > 0) { second = this.getListTimeout().get(0).getNet(); } List tmp = new ArrayList(); for (Timeout item : this.getListTimeout()) { if (item.getNet() == second) { tmp.add(item); list.add(item.getName()); } } for (Timeout timeout : tmp) { this.getListTimeout().remove(timeout); } if (isSet) { this.getEc02Instance().getAFInstance().setListTimeout(this.getListTimeout()); } Log.dev("####### TABLE TIMEOUT(NEW) #######"); for (Timeout item : this.getListTimeout()) { Log.dev("NAME :" + item.getName() + " DATE :" + item.getDate() + " TIME :" + item.getTimeout() + " NET :" + item.getNet()); // System.out.println("NAME :" + item.getName() + " DATE :" + item.getDate() + " TIME :" + item.getTimeout() + " NET :" + item.getNet()); } Log.dev("############# END #############"); return list; } public ArrayList getListTimeout() { return listTimeout; } public void setListTimeout(ArrayList listTimeout) { this.listTimeout = listTimeout; } public EC02Instance getEc02Instance() { return ec02Instance; } public void setEc02Instance(EC02Instance ec02Instance) { this.ec02Instance = ec02Instance; } }