JobEngineRemote getRemoteEngine();
- ScheduledJob getScheduledJob(String template);
+ ScheduledJob getScheduledJob(String template) throws Exception;
SchedulerService getScheduler();
void storeJob(IJobRuntime runtime);
- IJobRuntime submit(IJobRuntime parent, IJobStatusChangedListener statusListener, String template, String name, int priority, String owner,
+ IJobRuntime submit(IJobRuntime parent, IJobStatusChangedListener statusListener, String template, String name,
+ int priority, String owner, Map<String, Object> parameters) throws JobEngineException;
+
+ IJobRuntime submit(IJobRuntime parent, IJobStatusChangedListener statusListener, String template, String name,
Map<String, Object> parameters) throws JobEngineException;
- IJobRuntime submit(IJobRuntime parent, IJobStatusChangedListener statusListener, String template, String name, Map<String, Object> parameters)
+ IJobRuntime submit(IJobRuntime parent, String template, String name, int priority, Map<String, Object> parameters)
throws JobEngineException;
- IJobRuntime submit(IJobRuntime parent, String template, String name, int priority, Map<String, Object> parameters) throws JobEngineException;
-
IJobRuntime submit(String template, String name, Map<String, Object> parameters) throws JobEngineException;
- IJobRuntime submit(String template, String name, Map<String, Object> parameters, String owner) throws JobEngineException;
+ IJobRuntime submit(String template, String name, Map<String, Object> parameters, String owner)
+ throws JobEngineException;
void suspendExecutingJob(Throwable t, IJobRuntime jobRuntime);
package user.jobengine.server;\r
\r
+import java.util.ArrayList;\r
import java.util.List;\r
import java.util.Map;\r
+import java.util.Map.Entry;\r
\r
import com.ibm.nosql.json.api.BasicDBObject;\r
\r
\r
Map<String, IProgram> getPrograms();\r
\r
- Map<String, BasicDBObject> getSchedules();\r
+ ArrayList<Entry<String, BasicDBObject>> getSchedules();\r
\r
List<JobTemplate> getTemplates();\r
\r
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
}
@Override
- public ScheduledJob getScheduledJob(String template) {
- Map<String, BasicDBObject> schedules = jobEngineConfiguration.getSchedules();
- BasicDBObject schedule = schedules.get(template);
+ public ScheduledJob getScheduledJob(String template) throws Exception {
+ ArrayList<Entry<String, BasicDBObject>> schedules = jobEngineConfiguration.getSchedules();
+ BasicDBObject schedule = null;
+ boolean templateFirstOccurence = false;
+
+ for (int index = 0; index < schedules.size(); index++) {
+ if (schedules.get(index).getKey().equals(template)) {
+ if (!templateFirstOccurence) {
+ templateFirstOccurence = true;
+ schedule = schedules.get(index).getValue();
+ } else {
+ throw new Exception("Key " + template + " is already contained in scheduled jobs!");
+ }
+ }
+ }
+
if (schedule == null)
return null;
return jobEngineConfiguration.createScheduledJob(schedule, this);
private final Map<String, IJobStepExecutor> executors = new LinkedHashMap<String, IJobStepExecutor>();\r
private final Map<String, IProgram> programs = new LinkedHashMap<String, IProgram>();\r
private final List<JobTemplate> templates = Collections.synchronizedList(new ArrayList<JobTemplate>());\r
- private final Map<String, BasicDBObject> schedules = new LinkedHashMap<String, BasicDBObject>();\r
+ private final ArrayList<Entry<String, BasicDBObject>> schedules = new ArrayList<Entry<String, BasicDBObject>>();\r
private URLClassLoader stepsClassLoader;\r
private boolean resetStepClassLoader;\r
private GroovyClassLoader groovyClassLoader;\r
}\r
\r
@Override\r
- public Map<String, BasicDBObject> getSchedules() {\r
+ public ArrayList<Entry<String, BasicDBObject>> getSchedules() {\r
return schedules;\r
}\r
\r
String jsonConfig = new String(Files.readAllBytes(Paths.get(configFilePath)));\r
BasicDBObject dbo = (BasicDBObject) JSONUtil.jsonToDbObject(jsonConfig);\r
BasicDBList scheduleJobs = NoSQLUtils.asDBList(dbo, "joblist");\r
- ArrayList<Entry<String, BasicDBObject>> schedulesArraylist = new ArrayList<Entry<String, BasicDBObject>>();\r
\r
scheduleJobs.forEach(o -> {\r
try {\r
- boolean keyAlreadyContained = false;\r
BasicDBObject j = (BasicDBObject) o;\r
String template = j.getString("template");\r
String xml = loadTemplateXml(template);\r
j.put("xml", xml);\r
\r
- for (int index = 0; index < schedulesArraylist.size(); index++) {\r
- if (schedulesArraylist.get(index).getKey().equals(template)) {\r
- keyAlreadyContained = true;\r
- throw new Exception("Key " + template + " is already contained in scheduled jobs!");\r
- }\r
- }\r
-\r
- if (!keyAlreadyContained) {\r
- schedulesArraylist.add(new SimpleEntry<String, BasicDBObject>(template, j));\r
- }\r
+ schedules.add(new SimpleEntry<String, BasicDBObject>(template, j));\r
} catch (Exception e) {\r
logger.error("Scheduled job error! {}", e.getMessage());\r
}\r
});\r
-\r
- for (Entry<String, BasicDBObject> entry : schedulesArraylist) {\r
- schedules.put(entry.getKey(), entry.getValue());\r
- }\r
}\r
\r
private Set<File> getJavaFileList(Path path, String excludeFileName) {\r
package user.jobengine.server.scheduler;\r
\r
+import java.util.ArrayList;\r
import java.util.Arrays;\r
import java.util.List;\r
-import java.util.Map;\r
+import java.util.Map.Entry;\r
import java.util.UUID;\r
\r
import org.apache.commons.lang.StringUtils;\r
}\r
\r
@Override\r
- public void jobWasExecuted(JobExecutionContext paramJobExecutionContext, JobExecutionException paramJobExecutionException) {\r
+ public void jobWasExecuted(JobExecutionContext paramJobExecutionContext,\r
+ JobExecutionException paramJobExecutionException) {\r
listenerManager.removeJobListener(listenerName);\r
}\r
};\r
\r
private void scheduleJobs() {\r
IJobEngineConfiguration jobEngineConfiguration = jobEngine.getJobEngineConfiguration();\r
- Map<String, BasicDBObject> schedules = jobEngineConfiguration.getSchedules();\r
- for (BasicDBObject job : schedules.values()) {\r
+ ArrayList<Entry<String, BasicDBObject>> schedules = jobEngineConfiguration.getSchedules();\r
+ for (int index = 0; index < schedules.size(); index++) {\r
+ BasicDBObject job = schedules.get(index).getValue();\r
ScheduledJob scheduledJob = null;\r
try {\r
scheduledJob = jobEngineConfiguration.createScheduledJob(job, jobEngine);\r
}\r
\r
@Command\r
- public void execute() {\r
+ public void execute() throws Exception {\r
if (selectedJob == null)\r
return;\r
String template = selectedJob.getString("template");\r
}\r
\r
private void initJobList() {\r
- List<BasicDBObject> jobsCollection = new ArrayList<>(\r
- jobEngine.getJobEngineConfiguration().getSchedules().values());\r
+ List<BasicDBObject> jobsCollection = new ArrayList<BasicDBObject>();\r
+ for (int index = 0; index < jobEngine.getJobEngineConfiguration().getSchedules().size(); index++) {\r
+ jobsCollection.add(jobEngine.getJobEngineConfiguration().getSchedules().get(index).getValue());\r
+ }\r
+\r
Collections.sort(jobsCollection, (a, b) -> {\r
String aName = a.getString("name");\r
if (aName == null)\r