<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>\r
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>\r
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djobengine.jobsteps.root="${workspace_loc}/user.jobengine.executors/config" -Djobengine.jobtemplates.root="${workspace_loc}/user.jobengine.executors/jobtemplates" -Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=password -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djobengine.jobsteps.alternate.root="${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps" -Djetty.home="${workspace_loc:}/-configuration/jetty" -Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml -Djobengine.octopus.api.address=http://10.10.1.11/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=password -Djobengine.nosql.db.schema=test -Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl -Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Dnexio.host=10.10.1.55 -Dnexio.disable=true -Djobengine.octopus.rundowns.name=test_rundowns -Djobengine.octopus.storyfolders.name=test_storyfolders -Djobengine.octopus.stories.name=test_stories -Dmediacube.auth.location="${workspace_loc}/-configuration/mediacube-auth.properties""/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djobengine.jobsteps.root="${workspace_loc}/user.jobengine.executors/config" -Djobengine.jobtemplates.root="${workspace_loc}/user.jobengine.executors/jobtemplates" -Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=password -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djobengine.jobsteps.alternate.root="${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps" -Djetty.home="${workspace_loc:}/-configuration/jetty" -Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml -Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty -Djava.io.tmpdir=c:\temp\jetty -Djobengine.octopus.api.address=http://10.10.1.11/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=password -Djobengine.nosql.db.schema=test -Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl -Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Dnexio.host=10.10.1.55 -Dnexio.disable=true -Djobengine.octopus.rundowns.name=test_rundowns -Djobengine.octopus.storyfolders.name=test_storyfolders -Djobengine.octopus.stories.name=test_stories -Dmediacube.auth.location="${workspace_loc}/-configuration/mediacube-auth.properties""/>\r
<stringAttribute key="pde.version" value="3.3"/>\r
<booleanAttribute key="show_selected_only" value="true"/>\r
<stringAttribute key="target_bundles" value="cglib@default:default,com.auth0.java-jwt@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.fasterxml.jackson.datatype.jackson-datatype-joda@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-base@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider@default:default,com.fasterxml.jackson.module.jackson-module-jaxb-annotations@default:default,com.google.guava@default:default,com.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,com.sun.el.javax.el@default:default,commons-logging@default:default,javax.annotation-api@default:default,javax.inject@default:default,javax.mail@default:default,javax.servlet-api@default:default,javax.servlet.jsp-api@default:default,javax.validation.api@default:default,javax.ws.rs-api@default:default,jcifs@default:default,joda-time@default:default,org.apache.aries.spifly.dynamic.bundle@default:default,org.apache.aries.util@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@default:default,org.apache.commons.lang3@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.logging.log4j.api@1:true,org.apache.logging.log4j.core@default:default,org.apache.logging.log4j.slf4j-impl@default:default,org.apache.servicemix.bundles.quartz@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.util@default:default,org.eclipse.jetty.client@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.jsp@default:default,org.eclipse.jetty.osgi.boot.jsp@default:false,org.eclipse.jetty.osgi.boot@default:true,org.eclipse.jetty.schemas@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.jboss.resteasy.client@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
]\r
}, \r
{\r
- "active": true,\r
+ "active": false,\r
"executeimmediate": false,\r
"name" : "Lejárt NEXIO anyagok törlése",\r
"template": "delete-nexio-materials.xml",\r
<launcherArgs>\r
<programArgs>-consoleLog -console 5555\r
</programArgs>\r
- <vmArgs>-Xms512m
--Xmx1024m
--Dfile.encoding=UTF-8
--agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8888
--Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory
-
-#System
--Djetty.home=/opt/mediacube/configuration/jetty
--Dlog4j.configurationFile=/opt/mediacube/configuration/log4j2.xml
--Djobengine.jobsteps.root=/opt/mediacube/configuration/executors
--Djobengine.jobtemplates.root=/opt/mediacube/configuration/jobtemplates
--Djobengine.jobscheduling.config=/opt/mediacube/configuration/scheduledjobs.json
--Dmediacube.auth.location=/opt/mediacube/configuration/mediacube-auth.properties
-
--Dorg.eclipse.epp.logging.aeri.skipReports=true
--Declipse.ignoreApp=true
--Dosgi.noShutdown=true
--Djobengine.loglevel=INFO
+ <vmArgs>-Xms512m\r
+-Xmx1024m\r
+-Dfile.encoding=UTF-8\r
+-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8888\r
+-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory\r
+\r
+#System\r
+-Djetty.home=/opt/mediacube/configuration/jetty\r
+-Dlog4j.configurationFile=/opt/mediacube/configuration/log4j2.xml\r
+-Djobengine.jobsteps.root=/opt/mediacube/configuration/executors\r
+-Djobengine.jobtemplates.root=/opt/mediacube/configuration/jobtemplates\r
+-Djobengine.jobscheduling.config=/opt/mediacube/configuration/scheduledjobs.json\r
+-Dmediacube.auth.location=/opt/mediacube/configuration/mediacube-auth.properties\r
+\r
+-Dorg.eclipse.epp.logging.aeri.skipReports=true \r
+-Declipse.ignoreApp=true \r
+-Dosgi.noShutdown=true\r
+-Djobengine.loglevel=INFO\r
-Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,etc/user-jetty-http.xml,etc/user-jetty-https.xml\r
+-Djava.io.tmpdir=/opt/mediacube/tmp\r
</vmArgs>\r
<vmArgsLin>#Database
-Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;
<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate name="Archivált anyag visszatöltése">\r
+<jobtemplate name="Archivált anyag visszatöltése" multiInstance="true">\r
<declarations>\r
<parameters>\r
- <parameter name="fileName" type="java.lang.String" />\r
+ <parameter name="material" type="com.ibm.nosql.json.api.BasicDBObject" />\r
</parameters>\r
</declarations>\r
<commands>\r
<calljobstep type="user.jobengine.server.steps.TSMRetrieveMissingMaterialStep" weight="1">\r
<inputs>\r
<input>\r
- <parameter name="fileName" />\r
+ <parameter name="material" />\r
</input>\r
</inputs>\r
</calljobstep>\r
import com.ibm.nosql.json.api.QueryBuilder;\r
\r
import user.commons.IEntityBase;\r
+import user.commons.morpheus.MorpheusStrings;\r
import user.commons.nosql.NoSQLUtils;\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.db.MediaFile;\r
import user.jobengine.server.IJobRuntime;\r
\r
public class ImportMORPHEUSMissingMaterialsStep extends JobStep {\r
- private static final String STATUS = "Status";\r
- private static final String IMPORTED = "Imported";\r
private static final Logger logger = LogManager.getLogger();\r
- private static final String MATERIAL_ID = "Material ID";\r
- private static final String CHANNEL = "Channel";\r
- private static final String TIME_TO_AIR = "Time to Air";\r
- private static final String DURATION = "Duration";\r
- private static final String TITLE = "Title";\r
- private static final String DEVICE_ID = "Device ID";\r
- private static final String REASON = "Reason";\r
- private static final String COLLECTION_NAME = "missing_materials";\r
\r
private static final String CSV_EXT = ".csv";\r
private static final String MXF_EXT = ".MXF";\r
private Map<String, Integer> buildMetadataMap(Path csvFilePath, String[] data) throws Exception {\r
Map<String, Integer> result = new HashMap<>();\r
List<String> dataList = Arrays.asList(data);\r
- storeMetadataPosition(csvFilePath, dataList, MATERIAL_ID, result);\r
- storeMetadataPosition(csvFilePath, dataList, CHANNEL, result);\r
- storeMetadataPosition(csvFilePath, dataList, TIME_TO_AIR, result);\r
- storeMetadataPosition(csvFilePath, dataList, DURATION, result);\r
- storeMetadataPosition(csvFilePath, dataList, TITLE, result);\r
- storeMetadataPosition(csvFilePath, dataList, DEVICE_ID, result);\r
- storeMetadataPosition(csvFilePath, dataList, REASON, result);\r
+ storeMetadataPosition(csvFilePath, dataList, MorpheusStrings.MATERIAL_ID, result);\r
+ storeMetadataPosition(csvFilePath, dataList, MorpheusStrings.CHANNEL, result);\r
+ storeMetadataPosition(csvFilePath, dataList, MorpheusStrings.TIME_TO_AIR, result);\r
+ storeMetadataPosition(csvFilePath, dataList, MorpheusStrings.DURATION, result);\r
+ storeMetadataPosition(csvFilePath, dataList, MorpheusStrings.TITLE, result);\r
+ storeMetadataPosition(csvFilePath, dataList, MorpheusStrings.DEVICE_ID, result);\r
+ storeMetadataPosition(csvFilePath, dataList, MorpheusStrings.REASON, result);\r
return result;\r
}\r
\r
}\r
\r
private void processLine(String[] data, Map<String, Integer> metadatas) throws Exception {\r
- String channel = data[metadatas.get(CHANNEL)];\r
- String timeToAir = data[metadatas.get(TIME_TO_AIR)];\r
- String duration = data[metadatas.get(DURATION)];\r
- String materialID = data[metadatas.get(MATERIAL_ID)];\r
- String title = data[metadatas.get(TITLE)];\r
- String deviceID = data[metadatas.get(DEVICE_ID)];\r
- String reason = data[metadatas.get(REASON)];\r
-\r
- DBObject query = QueryBuilder.start().and(QueryBuilder.start(MATERIAL_ID).is(materialID).get(), QueryBuilder.start(TIME_TO_AIR).is(timeToAir).get())\r
+ String channel = data[metadatas.get(MorpheusStrings.CHANNEL)];\r
+ String timeToAir = data[metadatas.get(MorpheusStrings.TIME_TO_AIR)];\r
+ String duration = data[metadatas.get(MorpheusStrings.DURATION)];\r
+ String materialID = data[metadatas.get(MorpheusStrings.MATERIAL_ID)];\r
+ String title = data[metadatas.get(MorpheusStrings.TITLE)];\r
+ String deviceID = data[metadatas.get(MorpheusStrings.DEVICE_ID)];\r
+ String reason = data[metadatas.get(MorpheusStrings.REASON)];\r
+\r
+ DBObject query = QueryBuilder.start()\r
+ .and(QueryBuilder.start(MorpheusStrings.MATERIALID).is(materialID).get(), QueryBuilder.start(MorpheusStrings.TIMETOAIR).is(timeToAir).get())\r
.get();\r
- DBCollection collection = db.getCollection(COLLECTION_NAME);\r
+ DBCollection collection = db.getCollection(MorpheusStrings.COLLECTION_NAME);\r
BasicDBObject existingObject = (BasicDBObject) collection.findOne(query);\r
if (existingObject != null) {\r
- logger.warn(jobRuntime.getMarker(), "Az '{}' anyag már feldolgozásra került az {} időpontban.", materialID, existingObject.getDate(IMPORTED));\r
+ logger.warn(jobRuntime.getMarker(), "Az '{}' anyag már feldolgozásra került az {} időpontban.", materialID,\r
+ existingObject.getDate(MorpheusStrings.IMPORTED));\r
return;\r
}\r
\r
- BasicDBObject dbObject = new BasicDBObject(IMPORTED, new Date());\r
- dbObject.put(CHANNEL, channel);\r
- dbObject.put(TIME_TO_AIR.replace(" ", ""), enDateFormat.parse(timeToAir));\r
- dbObject.put(DURATION, duration);\r
- dbObject.put(MATERIAL_ID.replace(" ", ""), materialID);\r
- dbObject.put(TITLE, title);\r
- dbObject.put(DEVICE_ID.replace(" ", ""), deviceID);\r
- dbObject.put(REASON, reason);\r
+ BasicDBObject dbObject = new BasicDBObject(MorpheusStrings.IMPORTED, new Date());\r
+ dbObject.put(MorpheusStrings.CHANNEL, channel);\r
+ dbObject.put(MorpheusStrings.TIMETOAIR, enDateFormat.parse(timeToAir));\r
+ dbObject.put(MorpheusStrings.DURATION, duration);\r
+ dbObject.put(MorpheusStrings.MATERIALID, materialID);\r
+ dbObject.put(MorpheusStrings.TITLE, title);\r
+ dbObject.put(MorpheusStrings.DEVICEID, deviceID);\r
+ dbObject.put(MorpheusStrings.REASON, reason);\r
\r
String fileName = materialID + MXF_EXT;\r
if (Files.exists(Paths.get(targetPath, fileName))) {\r
logger.warn(jobRuntime.getMarker(), "Az '{}' anyag már be van töltve.", materialID);\r
- dbObject.put(STATUS, "SKIPPED");\r
+ dbObject.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_SKIPPED);\r
} else {\r
List<IEntityBase> medias = dao.getByHouseId(fileName);\r
if (medias == null || medias.size() == 0) {\r
logger.warn(jobRuntime.getMarker(), "Az '{}' anyag nem található az archívumban.", materialID);\r
- dbObject.put(STATUS, "UNAVAILABLE");\r
+ dbObject.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_UNAVAILABLE);\r
} else if (medias.size() > 1) {\r
logger.warn(jobRuntime.getMarker(), "Az '{}' anyagból egynél több található az archívumban.", materialID);\r
- dbObject.put(STATUS, "MULTIPLE");\r
+ dbObject.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_MULTIPLE);\r
} else {\r
logger.info(jobRuntime.getMarker(), "Az '{}' anyag megtalálható az archívumban.", materialID);\r
- dbObject.put(STATUS, "RESTORABLE");\r
+ dbObject.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_RESTORABLE);\r
}\r
\r
}\r
private void storeMetadataPosition(Path csvFilePath, List<String> dataList, String name, Map<String, Integer> metadatas) throws Exception {\r
int pos = dataList.indexOf(name);\r
if (pos < 0)\r
- throw new Exception(String.format("A '%s' MORPHEUS állományban nem található a '%s' mező.", csvFilePath.getFileName(), MATERIAL_ID));\r
+ throw new Exception(String.format("A '%s' MORPHEUS állományban nem található a '%s' mező.", csvFilePath.getFileName(), name));\r
metadatas.put(name, pos);\r
}\r
\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+import com.ibm.nosql.json.api.DB;\r
+import com.ibm.nosql.json.api.DBCollection;\r
+\r
+import user.commons.morpheus.MorpheusStrings;\r
+import user.commons.nosql.NoSQLUtils;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
\r
private static final Logger logger = LogManager.getLogger();\r
\r
@StepEntry\r
- public Object[] execute(String fileName, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ public Object[] execute(BasicDBObject material, 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
+ Thread.sleep(100);\r
}\r
} catch (Exception e) {\r
logger.error(e.getMessage());\r
}\r
logger.info(jobRuntime.getMarker(), "Finished");\r
+\r
+ DB db = NoSQLUtils.getNoSQLDB();\r
+ DBCollection collection = db.getCollection(MorpheusStrings.COLLECTION_NAME);\r
+ try {\r
+ material.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_DONE);\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ material.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_ERROR);\r
+ throw e;\r
+ } finally {\r
+ collection.save(material);\r
+ }\r
return null;\r
}\r
\r
Export-Package: user.commons,
user.commons.ftp,
user.commons.logging,
+ user.commons.morpheus,
user.commons.nexio,
user.commons.nosql,
user.commons.octopus,
--- /dev/null
+package user.commons.morpheus;\r
+\r
+public class MorpheusStrings {\r
+ public static final String COLLECTION_NAME = "missing_materials";\r
+ public static final String MATERIAL = "material";\r
+ public static final String MATERIALID = "MaterialID";\r
+ public static final String MATERIAL_ID = "Material ID";\r
+ public static final String IMPORTED = "Imported";\r
+ public static final String CHANNEL = "Channel";\r
+ public static final String DURATION = "Duration";\r
+ public static final String TITLE = "Title";\r
+ public static final String DEVICEID = "DeviceID";\r
+ public static final String DEVICE_ID = "Device ID";\r
+ public static final String REASON = "Reason";\r
+ public static final String TIMETOAIR = "TimetoAir";\r
+ public static final String TIME_TO_AIR = "Time to Air";\r
+ public static final String STATUS = "Status";\r
+\r
+ public static final String STATUS_RETRIEVING = "RETRIEVING";\r
+ public static final String STATUS_RESTORABLE = "RESTORABLE";\r
+ public static final String STATUS_DONE = "DONE";\r
+ public static final String STATUS_ERROR = "ERROR";\r
+ public static final String STATUS_SKIPPED = "SKIPPED";\r
+ public static final String STATUS_UNAVAILABLE = "UNAVAILABLE";\r
+ public static final String STATUS_MULTIPLE = "MULTIPLE";\r
+\r
+}\r
//\r
// }\r
\r
+ // @Test\r
+ // public void test1() {\r
+ // BasicDBObject x = new BasicDBObject("x", "x");\r
+ // BasicDBObject y = new BasicDBObject("x", "y");\r
+ //\r
+ // assertEquals(x, y);\r
+ // }\r
+\r
@Test\r
public void testClient() {\r
ResteasyWebTarget webTarget = new ResteasyClientBuilder().build().target("http://10.10.1.28/services/rest/octopus/");\r
list2.add(new BasicDBObject("z", 3));\r
assertTrue(list1.equals(list2));\r
}\r
+\r
}\r
import com.ibm.nosql.json.api.DBCursor;\r
\r
import user.commons.ListUtils;\r
+import user.commons.morpheus.MorpheusStrings;\r
import user.commons.nosql.NoSQLUtils;\r
import user.jobengine.db.ItemManagerData.SignalType;\r
import user.jobengine.server.IJobChangedListener;\r
\r
public class MissingMaterialsModel extends AsyncBaseModel implements IJobChangedListener {\r
private static final Logger logger = LogManager.getLogger();\r
+ private static final String IMPORT_DISABLED = "importDisabled";\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
private Set<BasicDBObject> selectedJobs;\r
private IJobEngine jobEngine = null;\r
private boolean importDisabled;\r
+ private DBCollection collection;\r
\r
@Command\r
public void executeImportJob() {\r
@Command\r
public void executeRestoreJobs() {\r
//logger.info("Selected: " + selectedJobs.size());\r
- for (BasicDBObject job : selectedJobs) {\r
- String name = job.getString("MaterialID");\r
+ for (BasicDBObject material : selectedJobs) {\r
+ String status = material.getString(MorpheusStrings.STATUS);\r
+ if (!MorpheusStrings.STATUS_RESTORABLE.equals(status))\r
+ continue;\r
List<IJobRuntime> jobRuntimes = new ArrayList<>(jobEngine.getJobs().values());\r
- Optional<IJobRuntime> findFirst = jobRuntimes.stream().filter(j -> isRetrieveJobFor(j, "fileName", name)).findFirst();\r
+ Optional<IJobRuntime> findFirst = jobRuntimes.stream().filter(jobRuntime -> isRetrieveJobFor(jobRuntime, material)).findFirst();\r
+\r
+ String name = material.getString(MorpheusStrings.MATERIALID);\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
+ jobEngine.submit(RETRIEVE_TEMPLATE, String.format("%s hiányzó anyag visszatöltése", name),\r
+ ListUtils.asMap(MorpheusStrings.MATERIAL, material));\r
} catch (Exception e) {\r
logger.catching(e);\r
}\r
}\r
\r
- job.put("Status", "RETRIEVING");\r
+ material.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_RETRIEVING);\r
+ collection.save(material);\r
registerTask(() -> {\r
- BindUtils.postNotifyChange(null, null, job, "*");\r
+ BindUtils.postNotifyChange(null, null, material, "*");\r
});\r
}\r
}\r
return jobList;\r
}\r
\r
+ private BasicDBObject getJobMaterial(IJobRuntime jobRuntime) {\r
+ BasicDBObject result = null;\r
+ Map<String, Object> parameters = jobRuntime.getParameters();\r
+ Object parameter = parameters.get(MorpheusStrings.MATERIAL);\r
+ if (parameter != null && parameter instanceof BasicDBObject)\r
+ result = (BasicDBObject) parameter;\r
+ return result;\r
+ }\r
+\r
public BasicDBObject getSelectedJob() {\r
return this.selectedJob;\r
}\r
if (jobEngine == null)\r
throw new Exception("Belső hiba! A JobEngine szolgáltatás elérhetetlen.");\r
List<IJobRuntime> jobRuntimes = new ArrayList<>(jobEngine.getJobs().values());\r
- Optional<IJobRuntime> findFirst = jobRuntimes.stream().filter(j -> isImportJob(j.getTemplate())).findFirst();\r
+ Optional<IJobRuntime> findFirst = jobRuntimes.stream().filter(jobRuntime -> isImportJob(jobRuntime.getTemplate())).findFirst();\r
if (findFirst.isPresent())\r
setImportDisabled(true);\r
initializeList();\r
\r
private void initializeList() {\r
DB db = NoSQLUtils.getNoSQLDB();\r
- DBCollection collection = db.getCollection(COLLECTION_NAME);\r
- DBCursor cursor = collection.find().sort(new BasicDBObject("TimetoAir", -1)).limit(1000);\r
+ collection = db.getCollection(MorpheusStrings.COLLECTION_NAME);\r
+ DBCursor cursor = collection.find().sort(new BasicDBObject(MorpheusStrings.TIMETOAIR, -1)).limit(1000);\r
if (selectedJobs != null)\r
selectedJobs.clear();\r
jobList.clear();\r
return RETRIEVE_TEMPLATE.equals(template);\r
}\r
\r
- private boolean isRetrieveJobFor(IJobRuntime job, String parameterName, String name) {\r
+ private boolean isRetrieveJobFor(IJobRuntime jobRuntime, BasicDBObject material) {\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
+ if (RETRIEVE_TEMPLATE.equals(jobRuntime.getTemplate())) {\r
+ BasicDBObject jobMaterial = getJobMaterial(jobRuntime);\r
+ if (jobMaterial != null) {\r
+ String jobMaterialName = jobMaterial.getString(MorpheusStrings.MATERIALID);\r
+ String materialName = material.getString(MorpheusStrings.MATERIALID);\r
+ if (jobMaterialName != null && materialName != null)\r
+ result = materialName.equals(jobMaterialName);\r
+ }\r
}\r
return result;\r
}\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
+ registerTask(() -> onRetrieveJobChanged(job));\r
}\r
}\r
\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
+ private void onRetrieveJobChanged(IJobRuntime jobRuntime) {\r
+ Optional<BasicDBObject> findFirst = jobList.stream().filter(material -> isRetrieveJobFor(jobRuntime, material)).findFirst();\r
+ if (findFirst.isPresent()) {\r
+ BasicDBObject material = findFirst.get();\r
+ BindUtils.postNotifyChange(null, null, material, "*");\r
+ }\r
}\r
\r
@Command\r
\r
public void setImportDisabled(boolean importDisabled) {\r
this.importDisabled = importDisabled;\r
- NotifyChange("importDisabled");\r
+ NotifyChange(IMPORT_DISABLED);\r
}\r
\r
public void setJobList(ListModelList<BasicDBObject> jobList) {\r