From 68614a6c52496453639cdba756634a57691f6485 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Mon, 12 Feb 2018 15:49:35 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C30898 --- .../retrieve-missing-material.xml | 4 + .../ImportMORPHEUSMissingMaterialsStep.java | 3 +- .../steps/OutputPathAndNameSelectorStep.java | 22 +--- .../server/steps/TSMRestoreStep.java | 2 +- .../steps/TSMRetrieveMissingMaterialStep.java | 36 +++--- .../commons/morpheus/MorpheusStrings.java | 3 + .../pages/joblist.zul | 2 +- .../server/scheduler/ScheduledJob.java | 5 + .../jobengine/server/steps/EscortFiles.java | 48 +++++--- .../user/jobengine/zk/model/JobListModel.java | 112 +++++++----------- .../zk/model/MissingMaterialsModel.java | 56 ++++++--- 11 files changed, 145 insertions(+), 148 deletions(-) diff --git a/server/user.jobengine.executors/jobtemplates/retrieve-missing-material.xml b/server/user.jobengine.executors/jobtemplates/retrieve-missing-material.xml index 49bcb3aa..cc96b017 100644 --- a/server/user.jobengine.executors/jobtemplates/retrieve-missing-material.xml +++ b/server/user.jobengine.executors/jobtemplates/retrieve-missing-material.xml @@ -3,6 +3,7 @@ + @@ -11,6 +12,9 @@ + + + diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportMORPHEUSMissingMaterialsStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportMORPHEUSMissingMaterialsStep.java index c5796eb4..4a0eadd9 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportMORPHEUSMissingMaterialsStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportMORPHEUSMissingMaterialsStep.java @@ -47,7 +47,7 @@ public class ImportMORPHEUSMissingMaterialsStep extends JobStep { private IJobRuntime jobRuntime; private int overall; private int current; - private final SimpleDateFormat enDateFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss:S", Locale.ENGLISH); + private final SimpleDateFormat enDateFormat = new SimpleDateFormat(MorpheusStrings.FORMAT_TIME_TO_AIR, Locale.ENGLISH); private Map buildMetadataMap(Path csvFilePath, String[] data) throws Exception { Map result = new HashMap<>(); @@ -132,6 +132,7 @@ public class ImportMORPHEUSMissingMaterialsStep extends JobStep { } else { logger.info(jobRuntime.getMarker(), "Az '{}' anyag megtalálható az archívumban.", materialID); dbObject.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_RESTORABLE); + dbObject.put(MorpheusStrings.MEDIAID, medias.get(0).getId()); } } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java index 65718f14..db95b6ae 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java @@ -1,13 +1,7 @@ package user.jobengine.server.steps; import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; import java.nio.file.Paths; -import java.nio.file.attribute.FileAttribute; -import java.nio.file.attribute.PosixFilePermission; -import java.nio.file.attribute.PosixFilePermissions; -import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.logging.log4j.LogManager; @@ -42,17 +36,6 @@ public class OutputPathAndNameSelectorStep extends JobStep { } } - private void ensureTargetPathExistence(String targetPath) throws IOException { - Path directoryPath = Paths.get(targetPath); - boolean create = !Files.exists(directoryPath) || !Files.isDirectory(directoryPath); - - if (create) { - Set perms = PosixFilePermissions.fromString("rwxrwxrwx"); - FileAttribute> attr = PosixFilePermissions.asFileAttribute(perms); - Files.createDirectory(directoryPath, attr); - } - } - @StepEntry public Object[] execute(String trafficOutputPath, String octopusOutputPath, String genericOutputPath, String houseId, IJobEngine jobEngine, IJobRuntime jobRuntime) throws IOException { @@ -75,10 +58,9 @@ public class OutputPathAndNameSelectorStep extends JobStep { } String targetNamePattern = houseId + TARGETNAMEPATTERN; try { - ensureTargetPathExistence(targetPath); + EscortFiles.ensureUNCFolder(Paths.get(targetPath)); } catch (Exception e) { - logger.catching(e); - logger.error(jobRuntime.getMarker(), "A cél mappa '{}' nem létezik és hozható létre. A rendszer hibaüzenete: {}", targetPath, e.getMessage()); + logger.error(jobRuntime.getMarker(), "A cél mappa '{}' nem létezik és nem hozható létre. A rendszer hibaüzenete: {}", targetPath, e.getMessage()); throw e; } return new Object[] { targetPath, targetNamePattern }; diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java index 6d1d78a9..fa06a547 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java @@ -66,7 +66,7 @@ public class TSMRestoreStep extends JobStep { } catch (Exception e) { Message msg = LogUtils.format("Az '{}' állomány visszatöltése sikertelen. A rendszer hibaüzenete: {}", sourceFileName, e.getMessage()); logger.error(getMarker(), msg); - logger.error(jobRuntime.getMarker(), msg); + //logger.error(jobRuntime.getMarker(), msg); logger.catching(e); throw e; } 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 index 7cb0e8f6..efb9e908 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRetrieveMissingMaterialStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRetrieveMissingMaterialStep.java @@ -9,37 +9,35 @@ import com.ibm.nosql.json.api.DBCollection; import user.commons.morpheus.MorpheusStrings; import user.commons.nosql.NoSQLUtils; +import user.jobengine.db.IItemManager; +import user.jobengine.db.Media; import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; -public class TSMRetrieveMissingMaterialStep extends JobStep { +public class TSMRetrieveMissingMaterialStep extends TSMRestoreStep { + private static final String TARGETNAMEPATTERN = "%s"; private static final Logger logger = LogManager.getLogger(); @StepEntry - public Object[] execute(BasicDBObject material, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { - logger.info(jobRuntime.getMarker(), "Starting"); + public Object[] execute(BasicDBObject material, String targetPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { try { - for (int i = 0; i < 10; i++) { - jobRuntime.incrementProgress((i + 1) * 10); - Thread.sleep(100); - } - } catch (Exception e) { - logger.error(e.getMessage()); - } - logger.info(jobRuntime.getMarker(), "Finished"); - - DB db = NoSQLUtils.getNoSQLDB(); - DBCollection collection = db.getCollection(MorpheusStrings.COLLECTION_NAME); - try { - material.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_DONE); + IItemManager itemManager = jobEngine.getItemManager(); + Media mediaCubeMedia = itemManager.getMedia(material.getLong(MorpheusStrings.MEDIAID)); + super.execute(mediaCubeMedia, targetPath, TARGETNAMEPATTERN, null, 0, jobEngine, jobRuntime); + saveMaterial(material, MorpheusStrings.STATUS_DONE); } catch (Exception e) { + saveMaterial(material, MorpheusStrings.STATUS_ERROR); logger.catching(e); - material.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_ERROR); throw e; - } finally { - collection.save(material); } return null; } + private void saveMaterial(BasicDBObject material, String status) throws Exception { + DB db = NoSQLUtils.getNoSQLDB(); + DBCollection collection = db.getCollection(MorpheusStrings.COLLECTION_NAME); + material.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_DONE); + collection.save(material); + } + } diff --git a/server/user.jobengine.osgi.commons/src/user/commons/morpheus/MorpheusStrings.java b/server/user.jobengine.osgi.commons/src/user/commons/morpheus/MorpheusStrings.java index 56e25655..9e775f5f 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/morpheus/MorpheusStrings.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/morpheus/MorpheusStrings.java @@ -15,6 +15,9 @@ public class MorpheusStrings { public static final String TIMETOAIR = "TimetoAir"; public static final String TIME_TO_AIR = "Time to Air"; public static final String STATUS = "Status"; + public static final String MEDIAID = "MediaID"; + + public static final String FORMAT_TIME_TO_AIR = "dd-MMM-yyyy HH:mm:ss:S"; public static final String STATUS_RETRIEVING = "RETRIEVING"; public static final String STATUS_RESTORABLE = "RESTORABLE"; diff --git a/server/user.jobengine.osgi.server/pages/joblist.zul b/server/user.jobengine.osgi.server/pages/joblist.zul index 1b7bdb4b..6786db73 100644 --- a/server/user.jobengine.osgi.server/pages/joblist.zul +++ b/server/user.jobengine.osgi.server/pages/joblist.zul @@ -18,7 +18,7 @@
- + diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/ScheduledJob.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/ScheduledJob.java index b4dfc69c..a7313a24 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/ScheduledJob.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/ScheduledJob.java @@ -70,6 +70,10 @@ public class ScheduledJob extends NativeJob { //implements InterruptableJob{ return jobName; } + public Map getJobParameters() { + return jobParameters; + } + public String getTemplateName() { return templateName; } @@ -125,4 +129,5 @@ public class ScheduledJob extends NativeJob { //implements InterruptableJob{ public String toString() { return String.format("!%s! %s", jobName, templateName); } + } diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/EscortFiles.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/EscortFiles.java index fb66fee7..3c5e6072 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/EscortFiles.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/EscortFiles.java @@ -34,14 +34,20 @@ import user.commons.CalendarUtils; public class EscortFiles { private static final Logger logger = LogManager.getLogger(); - private static final String KILLDATE_NAME = "%s.%s.killdate"; - private static final String YYYYMMDD = "yyyyMMdd"; + private static final String EXTENDEDAGENCY = "ExtendedAgency"; + private static final String EXTENDEDDESCRIPTION = "ExtendedDescription"; + private static final String KILLDATE = "KillDate"; + private static final String FORMAT_KILLDATE = "MM-dd-yyyy"; + private static final String EXTENDEDID = "extendedId"; + private static final String ID = "ID"; + private static final String KILLDATE_FILENAME = "%s.%s.killdate"; + private static final String FORMAT_KILLDATENAME = "yyyyMMdd"; public static final String STATUSFOLDER = ".STATUS"; public static String composeKillDate(int days) { Calendar killDate = Calendar.getInstance(); killDate.add(Calendar.DAY_OF_YEAR, days); - SimpleDateFormat dateFormat = new SimpleDateFormat(YYYYMMDD); + SimpleDateFormat dateFormat = new SimpleDateFormat(FORMAT_KILLDATENAME); return dateFormat.format(killDate.getTime()); } /* @@ -54,7 +60,7 @@ public class EscortFiles { */ private static String composeKillDateFileName(String fileName, int days) { - return String.format(KILLDATE_NAME, fileName, composeKillDate(days)); + return String.format(KILLDATE_FILENAME, fileName, composeKillDate(days)); } public static byte[] createNEXIOKillDateFile(String fileName, Date killDate, String description, String agency) throws Exception { @@ -63,17 +69,17 @@ public class EscortFiles { DOMImplementation impl = db.getDOMImplementation(); Document xmlDocument = impl.createDocument(null, null, null); - Element root = xmlDocument.createElement("ID"); - root.setAttribute("extendedId", fileName); + Element root = xmlDocument.createElement(ID); + root.setAttribute(EXTENDEDID, fileName); if (killDate != null) { - String sKillDate = CalendarUtils.toString(CalendarUtils.createCalendar(killDate), "MM-dd-yyyy"); - root.appendChild(xmlDocument.createElement("KillDate")).appendChild(xmlDocument.createTextNode(sKillDate)); + String sKillDate = CalendarUtils.toString(CalendarUtils.createCalendar(killDate), FORMAT_KILLDATE); + root.appendChild(xmlDocument.createElement(KILLDATE)).appendChild(xmlDocument.createTextNode(sKillDate)); } if (StringUtils.isNotBlank(description)) - root.appendChild(xmlDocument.createElement("ExtendedDescription")).appendChild(xmlDocument.createTextNode(description)); + root.appendChild(xmlDocument.createElement(EXTENDEDDESCRIPTION)).appendChild(xmlDocument.createTextNode(description)); if (StringUtils.isNotBlank(agency)) - root.appendChild(xmlDocument.createElement("ExtendedAgency")).appendChild(xmlDocument.createTextNode(agency)); + root.appendChild(xmlDocument.createElement(EXTENDEDAGENCY)).appendChild(xmlDocument.createTextNode(agency)); xmlDocument.appendChild(root); DOMSource domSource = new DOMSource(xmlDocument); @@ -101,19 +107,27 @@ public class EscortFiles { Files.createFile(killDatePath); } - public static void ensureUNCFolder(String filePath, String folderName) throws IOException { - Path statusPath = Paths.get(filePath, folderName); - File statusFolder = statusPath.toFile(); - if (!statusFolder.exists() || !statusFolder.isDirectory()) { + public static void ensureUNCFolder(Path filePath) throws IOException { + File folder = filePath.toFile(); + if (!folder.exists() || !folder.isDirectory()) { Set perms = PosixFilePermissions.fromString("rwxrwxrwx"); FileAttribute> attr = PosixFilePermissions.asFileAttribute(perms); - try { - Files.createDirectories(statusPath, attr); + Files.createDirectories(filePath, attr); } catch (Exception e) { logger.catching(e); - Files.createDirectories(statusPath); + try { + Files.createDirectory(filePath); + } catch (Exception e1) { + logger.catching(e); + throw e; + } } } } + + public static void ensureUNCFolder(String filePath, String folderName) throws IOException { + Path statusPath = Paths.get(filePath, folderName); + ensureUNCFolder(statusPath); + } } 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 8fb779e7..fd5c9199 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 @@ -1,18 +1,16 @@ package user.jobengine.zk.model; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.zkoss.bind.BindUtils; import org.zkoss.bind.annotation.Command; import org.zkoss.bind.annotation.Init; import org.zkoss.bind.annotation.NotifyChange; import org.zkoss.zk.ui.Executions; import org.zkoss.zul.ListModelList; +import org.zkoss.zul.Messagebox; import org.zkoss.zul.Window; import user.jobengine.db.ItemManagerData.SignalType; @@ -23,13 +21,8 @@ import user.jobengine.server.JobChangedEvent; import user.jobengine.server.JobEngine; import user.jobengine.zk.util.SessionUtil; -public class JobListModel extends BaseModel implements IJobChangedListener { - private class EnableServerStart { - } - +public class JobListModel extends AsyncBaseModel implements IJobChangedListener { private static final Logger logger = LogManager.getLogger(); - private List jobEvents = new ArrayList(); - //protected CachedListModel searchResult = null; private ListModelList jobList = new ListModelList(); private IJobRuntime selectedJob = null; private IJobEngine jobEngine = null; @@ -43,7 +36,6 @@ public class JobListModel extends BaseModel implements IJobChangedListener { for (IJobRuntime job : this.jobList.getSelection()) { job.setPriority(newPriority); jobEngine.rePrioritization(job); - // this.jobList.notifyChange(job); } } } @@ -89,7 +81,7 @@ public class JobListModel extends BaseModel implements IJobChangedListener { setShutdownDisabled(!jobEngine.isRunning()); setStartupDisabled(jobEngine.isRunning()); - SessionUtil.registerJobChangedListener(this); //sessionlistener fog leiratkozni + SessionUtil.registerJobChangedListener(this); initializeList(); @@ -104,11 +96,6 @@ public class JobListModel extends BaseModel implements IJobChangedListener { jobList.clear(); Map jobMap = this.jobEngine.getJobs(); jobList.addAll(jobMap.values()); - // List allItems = jobEngine.getItemManager().getAll(Job.class); - // for (IEntityBase entity : allItems) { - // jobList.add(new JobRuntime((IJob) entity)); - // } - //Collections.sort(jobList, (o1, o2) -> compare(o1, o2)); } @@ -116,8 +103,6 @@ public class JobListModel extends BaseModel implements IJobChangedListener { return shutdownDisabled; } - //TEST CODE ***************************************************** - public boolean isStartupDisabled() { return startupDisabled; } @@ -133,48 +118,42 @@ public class JobListModel extends BaseModel implements IJobChangedListener { @Override public void jobChanged(JobChangedEvent event) { - if (event != null) { - synchronized (jobEvents) { - jobEvents.add(event); - } + JobChangedEvent jobEvent = event; + final IJobRuntime job = jobEvent.getJob(); + if (jobEvent.getSignalType().equals(SignalType.CREATE)) { + registerTask(() -> onJobCreated(job)); + return; + } + if (jobEvent.getSignalType().equals(SignalType.DELETE)) { + registerTask(() -> onJobDeleted(job)); + return; + } + if (jobEvent.getSignalType().equals(SignalType.UPDATE)) { + registerTask(() -> onJobUpdated(job)); + return; } } - @Command - //@NotifyChange({ "jobList" }) - public void refreshJobList() { - synchronized (jobEvents) { - if (jobEvents.size() > 0) { - boolean mustRefreshList = false; - for (Object event : jobEvents) { - if (event instanceof JobChangedEvent) { - JobChangedEvent jobEvent = (JobChangedEvent) event; - IJobRuntime job = jobEvent.getJob(); - if (jobEvent.getSignalType().equals(SignalType.DELETE)) { - this.jobList.remove(jobEvent.getJob()); - mustRefreshList = true; - } else if (jobEvent.getSignalType().equals(SignalType.CREATE)) { - this.jobList.add(jobEvent.getJob()); - mustRefreshList = true; - } else if (jobEvent.getSignalType().equals(SignalType.UPDATE)) { - this.jobList.notifyChange(job); - } - } - if (event instanceof EnableServerStart) { - setStartupDisabled(false); - BindUtils.postNotifyChange(null, null, this, "startupDisabled"); - } - } - if (mustRefreshList) { - BindUtils.postNotifyChange(null, null, this, "jobList"); - } - jobEvents.clear(); - } - } + private void onJobCreated(IJobRuntime job) { + jobList.add(job); + NotifyChange("jobList"); + } + + private void onJobDeleted(IJobRuntime job) { + jobList.remove(job); + NotifyChange("jobList"); + } + + private void onJobUpdated(IJobRuntime job) { + jobList.notifyChange(job); + } + + private void onShutdown() { + jobEngine.shutdown(); + setStartupDisabled(false); } @Command - @NotifyChange({ "shutdownDisabled", "startupDisabled" }) public void restart() { startupDisabled = true; try { @@ -203,42 +182,31 @@ public class JobListModel extends BaseModel implements IJobChangedListener { this.selectedJob = _selectedJob; } - //@NotifyChange({ "shutdownDisabled" }) public void setShutdownDisabled(boolean shutdownDisabled) { this.shutdownDisabled = shutdownDisabled; + NotifyChange("shutdownDisabled"); } - @NotifyChange({ "startupDisabled" }) public void setStartupDisabled(boolean startupDisabled) { this.startupDisabled = startupDisabled; + NotifyChange("startupDisabled"); } @Command - @NotifyChange({ "shutdownDisabled", "startupDisabled" }) public void shutdown() { - shutdownDisabled = true; - Runnable r = new Runnable() { - @Override - public void run() { - jobEngine.shutdown(); - synchronized (jobEvents) { - jobEvents.add(new EnableServerStart()); - } - } - }; - Thread t = new Thread(r); - t.start(); + setShutdownDisabled(true); + registerTask(() -> onShutdown()); } @Command - @NotifyChange({ "shutdownDisabled", "startupDisabled" }) public void startup() { - startupDisabled = true; + setStartupDisabled(true); try { jobEngine.startup(); } catch (Exception e) { + Messagebox.show(e.getMessage()); } - shutdownDisabled = false; + setShutdownDisabled(false); 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 3fb885fd..bc6268e8 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 @@ -34,6 +34,7 @@ import user.jobengine.zk.util.SessionUtil; public class MissingMaterialsModel extends AsyncBaseModel implements IJobChangedListener { private static final Logger logger = LogManager.getLogger(); + private static final String TARGETPATH = "targetPath"; private static final String IMPORT_DISABLED = "importDisabled"; private static final String TEMPLATE = "template"; private static final String IMPORT_TEMPLATE = "import-morpheus-missing-materials.xml"; @@ -44,26 +45,14 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged private IJobEngine jobEngine = null; private boolean importDisabled; private DBCollection collection; + private ScheduledJob importJob; @Command public void executeImportJob() { try { setImportDisabled(true); - SchedulerService scheduler = jobEngine.getScheduler(); - List jobs = NoSQLUtils.asList(scheduler.getScheduleJobs()); - BasicDBObject importJob = null; - for (BasicDBObject job : jobs) { - if (isImportJob(job.getString(TEMPLATE))) { - importJob = job; - //logger.info(job.toString()); - break; - } - } - if (importJob == null) - throw new NullPointerException("Nem található az import sablon."); - ScheduledJob scheduledJob = scheduler.createScheduledJob(importJob); - scheduledJob.setJobEngine(jobEngine); - scheduledJob.doJob(); + importJob.setJobEngine(jobEngine); + importJob.doJob(); } catch (Exception e) { logger.catching(e); Messagebox.show(e.getMessage()); @@ -72,7 +61,19 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged @Command public void executeRestoreJobs() { - //logger.info("Selected: " + selectedJobs.size()); + if (importJob == null) { + Messagebox.show("Nem található a rendszerben a 'import-morpheus-missing-materials.xml' folyamatsablon."); + return; + } + + Map jobParameters = importJob.getJobParameters(); + Object targetPath = jobParameters.get(TARGETPATH); + if (!(targetPath instanceof String)) { + Messagebox.show("Nem található a rendszerben a 'import-morpheus-missing-materials.xml' folyamatsablon."); + return; + + } + for (BasicDBObject material : selectedJobs) { String status = material.getString(MorpheusStrings.STATUS); if (!MorpheusStrings.STATUS_RESTORABLE.equals(status)) @@ -85,8 +86,9 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged logger.warn("'{}' already retrieving", name); } else { try { + //String targetPath, String targetNamePattern, String successRecipient jobEngine.submit(RETRIEVE_TEMPLATE, String.format("%s hiányzó anyag visszatöltése", name), - ListUtils.asMap(MorpheusStrings.MATERIAL, material)); + ListUtils.asMap(MorpheusStrings.MATERIAL, material, TARGETPATH, String.valueOf(targetPath))); } catch (Exception e) { logger.catching(e); } @@ -100,6 +102,22 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged } } + private ScheduledJob getImportScheduledJob() { + SchedulerService scheduler = jobEngine.getScheduler(); + List jobs = NoSQLUtils.asList(scheduler.getScheduleJobs()); + BasicDBObject importJob = null; + for (BasicDBObject job : jobs) { + if (isImportJob(job.getString(TEMPLATE))) { + importJob = job; + //logger.info(job.toString()); + break; + } + } + if (importJob == null) + throw new NullPointerException("Nem található az import sablon."); + return scheduler.createScheduledJob(importJob); + } + public ListModelList getJobList() { return jobList; } @@ -129,6 +147,9 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged this.jobEngine = JobEngine.getInstance(); if (jobEngine == null) throw new Exception("Belső hiba! A JobEngine szolgáltatás elérhetetlen."); + + importJob = getImportScheduledJob(); + List jobRuntimes = new ArrayList<>(jobEngine.getJobs().values()); Optional findFirst = jobRuntimes.stream().filter(jobRuntime -> isImportJob(jobRuntime.getTemplate())).findFirst(); if (findFirst.isPresent()) @@ -136,6 +157,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged initializeList(); } catch (Exception e) { logger.catching(e); + Messagebox.show(e.getMessage()); } } -- 2.54.0