package com.android.dvci.event; import java.io.IOException; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; import com.android.dvci.conf.ConfEvent; import com.android.dvci.conf.ConfigurationException; import com.android.dvci.evidence.Markup; public class EventAfterinst extends BaseTimer { private int days; private Date date; @Override protected boolean parse(ConfEvent conf) { try { days = conf.getInt("days"); Markup markup = new Markup(this); Date now = new Date(); if (markup.isMarkup()) { date = (Date) markup.readMarkupSerializable(); } else { date = now; markup.writeMarkupSerializable(date); } } catch (ConfigurationException e) { return false; } catch (IOException e) { return false; } return true; } @Override protected void actualStart() { Calendar calendar = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT")); calendar.setTime(date); long nowMillis = calendar.getTimeInMillis(); calendar.add(Calendar.DAY_OF_MONTH, days); long triggerMillis = calendar.getTimeInMillis(); long delay = triggerMillis - nowMillis; if (delay > 0) { setDelay(delay); setPeriod(NEVER); } else { setDelay(SOON); } } @Override protected void actualStop() { onExit(); // di sicurezza } @Override protected void actualGo() { onEnter(); } }