git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 12 Feb 2018 10:31:56 +0000 (10:31 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Mon, 12 Feb 2018 10:31:56 +0000 (10:31 +0000)
server/-configuration/run-mediacube-server-bsh.launch
server/-configuration/scheduledjobs.json
server/-product/mediacube.product
server/user.jobengine.executors/jobtemplates/retrieve-missing-material.xml
server/user.jobengine.executors/src/user/jobengine/server/steps/ImportMORPHEUSMissingMaterialsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRetrieveMissingMaterialStep.java
server/user.jobengine.osgi.commons/META-INF/MANIFEST.MF
server/user.jobengine.osgi.commons/src/user/commons/morpheus/MorpheusStrings.java [new file with mode: 0644]
server/user.jobengine.osgi.commons/test/user/common/octopus/test/OctopusDataMinerTest.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java

index 994675ae5f8618e4bab536a876b79f9e06e386fd..e6edad96f5f4cd19bfd0a2c8759116dd79f8c06c 100644 (file)
@@ -19,7 +19,7 @@
 <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&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-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&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Dnexio.host=10.10.1.55&#13;&#10;-Dnexio.disable=true&#13;&#10;-Djobengine.octopus.rundowns.name=test_rundowns&#13;&#10;-Djobengine.octopus.storyfolders.name=test_storyfolders&#13;&#10;-Djobengine.octopus.stories.name=test_stories&#13;&#10;-Dmediacube.auth.location=&quot;${workspace_loc}/-configuration/mediacube-auth.properties&quot;"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-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&#13;&#10;-Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty&#13;&#10;-Djava.io.tmpdir=c:\temp\jetty&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Dnexio.host=10.10.1.55&#13;&#10;-Dnexio.disable=true&#13;&#10;-Djobengine.octopus.rundowns.name=test_rundowns&#13;&#10;-Djobengine.octopus.storyfolders.name=test_storyfolders&#13;&#10;-Djobengine.octopus.stories.name=test_stories&#13;&#10;-Dmediacube.auth.location=&quot;${workspace_loc}/-configuration/mediacube-auth.properties&quot;"/>\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
index 953a3db7d1ef73f7da64afd06dc7dab843a61fd4..378dd271eb243f7ca6eb4a02d1f8b47e8c5cb937 100644 (file)
@@ -77,7 +77,7 @@
       ]\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
index 63ec8450ff6ef129c0178be4d4880ee393ab2c8b..74e9543b69a7b56d9b13aed0f9d2509bf7ca7f80 100644 (file)
@@ -9,25 +9,26 @@
    <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;
index 8a900df3057c9906bf0ad19dfbfd9dd30534faec..49bcb3aa10d98ee1e7de54eda014f7f60e397553 100644 (file)
@@ -1,15 +1,15 @@
 <?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
index 65df9e6f4ee576a1bf0beb43d1c3c5b96889a15d..c5796eb4017b77cc3fa8dee331d2d54d02b8b809 100644 (file)
@@ -27,6 +27,7 @@ import com.ibm.nosql.json.api.DBObject;
 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
@@ -35,17 +36,7 @@ import user.jobengine.server.IJobEngine;
 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
@@ -61,13 +52,13 @@ public class ImportMORPHEUSMissingMaterialsStep extends JobStep {
        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
@@ -98,47 +89,49 @@ public class ImportMORPHEUSMissingMaterialsStep extends JobStep {
        }\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
@@ -244,7 +237,7 @@ public class ImportMORPHEUSMissingMaterialsStep extends JobStep {
        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
index d0688081ab6d3f86dbc9e78e43b151b04c188ece..7cb0e8f6d9d6679e5f498047e9d727cf3268b436 100644 (file)
@@ -3,6 +3,12 @@ package user.jobengine.server.steps;
 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
@@ -10,17 +16,29 @@ public class TSMRetrieveMissingMaterialStep extends JobStep {
        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
index 1b5c10849354639c2e112a5bdfa42afcdc7ab383..51f1af6fc6c781783cef70c45da2c359e3f93d2a 100644 (file)
@@ -21,6 +21,7 @@ Service-Component: OSGI-INF/nexioAPI.xml, OSGI-INF/octopusAPI.xml
 Export-Package: user.commons,
  user.commons.ftp,
  user.commons.logging,
+ user.commons.morpheus,
  user.commons.nexio,
  user.commons.nosql,
  user.commons.octopus,
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
new file mode 100644 (file)
index 0000000..56e2565
--- /dev/null
@@ -0,0 +1,27 @@
+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
index cf6962ad865cb13c3f91578b5ba331e91cf02299..e94eeada764dafbbaf799847b754cb0e1426f0c9 100644 (file)
@@ -109,6 +109,14 @@ public class OctopusDataMinerTest {
        //\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
@@ -163,4 +171,5 @@ public class OctopusDataMinerTest {
                list2.add(new BasicDBObject("z", 3));\r
                assertTrue(list1.equals(list2));\r
        }\r
+\r
 }\r
index 241dd640488b00b4cf6f942dff4f7fae93dd016c..3fb885fd623416f5849a8a408918760c6c2f3705 100644 (file)
@@ -20,6 +20,7 @@ import com.ibm.nosql.json.api.DBCollection;
 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
@@ -33,15 +34,16 @@ import user.jobengine.zk.util.SessionUtil;
 \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
@@ -71,23 +73,29 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
        @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
@@ -96,6 +104,15 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                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
@@ -113,7 +130,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                        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
@@ -124,8 +141,8 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
 \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
@@ -146,13 +163,16 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                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
@@ -165,10 +185,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                                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
@@ -177,14 +194,12 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                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
@@ -194,7 +209,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
 \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