feladat megoldva
authorOmar Sweidan <omar.sweidan@userrendszerhaz.hu>
Fri, 6 May 2022 13:22:48 +0000 (15:22 +0200)
committerOmar Sweidan <omar.sweidan@userrendszerhaz.hu>
Fri, 6 May 2022 13:22:48 +0000 (15:22 +0200)
13 files changed:
server/user.jobengine.osgi.commons/src/user/commons/nosql/NoSQLUtils.java
server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngineConfiguration.java
server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java
server/user.mediacube.gui/pages/jobeditor2.zul
server/user.mediacube.gui/pages/joblist.zul
server/user.mediacube.gui/src/user/jobengine/zk/model/JobEditorModel.java
server/user.mediacube.gui/src/user/jobengine/zk/model/JobEditorModel2.java
server/user.mediacube.gui/src/user/jobengine/zk/validator/ChangeValidator.java
server/user.mediacube.gui/src/user/jobengine/zk/validator/CronExpressionValidator.java
server/user.mediacube.gui/src/user/jobengine/zk/validator/ParameterNameValidator.java
server/user.mediacube.gui/src/user/jobengine/zk/validator/ParameterTypeValidator.java
server/user.mediacube.gui/src/user/jobengine/zk/validator/ParameterValueValidator.java
server/user.mediacube.gui/src/user/jobengine/zk/validator/TemplateNameValidator.java

index 3e16b64e2e4a64566a4cb12b1b3a8934949865bb..7c128a10d00a534fa951c8e4ec069a2a4b7b7c6c 100644 (file)
@@ -155,16 +155,24 @@ public class NoSQLUtils {
         * \r
         * @param source a BasicDBObject to be deep-copied\r
         */\r
-       public static void /* BasicDBObject */ deepCopy(BasicDBObject source, BasicDBObject target) {\r
-//             BasicDBObject target = new BasicDBObject();\r
+       public static BasicDBObject deepCopy(BasicDBObject source) {\r
                HashMap<String, Object> sourceAsMap = (HashMap<String, Object>) source.toMap();\r
-\r
+               BasicDBObject target= new BasicDBObject();\r
+                \r
                for (HashMap.Entry<String, Object> entry : sourceAsMap.entrySet()) {\r
                        String key = entry.getKey();\r
                        Object val = entry.getValue();\r
+                       if(val instanceof BasicDBList) {\r
+                               List<BasicDBObject> listval= asList((BasicDBList) val);\r
+                               val= new BasicDBList();\r
+                               \r
+                               for (BasicDBObject innerObject : listval) {\r
+                                       ((BasicDBList) val).add(deepCopy(innerObject));\r
+                               }\r
+                       }\r
                        target.put(key, val);\r
                }\r
-\r
-//             return target;\r
+               \r
+               return target;\r
        }\r
 }\r
index f0a9c9dee12703892daf227f7d2b274024eeea63..31b3337cc82fee30b98aa9ce84cd52b09eadad10 100644 (file)
@@ -39,11 +39,11 @@ public interface IJobEngineConfiguration {
 \r
        void saveTemplateXml(JobTemplate jobTemplate) throws ParserConfigurationException;\r
 \r
-       void saveSchedulesJson() throws Exception;\r
+       void saveSchedulesJson(BasicDBObject originalJob, BasicDBObject newJob) throws Exception;\r
 \r
        void resetStepClassLoader();\r
 \r
-       void duplicateTemplate(String originalTemplateName);\r
+       String duplicateTemplate(BasicDBObject selectedJob);\r
 \r
        boolean scheduleExists(String name);\r
 \r
index 9f3a83bc87666aa8809b8c560e1a88d2e50fcc07..ccae13d47ff24410c35b19244da758951f273d15 100644 (file)
@@ -380,40 +380,24 @@ public class JobEngineConfiguration implements IJobEngineConfiguration {
        }\r
 \r
        @Override\r
-       public void saveSchedulesJson() throws Exception {\r
+       public void saveSchedulesJson(BasicDBObject originalJob, BasicDBObject newJob) throws Exception {\r
                logger.info("saveSchedulesJson()");\r
 \r
                Path schedulesPath = null;\r
                try {\r
                        schedulesPath = Paths.get(systemConfig.getConfig(CONF_SCHEDULES));\r
-//                     if (!Files.exists(schedulesPath)) {\r
-//                             Files.createFile(schedulesPath);\r
-//                     }\r
                        if (Files.isDirectory(schedulesPath))\r
                                throw new FileNotFoundException(schedulesPath + " is a directory!");\r
                        logger.info("Saving schedules.json to {}", schedulesPath);\r
-                       BasicDBObject dbo = new BasicDBObject();\r
-                       BasicDBList jobList = new BasicDBList();\r
-                       for (int i = 0; i < schedules.size(); i++) {\r
-                               BasicDBObject temp = schedules.get(i).getValue();\r
-                               temp.remove("xml");\r
-                               jobList.add(temp);\r
-                       }\r
-                       dbo.put("joblist", jobList);\r
-                       if (Files.isWritable(schedulesPath)) {\r
-                               logger.info("{} is writable", schedulesPath);\r
-                       } else {\r
-                               logger.info("{} was not writable", schedulesPath);\r
-                               DosFileAttributeView dos = Files.getFileAttributeView(schedulesPath, DosFileAttributeView.class);\r
-                               if (dos != null) {\r
-                                       try {\r
-                                               dos.setReadOnly(false);\r
-                                               logger.info("{} is writable");\r
-                                       } catch (IOException e) {\r
-                                               logger.info("IOException: {}", e.getCause());\r
-                                       }\r
+                       for (int i = 0; i < getSchedules().size(); i++) {\r
+                               BasicDBObject value = getSchedules().get(i).getValue();\r
+                               if (value.equals(originalJob)) {\r
+                                       getSchedules().get(i).setValue(newJob);\r
+                                       break;\r
                                }\r
                        }\r
+                       BasicDBObject dbo = assembleSchedulesJson();\r
+                       setFileAsWritable(schedulesPath);\r
                        Files.write(schedulesPath, dbo.toPrettyString("").getBytes());\r
                } catch (FileNotFoundException e) {\r
                        logger.error("File not found: {}", CONF_SCHEDULES);\r
@@ -422,6 +406,43 @@ public class JobEngineConfiguration implements IJobEngineConfiguration {
                }\r
        }\r
 \r
+       private BasicDBObject assembleSchedulesJson() {\r
+               BasicDBObject dbo = new BasicDBObject();\r
+               BasicDBList jobList = new BasicDBList();\r
+               for (int i = 0; i < schedules.size(); i++) {\r
+                       BasicDBObject temp = schedules.get(i).getValue();\r
+                       temp.remove("xml");\r
+                       temp.remove("nextTime");\r
+                       if(temp.get("active") == null) {\r
+                               temp.remove("active");\r
+                       }\r
+                       if(temp.get("executeimmediate") == null) {\r
+                               temp.remove("executeimmediate");\r
+                       }\r
+                       jobList.add(temp);\r
+               }\r
+               dbo.put("joblist", jobList);\r
+               \r
+               return dbo;\r
+       }\r
+\r
+       private void setFileAsWritable(Path schedulesPath) {\r
+               if (Files.isWritable(schedulesPath)) {\r
+                       logger.info("{} is writable", schedulesPath);\r
+               } else {\r
+                       logger.info("{} was not writable", schedulesPath);\r
+                       DosFileAttributeView dos = Files.getFileAttributeView(schedulesPath, DosFileAttributeView.class);\r
+                       if (dos != null) {\r
+                               try {\r
+                                       dos.setReadOnly(false);\r
+                                       logger.info("{} is now writable");\r
+                               } catch (IOException e) {\r
+                                       logger.info("IOException: {}", e.getCause());\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
        @Override\r
        public void saveTemplateXml(JobTemplate templateToSave) {\r
                logger.info("saveTemplateXml()");\r
@@ -485,34 +506,30 @@ public class JobEngineConfiguration implements IJobEngineConfiguration {
        }\r
 \r
        @Override\r
-       public void duplicateTemplate(String originalTemplateName) {\r
+       public String duplicateTemplate(BasicDBObject selectedJob) {\r
                logger.info("duplicateTemplate()");\r
-               if (originalTemplateName == null) {\r
-                       throw new NullPointerException("originalTemplateName == null");\r
-               }\r
 \r
                Path templatesPath = null;\r
                String filePath = null;\r
                String duplicateFileName = null;\r
                try {\r
                        templatesPath = Paths.get(systemConfig.getConfig(DIR_TEMPLATES));\r
-                       if (!Files.isDirectory(templatesPath))\r
-                               throw new FileNotFoundException(templatesPath + " is not a directory!");\r
-                       duplicateFileName = FilenameUtils.getName(originalTemplateName).replace(".xml", "").concat("-copy.xml");\r
+                       duplicateFileName = FilenameUtils.getName(selectedJob.getString("template")).replace(".xml", "").concat("-copy.xml");\r
                        filePath = templatesPath.toString() + FileSystems.getDefault().getSeparator() + duplicateFileName;\r
                        while (Files.exists(Paths.get(filePath))) {\r
                                duplicateFileName = FilenameUtils.getName(duplicateFileName).replace(".xml", "").concat("-copy.xml");\r
                                filePath = templatesPath.toString() + FileSystems.getDefault().getSeparator() + duplicateFileName;\r
                        }\r
                        InputStream is = new FileInputStream(\r
-                                       templatesPath.toString() + FileSystems.getDefault().getSeparator() + originalTemplateName);\r
+                                       templatesPath.toString() + FileSystems.getDefault().getSeparator() + selectedJob.getString("template"));\r
                        Files.copy(is, Paths.get(filePath));\r
                } catch (FileNotFoundException e) {\r
                        logger.error("File not found: {}", filePath);\r
                } catch (IOException e) {\r
                        logger.error("IOException: {}", e.getCause());\r
                }\r
-\r
+               return duplicateFileName;\r
+               \r
        }\r
 \r
        @Override\r
index 2cc739976c5415ad74d5fa6fb0d380cc5e2768dd..4f9e2dc16310df5f2449b92725066796be356119 100644 (file)
                <toolbar>\r
                        <toolbarbutton label="Futtatás" iconSclass="z-icon-play" onClick="@command('execute')" \r
                                disabled="${not sessionScope.userPrincipal.admin}" autodisable="self" />\r
-                       <toolbarbutton label="scheduledjobs.json mentése" id="SaveScheduleButton" iconSclass="z-icon-save" onClick="@command('saveSchedulesJson')" />\r
-                       <toolbarbutton label="folyamatsablon mentése" id="SaveTemplateButton" iconSclass="z-icon-save" onClick="@command('saveJobTemplate')" />\r
-                       <toolbarbutton label="folyamat duplikálása" id="DuplicateTemplateButton" onClick="@command('duplicateTemplate')" />\r
-                       <toolbarbutton label="folyamat bejegyzés másolása" id="CopyProcessButton" onClick="@command('copyProcessEntry')" />\r
-                       <toolbarbutton label="Újratöltés" id="reloadButton" iconSclass="z-icon-rotate-right" onClick="@command('reload')" />\r
+                       <toolbarbutton label="Duplikálás" iconSclass="z-icon-copy" onClick="@command('duplicateProcessEntry')" />\r
+                       <toolbarbutton label="Másolás" id="CopyProcessButton" iconSclass="z-icon-copy" onClick="@command('copyProcessEntry')" />\r
+                       <toolbarbutton label="Újratöltés" iconSclass="z-icon-dot-circle-o" onClick="@command('reload')" autodisable="self"/>\r
                </toolbar>\r
                <borderlayout vflex="true">\r
                        <center border="none" vflex="true">\r
                                                <tabs visible="true">\r
                                                        <tab id="tab0" label="Paraméterek" selected="true" />\r
                                                        <tab id="tab1" label="Részletek" />\r
-<!--                                                   <tab id="tab2" label="Ábra" /> -->\r
                                                </tabs>\r
                                                <tabpanels>\r
                                                        <tabpanel>\r
-                                                               <borderlayout>\r
-                                                                       <north size="50%" splittable="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
-                                                                                       <columns>\r
-                                                                                               <column hflex="min"/>\r
-                                                                                               <column hflex="true"/>\r
-                                                                                       </columns>\r
-                                                                                       <rows>\r
-                                                                                               <row>\r
-                                                                                                       <label value="Name"/>\r
-                                                                                                       <textbox value="@bind(jem2.selectedJob.name)"/>\r
-                                                                                               </row>\r
-                                                                                               <row>\r
-                                                                                                       <label value="Template"/>\r
-                                                                                                       <label value="@load(jem2.selectedJob.template)" />\r
-                                                                                               </row>\r
-                                                                                               <row>\r
-                                                                                                       <label value="Active" />\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.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.selectedJob.cronexpression)"/>\r
-                                                                                               </row>\r
-                                                                                               <row>\r
-                                                                                                       <label value="Next execution"/>\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.selectedJob.parameters)" style="border: none; background: #e3e3e3 !important;"\r
-                                                                                       oddRowSclass="listbox-odd-style" sclass="listbox-normal-style">\r
+                                                               <vlayout vflex="true" hflex="true">\r
+                                                                       <grid visible="@bind(not empty jem2.editingJob)" sizedByContent="false" span="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
+                                                                               <columns>\r
+                                                                                       <column hflex="min"/>\r
+                                                                                       <column hflex="true"/>\r
+                                                                               </columns>\r
+                                                                               <rows>\r
+                                                                                       <row>\r
+                                                                                               <label value="Name"/>\r
+                                                                                               <textbox value="@bind(jem2.editingJob.name)"/>\r
+                                                                                       </row>\r
+                                                                                       <row>\r
+                                                                                               <label value="Template"/>\r
+                                                                                               <label value="@load(jem2.editingJob.template)" />\r
+                                                                                       </row>\r
+                                                                                       <row>\r
+                                                                                               <label value="Active" />\r
+                                                                                               <checkbox disabled="true" value="@bind(empty jem2.editingJob.active ? false : jem2.editingJob.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
+                                                                                                       onClick="@command('onExecuteImmediateClicked')" id="ExecuteImmediateCheckbox"/>\r
+                                                                                       </row>\r
+                                                                                       <row>\r
+                                                                                               <label value="Cron expression"/>\r
+                                                                                               <textbox value="@bind(jem2.editingJob.cronexpression)"/>\r
+                                                                                       </row>\r
+                                                                                       <row>\r
+                                                                                               <label value="Next execution"/>\r
+                                                                                               <label value="@bind(jem2.editingJob.nextTime)"/>\r
+                                                                                       </row>\r
+                                                                               </rows>\r
+                                                                       </grid>\r
+                                                                       <toolbar>\r
+                                                                               <toolbarbutton id="NewParameterButton" label="Új paraméter" onClick="@command('onNewParameterClicked')"\r
+                                                                                       iconSclass="z-icon-plus"/>\r
+                                                                       </toolbar>\r
+                                                                       <vlayout hflex="true" vflex="true" style="overflow: auto !important;">\r
+                                                                               <grid model="@load(jem2.editingJob.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="4"/>\r
                                                                                                <column label="Value" hflex="9"/>\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
                                                                                                        </row>\r
                                                                                                </template>\r
                                                                                        </rows>\r
                                                                                </grid>\r
-                                                                       </center>\r
-                                                                       <south>\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
+                                                                       </vlayout>\r
+                                                                       <button label="Save" onClick="@command('saveData')" />\r
+                                                               </vlayout>\r
                                                        </tabpanel>\r
                                                        <tabpanel>\r
                                                                <label height="100%" ca:data-syntax-highlight="true" multiline="true" pre="true" \r
-                                                                       value="@bind(jem2.selectedJob['xml'])" />\r
+                                                                       value="@bind(jem2.editingJob['xml'])" />\r
                                                        </tabpanel>\r
-<!--                                                   <tabpanel> -->\r
-<!--                                                           <include src="pages/processVisualizer2.zul" /> -->\r
-<!--                                                   </tabpanel> -->\r
                                                </tabpanels>\r
                                        </tabbox>\r
                                </vlayout>\r
index d5ff08f8227f001f082410584055edc3d8a6030a..50a823c1b4872e1b68ce22871e2ba24f83d4afcd 100644 (file)
@@ -37,7 +37,6 @@
                                 autodisable="self"/>\r
                        <toolbarbutton label="Elindítás" iconSclass="z-icon-level-up" onClick="@command('startup')" disabled="@load(jlm.startupDisabled)" \r
                                autodisable="self"/>\r
-                       <toolbarbutton label="Újratöltés" iconSclass="z-icon-dot-circle-o" onClick="@command('reload')" autodisable="self"/>\r
                        <separator orient="vertical"/>\r
                        <toolbarbutton label="Takarítás" iconSclass="z-icon-eraser" onClick="@command('cleanupSuspended')" autodisable="self"/>\r
                        <separator orient="vertical"/>\r
index 9f66d777cb7fd1bd2133e409b1689d3a5d2f4db5..3070cbd852f04b82255a45fd1d8aa9efb1579082 100644 (file)
@@ -318,7 +318,7 @@ public class JobEditorModel extends BaseModel {
        public void saveSchedule() throws Exception {\r
                if (selectedJob != null && isProcessDataChanged()) {\r
                        BasicDBObject scheduleToSave = collectProcessScheduleSettings();\r
-                       jobEngine.getJobEngineConfiguration().saveSchedulesJson();\r
+                       jobEngine.getJobEngineConfiguration().saveSchedulesJson(scheduleToSave, scheduleToSave);\r
                }\r
        }\r
 \r
index 187dc0fe79a4feda03017e21f8ec65c2d5092ed9..bd2dbb6a3a404a1db30f396537d8c6e857af3598 100644 (file)
@@ -6,8 +6,7 @@ import java.util.ArrayList;
 import java.util.Collections;\r
 import java.util.Date;\r
 import java.util.List;\r
-\r
-import javax.xml.parsers.ParserConfigurationException;\r
+import java.util.Map.Entry;\r
 \r
 import org.apache.commons.lang.StringUtils;\r
 import org.apache.logging.log4j.LogManager;\r
@@ -38,10 +37,7 @@ import user.commons.nosql.NoSQLUtils;
 import user.jobengine.gui.ComponentBinder;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.ast.JobTemplate;\r
-import user.jobengine.server.ast.ParameterDeclaration;\r
 import user.jobengine.server.scheduler.ScheduledJob;\r
-import user.jobengine.server.scheduler.SchedulerService;\r
 \r
 public class JobEditorModel2 extends BaseModel {\r
        private static final String XML = "xml";\r
@@ -51,44 +47,21 @@ public class JobEditorModel2 extends BaseModel {
        private static final String CRONEXPRESSION = "cronexpression";\r
        @Wire("#resultWin")\r
        private Window resultWin;\r
-       @Wire("#SaveButton")\r
-       private Button saveButton;\r
        @Wire("#ActiveCheckbox")\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 = new ListModelList<>();\r
 \r
        private BasicDBObject selectedJob = new BasicDBObject();\r
        private BasicDBObject editingJob = new BasicDBObject();\r
        private ListModelList<BasicDBObject> selectedJobs;\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 boolean changedSinceLastSave = false;\r
-       private boolean parameterTypeChanged = false;\r
-       private boolean parameterNameChanged = 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
                Selectors.wireComponents(view, this, false);\r
@@ -118,52 +91,33 @@ public class JobEditorModel2 extends BaseModel {
        }\r
 \r
        @Command\r
-       public void saveButtonClicked() {\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
-       @NotifyChange("selectedJob")\r
-       @Command\r
+       @NotifyChange("editingJob")\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
+               if(editingJob != null) {\r
+                       ((BasicDBList) editingJob.get("parameters")).add(new BasicDBObject()\r
+                                       .append("name", "param".concat(String.valueOf(numberOfNewParams)))\r
+                                       .append("type", dataTypes.get(8)));\r
+                       numberOfNewParams++;\r
+               }\r
        }\r
 \r
-       @NotifyChange("selectedJob")\r
        @Command\r
+       @NotifyChange("editingJob")\r
        public void onParameterDelete(@BindingParam("toBeDeleted") BasicDBObject toBeDeleted) {\r
                logger.info("onParameterDelete(toBeDeleted)");\r
-               ((BasicDBList) selectedJob.get("parameters")).remove(toBeDeleted);\r
+               ((BasicDBList) editingJob.get("parameters")).remove(toBeDeleted);\r
        }\r
 \r
-       private void saveData() {\r
+       @Command\r
+       @NotifyChange({"editingJob", "jobs", "selectedJob"})\r
+       public 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(originalJobName)) {\r
-                               jobEngine.getJobEngineConfiguration().getSchedules().get(i).getValue().put("name",\r
-                                               selectedJob.get("name"));\r
-                               jobEngine.getJobEngineConfiguration().getSchedules().get(i).getValue().put("cronexpression",\r
-                                               selectedJob.get("cronexpression"));\r
-                               jobEngine.getJobEngineConfiguration().getSchedules().get(i).getValue().put("active",\r
-                                               selectedJob.get("active"));\r
-                               jobEngine.getJobEngineConfiguration().getSchedules().get(i).getValue().put("executeimmediate",\r
-                                               selectedJob.get("executeimmediate"));\r
-                               ((BasicDBList) jobEngine.getJobEngineConfiguration().getSchedules().get(i).getValue().get("parameters"))\r
-                                               .putAll((BasicDBList) selectedJob.get("parameters"));\r
-                               originalJobName = selectedJob.getString("name");\r
-                       }\r
+                               \r
+               try {\r
+                       jobEngine.getJobEngineConfiguration().saveSchedulesJson(selectedJob, editingJob);\r
+               } catch (Exception e) {\r
+                       logger.info("Exception: {}", e.getMessage());\r
                }\r
        }\r
 \r
@@ -187,23 +141,41 @@ public class JobEditorModel2 extends BaseModel {
        public BasicDBObject getEditingJob() {\r
                return editingJob;\r
        }\r
+       \r
+       @NotifyChange("editingJob")\r
+       public void setEditingJob(BasicDBObject editingJob) {\r
+               logger.info("setEditingJob()");\r
+               this.editingJob= editingJob;\r
+               if(editingJob == null) {\r
+                       return;\r
+               }\r
+               updateNextExecutionTime(editingJob);\r
+       }\r
 \r
+       @NotifyChange({"editingJob", "selectedJob"})\r
        public void setSelectedJob(BasicDBObject selectedJob) {\r
-               this.selectedJob = selectedJob;\r
-               if (selectedJob != null) {\r
-                       setOriginalJobName(selectedJob.getString("name"));\r
-                       NoSQLUtils.deepCopy(selectedJob, originalJob);\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
-                               selectedJob.put(NEXT_TIME, nextTime);\r
-                       } catch (ParseException e) {\r
-                               logger.catching(e);\r
-                       }\r
+               logger.info("setSelectedJob()");\r
+               if (selectedJob == null) {\r
+                       this.selectedJob = null;\r
+                       this.editingJob = null;\r
+                       return;\r
+               }\r
+\r
+               this.selectedJob= selectedJob;\r
+               this.editingJob= NoSQLUtils.deepCopy(selectedJob);\r
+       }\r
+\r
+       private void updateNextExecutionTime(BasicDBObject selectedJob) {\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
+                       selectedJob.put(NEXT_TIME, nextTime);\r
+               } catch (ParseException e) {\r
+                       logger.catching(e);\r
                }\r
        }\r
 \r
@@ -215,27 +187,9 @@ public class JobEditorModel2 extends BaseModel {
                return selectedJobs;\r
        }\r
 \r
-       public boolean isProcessDataChanged() {\r
-               return processDataChanged;\r
-       }\r
-\r
-       public void setProcessDataChanged(boolean processDataChanged) {\r
-               this.processDataChanged = processDataChanged;\r
-       }\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
+               initializeDataTypes();\r
 \r
                jobEngine = (IJobEngine) Executions.getCurrent().getArg().get("jobEngine");\r
                if (jobEngine == null)\r
@@ -246,13 +200,13 @@ public class JobEditorModel2 extends BaseModel {
 \r
        private void initJobList() {\r
                setSelectedJob(null);\r
-               setOriginalJobName(null);\r
-//             setEditingJob(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
+               ArrayList<Entry<String, BasicDBObject>> schedules = jobEngine.getJobEngineConfiguration().getSchedules();\r
+               for (int index = 0; index < schedules.size(); index++) {\r
+                       jobsCollection.add(schedules.get(index).getValue());\r
                }\r
 \r
                Collections.sort(jobsCollection, (a, b) -> {\r
@@ -268,201 +222,61 @@ public class JobEditorModel2 extends BaseModel {
        }\r
 \r
        @Command\r
-       @NotifyChange("jobs")\r
+       @NotifyChange({"selectedJob", "jobs", "editingJob"})\r
        public void reload() {\r
-               SchedulerService scheduler = jobEngine.getScheduler();\r
                try {\r
-                       scheduler.restart();\r
-                       initJobList();\r
+                       jobEngine.reloadGracefully();\r
                } catch (Exception e) {\r
-                       logger.info("Scheduler reload error. System message: {}", e.getMessage());\r
+                       Messagebox.show(e.getMessage(), "Hiba!", Messagebox.OK, Messagebox.ERROR);\r
                }\r
-       }\r
-\r
-       public void setJobs(ListModelList<BasicDBObject> jobs) {\r
-               this.jobs = jobs;\r
-       }\r
-\r
-       public void setSelectedJobs(ListModelList<BasicDBObject> selectedJobs) {\r
-               this.selectedJobs = selectedJobs;\r
-       }\r
-\r
-       @Command\r
-       public void saveSchedulesJson() throws Exception {\r
-               logger.info("saveSchedulesJson()");\r
-//             if (jobsListModified) {\r
-               jobEngine.getJobEngineConfiguration().saveSchedulesJson();\r
-//                     setJobsListModified(false);\r
-//             }\r
+               initJobList();\r
        }\r
 \r
        @Command\r
-       public void saveJobTemplate(JobTemplate template) throws Exception {\r
-               logger.info("saveJobTemplate()");\r
-               JobTemplate jt = new JobTemplate();\r
-\r
-               try {\r
-                       for (int i = 0; i < jobEngine.getJobEngineConfiguration().getTemplates().size(); i++) {\r
-                               JobTemplate currentTemplate = jobEngine.getJobEngineConfiguration().getTemplates().get(i);\r
-                               if (currentTemplate.getName() != null) {\r
-                                       if (currentTemplate.getName().equals(originalJobName)) {\r
-                                               jt = currentTemplate;\r
-                                       } else if (currentTemplate.getFileName().equals(selectedJob.getString("template"))) {\r
-                                               jt = currentTemplate;\r
-                                       }\r
-                               } else if (currentTemplate.getFileName() != null) {\r
-                                       if (currentTemplate.getFileName().equals(selectedJob.getString("template"))) {\r
-                                               jt = currentTemplate;\r
-                                       }\r
-                               }\r
-                       }\r
-\r
-                       if (changedSinceLastSave) {\r
-                               if (parameterNameChanged || parameterTypeChanged) {\r
-                                       int j = 0;\r
-                                       for (int i = 0; i < jt.getDeclarationSequence().getDeclarations().size(); i++) {\r
-                                               String simpleName = jt.getDeclarationSequence().getDeclarations().get(i).getType().getClass()\r
-                                                               .getSimpleName();\r
-                                               if (simpleName.equals("ParameterDeclaration")) {\r
-                                                       String name = ((BasicDBObject) ((BasicDBList) selectedJob.get("parameters")).get(j))\r
-                                                                       .getString("name");\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
-                                               }\r
-                                       }\r
-                               }\r
-\r
-                               if (originalJobName != null) {\r
-                                       jt.setName(originalJobName);\r
+       @NotifyChange("jobs")\r
+       public void duplicateProcessEntry() {\r
+               if (selectedJob != null) {\r
+                       String newTemplateName= jobEngine.getJobEngineConfiguration().duplicateTemplate(selectedJob);\r
+                       String newProcessName = copyProcessEntry();\r
+                       List<BasicDBObject> innerList = jobs.getInnerList();\r
+                       \r
+                       for(int i= 0;i < innerList.size(); i++) {\r
+                               BasicDBObject currentElement = innerList.get(i);\r
+                               \r
+                               if(currentElement.get("name").equals(newProcessName)) {\r
+                                       currentElement.replace("template", newTemplateName);\r
+                                       break;\r
                                }\r
-\r
                        }\r
-\r
-                       jobEngine.getJobEngineConfiguration().saveTemplateXml(jt);\r
-               } catch (ParserConfigurationException e) {\r
-                       logger.info("ParserConfigurationException: {}", e.getCause());\r
                }\r
        }\r
-\r
-       @Command\r
-       public void duplicateTemplate() {\r
-//             if (editingJob != null) {\r
-               jobEngine.getJobEngineConfiguration().duplicateTemplate(selectedJob.getString("template"));\r
-//             }\r
-       }\r
-\r
+       \r
        @Command\r
        @NotifyChange("jobs")\r
-       public void copyProcessEntry() {\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
+       public String copyProcessEntry() {\r
+               logger.info("copyProcessEntry()");\r
+               \r
+               String newName= null;\r
+               if (selectedJob != null) {\r
+                       newName = selectedJob.getString("name").concat("-copy");\r
+                       while (jobEngine.getJobEngineConfiguration().scheduleExists(newName)) {\r
+                               newName = newName.concat("-copy");\r
+                       }\r
+                       BasicDBObject newEntry= NoSQLUtils.deepCopy(selectedJob);\r
+                       newEntry.put("name", newName);\r
+       \r
+                       jobEngine.getJobEngineConfiguration().getSchedules()\r
+                                       .add(new SimpleEntry<String, BasicDBObject>(newName, newEntry));\r
+                       jobs.add(newEntry);\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 ChangeValidator getChangeValidator() {\r
-//             return changeValidator;\r
-//     }\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 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
-       }\r
-\r
-       public String getOriginalJobName() {\r
-               return originalJobName;\r
-       }\r
-\r
-       public void setOriginalJobName(String originalJobName) {\r
-               this.originalJobName = originalJobName;\r
-       }\r
-\r
-       public void setParameterTypeChanged(boolean parameterTypeChanged) {\r
-               this.parameterTypeChanged = parameterTypeChanged;\r
-       }\r
-\r
-       public void setParameterNameChanged(boolean parameterNameChanged) {\r
-               this.parameterNameChanged = parameterNameChanged;\r
-       }\r
-\r
-       public boolean isChangedSinceLastSave() {\r
-               return changedSinceLastSave;\r
-       }\r
-\r
-       public void setChangedSinceLastSave(boolean changedSinceLastSave) {\r
-               this.changedSinceLastSave = changedSinceLastSave;\r
-       }\r
-\r
-       public boolean isJobsListModified() {\r
-               return jobsListModified;\r
-       }\r
-\r
-       public void setJobsListModified(boolean jobsListModified) {\r
-               this.jobsListModified = jobsListModified;\r
+               \r
+               return newName;\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 editingJob) {\r
-//\r
-//     }\r
-\r
        public ArrayList<String> getDataTypes() {\r
                return dataTypes;\r
        }\r
@@ -470,5 +284,26 @@ public class JobEditorModel2 extends BaseModel {
        public void setDataTypes(ArrayList<String> dataTypes) {\r
                this.dataTypes = dataTypes;\r
        }\r
-\r
+       \r
+       public void setJobs(ListModelList<BasicDBObject> jobs) {\r
+               this.jobs = jobs;\r
+       }\r
+       \r
+       public void setSelectedJobs(ListModelList<BasicDBObject> selectedJobs) {\r
+               this.selectedJobs = selectedJobs;\r
+       }\r
+       \r
+       private void initializeDataTypes() {\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
 }
\ No newline at end of file
index f17438c9b6d1253f074f51489e11b3cf1b2a54bd..69a7f872e702eb6c0de57e0a8a8a9f0aa2a00447 100644 (file)
@@ -24,42 +24,9 @@ public class ChangeValidator extends AbstractValidator {
                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.setEditingJob(NoSQLUtils.deepCopy(originalJob));\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
+               //TODO check if value has changed indeed\r
        }\r
 }\r
index 0aa0f5ba1c2667404655b251c662280efa296f3e..3e2f6ded4d7585d79281b5a26bbe1b9c8f9ddfdb 100644 (file)
@@ -28,8 +28,6 @@ public class CronExpressionValidator extends AbstractValidator {
                                        && ifCronExpressionChanged(uneditedJob, newCronExpression)) {\r
                                logger.info("{} is a valid CRON expression", newCronExpression);\r
                                uneditedJob.put("cronexpression", newCronExpression);\r
-                               jobEditorModel2.setProcessDataChanged(true);\r
-                               jobEditorModel2.getSaveButton().setDisabled(false);\r
                        } else {\r
                                logger.info("{} is not a valid CRON expression", newCronExpression);\r
                        }\r
@@ -37,8 +35,6 @@ public class CronExpressionValidator extends AbstractValidator {
                        if (CronExpression.isValidExpression(newCronExpression)) {\r
                                logger.info("{} is a valid CRON expression", newCronExpression);\r
                                uneditedJob.put("cronexpression", newCronExpression);\r
-                               jobEditorModel2.setProcessDataChanged(true);\r
-                               jobEditorModel2.getSaveButton().setDisabled(false);\r
                        } else {\r
                                logger.info("{} is not a valid CRON expression", newCronExpression);\r
                        }\r
index eeb07ae0122a05cbf553daebc367b617cf089b3c..d281bdaf9aa3959f0720ed84d618eaf8068d4e06 100644 (file)
@@ -25,14 +25,9 @@ public class ParameterNameValidator extends AbstractValidator {
 \r
                if (uneditedParameter.getString("name").equals(newParameterName)) {\r
                        logger.info("{} is not a new parameter name", newParameterName);\r
-                       jobEditorModel2.setProcessDataChanged(false);\r
-                       jobEditorModel2.getSaveButton().setDisabled(true);\r
                } else {\r
                        logger.info("{} is a new parameter name", newParameterName);\r
                        uneditedParameter.put("name", newParameterName);\r
-                       jobEditorModel2.setProcessDataChanged(true);\r
-                       jobEditorModel2.setParameterNameChanged(true);\r
-                       jobEditorModel2.getSaveButton().setDisabled(false);\r
                }\r
        }\r
 }\r
index 50fee488685fda265f11733a60eca4c1db8ca42d..38263d7f30f1411567518c87b6fbc3b5e37565b8 100644 (file)
@@ -25,14 +25,9 @@ public class ParameterTypeValidator extends AbstractValidator {
 \r
                if (uneditedParameter.getString("type").equals(newParameterType)) {\r
                        logger.info("{} is not a new parameter type", newParameterType);\r
-                       jobEditorModel2.setProcessDataChanged(false);\r
-                       jobEditorModel2.getSaveButton().setDisabled(true);\r
                } else {\r
                        logger.info("{} is a new parameter type", newParameterType);\r
                        uneditedParameter.put("type", newParameterType);\r
-                       jobEditorModel2.setProcessDataChanged(true);\r
-                       jobEditorModel2.setParameterTypeChanged(true);\r
-                       jobEditorModel2.getSaveButton().setDisabled(false);\r
                }\r
        }\r
 }\r
index 711e561cccb6341dfc84e8d8d6c77e3718ea570a..d15832b222ccf13eff8dbe93e2cd3e9378783841 100644 (file)
@@ -25,13 +25,9 @@ public class ParameterValueValidator extends AbstractValidator {
 \r
                if (uneditedParameter.getString("value").equals(newParameterValue)) {\r
                        logger.info("{} is not a new parameter value", newParameterValue);\r
-                       jobEditorModel2.setProcessDataChanged(false);\r
-                       jobEditorModel2.getSaveButton().setDisabled(true);\r
                } else {\r
                        logger.info("{} is a new parameter value", newParameterValue);\r
                        uneditedParameter.put("value", newParameterValue);\r
-                       jobEditorModel2.setProcessDataChanged(true);\r
-                       jobEditorModel2.getSaveButton().setDisabled(false);\r
                }\r
        }\r
 }\r
index dc4766956d62774070c5309da1c37bddcf8f5a5b..0c5f8c4bacb40447e8f6ee9830b725106e88bcb0 100644 (file)
@@ -23,22 +23,13 @@ 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 newTemplateName = (String) context.getProperties("template")[0].getValue();\r
 \r
-               if (FilenameUtils.getExtension(newTemplateName).equals("xml")\r
-                               && ifTemplateNameChanged(uneditedJob, newTemplateName)) {\r
+               if (FilenameUtils.getExtension(newTemplateName).equals("xml")) {\r
                        logger.info("{} is a proper filename", newTemplateName);\r
                        uneditedJob.put("template", newTemplateName);\r
-//                     jobEditorModel2.setTemplateNameChanged(true);\r
-                       jobEditorModel2.setProcessDataChanged(true);\r
                } else {\r
                        logger.info("{} is not a proper filename", newTemplateName);\r
                }\r
        }\r
-\r
-       private boolean ifTemplateNameChanged(BasicDBObject uneditedJob, String newTemplateName) {\r
-               return !uneditedJob.getString("template").equals(newTemplateName);\r
-       }\r
 }\r