package org.apache.synapse.task; import org.apache.axiom.om.OMElement; import java.util.*; import static java.util.Collections.unmodifiableList; import static java.util.Collections.unmodifiableMap; import static java.util.Collections.unmodifiableSet; public final class TaskDescription { public static final String CLASSNAME = "ClassName"; public static final String PROPERTIES = "Properties"; public static final String INSTANCE = "Instance"; public static final String DEFAULT_GROUP = "synapse.simple.quartz"; private String taskName; private String taskGroup; /** Name of the task manager class */ private String taskMgrClassName; /** Where to receive the message */ private int triggerCount = -1; private long triggerInterval = 0; private boolean isIntervalInMs = false; private String cronExpression; private Calendar startTime; private Calendar endTime; private List<String> pinnedServersList; /** Other properties */ private Map<String, String> properties; private Map<String, Object> resources; private final Set<OMElement> xmlProperties = new HashSet<OMElement>(); private String taskDescription; public String getName() { return taskName; } public void setName(String name) { this.taskName = name; } public void setProperties(Map<String, String> properties) { if (properties == null) { return; } if (this.properties == null) { this.properties = properties; return; } else { this.properties = new HashMap<String, String>(); } for (String key : properties.keySet()) { this.properties.put(key, properties.get(key)); } } public void addProperty(String name, String value) { if (properties == null) { properties = new HashMap<String, String>(); } if (name == null) { return; } properties.put(name, value); } public Object getProperty(String name) { return properties == null || name == null ? null : properties.get(name); } public Map<String, String> getProperties() { return properties == null ? Collections.<String, String>emptyMap() : unmodifiableMap(properties); } public String getTaskGroup() { return taskGroup; } public void setTaskGroup(String taskGroup) { this.taskGroup = taskGroup; } public String getTaskImplClassName() { if (getProperty(CLASSNAME) != null) { return (String) getProperty(CLASSNAME); } return taskMgrClassName; } public void setTaskImplClassName(String taskMgrClassName) { this.taskMgrClassName = taskMgrClassName; } public int getCount() { return triggerCount; } public void setCount(int count) { this.triggerCount = count; } public long getInterval() { return triggerInterval; } public boolean getIntervalInMs() { return isIntervalInMs; } public void setInterval(long interval) { this.triggerInterval = interval; } public List<String> getPinnedServers() { return pinnedServersList == null ? Collections.<String>emptyList() : unmodifiableList(pinnedServersList); } public void setPinnedServers(List<String> pinnedServersList) { if (pinnedServersList == null) { return; } this.pinnedServersList = pinnedServersList; } public String getCronExpression() { return cronExpression; } public void setCronExpression(String cronExpression) { this.cronExpression = cronExpression; } public Calendar getStartTime() { return startTime; } public void setStartTime(Calendar startTime) { this.startTime = startTime; } public Calendar getEndTime() { return endTime; } public void setEndTime(Calendar endTime) { this.endTime = endTime; } public void setIntervalInMs(boolean isIntervalInMs) { this.isIntervalInMs = isIntervalInMs; } public Map<String, Object> getResources() { return resources == null ? Collections.<String, Object>emptyMap() : unmodifiableMap(resources); } public void setResources(Map<String, Object> resources) { if (resources == null) { return; } this.resources = resources; } public void addResource(String key, Object value) { if (resources == null) { resources = new HashMap<String, Object>(); } if (key != null) { resources.put(key, value); } } public Object getResource(String key) { if (resources != null && key != null) { return resources.get(key); } return null; } public Set<OMElement> getXmlProperties() { return xmlProperties == null ? Collections.<OMElement>emptySet() : unmodifiableSet(xmlProperties); } public void setXmlProperty(OMElement property) { if (property == null) { return; } xmlProperties.add(property); } public String getTaskDescription() { return taskDescription; } public void setTaskDescription(String taskDescription) { if (taskDescription == null) { return; } this.taskDescription = taskDescription; } }