git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorSweidan Omar <TFS\sweidan.omar>
Thu, 28 Apr 2022 14:31:30 +0000 (14:31 +0000)
committerSweidan Omar <TFS\sweidan.omar>
Thu, 28 Apr 2022 14:31:30 +0000 (14:31 +0000)
server/user.mediacube.gui/pages/jobeditor2.zul
server/user.mediacube.gui/src/user/jobengine/zk/model/JobEditorModel2.java
server/user.mediacube.gui/src/user/jobengine/zk/validator/ChangeValidator.java [new file with mode: 0644]
server/user.mediacube.gui/src/user/jobengine/zk/validator/NameValidator.java [deleted file]
server/user.mediacube.gui/src/user/jobengine/zk/validator/TemplateNameValidator.java

index 206df9c1eab858980356596e1ebc806e6d3ab32a..ffa41c113bdedee690a33e12e4a9cca12759faf2 100644 (file)
@@ -20,8 +20,7 @@
                </toolbar>\r
                <borderlayout vflex="true">\r
                        <center border="none" vflex="true">\r
-                               <listbox vflex="true" model="@bind(jem2.jobs)" selectedItem="@bind(jem2.editingJob)"\r
-                                       onSelect="@command('onSelectJob')">\r
+                               <listbox vflex="true" model="@bind(jem2.jobs)" selectedItem="@bind(jem2.selectedJob)">\r
                                        <listhead>\r
                                                <listheader hflex="1" label="Név" align="left" />\r
                                        </listhead>\r
@@ -47,7 +46,7 @@
                                                        <tabpanel>\r
                                                                <borderlayout>\r
                                                                        <north size="50%" splittable="true">\r
-                                                                               <grid visible="@bind(not empty jem2.editingJob)" sizedByContent="false" span="true" vflex="true"\r
+                                                                               <grid visible="@bind(not empty jem2.selectedJob)" sizedByContent="false" span="true" vflex="true"\r
                                                                                        style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" \r
                                                                                        sclass="listbox-normal-style"\r
                                                                                        emptyMessage="A részletek megtekintéséhez jelöljön ki egy folyamatot.">\r
                                                                                        <rows>\r
                                                                                                <row>\r
                                                                                                        <label value="Name"/>\r
-                                                                                                       <textbox value="@bind(jem2.editingJob.name) @validator(jem2.nameValidator)" instant="true"/>\r
+                                                                                                       <textbox value="@bind(jem2.selectedJob.name)" instant="true"/>\r
                                                                                                </row>\r
                                                                                                <row>\r
                                                                                                        <label value="Template"/>\r
-                                                                                                       <textbox value="@bind(jem2.editingJob.template) @validator(jem2.templateNameValidator)" \r
-                                                                                                               instant="true" constraint="/^[\w\-. ]+$/" />\r
+                                                                                                       <label value="@load(jem2.selectedJob.template)" />\r
                                                                                                </row>\r
                                                                                                <row>\r
                                                                                                        <label value="Active" />\r
-                                                                                                       <checkbox disabled="true" value="@bind(empty jem2.editingJob.active ? false : jem2.editingJob.active) @validator(jem2.templateNameValidator)" \r
+                                                                                                       <checkbox disabled="true" value="@bind(empty jem2.selectedJob.active ? false : jem2.selectedJob.active)" \r
                                                                                                                onClick="@command('onActiveClicked')" id="ActiveCheckbox"/>\r
                                                                                                </row>\r
                                                                                                <row>\r
                                                                                                        <label value="Execute immediate"/>\r
-                                                                                                       <checkbox disabled="true" value="@bind(empty jem2.editingJob.executeimmediate ? false : jem2.editingJob.executeimmediate)" \r
+                                                                                                       <checkbox disabled="true" value="@bind(empty jem2.selectedJob.executeimmediate ? false : jem2.selectedJob.executeimmediate)" \r
                                                                                                                onClick="@command('onExecuteImmediateClicked')" id="ExecuteImmediateCheckbox"/>\r
                                                                                                </row>\r
                                                                                                <row>\r
                                                                                                        <label value="Cron expression"/>\r
-                                                                                                       <textbox value="@bind(jem2.editingJob.cronexpression) @validator(jem2.cronExpressionValidator)" instant="true"/>\r
+                                                                                                       <textbox value="@bind(jem2.selectedJob.cronexpression)" instant="true"/>\r
                                                                                                </row>\r
                                                                                                <row>\r
                                                                                                        <label value="Next execution"/>\r
-                                                                                                       <label value="@bind(jem2.editingJob.nextTime)"/>\r
+                                                                                                       <label value="@bind(jem2.selectedJob.nextTime)"/>\r
                                                                                                </row>\r
                                                                                        </rows>\r
                                                                                </grid>\r
                                                                        </north>\r
                                                                        <center border="none" flex="true">\r
-                                                                               <grid model="@load(jem2.editingJob.parameters)" style="border: none; background: #e3e3e3 !important;"\r
+                                                                               <grid model="@load(jem2.selectedJob.parameters)" style="border: none; background: #e3e3e3 !important;"\r
                                                                                        oddRowSclass="listbox-odd-style" sclass="listbox-normal-style">\r
                                                                                        <columns sizable="true">\r
-                                                                                               <column label="Name" hflex="1"/>\r
-                                                                                               <column label="Value" hflex="3"/>\r
-                                                                                               <column label="Type" hflex="1"/>\r
+                                                                                               <column label="Name" hflex="4"/>\r
+                                                                                               <column label="Value" hflex="9"/>\r
+                                                                                               <column label="Type" hflex="4"/>\r
+                                                                                               <column hflex="1"/>\r
                                                                                        </columns>\r
                                                                                        <rows>\r
                                                                                                <template name="model">\r
                                                                                                        <row>\r
-                                                                                                               <textbox value="@bind(each.name) @validator(jem2.parameterNameValidator)" />\r
-                                                                                                               <textbox value="@bind(each.value) @validator(jem2.parameterValueValidator)" />\r
-                                                                                                               <textbox value="@bind(each.type) @validator(jem2.parameterTypeValidator)" />\r
+                                                                                                               <textbox value="@bind(each.name)" />\r
+                                                                                                               <textbox value="@bind(each.value)" />\r
+                                                                                                               <combobox value="@bind(each.type)" model="@load(jem2.dataTypes)">\r
+                                                                                                                       <template name="model">\r
+                                                                                                                               <comboitem label="@load(each)"/>\r
+                                                                                                                       </template>\r
+                                                                                                               </combobox>\r
+                                                                                                               <button iconSclass="z-icon-trash-o" onClick="@command('onParameterDelete', toBeDeleted=each)" />\r
 <!--                                                                                                           <label value="@load(each.name)" /> -->\r
 <!--                                                                                                           <label value="@load(each.value)" /> -->\r
 <!--                                                                                                           <label value="@load(each.type)" /> -->\r
                                                                                </grid>\r
                                                                        </center>\r
                                                                        <south>\r
-                                                                               <button id="SaveButton" label="Save" onClick="@command('saveButtonClicked')" disabled="true"/>\r
+                                                                               <hlayout>\r
+                                                                                       <button id="SaveButton" label="Save" onClick="@command('saveButtonClicked')" />\r
+                                                                                       <button id="NewParameterButton" label="Új paraméter" onClick="@command('onNewParameterClicked')"/>\r
+                                                                               </hlayout>\r
                                                                        </south>\r
                                                                </borderlayout>\r
                                                        </tabpanel>\r
index 16e45fc1b853a9a4c3b338153c61a221a994b7e4..e59ac415d0f28c6f4c49a09c8a9735606e138565 100644 (file)
@@ -14,6 +14,7 @@ import org.apache.logging.log4j.LogManager;
 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
@@ -41,12 +42,6 @@ import user.jobengine.server.ast.JobTemplate;
 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
@@ -62,25 +57,40 @@ public class JobEditorModel2 extends BaseModel {
        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
@@ -95,9 +105,9 @@ public class JobEditorModel2 extends BaseModel {
 \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
@@ -112,26 +122,50 @@ public class JobEditorModel2 extends BaseModel {
 \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
@@ -153,20 +187,20 @@ public class JobEditorModel2 extends BaseModel {
                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
@@ -181,9 +215,9 @@ public class JobEditorModel2 extends BaseModel {
                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
@@ -199,6 +233,18 @@ public class JobEditorModel2 extends BaseModel {
 \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
@@ -207,7 +253,11 @@ public class JobEditorModel2 extends BaseModel {
        }\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
@@ -221,7 +271,7 @@ public class JobEditorModel2 extends BaseModel {
                                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
@@ -243,30 +293,30 @@ public class JobEditorModel2 extends BaseModel {
                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
@@ -275,10 +325,10 @@ public class JobEditorModel2 extends BaseModel {
        @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
@@ -292,11 +342,11 @@ public class JobEditorModel2 extends BaseModel {
                                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
@@ -309,9 +359,9 @@ public class JobEditorModel2 extends BaseModel {
                                                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
@@ -323,9 +373,9 @@ public class JobEditorModel2 extends BaseModel {
                                        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
@@ -337,95 +387,74 @@ public class JobEditorModel2 extends BaseModel {
        @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
@@ -447,9 +476,9 @@ public class JobEditorModel2 extends BaseModel {
                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
@@ -459,13 +488,13 @@ public class JobEditorModel2 extends BaseModel {
                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
@@ -475,4 +504,24 @@ public class JobEditorModel2 extends BaseModel {
                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
diff --git a/server/user.mediacube.gui/src/user/jobengine/zk/validator/ChangeValidator.java b/server/user.mediacube.gui/src/user/jobengine/zk/validator/ChangeValidator.java
new file mode 100644 (file)
index 0000000..f17438c
--- /dev/null
@@ -0,0 +1,65 @@
+package user.jobengine.zk.validator;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.zkoss.bind.ValidationContext;\r
+import org.zkoss.bind.validator.AbstractValidator;\r
+\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
+import user.commons.nosql.NoSQLUtils;\r
+import user.jobengine.zk.model.JobEditorModel2;\r
+\r
+public class ChangeValidator extends AbstractValidator {\r
+       private static final Logger logger = LogManager.getLogger();\r
+\r
+       private JobEditorModel2 jobEditorModel2;\r
+\r
+       public ChangeValidator(JobEditorModel2 jobEditorModel2) {\r
+               this.jobEditorModel2 = jobEditorModel2;\r
+       }\r
+\r
+       @Override\r
+       public void validate(ValidationContext context) {\r
+               BasicDBObject originalJob = ((BasicDBObject) context.getProperty().getBase());\r
+               String newValue = (String) context.getProperties("name")[0].getValue();\r
+               String whichPropertyChanged = context.getProperties("name")[0].getProperty();\r
+//             BasicDBObject editingJob = ;\r
+//             if (jobEditorModel2.getSelectedJob().get(whichPropertyChanged).toString().equals(newValue)) {\r
+//                     jobEditorModel2.setChangedSinceLastSave(false);\r
+\r
+//             } else {\r
+\r
+               NoSQLUtils.deepCopy(originalJob, jobEditorModel2.getEditingJob());\r
+               jobEditorModel2.getEditingJob().put(whichPropertyChanged, newValue);\r
+               jobEditorModel2.getEditingJob().remove("nextTime");\r
+//                     if (!jobEditorModel2.isChangedSinceLastSave()) {\r
+//                             jobEditorModel2.setOriginalJobName(originalJobName);\r
+//                     }\r
+//             }\r
+               if (jobEditorModel2.getOriginalJob().toString().equals(jobEditorModel2.getEditingJob().toString())) {\r
+                       logger.info("not new");\r
+                       jobEditorModel2.setProcessDataChanged(false);\r
+                       jobEditorModel2.getSaveButton().setDisabled(true);\r
+               } else {\r
+                       jobEditorModel2.setProcessDataChanged(true);\r
+//                     jobEditorModel2.setChangedSinceLastSave(true);\r
+                       jobEditorModel2.getSaveButton().setDisabled(false);\r
+                       logger.info("new");\r
+               }\r
+//             String originalJobName = originalProperty.getString("name");\r
+//             String newName = (String) context.getProperties("name")[0].getValue();\r
+\r
+//             if (originalJobName.equals(newName)) {\r
+//                     logger.info("{} is not a new name", newName);\r
+//             } else {\r
+//                     logger.info("{} is a new name", newName);\r
+//                     originalProperty.put("name", newName);\r
+//                     if (!jobEditorModel2.isChangedSinceLastSave()) {\r
+//                             jobEditorModel2.setOriginalJobName(originalJobName);\r
+//                     }\r
+//                     jobEditorModel2.setProcessDataChanged(true);\r
+//                     jobEditorModel2.getSaveButton().setDisabled(false);\r
+//             }\r
+       }\r
+}\r
diff --git a/server/user.mediacube.gui/src/user/jobengine/zk/validator/NameValidator.java b/server/user.mediacube.gui/src/user/jobengine/zk/validator/NameValidator.java
deleted file mode 100644 (file)
index d784f21..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-package user.jobengine.zk.validator;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-import org.zkoss.bind.ValidationContext;\r
-import org.zkoss.bind.validator.AbstractValidator;\r
-\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-\r
-import user.jobengine.zk.model.JobEditorModel2;\r
-\r
-public class NameValidator extends AbstractValidator {\r
-       private static final Logger logger = LogManager.getLogger();\r
-\r
-       private JobEditorModel2 jobEditorModel2;\r
-\r
-       public NameValidator(JobEditorModel2 jobEditorModel2) {\r
-               this.jobEditorModel2 = jobEditorModel2;\r
-       }\r
-\r
-       @Override\r
-       public void validate(ValidationContext context) {\r
-               BasicDBObject uneditedJob = (BasicDBObject) context.getProperty().getBase();\r
-               String originalJobName = uneditedJob.getString("name");\r
-               String originalTemplate = uneditedJob.getString("template");\r
-               jobEditorModel2.setOriginalTemplateName(originalTemplate);\r
-               String newName = (String) context.getProperties("name")[0].getValue();\r
-\r
-               if (originalJobName.equals(newName)) {\r
-                       logger.info("{} is not a new name", newName);\r
-               } else {\r
-                       logger.info("{} is a new name", newName);\r
-                       uneditedJob.put("name", newName);\r
-                       if (!jobEditorModel2.isChangedSinceLastSave()) {\r
-                               jobEditorModel2.setOriginalJobName(originalJobName);\r
-                       }\r
-                       jobEditorModel2.setProcessDataChanged(true);\r
-                       jobEditorModel2.getSaveButton().setDisabled(false);\r
-               }\r
-       }\r
-}\r
index 52afad638724c4a761991c4b013b9363db69b909..dc4766956d62774070c5309da1c37bddcf8f5a5b 100644 (file)
@@ -23,15 +23,15 @@ public class TemplateNameValidator extends AbstractValidator {
        @Override\r
        public void validate(ValidationContext context) {\r
                BasicDBObject uneditedJob = (BasicDBObject) context.getProperty().getBase();\r
-               String originalTemplateName = uneditedJob.getString("template");\r
-               jobEditorModel2.setOriginalTemplateName(originalTemplateName);\r
+//             String originalTemplateName = uneditedJob.getString("template");\r
+//             jobEditorModel2.setOriginalTemplateName(originalTemplateName);\r
                String newTemplateName = (String) context.getProperties("template")[0].getValue();\r
 \r
                if (FilenameUtils.getExtension(newTemplateName).equals("xml")\r
                                && ifTemplateNameChanged(uneditedJob, newTemplateName)) {\r
                        logger.info("{} is a proper filename", newTemplateName);\r
                        uneditedJob.put("template", newTemplateName);\r
-                       jobEditorModel2.setTemplateNameChanged(true);\r
+//                     jobEditorModel2.setTemplateNameChanged(true);\r
                        jobEditorModel2.setProcessDataChanged(true);\r
                } else {\r
                        logger.info("{} is not a proper filename", newTemplateName);\r