import org.apache.logging.log4j.Logger;\r
import org.quartz.CronExpression;\r
import org.zkoss.bind.annotation.AfterCompose;\r
+import org.zkoss.bind.annotation.BindingParam;\r
import org.zkoss.bind.annotation.Command;\r
import org.zkoss.bind.annotation.ContextParam;\r
import org.zkoss.bind.annotation.ContextType;\r
import user.jobengine.server.ast.ParameterDeclaration;\r
import user.jobengine.server.scheduler.ScheduledJob;\r
import user.jobengine.server.scheduler.SchedulerService;\r
-import user.jobengine.zk.validator.CronExpressionValidator;\r
-import user.jobengine.zk.validator.NameValidator;\r
-import user.jobengine.zk.validator.ParameterNameValidator;\r
-import user.jobengine.zk.validator.ParameterTypeValidator;\r
-import user.jobengine.zk.validator.ParameterValueValidator;\r
-import user.jobengine.zk.validator.TemplateNameValidator;\r
\r
public class JobEditorModel2 extends BaseModel {\r
private static final String XML = "xml";\r
private Checkbox activeCheckbox;\r
@Wire("#ExecuteImmediateCheckbox")\r
private Checkbox executeImmediateCheckbox;\r
+ @Wire("#NewParameterButton")\r
+ private Button NewParameterButton;\r
private boolean processDataChanged = false;\r
private IJobEngine jobEngine;\r
- private ListModelList<BasicDBObject> jobs;\r
- private BasicDBObject editedJob = new BasicDBObject();\r
- private BasicDBObject editingJob;\r
+ private ListModelList<BasicDBObject> jobs = new ListModelList<>();\r
+\r
+// private BasicDBObject editedJob = new BasicDBObject();\r
+ private BasicDBObject selectedJob = new BasicDBObject();\r
+ private BasicDBObject editingJob = new BasicDBObject();\r
private ListModelList<BasicDBObject> selectedJobs;\r
- private NameValidator nameValidator = new NameValidator(this);\r
- private TemplateNameValidator templateNameValidator = new TemplateNameValidator(this);\r
- private CronExpressionValidator cronExpressionValidator = new CronExpressionValidator(this);\r
- private ParameterNameValidator parameterNameValidator = new ParameterNameValidator(this);\r
- private ParameterTypeValidator parameterTypeValidator = new ParameterTypeValidator(this);\r
- private ParameterValueValidator parameterValueValidator = new ParameterValueValidator(this);\r
+// private ChangeValidator changeValidator = new ChangeValidator(this);\r
+// private TemplateNameValidator templateNameValidator = new TemplateNameValidator(this);\r
+// private CronExpressionValidator cronExpressionValidator = new CronExpressionValidator(this);\r
+// private ParameterNameValidator parameterNameValidator = new ParameterNameValidator(this);\r
+// private ParameterTypeValidator parameterTypeValidator = new ParameterTypeValidator(this);\r
+// private ParameterValueValidator parameterValueValidator = new ParameterValueValidator(this);\r
private String originalJobName;\r
- private String originalTemplateName;\r
+// private String originalTemplateName;\r
private boolean changedSinceLastSave = false;\r
private boolean parameterTypeChanged = false;\r
private boolean parameterNameChanged = false;\r
- private boolean templateNameChanged = false;\r
+// private boolean templateNameChanged = false;\r
private boolean jobsListModified;\r
+ private BasicDBObject originalJob = new BasicDBObject();\r
+ private ArrayList<String> dataTypes = new ArrayList<String>();\r
+ private int numberOfNewParams = 1;\r
+\r
+ public BasicDBObject getOriginalJob() {\r
+ return originalJob;\r
+ }\r
+\r
+ public void setOriginalJob(BasicDBObject originalJob) {\r
+ this.originalJob = originalJob;\r
+ }\r
\r
@AfterCompose\r
public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
\r
@Command\r
public void execute() throws Exception {\r
- if (editedJob == null)\r
+ if (selectedJob == null)\r
return;\r
- String template = editedJob.getString("template");\r
+ String template = selectedJob.getString("template");\r
\r
ScheduledJob scheduledJob = jobEngine.getScheduledJob(template);\r
\r
\r
@Command\r
public void saveButtonClicked() {\r
- if (processDataChanged) {\r
- setChangedSinceLastSave(true);\r
- setJobsListModified(true);\r
- saveData();\r
- }\r
- processDataChanged = false;\r
- saveButton.setDisabled(true);\r
+// if (processDataChanged) {\r
+// setChangedSinceLastSave(true);\r
+// setSelectedJob(editingJob);\r
+// setJobsListModified(true);\r
+ saveData();\r
+// }\r
+// processDataChanged = false;\r
+// saveButton.setDisabled(true);\r
}\r
\r
- private void saveData() {\r
- editedJob = NoSQLUtils.deepCopy(editingJob);\r
-\r
- logger.info("saveData()");\r
+ @NotifyChange("selectedJob")\r
+ @Command\r
+ public void onNewParameterClicked() {\r
+ logger.info("onNewParameterClicked()");\r
+ ((BasicDBList) selectedJob.get("parameters")).add(new BasicDBObject()\r
+ .append("name", "param".concat(String.valueOf(numberOfNewParams)))\r
+ .append("value", "default".concat(String.valueOf(numberOfNewParams))).append("type", dataTypes.get(8)));\r
+ numberOfNewParams++;\r
}\r
\r
+ @NotifyChange("selectedJob")\r
@Command\r
- public void onSelectJob() {\r
- setOriginalJobName(editingJob.getString("name"));\r
+ public void onParameterDelete(@BindingParam("toBeDeleted") BasicDBObject toBeDeleted) {\r
+ logger.info("onParameterDelete(toBeDeleted)");\r
+ ((BasicDBList) selectedJob.get("parameters")).remove(toBeDeleted);\r
}\r
\r
+ private void saveData() {\r
+ logger.info("saveData()");\r
+// NoSQLUtils.deepCopy(editingJob, selectedJob); \r
+ for (int i = 0; i < jobEngine.getJobEngineConfiguration().getSchedules().size(); i++) {\r
+ if (jobEngine.getJobEngineConfiguration().getSchedules().get(i).getValue().get("name")\r
+ .equals(selectedJob.get("name"))) {\r
+ ((BasicDBList) jobEngine.getJobEngineConfiguration().getSchedules().get(i).getValue().get("parameters"))\r
+ .putAll((BasicDBList) selectedJob.get("parameters"));\r
+ }\r
+ }\r
+ }\r
+\r
+// @Command\r
+// public void onSelectJob() {\r
+// setOriginalJobName(editingJob.getString("name"));\r
+// }\r
+\r
@Command\r
public void onActiveClicked() {\r
activeCheckbox.setDisabled(false);\r
return editingJob;\r
}\r
\r
- @NotifyChange("editingJob")\r
- public void setEditingJob(BasicDBObject editingJob) {\r
- this.editingJob = editingJob;\r
-\r
- if (editingJob == null) {\r
+// @NotifyChange("selectedJob")\r
+ public void setSelectedJob(BasicDBObject selectedJob) {\r
+ this.selectedJob = selectedJob;\r
+ NoSQLUtils.deepCopy(selectedJob, originalJob);\r
+ if (selectedJob == null) {\r
} else {\r
- String cronExpression = editingJob.getString(CRONEXPRESSION);\r
+ String cronExpression = selectedJob.getString(CRONEXPRESSION);\r
if (StringUtils.isBlank(cronExpression))\r
return;\r
\r
try {\r
CronExpression ce = new CronExpression(cronExpression);\r
Date nextTime = ce.getNextValidTimeAfter(new Date());\r
- editingJob.put(NEXT_TIME, nextTime);\r
+ selectedJob.put(NEXT_TIME, nextTime);\r
} catch (ParseException e) {\r
logger.catching(e);\r
}\r
return jobs;\r
}\r
\r
- public BasicDBObject getEditedJob() {\r
- return editedJob;\r
- }\r
+// public BasicDBObject getEditedJob() {\r
+// return editedJob;\r
+// }\r
\r
public ListModelList<BasicDBObject> getSelectedJobs() {\r
return selectedJobs;\r
\r
@Init\r
public void init() {\r
+ dataTypes.add("java.lang.Byte");\r
+ dataTypes.add("java.lang.Short");\r
+ dataTypes.add("java.lang.Integer");\r
+ dataTypes.add("java.lang.Long");\r
+ dataTypes.add("java.lang.Float");\r
+ dataTypes.add("java.lang.Double");\r
+ dataTypes.add("java.lang.Boolean");\r
+ dataTypes.add("java.lang.Char");\r
+ dataTypes.add("java.lang.String");\r
+ dataTypes.add("com.ibm.nosql.json.api.BasicDBList");\r
+ dataTypes.add("com.ibm.nosql.json.api.BasicDBObject");\r
+\r
jobEngine = (IJobEngine) Executions.getCurrent().getArg().get("jobEngine");\r
if (jobEngine == null)\r
jobEngine = ComponentBinder.getJobEngine();\r
}\r
\r
private void initJobList() {\r
+// setSelectedJob(null);\r
+ setEditingJob(null);\r
+ jobs.clear();\r
List<BasicDBObject> jobsCollection = new ArrayList<BasicDBObject>();\r
+\r
for (int index = 0; index < jobEngine.getJobEngineConfiguration().getSchedules().size(); index++) {\r
jobsCollection.add(jobEngine.getJobEngineConfiguration().getSchedules().get(index).getValue());\r
}\r
bName = b.getString("template");\r
return aName.toLowerCase().compareTo(bName.toLowerCase());\r
});\r
- jobs = new ListModelList<>(jobsCollection);\r
+ jobs.addAll(jobsCollection);\r
\r
}\r
\r
this.jobs = jobs;\r
}\r
\r
- @NotifyChange("editedJob")\r
- public void setEditedJob(BasicDBObject editedJob) {\r
- this.editedJob = editedJob;\r
-\r
- if (editedJob == null) {\r
- // reset cron next time display\r
- // reset editing job\r
- } else {\r
- String cronExpression = editedJob.getString(CRONEXPRESSION);\r
- if (StringUtils.isBlank(cronExpression))\r
- return;\r
-\r
- try {\r
- CronExpression ce = new CronExpression(cronExpression);\r
- Date nextTime = ce.getNextValidTimeAfter(new Date());\r
- editedJob.put(NEXT_TIME, nextTime);\r
- } catch (ParseException e) {\r
- logger.catching(e);\r
- }\r
-\r
- // update editingJob\r
- // notify editingJob changed\r
- }\r
- }\r
+// @NotifyChange("editedJob")\r
+// public void setEditedJob(BasicDBObject editedJob) {\r
+// this.editedJob = editedJob;\r
+//\r
+// if (editedJob == null) {\r
+// // reset cron next time display\r
+// // reset editing job\r
+// } else {\r
+// String cronExpression = editedJob.getString(CRONEXPRESSION);\r
+// if (StringUtils.isBlank(cronExpression))\r
+// return;\r
+//\r
+// try {\r
+// CronExpression ce = new CronExpression(cronExpression);\r
+// Date nextTime = ce.getNextValidTimeAfter(new Date());\r
+// editedJob.put(NEXT_TIME, nextTime);\r
+// } catch (ParseException e) {\r
+// logger.catching(e);\r
+// }\r
+//\r
+// // update editingJob\r
+// // notify editingJob changed\r
+// }\r
+// }\r
\r
public void setSelectedJobs(ListModelList<BasicDBObject> selectedJobs) {\r
this.selectedJobs = selectedJobs;\r
@Command\r
public void saveSchedulesJson() throws Exception {\r
logger.info("saveSchedulesJson()");\r
- if (jobsListModified) {\r
- jobEngine.getJobEngineConfiguration().saveSchedulesJson();\r
- setJobsListModified(false);\r
- }\r
+// if (jobsListModified) {\r
+ jobEngine.getJobEngineConfiguration().saveSchedulesJson();\r
+// setJobsListModified(false);\r
+// }\r
}\r
\r
@Command\r
if (currentTemplate.getName() != null) {\r
if (currentTemplate.getName().equals(originalJobName)) {\r
jt = currentTemplate;\r
- } else if (currentTemplate.getFileName().equals(originalTemplateName)) {\r
+ } else if (currentTemplate.getFileName().equals(selectedJob.getString("template"))) {\r
jt = currentTemplate;\r
}\r
} else if (currentTemplate.getFileName() != null) {\r
- if (currentTemplate.getFileName().equals(originalTemplateName)) {\r
+ if (currentTemplate.getFileName().equals(selectedJob.getString("template"))) {\r
jt = currentTemplate;\r
}\r
}\r
String simpleName = jt.getDeclarationSequence().getDeclarations().get(i).getType().getClass()\r
.getSimpleName();\r
if (simpleName.equals("ParameterDeclaration")) {\r
- String name = ((BasicDBObject) ((BasicDBList) editedJob.get("parameters")).get(j))\r
+ String name = ((BasicDBObject) ((BasicDBList) selectedJob.get("parameters")).get(j))\r
.getString("name");\r
- String type = ((BasicDBObject) ((BasicDBList) editedJob.get("parameters")).get(j))\r
+ String type = ((BasicDBObject) ((BasicDBList) selectedJob.get("parameters")).get(j))\r
.getString("type");\r
j++;\r
jt.getDeclarationSequence().getDeclarations().set(i, new ParameterDeclaration(name, type));\r
jt.setName(originalJobName);\r
}\r
\r
- if (templateNameChanged) {\r
- jt.setFileName(editedJob.getString("template"));\r
- }\r
+// if (templateNameChanged) {\r
+// jt.setFileName(selectedJob.getString("template"));\r
+// }\r
}\r
\r
jobEngine.getJobEngineConfiguration().saveTemplateXml(jt);\r
@Command\r
public void duplicateTemplate() {\r
if (editingJob != null) {\r
- if (originalTemplateName == null) {\r
- originalTemplateName = editingJob.getString("template");\r
- }\r
- jobEngine.getJobEngineConfiguration().duplicateTemplate(originalTemplateName);\r
- }\r
-// int indexOfTemplate = -1;\r
-// try {\r
-// JobTemplate jt = new JobTemplate();\r
-// if (editingJob != null) {\r
-// for (int i = 0; i < jobEngine.getJobEngineConfiguration().getTemplates().size(); i++) {\r
-// String name = jobEngine.getJobEngineConfiguration().getTemplates().get(i).getName();\r
-// if (name != null) {\r
-// if (name.equals(editingJob.getString("name"))) {\r
-// indexOfTemplate = i;\r
-// }\r
-// }\r
-// }\r
-//\r
-// if (indexOfTemplate > 0) {\r
-// jt = (JobTemplate) SerializationUtils\r
-// .clone(jobEngine.getJobEngineConfiguration().getTemplates().get(indexOfTemplate));\r
-// jt.setFileName(FilenameUtils.getName(jt.getFileName()).concat("-copy.xml"));\r
-// }\r
-// jobEngine.getJobEngineConfiguration().saveTemplateXml(jt);\r
+// if (originalTemplateName == null) {\r
+// originalTemplateName = editingJob.getString("template");\r
// }\r
-// } catch (ParserConfigurationException e) {\r
-// logger.info("ParserConfigurationException: {}", e.getCause());\r
-// }\r
+ jobEngine.getJobEngineConfiguration().duplicateTemplate(selectedJob.getString("template"));\r
+ }\r
}\r
\r
@Command\r
@NotifyChange("jobs")\r
public void copyProcessEntry() {\r
- if (editingJob != null) {\r
- String newName = editingJob.getString("name").concat("-copy");\r
- while (jobEngine.getJobEngineConfiguration().scheduleExists(newName)) {\r
- newName = newName.concat("-copy");\r
- }\r
- BasicDBObject newEntry = new BasicDBObject();\r
- newEntry = NoSQLUtils.deepCopy(editingJob);\r
- newEntry.put("name", newName);\r
-\r
- jobEngine.getJobEngineConfiguration().getSchedules()\r
- .add(new SimpleEntry<String, BasicDBObject>(newName, newEntry));\r
- jobs.add(newEntry);\r
- setJobsListModified(true);\r
- logger.info("copyScheduleEntry()");\r
+ logger.info("copyScheduleEntry()");\r
+// if (editingJob != null) {\r
+// String newName = editingJob.getString("name").concat("-copy");\r
+ String newName = selectedJob.getString("name").concat("-copy");\r
+ while (jobEngine.getJobEngineConfiguration().scheduleExists(newName)) {\r
+ newName = newName.concat("-copy");\r
}\r
+ BasicDBObject newEntry = new BasicDBObject();\r
+// NoSQLUtils.deepCopy(editingJob, newEntry);\r
+ NoSQLUtils.deepCopy(selectedJob, newEntry);\r
+ newEntry.put("name", newName);\r
+\r
+ jobEngine.getJobEngineConfiguration().getSchedules()\r
+ .add(new SimpleEntry<String, BasicDBObject>(newName, newEntry));\r
+ jobs.add(newEntry);\r
+ setJobsListModified(true);\r
+// }\r
}\r
\r
- public CronExpressionValidator getCronExpressionValidator() {\r
- return cronExpressionValidator;\r
- }\r
-\r
- public void setCronExpressionValidator(CronExpressionValidator cronExpressionValidator) {\r
- this.cronExpressionValidator = cronExpressionValidator;\r
- }\r
-\r
- public TemplateNameValidator getTemplateNameValidator() {\r
- return templateNameValidator;\r
- }\r
-\r
- public NameValidator getNameValidator() {\r
- return nameValidator;\r
- }\r
-\r
- public ParameterNameValidator getParameterNameValidator() {\r
- return parameterNameValidator;\r
- }\r
-\r
- public void setParameterNameValidator(ParameterNameValidator parameterNameValidator) {\r
- this.parameterNameValidator = parameterNameValidator;\r
- }\r
+// public CronExpressionValidator getCronExpressionValidator() {\r
+// return cronExpressionValidator;\r
+// }\r
+//\r
+// public void setCronExpressionValidator(CronExpressionValidator cronExpressionValidator) {\r
+// this.cronExpressionValidator = cronExpressionValidator;\r
+// }\r
\r
- public ParameterTypeValidator getParameterTypeValidator() {\r
- return parameterTypeValidator;\r
- }\r
+// public TemplateNameValidator getTemplateNameValidator() {\r
+// return templateNameValidator;\r
+// }\r
\r
- public void setParameterTypeValidator(ParameterTypeValidator parameterTypeValidator) {\r
- this.parameterTypeValidator = parameterTypeValidator;\r
- }\r
+// public ChangeValidator getChangeValidator() {\r
+// return changeValidator;\r
+// }\r
\r
- public ParameterValueValidator getParameterValueValidator() {\r
- return parameterValueValidator;\r
- }\r
+// public ParameterNameValidator getParameterNameValidator() {\r
+// return parameterNameValidator;\r
+// }\r
+//\r
+// public void setParameterNameValidator(ParameterNameValidator parameterNameValidator) {\r
+// this.parameterNameValidator = parameterNameValidator;\r
+// }\r
+//\r
+// public ParameterTypeValidator getParameterTypeValidator() {\r
+// return parameterTypeValidator;\r
+// }\r
+//\r
+// public void setParameterTypeValidator(ParameterTypeValidator parameterTypeValidator) {\r
+// this.parameterTypeValidator = parameterTypeValidator;\r
+// }\r
\r
- public void setParameterValueValidator(ParameterValueValidator parameterValueValidator) {\r
- this.parameterValueValidator = parameterValueValidator;\r
- }\r
+// public ParameterValueValidator getParameterValueValidator() {\r
+// return parameterValueValidator;\r
+// }\r
+//\r
+// public void setParameterValueValidator(ParameterValueValidator parameterValueValidator) {\r
+// this.parameterValueValidator = parameterValueValidator;\r
+// }\r
\r
public Button getSaveButton() {\r
return saveButton;\r
this.parameterNameChanged = parameterNameChanged;\r
}\r
\r
- public void setTemplateNameChanged(boolean templateNameChanged) {\r
- this.templateNameChanged = templateNameChanged;\r
- }\r
+// public void setTemplateNameChanged(boolean templateNameChanged) {\r
+// this.templateNameChanged = templateNameChanged;\r
+// }\r
\r
public boolean isChangedSinceLastSave() {\r
return changedSinceLastSave;\r
this.changedSinceLastSave = changedSinceLastSave;\r
}\r
\r
- public void setOriginalTemplateName(String originalTemplateName) {\r
- this.originalTemplateName = originalTemplateName;\r
- }\r
+// public void setOriginalTemplateName(String originalTemplateName) {\r
+// this.originalTemplateName = originalTemplateName;\r
+// }\r
\r
- public String getOriginalTemplateName() {\r
- return originalTemplateName;\r
- }\r
+// public String getOriginalTemplateName() {\r
+// return originalTemplateName;\r
+// }\r
\r
public boolean isJobsListModified() {\r
return jobsListModified;\r
this.jobsListModified = jobsListModified;\r
}\r
\r
+ public BasicDBObject getSelectedJob() {\r
+ return selectedJob;\r
+ }\r
+\r
+// public void setSelectedJob(BasicDBObject selectedJob) {\r
+// this.selectedJob = selectedJob;\r
+// }\r
+\r
+ public void setEditingJob(BasicDBObject deepCopy) {\r
+\r
+ }\r
+\r
+ public ArrayList<String> getDataTypes() {\r
+ return dataTypes;\r
+ }\r
+\r
+ public void setDataTypes(ArrayList<String> dataTypes) {\r
+ this.dataTypes = dataTypes;\r
+ }\r
+\r
}
\ No newline at end of file