git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorSweidan Omar <TFS\sweidan.omar>
Mon, 25 Apr 2022 08:21:09 +0000 (08:21 +0000)
committerSweidan Omar <TFS\sweidan.omar>
Mon, 25 Apr 2022 08:21:09 +0000 (08:21 +0000)
server/user.mediacube.gui/src/user/jobengine/zk/model/JobEditorModel.java

index 910112502b66c3d14f870b3b0b7a0e084228ce44..87e6d8d0b2cebef60c1d07d100b2dd43ab430886 100644 (file)
@@ -21,8 +21,11 @@ import org.zkoss.zk.ui.Executions;
 import org.zkoss.zk.ui.select.Selectors;\r
 import org.zkoss.zk.ui.select.annotation.Wire;\r
 import org.zkoss.zk.ui.util.Clients;\r
+import org.zkoss.zul.Button;\r
+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.BasicDBObject;\r
@@ -30,6 +33,18 @@ import com.ibm.nosql.json.api.BasicDBObject;
 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
 \r
@@ -41,9 +56,30 @@ public class JobEditorModel extends BaseModel {
        private static final String CRONEXPRESSION = "cronexpression";\r
        @Wire("#resultWin")\r
        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
+       private Checkbox activeCheckbox;\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 String oldSelectedJob;\r
+       private BasicDBObject selectedJob2;\r
        private ListModelList<BasicDBObject> selectedJobs;\r
 \r
        @AfterCompose\r
@@ -74,6 +110,108 @@ public class JobEditorModel extends BaseModel {
                close();\r
        }\r
 \r
+       @Command\r
+       public void saveButtonClicked() {\r
+               if (processDataChanged) {\r
+                       saveData();\r
+               }\r
+               processDataChanged = false;\r
+               saveButton.setDisabled(true);\r
+       }\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
+\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
+       }\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
+       }\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
+       }\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
+\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
@@ -91,6 +229,14 @@ public class JobEditorModel extends BaseModel {
                return selectedJobs;\r
        }\r
 \r
+       private boolean isProcessDataChanged() {\r
+               return processDataChanged;\r
+       }\r
+\r
+       private void setProcessDataChanged(boolean processDataChanged) {\r
+               this.processDataChanged = processDataChanged;\r
+       }\r
+\r
        @Init\r
        public void init() {\r
                jobEngine = (IJobEngine) Executions.getCurrent().getArg().get("jobEngine");\r
@@ -160,4 +306,73 @@ public class JobEditorModel extends BaseModel {
                this.selectedJobs = selectedJobs;\r
        }\r
 \r
+       @Command\r
+       public void saveSchedule() throws Exception {\r
+               BasicDBObject scheduleToSave = collectProcessScheduleSettings();\r
+               jobEngine.getJobEngineConfiguration().saveSchedule(selectedJob);\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
+               }\r
+       }\r
+\r
+       private JobTemplate createDummyTemplate() {\r
+               JobTemplate dummy = new JobTemplate();\r
+               dummy.setName("default-process");\r
+               dummy.setDescription("ez egy description");\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
+\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
+\r
+               CommandSequence cs = new CommandSequence();\r
+               cs.addCommand(cjsc);\r
+\r
+               dummy.setDeclarationSequence(ds);\r
+               dummy.setCommandSequence(cs);\r
+\r
+               return dummy;\r
+       }\r
+\r
+       private JobTemplate collectProcessTemplateSettings() {\r
+               JobTemplate jobTemplate = new JobTemplate();\r
+\r
+               jobTemplate.setName(nameTextbox.getValue());\r
+               jobTemplate.setFileName(templateNameTextbox.getValue());\r
+\r
+               return jobTemplate;\r
+       }\r
+\r
+       private BasicDBObject collectProcessScheduleSettings() {\r
+               return null;\r
+       }\r
+\r
+       @Command\r
+       public void duplicateProcess() {\r
+               JobTemplate processToDuplicate = collectProcessTemplateSettings();\r
+//             jobEngine.getJobEngineConfiguration().duplicateProcess(selectedJob);\r
+               logger.info("duplicateProcess()");\r
+       }\r
+\r
+       @Command\r
+       public void copyProcessEntry() {\r
+//             BasicDBObject scheduleToCopy = collectProcessScheduleSettings();\r
+               jobEngine.getJobEngineConfiguration().copyProcessEntry(selectedJob); // TODO para\r
+               logger.info("copyScheduleEntry()");\r
+       }\r
 }
\ No newline at end of file