--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class TSMRetrieveMissingMaterialStep extends JobStep {\r
+ private static final Logger logger = LogManager.getLogger();\r
+\r
+ @StepEntry\r
+ public Object[] execute(String fileName, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ logger.info(jobRuntime.getMarker(), "Starting");\r
+ try {\r
+ for (int i = 0; i < 10; i++) {\r
+ jobRuntime.incrementProgress((i + 1) * 10);\r
+ Thread.sleep(1000);\r
+ }\r
+ } catch (Exception e) {\r
+ logger.error(e.getMessage());\r
+ }\r
+ logger.info(jobRuntime.getMarker(), "Finished");\r
+ return null;\r
+ }\r
+\r
+}\r
\r
import java.util.ArrayList;\r
import java.util.List;\r
+import java.util.Map;\r
import java.util.Optional;\r
import java.util.Set;\r
\r
import com.ibm.nosql.json.api.DBCollection;\r
import com.ibm.nosql.json.api.DBCursor;\r
\r
+import user.commons.ListUtils;\r
import user.commons.nosql.NoSQLUtils;\r
import user.jobengine.db.ItemManagerData.SignalType;\r
import user.jobengine.server.IJobChangedListener;\r
private static final Logger logger = LogManager.getLogger();\r
private static final String TEMPLATE = "template";\r
private static final String IMPORT_TEMPLATE = "import-morpheus-missing-materials.xml";\r
+ private static final String RETRIEVE_TEMPLATE = "retrieve-missing-material.xml";\r
private static final String COLLECTION_NAME = "missing_materials";\r
private ListModelList<BasicDBObject> jobList = new ListModelList<BasicDBObject>();\r
private BasicDBObject selectedJob = null;\r
\r
@Command\r
public void executeRestoreJobs() {\r
- logger.info(selectedJobs.size());\r
- registerTask(() -> {\r
-\r
- for (BasicDBObject job : selectedJobs) {\r
- job.put("Status", "???");\r
- BindUtils.postNotifyChange(null, null, job, "*");\r
+ //logger.info("Selected: " + selectedJobs.size());\r
+ for (BasicDBObject job : selectedJobs) {\r
+ String name = job.getString("MaterialID");\r
+ List<IJobRuntime> jobRuntimes = new ArrayList<>(jobEngine.getJobs().values());\r
+ Optional<IJobRuntime> findFirst = jobRuntimes.stream().filter(j -> isRetrieveJobFor(j, "fileName", name)).findFirst();\r
+ if (findFirst.isPresent()) {\r
+ logger.warn("'{}' already retrieving", name);\r
+ } else {\r
+ try {\r
+ jobEngine.submit(RETRIEVE_TEMPLATE, String.format("%s hiányzó anyag visszatöltése", name), ListUtils.asMap("fileName", name));\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ }\r
}\r
- //BasicDBObject dbObject = jobList.get(0);\r
- });\r
\r
+ job.put("Status", "RETRIEVING");\r
+ registerTask(() -> {\r
+ BindUtils.postNotifyChange(null, null, job, "*");\r
+ });\r
+ }\r
}\r
\r
public ListModelList<BasicDBObject> getJobList() {\r
public void init() {\r
try {\r
jobList.setMultiple(true);\r
- SessionUtil.addJobChangedListener(this);\r
+ SessionUtil.registerJobChangedListener(this);\r
this.jobEngine = JobEngine.getInstance();\r
if (jobEngine == null)\r
throw new Exception("Belső hiba! A JobEngine szolgáltatás elérhetetlen.");\r
return IMPORT_TEMPLATE.equals(template);\r
}\r
\r
+ private boolean isRetrieveJob(String template) {\r
+ return RETRIEVE_TEMPLATE.equals(template);\r
+ }\r
+\r
+ private boolean isRetrieveJobFor(IJobRuntime job, String parameterName, String name) {\r
+ boolean result = false;\r
+ if (RETRIEVE_TEMPLATE.equals(job.getTemplate())) {\r
+ Map<String, Object> parameters = job.getParameters();\r
+ Object parameter = parameters.get(parameterName);\r
+ if (parameter != null && parameter instanceof String)\r
+ result = name.equals(parameter);\r
+ }\r
+ return result;\r
+ }\r
+\r
@Override\r
public void jobChanged(JobChangedEvent event) {\r
IJobRuntime job = event.getJob();\r
if (SignalType.DELETE.equals(event.getSignalType()))\r
registerTask(() -> onImportCompleted());\r
}\r
+ if (isRetrieveJob(job.getTemplate())) {\r
+ if (SignalType.DELETE.equals(event.getSignalType()))\r
+ registerTask(() -> onRetrieveCompleted(job));\r
+ if (SignalType.UPDATE.equals(event.getSignalType()))\r
+ registerTask(() -> onRetrieveJobChanged(job));\r
+ }\r
}\r
\r
private void onImportCompleted() {\r
setImportDisabled(false);\r
}\r
\r
+ private Object onRetrieveCompleted(IJobRuntime job) {\r
+ // TODO Auto-generated method stub\r
+ return null;\r
+ }\r
+\r
+ private Object onRetrieveJobChanged(IJobRuntime job) {\r
+ // TODO Auto-generated method stub\r
+ return null;\r
+ }\r
+\r
@Command\r
public void selectJob() {\r
//only for notification\r
\r
import java.io.FileInputStream;\r
import java.io.InputStream;\r
-import java.util.ArrayList;\r
import java.util.Properties;\r
\r
import javax.servlet.http.HttpSession;\r
private static final String LOCAL_JOBSUBMITTERS = "local_jobsubmitters";\r
private static final String USERPRINCIPAL = "userPrincipal";\r
private static final String AUTH_LOCATION = "mediacube.auth.location";\r
- public static final String JOBLISTENERLIST = "joblistenerlist";\r
+ public static final String JOBLISTENER = "joblistener";\r
\r
- static public void addJobChangedListener(IJobChangedListener listener) {\r
+ static public void registerJobChangedListener(IJobChangedListener listener) {\r
+ cleanup();\r
JobEngine.getInstance().addJobChangedEventListener(listener);\r
- ArrayList<IJobChangedListener> list = (ArrayList<IJobChangedListener>) getAttribute(JOBLISTENERLIST);\r
- if (list == null) {\r
- list = new ArrayList<IJobChangedListener>();\r
- setAttribute(JOBLISTENERLIST, list);\r
- }\r
- if (!list.contains(listener)) {\r
- list.add(listener);\r
- }\r
+ setAttribute(JOBLISTENER, listener);\r
}\r
\r
public static boolean authenticate(String account, String password) {\r
}\r
\r
static public void cleanup() {\r
- ArrayList<IJobChangedListener> list = (ArrayList<IJobChangedListener>) getAttribute(SessionUtil.JOBLISTENERLIST);\r
- if (list != null) {\r
- for (IJobChangedListener listener : list) {\r
- JobEngine.getInstance().removeJobChangedEventListener(listener);\r
- }\r
- setAttribute(SessionUtil.JOBLISTENERLIST, null);\r
+ IJobChangedListener listener = (IJobChangedListener) getAttribute(SessionUtil.JOBLISTENER);\r
+ if (listener != null) {\r
+ JobEngine.getInstance().removeJobChangedEventListener(listener);\r
+ setAttribute(SessionUtil.JOBLISTENER, null);\r
}\r
}\r
\r