git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorDénes Horváth <USER\denes.horvath>
Wed, 14 Aug 2019 12:49:13 +0000 (12:49 +0000)
committerDénes Horváth <USER\denes.horvath>
Wed, 14 Aug 2019 12:49:13 +0000 (12:49 +0000)
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroJobListModel.java [new file with mode: 0644]

diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroJobListModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroJobListModel.java
new file mode 100644 (file)
index 0000000..cd77d22
--- /dev/null
@@ -0,0 +1,133 @@
+package user.jobengine.zk.model;\r
+\r
+import java.util.Collection;\r
+import java.util.Map;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.zkoss.bind.annotation.BindingParam;\r
+import org.zkoss.bind.annotation.Command;\r
+import org.zkoss.bind.annotation.Init;\r
+import org.zkoss.bind.annotation.NotifyChange;\r
+import org.zkoss.zk.ui.Executions;\r
+import org.zkoss.zul.ListModelList;\r
+import org.zkoss.zul.Window;\r
+\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
+import user.commons.ListUtils;\r
+import user.jobengine.db.ItemManagerData.SignalType;\r
+import user.jobengine.server.IJobChangedListener;\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+import user.jobengine.server.JobChangedEvent;\r
+import user.jobengine.server.JobEngine;\r
+import user.jobengine.zk.util.SessionUtil;\r
+\r
+public class MaestroJobListModel extends AsyncBaseModel implements IJobChangedListener {\r
+       private static final Logger logger = LogManager.getLogger();\r
+       private ListModelList<IJobRuntime> jobList = new ListModelList<IJobRuntime>();\r
+       private IJobEngine jobEngine = null;\r
+       private int newPriority = 1;\r
+       private Collection<BasicDBObject> selectedJobs;\r
+       private String currentUser = SessionUtil.getUserPrincipal().getAccount();\r
+\r
+       @Command\r
+       public void executeJob() {\r
+               String template = "/pages/jobselector.zul";\r
+               Window window = (Window) Executions.createComponents(template, null, ListUtils.asMap("jobEngine", jobEngine));\r
+               window.doModal();\r
+       }\r
+\r
+       public ListModelList<IJobRuntime> getJobList() {\r
+               return jobList;\r
+       }\r
+\r
+       public int getNewPriority() {\r
+               return newPriority;\r
+       }\r
+\r
+       public Collection<BasicDBObject> getSelectedJobs() {\r
+               return selectedJobs;\r
+       }\r
+\r
+       @Init\r
+       public void init() {\r
+               try {\r
+                       this.jobEngine = JobEngine.getInstance();\r
+\r
+                       if (jobEngine == null)\r
+                               throw new Exception("Internal error! JobEngine instance unavailable.");\r
+\r
+                       SessionUtil.registerJobChangedListener(this);\r
+\r
+                       initializeList();\r
+\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+               }\r
+       }\r
+\r
+       private void initializeList() {\r
+               jobList.clear();\r
+               Map<Long, IJobRuntime> jobMap = jobEngine.getJobs();\r
+               for (int i=0;i<jobMap.size();i++){\r
+                       if (jobMap.get(i).getOwner() == currentUser){\r
+                               jobList.add(i, jobMap.get(i));\r
+                       }\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void jobChanged(JobChangedEvent event) {\r
+               JobChangedEvent jobEvent = event;\r
+               final IJobRuntime job = jobEvent.getJob();\r
+               if (jobEvent.getSignalType().equals(SignalType.CREATE)) {\r
+                       registerTask(() -> onJobCreated(job));\r
+                       return;\r
+               }\r
+               if (jobEvent.getSignalType().equals(SignalType.DELETE)) {\r
+                       registerTask(() -> onJobDeleted(job));\r
+                       return;\r
+               }\r
+               if (jobEvent.getSignalType().equals(SignalType.UPDATE)) {\r
+                       registerTask(() -> onJobUpdated(job));\r
+                       return;\r
+               }\r
+       }\r
+\r
+       private void onJobCreated(IJobRuntime job) {\r
+               jobList.add(job);\r
+               notifyChange("jobList");\r
+       }\r
+\r
+       private void onJobDeleted(IJobRuntime job) {\r
+               jobList.remove(job);\r
+               notifyChange("jobList");\r
+       }\r
+\r
+       private void onJobUpdated(IJobRuntime job) {\r
+               jobList.notifyChange(job);\r
+       }\r
+\r
+       public void setJobList(ListModelList<IJobRuntime> jobList) {\r
+               this.jobList = jobList;\r
+       }\r
+\r
+\r
+       public void setNewPriority(int newPriority) {\r
+               this.newPriority = newPriority;\r
+       }\r
+\r
+       @NotifyChange({ "updatePriorityDisabled" })\r
+       public void setSelectedJobs(Collection<BasicDBObject> selectedJobs) {\r
+               this.selectedJobs = selectedJobs;\r
+       }\r
+\r
+       @Command\r
+       public void showParameters(@BindingParam("item") IJobRuntime jobRuntime) {\r
+               String template = "/pages/jobparameters.zul";\r
+               Window window = (Window) Executions.createComponents(template, null, ListUtils.asMap("jobRuntime", jobRuntime));\r
+               window.doModal();\r
+       }\r
+}\r