git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorSweidan Omar <TFS\sweidan.omar>
Thu, 28 Apr 2022 06:50:03 +0000 (06:50 +0000)
committerSweidan Omar <TFS\sweidan.omar>
Thu, 28 Apr 2022 06:50:03 +0000 (06:50 +0000)
server/user.mediacube.gui/src/user/jobengine/zk/model/JobEditorModel2.java

index fd7be21b27ba8381bccda3c823394877a4e6da50..16e45fc1b853a9a4c3b338153c61a221a994b7e4 100644 (file)
@@ -1,11 +1,14 @@
 package user.jobengine.zk.model;\r
 \r
 import java.text.ParseException;\r
+import java.util.AbstractMap.SimpleEntry;\r
 import java.util.ArrayList;\r
 import java.util.Collections;\r
 import java.util.Date;\r
 import java.util.List;\r
 \r
+import javax.xml.parsers.ParserConfigurationException;\r
+\r
 import org.apache.commons.lang.StringUtils;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
@@ -25,29 +28,25 @@ import org.zkoss.zul.Button;
 import org.zkoss.zul.Checkbox;\r
 import org.zkoss.zul.ListModelList;\r
 import org.zkoss.zul.Messagebox;\r
-import org.zkoss.zul.Textbox;\r
 import org.zkoss.zul.Window;\r
 \r
+import com.ibm.nosql.json.api.BasicDBList;\r
 import com.ibm.nosql.json.api.BasicDBObject;\r
 \r
+import user.commons.nosql.NoSQLUtils;\r
 import user.jobengine.gui.ComponentBinder;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.ast.CallJobStepCommand;\r
-import user.jobengine.server.ast.CommandSequence;\r
-import user.jobengine.server.ast.DeclarationSequence;\r
-import user.jobengine.server.ast.InputParameter;\r
-import user.jobengine.server.ast.InputParameterSequence;\r
 import user.jobengine.server.ast.JobTemplate;\r
-import user.jobengine.server.ast.OutputParameter;\r
-import user.jobengine.server.ast.OutputParameterSequence;\r
 import user.jobengine.server.ast.ParameterDeclaration;\r
-import user.jobengine.server.ast.ParameterExpression;\r
-import user.jobengine.server.ast.VariableDeclaration;\r
-import user.jobengine.server.ast.VariableName;\r
 import user.jobengine.server.scheduler.ScheduledJob;\r
 import user.jobengine.server.scheduler.SchedulerService;\r
-import user.jobengine.zk.validator.ChangeValidator;\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
@@ -59,31 +58,29 @@ public class JobEditorModel2 extends BaseModel {
        private Window resultWin;\r
        @Wire("#SaveButton")\r
        private Button saveButton;\r
-//     @Wire("#nameTextbox")\r
-//     private Textbox nameTextbox;\r
-       @Wire("#templateNameTextbox")\r
-       private Textbox templateNameTextbox;\r
-       @Wire("#activeCheckbox")\r
+       @Wire("#ActiveCheckbox")\r
        private Checkbox activeCheckbox;\r
-       @Wire("#executeImmediateCheckbox")\r
+       @Wire("#ExecuteImmediateCheckbox")\r
        private Checkbox executeImmediateCheckbox;\r
-       @Wire("#cronExpressionTextbox")\r
-       private Textbox cronExpressionTextbox;\r
-       @Wire("#parameterNameTextbox")\r
-       private Textbox parameterNameTextbox;\r
-       @Wire("#parameterValueTextbox")\r
-       private Textbox parameterValueTextbox;\r
-       @Wire("#parameterTypeTextbox")\r
-       private Textbox parameterTypeTextbox;\r
        private boolean processDataChanged = false;\r
        private IJobEngine jobEngine;\r
        private ListModelList<BasicDBObject> jobs;\r
-       private BasicDBObject selectedJob;\r
+       private BasicDBObject editedJob = new BasicDBObject();\r
        private BasicDBObject editingJob;\r
-       private String oldSelectedJob;\r
-       private BasicDBObject selectedJob2;\r
        private ListModelList<BasicDBObject> selectedJobs;\r
-       private ChangeValidator changeValidator;\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 String originalJobName;\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 jobsListModified;\r
 \r
        @AfterCompose\r
        public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
@@ -98,9 +95,9 @@ public class JobEditorModel2 extends BaseModel {
 \r
        @Command\r
        public void execute() throws Exception {\r
-               if (selectedJob == null)\r
+               if (editedJob == null)\r
                        return;\r
-               String template = selectedJob.getString("template");\r
+               String template = editedJob.getString("template");\r
 \r
                ScheduledJob scheduledJob = jobEngine.getScheduledJob(template);\r
 \r
@@ -116,6 +113,8 @@ public class JobEditorModel2 extends BaseModel {
        @Command\r
        public void saveButtonClicked() {\r
                if (processDataChanged) {\r
+                       setChangedSinceLastSave(true);\r
+                       setJobsListModified(true);\r
                        saveData();\r
                }\r
                processDataChanged = false;\r
@@ -123,120 +122,78 @@ public class JobEditorModel2 extends BaseModel {
        }\r
 \r
        private void saveData() {\r
-//             selectedJob.remove("name");\r
-//             selectedJob.append("name", nameTextbox.getValue());\r
-               selectedJob.remove("template");\r
-               selectedJob.append("template", templateNameTextbox.getValue());\r
-               selectedJob.remove("active");\r
-               selectedJob.append("active", activeCheckbox.isChecked());\r
-               selectedJob.remove("executeimmediate");\r
-               selectedJob.append("executeimmediate", executeImmediateCheckbox.isChecked());\r
-               selectedJob.remove("cronexpression");\r
-               selectedJob.append("cronexpression", cronExpressionTextbox.getValue());\r
-       }\r
-\r
-//     @Command\r
-//     public void onNameChanged() {\r
-//             setProcessDataChanged(true);\r
-//             selectedJob.remove("name");\r
-//             selectedJob.append("name", nameTextbox.getValue());\r
-//             saveButton.setDisabled(false);\r
-//             logger.info("onNameChanged()");\r
-//     }\r
-\r
-//     @Command\r
-//     public void onNameTextboxClicked() {\r
-//             oldSelectedJob = selectedJob.get("name").toString();\r
-//     }\r
+               editedJob = NoSQLUtils.deepCopy(editingJob);\r
 \r
-       @Command\r
-       public void onTemplateNameChanged() {\r
-               setProcessDataChanged(true);\r
-               selectedJob.remove("templateName");\r
-               selectedJob.append("templateName", templateNameTextbox.getValue());\r
-               saveButton.setDisabled(false);\r
-               logger.info("onTemplateNameChanged()");\r
+               logger.info("saveData()");\r
        }\r
 \r
        @Command\r
-       public void onActiveChanged() {\r
-               setProcessDataChanged(true);\r
-               selectedJob.remove("active");\r
-               selectedJob.append("active", activeCheckbox.isChecked());\r
-               saveButton.setDisabled(false);\r
-               logger.info("onActiveCheckBoxChanged()");\r
+       public void onSelectJob() {\r
+               setOriginalJobName(editingJob.getString("name"));\r
        }\r
 \r
        @Command\r
-       public void onExecuteImmediateChanged() {\r
-               setProcessDataChanged(true);\r
-               selectedJob.remove("executeimmediate");\r
-               selectedJob.append("executeimmediate", executeImmediateCheckbox.isChecked());\r
-               saveButton.setDisabled(false);\r
-               logger.info("onExecuteImmediateCheckBoxChanged()");\r
+       public void onActiveClicked() {\r
+               activeCheckbox.setDisabled(false);\r
+               logger.info("onActiveClicked()");\r
        }\r
 \r
        @Command\r
-       public void onCronExpressionChanged() {\r
-               setProcessDataChanged(true);\r
-               selectedJob.remove("cronexpression");\r
-               selectedJob.append("cronexpression", cronExpressionTextbox.getValue());\r
-               saveButton.setDisabled(false);\r
-               logger.info("onCronExpressionChangedChanged()");\r
-       }\r
-\r
-//     @Command\r
-//     public void onParameterNameChanged() {\r
-//             setProcessDataChanged(!isProcessDataChanged());\r
-//             BasicDBList parameters = (BasicDBList) selectedJob.get("parameters");\r
-//             selectedJob.remove("cronexpression");\r
-//             selectedJob.append("cronexpression", parameterNameTextbox.getValue());\r
-//             saveButton.setDisabled(false);\r
-//             logger.info("onParameterNameChanged()");\r
-//     }\r
-//\r
-//     @Command\r
-//     public void onParameterValueChanged() {\r
-//             setProcessDataChanged(!isProcessDataChanged());\r
-//             BasicDBList parameters = (BasicDBList) selectedJob.get("parameters");\r
-//             selectedJob.remove("cronexpression");\r
-//             selectedJob.append("cronexpression", parameterValueTextbox.getValue());\r
-//             saveButton.setDisabled(false);\r
-//             logger.info("onParameterValueChanged()");\r
-//     }\r
-//\r
-//     @Command\r
-//     public void onParameterTypeChanged() {\r
-//             setProcessDataChanged(!isProcessDataChanged());\r
-//             BasicDBList parameters = (BasicDBList) selectedJob.get("parameters");\r
-//             selectedJob.remove("cronexpression");\r
-//             selectedJob.append("cronexpression", parameterTypeTextbox.getValue());\r
-//             saveButton.setDisabled(false);\r
-//             logger.info("onParameterTypeChanged()");\r
-//     }\r
+       public void onExecuteImmediateClicked() {\r
+               executeImmediateCheckbox.setDisabled(false);\r
+               logger.info("onExecuteImmediateClicked()");\r
+       }\r
 \r
        private void toast(IJobRuntime runtime) {\r
                Clients.evalJavaScript(\r
                                String.format("showToast('<b>%s</b> elindĂ­tva.</br>ID %d')", runtime.getName(), runtime.getId()));\r
        }\r
 \r
+       public BasicDBObject getEditingJob() {\r
+               return editingJob;\r
+       }\r
+\r
+       @NotifyChange("editingJob")\r
+       public void setEditingJob(BasicDBObject editingJob) {\r
+               this.editingJob = editingJob;\r
+\r
+               if (editingJob == null) {\r
+               } else {\r
+                       String cronExpression = editingJob.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
+                       } catch (ParseException e) {\r
+                               logger.catching(e);\r
+                       }\r
+\r
+                       // TODO update editingJob, create deep copy from editedJob: a megoldas a\r
+                       // NoSQLUtils-ba keruljon\r
+                       // TODO notify editingJob changed\r
+               }\r
+       }\r
+\r
        public ListModelList<BasicDBObject> getJobs() {\r
                return jobs;\r
        }\r
 \r
-       public BasicDBObject getSelectedJob() {\r
-               return selectedJob;\r
+       public BasicDBObject getEditedJob() {\r
+               return editedJob;\r
        }\r
 \r
        public ListModelList<BasicDBObject> getSelectedJobs() {\r
                return selectedJobs;\r
        }\r
 \r
-       private boolean isProcessDataChanged() {\r
+       public boolean isProcessDataChanged() {\r
                return processDataChanged;\r
        }\r
 \r
-       private void setProcessDataChanged(boolean processDataChanged) {\r
+       public void setProcessDataChanged(boolean processDataChanged) {\r
                this.processDataChanged = processDataChanged;\r
        }\r
 \r
@@ -286,31 +243,29 @@ public class JobEditorModel2 extends BaseModel {
                this.jobs = jobs;\r
        }\r
 \r
-       public void setSelectedJob(BasicDBObject selectedJob) {\r
-               this.selectedJob = selectedJob;\r
+       @NotifyChange("editedJob")\r
+       public void setEditedJob(BasicDBObject editedJob) {\r
+               this.editedJob = editedJob;\r
 \r
-               if (selectedJob == null) {\r
+               if (editedJob == null) {\r
                        // reset cron next time display\r
                        // reset editing job\r
                } else {\r
-                       String cronExpression = selectedJob.getString(CRONEXPRESSION);\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
-                               selectedJob.put(NEXT_TIME, nextTime);\r
+                               editedJob.put(NEXT_TIME, nextTime);\r
                        } catch (ParseException e) {\r
                                logger.catching(e);\r
                        }\r
 \r
-                       // update editingJob, create deep copy from selectedJob: a megoldas a\r
-                       // NoSQLUtils-ba keruljon\r
+                       // update editingJob\r
                        // notify editingJob changed\r
-\r
                }\r
-\r
        }\r
 \r
        public void setSelectedJobs(ListModelList<BasicDBObject> selectedJobs) {\r
@@ -318,78 +273,206 @@ public class JobEditorModel2 extends BaseModel {
        }\r
 \r
        @Command\r
-       public void saveSchedule() throws Exception {\r
-               if (selectedJob != null && isProcessDataChanged()) {\r
-                       BasicDBObject scheduleToSave = collectProcessScheduleSettings();\r
-                       jobEngine.getJobEngineConfiguration().saveSchedule(selectedJob);\r
+       public void saveSchedulesJson() throws Exception {\r
+               logger.info("saveSchedulesJson()");\r
+               if (jobsListModified) {\r
+                       jobEngine.getJobEngineConfiguration().saveSchedulesJson();\r
+                       setJobsListModified(false);\r
+               }\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(originalTemplateName)) {\r
+                                               jt = currentTemplate;\r
+                                       }\r
+                               } else if (currentTemplate.getFileName() != null) {\r
+                                       if (currentTemplate.getFileName().equals(originalTemplateName)) {\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) editedJob.get("parameters")).get(j))\r
+                                                                       .getString("name");\r
+                                                       String type = ((BasicDBObject) ((BasicDBList) editedJob.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
+                               }\r
+\r
+                               if (templateNameChanged) {\r
+                                       jt.setFileName(editedJob.getString("template"));\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
+                       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
+//                     }\r
+//             } catch (ParserConfigurationException e) {\r
+//                     logger.info("ParserConfigurationException: {}", e.getCause());\r
+//             }\r
        }\r
 \r
        @Command\r
-       public void saveTemplateXml() throws Exception {\r
-               logger.info("saveTemplateXml()");\r
-               if (selectedJob != null && isProcessDataChanged()) {\r
-                       JobTemplate jobTemplateToSave2 = collectProcessTemplateSettings();\r
-                       jobEngine.getJobEngineConfiguration().saveTemplateXml(oldSelectedJob, jobTemplateToSave2);\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
                }\r
        }\r
 \r
-       private JobTemplate createDummyTemplate() {\r
-               JobTemplate dummy = new JobTemplate();\r
-               dummy.setName("default-process");\r
-               dummy.setDescription("ez egy description");\r
+       public CronExpressionValidator getCronExpressionValidator() {\r
+               return cronExpressionValidator;\r
+       }\r
 \r
-               DeclarationSequence ds = new DeclarationSequence();\r
-               ds.addDeclaration(new ParameterDeclaration("path1", "java.lang.String"));\r
-               ds.addDeclaration(new VariableDeclaration("path2", "java.lang.String"));\r
+       public void setCronExpressionValidator(CronExpressionValidator cronExpressionValidator) {\r
+               this.cronExpressionValidator = cronExpressionValidator;\r
+       }\r
 \r
-               CallJobStepCommand cjsc = new CallJobStepCommand();\r
-               cjsc.setType("CreateMissingLowresStep.java");\r
-               cjsc.setWeight(1);\r
-               InputParameterSequence ips = new InputParameterSequence();\r
-               ips.addParameter(new InputParameter(new ParameterExpression("path1")));\r
-               cjsc.setInputParameterSequence(ips);\r
-               OutputParameterSequence ops = new OutputParameterSequence();\r
-               ops.addParameter(new OutputParameter(new VariableName("path2")));\r
-               cjsc.setOutputParameterSequence(ops);\r
+       public TemplateNameValidator getTemplateNameValidator() {\r
+               return templateNameValidator;\r
+       }\r
 \r
-               CommandSequence cs = new CommandSequence();\r
-               cs.addCommand(cjsc);\r
+       public NameValidator getNameValidator() {\r
+               return nameValidator;\r
+       }\r
 \r
-               dummy.setDeclarationSequence(ds);\r
-               dummy.setCommandSequence(cs);\r
+       public ParameterNameValidator getParameterNameValidator() {\r
+               return parameterNameValidator;\r
+       }\r
 \r
-               return dummy;\r
+       public void setParameterNameValidator(ParameterNameValidator parameterNameValidator) {\r
+               this.parameterNameValidator = parameterNameValidator;\r
        }\r
 \r
-       private JobTemplate collectProcessTemplateSettings() {\r
-               JobTemplate jobTemplate = new JobTemplate();\r
+       public ParameterTypeValidator getParameterTypeValidator() {\r
+               return parameterTypeValidator;\r
+       }\r
 \r
-//             jobTemplate.setName(nameTextbox.getValue());\r
-               jobTemplate.setFileName(templateNameTextbox.getValue());\r
+       public void setParameterTypeValidator(ParameterTypeValidator parameterTypeValidator) {\r
+               this.parameterTypeValidator = parameterTypeValidator;\r
+       }\r
 \r
-               return jobTemplate;\r
+       public ParameterValueValidator getParameterValueValidator() {\r
+               return parameterValueValidator;\r
        }\r
 \r
-       private BasicDBObject collectProcessScheduleSettings() {\r
-               return null;\r
+       public void setParameterValueValidator(ParameterValueValidator parameterValueValidator) {\r
+               this.parameterValueValidator = parameterValueValidator;\r
        }\r
 \r
-       @Command\r
-       public void duplicateProcess() {\r
-               if (selectedJob != null) {\r
-                       JobTemplate processToDuplicate = collectProcessTemplateSettings();\r
-//                     jobEngine.getJobEngineConfiguration().duplicateProcess(selectedJob);\r
-                       logger.info("duplicateProcess()");\r
-               }\r
+       public Button getSaveButton() {\r
+               return saveButton;\r
        }\r
 \r
-       @Command\r
-       public void copyProcessEntry() {\r
-               if (selectedJob != null) {\r
-//                     BasicDBObject scheduleToCopy = collectProcessScheduleSettings();\r
-                       jobEngine.getJobEngineConfiguration().copyProcessEntry(selectedJob);\r
-                       logger.info("copyScheduleEntry()");\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 void setTemplateNameChanged(boolean templateNameChanged) {\r
+               this.templateNameChanged = templateNameChanged;\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 void setOriginalTemplateName(String originalTemplateName) {\r
+               this.originalTemplateName = originalTemplateName;\r
+       }\r
+\r
+       public String getOriginalTemplateName() {\r
+               return originalTemplateName;\r
        }\r
+\r
+       public boolean isJobsListModified() {\r
+               return jobsListModified;\r
+       }\r
+\r
+       public void setJobsListModified(boolean jobsListModified) {\r
+               this.jobsListModified = jobsListModified;\r
+       }\r
+\r
 }
\ No newline at end of file