From: Vásáry Dániel Date: Fri, 9 Feb 2018 16:06:21 +0000 (+0000) Subject: git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube... X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=9395312d39c6137f70e9837e4d646de5be0d25e1;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C30886 --- diff --git a/server/user.jobengine.executors/jobtemplates/retrieve-missing-material.xml b/server/user.jobengine.executors/jobtemplates/retrieve-missing-material.xml new file mode 100644 index 00000000..8a900df3 --- /dev/null +++ b/server/user.jobengine.executors/jobtemplates/retrieve-missing-material.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRetrieveMissingMaterialStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRetrieveMissingMaterialStep.java new file mode 100644 index 00000000..d0688081 --- /dev/null +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRetrieveMissingMaterialStep.java @@ -0,0 +1,27 @@ +package user.jobengine.server.steps; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import user.jobengine.server.IJobEngine; +import user.jobengine.server.IJobRuntime; + +public class TSMRetrieveMissingMaterialStep extends JobStep { + private static final Logger logger = LogManager.getLogger(); + + @StepEntry + public Object[] execute(String fileName, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + logger.info(jobRuntime.getMarker(), "Starting"); + try { + for (int i = 0; i < 10; i++) { + jobRuntime.incrementProgress((i + 1) * 10); + Thread.sleep(1000); + } + } catch (Exception e) { + logger.error(e.getMessage()); + } + logger.info(jobRuntime.getMarker(), "Finished"); + return null; + } + +} diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java index 57b9f54e..8fb779e7 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java @@ -89,7 +89,7 @@ public class JobListModel extends BaseModel implements IJobChangedListener { setShutdownDisabled(!jobEngine.isRunning()); setStartupDisabled(jobEngine.isRunning()); - SessionUtil.addJobChangedListener(this); //sessionlistener fog leiratkozni + SessionUtil.registerJobChangedListener(this); //sessionlistener fog leiratkozni initializeList(); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java index b8c0d18b..241dd640 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java @@ -2,6 +2,7 @@ package user.jobengine.zk.model; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.Set; @@ -18,6 +19,7 @@ import com.ibm.nosql.json.api.DB; import com.ibm.nosql.json.api.DBCollection; import com.ibm.nosql.json.api.DBCursor; +import user.commons.ListUtils; import user.commons.nosql.NoSQLUtils; import user.jobengine.db.ItemManagerData.SignalType; import user.jobengine.server.IJobChangedListener; @@ -33,6 +35,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged private static final Logger logger = LogManager.getLogger(); private static final String TEMPLATE = "template"; private static final String IMPORT_TEMPLATE = "import-morpheus-missing-materials.xml"; + private static final String RETRIEVE_TEMPLATE = "retrieve-missing-material.xml"; private static final String COLLECTION_NAME = "missing_materials"; private ListModelList jobList = new ListModelList(); private BasicDBObject selectedJob = null; @@ -67,16 +70,26 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged @Command public void executeRestoreJobs() { - logger.info(selectedJobs.size()); - registerTask(() -> { - - for (BasicDBObject job : selectedJobs) { - job.put("Status", "???"); - BindUtils.postNotifyChange(null, null, job, "*"); + //logger.info("Selected: " + selectedJobs.size()); + for (BasicDBObject job : selectedJobs) { + String name = job.getString("MaterialID"); + List jobRuntimes = new ArrayList<>(jobEngine.getJobs().values()); + Optional findFirst = jobRuntimes.stream().filter(j -> isRetrieveJobFor(j, "fileName", name)).findFirst(); + if (findFirst.isPresent()) { + logger.warn("'{}' already retrieving", name); + } else { + try { + jobEngine.submit(RETRIEVE_TEMPLATE, String.format("%s hiányzó anyag visszatöltése", name), ListUtils.asMap("fileName", name)); + } catch (Exception e) { + logger.catching(e); + } } - //BasicDBObject dbObject = jobList.get(0); - }); + job.put("Status", "RETRIEVING"); + registerTask(() -> { + BindUtils.postNotifyChange(null, null, job, "*"); + }); + } } public ListModelList getJobList() { @@ -95,7 +108,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged public void init() { try { jobList.setMultiple(true); - SessionUtil.addJobChangedListener(this); + SessionUtil.registerJobChangedListener(this); this.jobEngine = JobEngine.getInstance(); if (jobEngine == null) throw new Exception("Belső hiba! A JobEngine szolgáltatás elérhetetlen."); @@ -129,6 +142,21 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged return IMPORT_TEMPLATE.equals(template); } + private boolean isRetrieveJob(String template) { + return RETRIEVE_TEMPLATE.equals(template); + } + + private boolean isRetrieveJobFor(IJobRuntime job, String parameterName, String name) { + boolean result = false; + if (RETRIEVE_TEMPLATE.equals(job.getTemplate())) { + Map parameters = job.getParameters(); + Object parameter = parameters.get(parameterName); + if (parameter != null && parameter instanceof String) + result = name.equals(parameter); + } + return result; + } + @Override public void jobChanged(JobChangedEvent event) { IJobRuntime job = event.getJob(); @@ -136,6 +164,12 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged if (SignalType.DELETE.equals(event.getSignalType())) registerTask(() -> onImportCompleted()); } + if (isRetrieveJob(job.getTemplate())) { + if (SignalType.DELETE.equals(event.getSignalType())) + registerTask(() -> onRetrieveCompleted(job)); + if (SignalType.UPDATE.equals(event.getSignalType())) + registerTask(() -> onRetrieveJobChanged(job)); + } } private void onImportCompleted() { @@ -143,6 +177,16 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged setImportDisabled(false); } + private Object onRetrieveCompleted(IJobRuntime job) { + // TODO Auto-generated method stub + return null; + } + + private Object onRetrieveJobChanged(IJobRuntime job) { + // TODO Auto-generated method stub + return null; + } + @Command public void selectJob() { //only for notification diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionListener.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionListener.java index fc85592f..d92b7568 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionListener.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionListener.java @@ -38,7 +38,7 @@ public class SessionListener implements HttpSessionListener{ try{ HttpSession session = se.getSession(); if(session != null){ - ArrayList list = (ArrayList)session.getAttribute(SessionUtil.JOBLISTENERLIST); + ArrayList list = (ArrayList)session.getAttribute(SessionUtil.JOBLISTENER); if(list != null){ for(IJobChangedListener listener : list){ JobEngine.getInstance().removeJobChangedEventListener(listener); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionUtil.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionUtil.java index bc31d167..576e2baf 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionUtil.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionUtil.java @@ -2,7 +2,6 @@ package user.jobengine.zk.util; import java.io.FileInputStream; import java.io.InputStream; -import java.util.ArrayList; import java.util.Properties; import javax.servlet.http.HttpSession; @@ -24,18 +23,12 @@ public class SessionUtil { private static final String LOCAL_JOBSUBMITTERS = "local_jobsubmitters"; private static final String USERPRINCIPAL = "userPrincipal"; private static final String AUTH_LOCATION = "mediacube.auth.location"; - public static final String JOBLISTENERLIST = "joblistenerlist"; + public static final String JOBLISTENER = "joblistener"; - static public void addJobChangedListener(IJobChangedListener listener) { + static public void registerJobChangedListener(IJobChangedListener listener) { + cleanup(); JobEngine.getInstance().addJobChangedEventListener(listener); - ArrayList list = (ArrayList) getAttribute(JOBLISTENERLIST); - if (list == null) { - list = new ArrayList(); - setAttribute(JOBLISTENERLIST, list); - } - if (!list.contains(listener)) { - list.add(listener); - } + setAttribute(JOBLISTENER, listener); } public static boolean authenticate(String account, String password) { @@ -77,12 +70,10 @@ public class SessionUtil { } static public void cleanup() { - ArrayList list = (ArrayList) getAttribute(SessionUtil.JOBLISTENERLIST); - if (list != null) { - for (IJobChangedListener listener : list) { - JobEngine.getInstance().removeJobChangedEventListener(listener); - } - setAttribute(SessionUtil.JOBLISTENERLIST, null); + IJobChangedListener listener = (IJobChangedListener) getAttribute(SessionUtil.JOBLISTENER); + if (listener != null) { + JobEngine.getInstance().removeJobChangedEventListener(listener); + setAttribute(SessionUtil.JOBLISTENER, null); } }