18 package org.turro.scheduler.motor;
20 import java.time.Duration;
21 import java.util.Date;
22 import java.util.concurrent.ScheduledFuture;
23 import org.turro.string.ObjectString;
24 import org.jdom.Element;
25 import org.turro.elephant.context.IConstructor;
26 import org.turro.elephant.impl.abstracts.AbstractImplementation;
35 private ScheduledFuture<?> future;
36 private String description, implementation, data;
37 private boolean active;
38 private Date startDate, endDate, lastExecuted;
48 return future ==
null ? true : future.isDone();
97 this.endDate = endDate;
102 return implementation;
107 implementation = value;
117 this.startDate = startDate;
121 this.lastExecuted = lastExecuted;
126 if(enoughTimeLapse(now) &&
127 (startDate ==
null || now.after(startDate)) &&
128 (endDate ==
null || now.before(endDate)) &&
137 lastExecuted =
new Date();
143 if(future !=
null && !future.isDone()) {
151 String s = root.getAttributeValue(
"active");
152 active =
"true".equals(s);
153 if(root.getAttributeValue(
"description") !=
null)
155 if(root.getAttributeValue(
"start-date") !=
null)
156 setStartDate((Date) ObjectString.parseString(root.getAttributeValue(
"start-date"), ObjectString.COMPRESSED_DATE_PATTERN, Date.class,
false));
157 if(root.getAttributeValue(
"end-date") !=
null)
158 setEndDate((Date) ObjectString.parseString(root.getAttributeValue(
"end-date"), ObjectString.COMPRESSED_DATE_PATTERN, Date.class,
false));
159 if(root.getAttributeValue(
"data") !=
null)
160 setData(root.getAttributeValue(
"data"));
166 Element el =
new Element(
"scheduled-task");
167 el.setAttribute(
"name",
getName());
170 el.setAttribute(
"active", active ?
"true" :
"false");
171 if(
getStartDate() !=
null) el.setAttribute(
"start-date", ObjectString.formatObject(
getStartDate(), ObjectString.COMPRESSED_DATE_PATTERN,
false));
172 if(
getEndDate() !=
null) el.setAttribute(
"end-date", ObjectString.formatObject(
getEndDate(), ObjectString.COMPRESSED_DATE_PATTERN,
false));
181 public abstract void run();
185 private boolean enoughTimeLapse(Date now) {
186 return lastExecuted ==
null || (Duration.between(lastExecuted.toInstant(), now.toInstant()).getSeconds() > (60 * 5));
boolean isValid(Date date)
void readXML(Element root)
void writeXML(Element root)
String getImplementation()
boolean shouldRun(Date now)
void readXML(Element root)
void setLastExecuted(Date lastExecuted)
void setDescription(String value)
void setData(String data)
abstract String getDataLabel()
void writeXML(Element root)
void setActive(boolean active)
IConstructor getConstructor()
void setStartDate(Date startDate)
void setEndDate(Date endDate)
abstract String getName()
Constraints getConstraints()
void setImplementation(String value)