git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 28 Jun 2018 08:25:43 +0000 (08:25 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 28 Jun 2018 08:25:43 +0000 (08:25 +0000)
23 files changed:
server/-configuration/run-mediacube-server-bsh.launch
server/-configuration/scheduledjobs.json
server/user.jobengine.executors/config/config.xml
server/user.jobengine.executors/config/scheduledjobs.json
server/user.jobengine.executors/jobtemplates/import-morpheus-missing-materials.xml
server/user.jobengine.executors/jobtemplates/sys-recreate-length.xml
server/user.jobengine.executors/jobtemplates/sys-recreate-lowres.xml
server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveListBuilderStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIOMaterialsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/DeleteFileStep.java [new file with mode: 0644]
server/user.jobengine.executors/src/user/jobengine/server/steps/DetectMissingLengthStep.java [new file with mode: 0644]
server/user.jobengine.executors/src/user/jobengine/server/steps/ImportMORPHEUSMissingMaterialsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/ItemManagerExtensions.java [new file with mode: 0644]
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeSELENIOStep.java
server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDispatcher.java
server/user.jobengine.osgi.commons/src/user/commons/nosql/NoSQLUtils.java
server/user.jobengine.osgi.commons/src/user/commons/octopus/OctopusAPI.java
server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java
server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/NewsHistoryCharts.java
server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java

index ec4eca746e8f571724fd2e57cc23461f89fa9704..c423329166bbf0a46eb72253dddd6f698ced17f0 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/&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="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/&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=rundowns&#13;&#10;-Djobengine.octopus.storyfolders.name=storyfolders&#13;&#10;-Djobengine.octopus.stories.name=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="false"/>\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,humble.video.noarch@default:default,humble.video.windows@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 bbf85d24fb0c9b2bd3833c83556dafda817a5832..5da5c503b0bfcbb1cf9947bc3220f410c3241d13 100644 (file)
@@ -54,7 +54,7 @@
       "template": "import-statistics.xml",\r
       "cronexpression": "0 0 0/1 1/1 * ? *",\r
       "parameters": [ \r
-       {"name": "daysBeforeNow", "value": 1, "type": "java.lang.Integer"}\r
+       {"name": "daysBeforeNow", "value": 5, "type": "java.lang.Integer"}\r
       ]\r
        },\r
        {\r
index 0193802ca5104d1ac901a569d2d998dfcbd2dbef..be5e7ef0d19d6cd56c5410a3d38dac14c83fe2a0 100644 (file)
@@ -11,6 +11,8 @@
        <executor className="user.jobengine.server.steps.CopyForArchiveNEXIORecordingsStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.CreateMissingLowresStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.DeleteNEXIOMaterialsStep" maxConcurrent="1"/>\r
+       <executor className="user.jobengine.server.steps.DetectMissingLengthStep" maxConcurrent="1"/>\r
+       <executor className="user.jobengine.server.steps.DeleteFileStep" maxConcurrent="100"/>\r
        <executor className="user.jobengine.server.steps.DownloadRecordingFromNexioStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.FakeNoParamsStep" maxConcurrent="20"/>\r
        <executor className="user.jobengine.server.steps.FakeStep" maxConcurrent="20"/>\r
index 1574ddb3e1b3de6afd89262056394790a96c25f3..765919efaf2079902beaf64465ee74e4f860db29 100644 (file)
@@ -19,7 +19,7 @@
        {\r
       "active": false,\r
       "executeimmediate": false,\r
-         "name" : "MORPHEUS 'missing materials' importálása",\r
+         "name" : "sys: MORPHEUS 'missing materials' importálása",\r
       "template": "import-morpheus-missing-materials.xml",\r
       "cronexpression": "0 0 0/1 1/1 * ? *",\r
       "parameters": [ \r
index 9745eaf4e4d00e8359aa0c90e6c9fb9e6444cf30..c339f0675bfb2c6e538cd35f37d569bbd8b629f9 100644 (file)
@@ -6,9 +6,6 @@
                        <parameter name="processedFolder" type="java.lang.String" />\r
                        <parameter name="targetPath" type="java.lang.String" />\r
                </parameters>\r
-               <variables>\r
-                       <variable name="xxx" type="java.lang.String" />\r
-               </variables>\r
        </declarations>\r
        <commands>\r
                <calljobstep type="user.jobengine.server.steps.ImportMORPHEUSMissingMaterialsStep" weight="1">\r
index 44c0e0990d19c4f43d4cb47341ed57f1acee4410..ccf8632add5e6726c2c22e0cfbba1b5fa3e375d2 100644 (file)
@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate name="Visszarögzített anyagok archiválása mappából">\r
+<jobtemplate name="Hiányzó hosszak pótlása">\r
        <declarations>\r
                <parameters>\r
                        <parameter name="localHiresPath" type="java.lang.String" />\r
-                       <parameter name="globalHiresPath" type="java.lang.String" />\r
                </parameters>\r
                <variables>\r
                        <variable name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
                                </input>\r
                        </inputs>\r
                </calljobstep>\r
+               <calljobstep type="user.jobengine.server.steps.DeleteFileStep" weight="1">\r
+                       <inputs>\r
+                               <input>\r
+                                       <variable name="archiveItem" />\r
+                               </input>\r
+                               <input>\r
+                                       <variable name="deleteSource" />\r
+                               </input>\r
+                       </inputs>\r
+               </calljobstep>\r
        </commands>\r
 </jobtemplate>
\ No newline at end of file
index 5a617a21cafd4b2dfefab7c5eb780fd558cc78fa..b98bf6a07224e7722ea7d1e0ee53c4e0c780d3f6 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate name="Visszarögzített anyagok archiválása mappából">\r
+<jobtemplate name="Hiányzó PROXY videók pótlása">\r
        <declarations>\r
                <parameters>\r
                        <parameter name="localHiresPath" type="java.lang.String" />\r
index 18563521a21a431716f6f5fec59b7b5f90d7e12f..56367a85aa9c264054d515ccb0eb8791271aabf3 100644 (file)
@@ -44,6 +44,8 @@ public class ArchiveListBuilderStep extends JobStep {
        public static final String MEDIA_DESCRIPTION = "mediaDescription";\r
        public static final String MEDIA_TYPE = "mediaType";\r
        private static final String DURATION = "duration";\r
+       private static final String EXISTING_MEDIAID = "existingMediaId";\r
+\r
        private Marker marker;\r
 \r
        private ArchiveItem createArchiveItem(Path jsonFilePath, Path mediaFilePath, Path catchedFilePath) {\r
@@ -65,6 +67,7 @@ public class ArchiveListBuilderStep extends JobStep {
                        result.setMediaFile(mediaFilePath.toString());\r
                        result.setCatchedFile(catchedFilePath.toString());\r
                        result.setDuration(NoSQLUtils.asLong(dbObject, DURATION));\r
+                       result.setExistingMediaId(NoSQLUtils.asLong(dbObject, EXISTING_MEDIAID));\r
                } catch (IOException e) {\r
                        logger.catching(e);\r
                        return null;\r
@@ -126,6 +129,9 @@ public class ArchiveListBuilderStep extends JobStep {
        private boolean processPathItem(Path mediaFilePath, final List<ArchiveItem> archiveList, int limit) {\r
                File mediaFile = mediaFilePath.toFile();\r
 \r
+               //              if (mediaFile.length() > 0)\r
+               //                      return false;\r
+\r
                if (mediaFile.isDirectory() || !mediaFile.getName().toLowerCase().endsWith(MXFEXT.toLowerCase())\r
                                || mediaFile.getName().toLowerCase().endsWith(WAVEXT.toLowerCase())) {\r
                        return false;\r
index d164358583def22ebc18fb58e27e919c9f903fc7..916cd88b48c375812a9a6154d567b418e22edd88 100644 (file)
@@ -93,11 +93,11 @@ public class CopyForArchiveNEXIOMaterialsStep extends JobStep {
                String videoFileName = fileName + MXFEXT;\r
 \r
                //A mar letezo mozikat nem archivaljuk le ujra, csak a metaadatot\r
-               long existingMediaId = manager.getExistingRundownMedia(origFileName);\r
+               long existingMediaId = ItemManagerExtensions.getExistingRundownMedia(manager, origFileName);\r
                if (existingMediaId == 0)\r
                        transferFile(origFileName + MXFEXT, videoFileName);\r
                else\r
-                       transferChunk(origFileName);\r
+                       transferChunk(videoFileName);\r
 \r
                BasicDBObject metadata = createMetadata(rundownArchive, storyArchive, fileArchive, existingMediaId);\r
                transferMetadata(videoFileName, metadata);\r
@@ -373,7 +373,7 @@ public class CopyForArchiveNEXIOMaterialsStep extends JobStep {
                OutputStream outStream = null;\r
                try {\r
                        targetFtp = ((FtpDirectoryLister) targetUri.getLister()).connect();\r
-                       outStream = targetFtp.storeFileStream(fileName + MXFEXT);\r
+                       outStream = targetFtp.storeFileStream(fileName);\r
                        if (outStream == null) {\r
                                throw new NullPointerException("Can not open: " + fileName + MXFEXT + " Reply:" + targetFtp.getReplyString());\r
                        }\r
diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/DeleteFileStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/DeleteFileStep.java
new file mode 100644 (file)
index 0000000..68ae1d6
--- /dev/null
@@ -0,0 +1,39 @@
+package user.jobengine.server.steps;\r
+\r
+import java.io.File;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\r
+\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class DeleteFileStep extends JobStep {\r
+       private static final Logger logger = LogManager.getLogger();\r
+       private Marker marker;\r
+\r
+       @StepEntry\r
+       public Object[] execute(ArchiveItem archiveItem, boolean isDelete, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               marker = jobRuntime.getMarker();\r
+               if (isDelete) {\r
+                       Path filePath = Paths.get(archiveItem.getMediaFile());\r
+                       File file = filePath.toFile();\r
+                       if (file.exists()) {\r
+                               if (!file.isDirectory()) {\r
+                                       try {\r
+                                               file.delete();\r
+                                       } catch (Exception e) {\r
+                                               logger.error(marker, "A '{}' fájl nem törölhető. A rendszer üzenete: {}", filePath, e.getMessage());\r
+                                       }\r
+\r
+                               } else\r
+                                       logger.warn(marker, "A '{}' elérés egy mappa.", filePath);\r
+                       } else\r
+                               logger.warn(marker, "A '{}' fájl nem található.", filePath);\r
+               }\r
+               return null;\r
+       }\r
+}\r
diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/DetectMissingLengthStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/DetectMissingLengthStep.java
new file mode 100644 (file)
index 0000000..81d6d89
--- /dev/null
@@ -0,0 +1,68 @@
+package user.jobengine.server.steps;\r
+\r
+import java.nio.file.Paths;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\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
+import com.ibm.nosql.json.api.DBObject;\r
+\r
+import user.commons.nosql.NoSQLUtils;\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.IResultSetConsumer;\r
+import user.jobengine.db.Media;\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class DetectMissingLengthStep extends JobStep {\r
+       private static final Logger logger = LogManager.getLogger();\r
+       private Marker marker;\r
+\r
+       @StepEntry\r
+       public Object[] execute(String localHiresPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               Object[] result = { null, null, "%s", null, 0, true };\r
+               marker = jobRuntime.getMarker();\r
+\r
+               DB db = NoSQLUtils.getNoSQLDB();\r
+               DBCollection collection = db.getCollection("missing_length");\r
+               IItemManager manager = jobEngine.getItemManager();\r
+\r
+               try {\r
+                       String query = "select id from media where length=0 order by archived desc";\r
+                       IResultSetConsumer consumer = rs -> {\r
+                               Media media = manager.getMedia(rs.getLong("id"));\r
+                               media.setPersister(manager);\r
+                               return process(collection, result, localHiresPath, media);\r
+                       };\r
+                       manager.executeQuery(query.toString(), consumer, null);\r
+                       if (result[0] == null)\r
+                               throw new Exception("Nincs feldolgozandó hiány.");\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+                       logger.error(marker, e.getMessage());\r
+               } finally {\r
+                       setProgress(100);\r
+               }\r
+               return result;\r
+       }\r
+\r
+       public boolean process(DBCollection collection, Object[] result, String localHiresPath, Media media) {\r
+               String name = media.getMediaFilesName();\r
+               if (name == null)\r
+                       return true;\r
+               DBObject existing = collection.findOne(new BasicDBObject("name", name));\r
+               if (existing != null)\r
+                       return true;\r
+\r
+               result[0] = media;\r
+               ArchiveItem archiveItem = new ArchiveItem();\r
+               archiveItem.setMediaFile(Paths.get(localHiresPath, name).toString());\r
+               result[1] = archiveItem;\r
+               collection.save(new BasicDBObject("name", name));\r
+               return false;\r
+       }\r
+}\r
index 4a0eadd98ee33f30273d3f93d69c29b369e8bb30..4908da306f300bba3377c681b132a9ecee83cb1f 100644 (file)
@@ -57,8 +57,8 @@ public class ImportMORPHEUSMissingMaterialsStep extends JobStep {
                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
+               //              storeMetadataPosition(csvFilePath, dataList, MorpheusStrings.DEVICE_ID, result);\r
+               //              storeMetadataPosition(csvFilePath, dataList, MorpheusStrings.REASON, result);\r
                return result;\r
        }\r
 \r
@@ -94,8 +94,8 @@ public class ImportMORPHEUSMissingMaterialsStep extends JobStep {
                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
+               //              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
@@ -114,8 +114,8 @@ public class ImportMORPHEUSMissingMaterialsStep extends JobStep {
                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
+               //              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
@@ -132,7 +132,9 @@ public class ImportMORPHEUSMissingMaterialsStep extends JobStep {
                        } else {\r
                                logger.info(jobRuntime.getMarker(), "Az '{}' anyag megtalálható az archívumban.", materialID);\r
                                dbObject.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_RESTORABLE);\r
-                               dbObject.put(MorpheusStrings.MEDIAID, medias.get(0).getId());\r
+\r
+                               MediaFile mf = (MediaFile) medias.get(0);\r
+                               dbObject.put(MorpheusStrings.MEDIAID, mf.getMediaId());\r
                        }\r
 \r
                }\r
diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ItemManagerExtensions.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ItemManagerExtensions.java
new file mode 100644 (file)
index 0000000..6cc8a31
--- /dev/null
@@ -0,0 +1,28 @@
+package user.jobengine.server.steps;\r
+\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.IResultSetConsumer;\r
+\r
+public class ItemManagerExtensions {\r
+\r
+       public static long getExistingRundownMedia(IItemManager manager, String houseid) {\r
+               final long[] result = { 0 };\r
+               StringBuilder query = new StringBuilder();\r
+               query.append("select mediaid, mediafilehouseid, filename");\r
+               query.append(" ");\r
+               query.append(String.format("from vw_rundown_items where mediafilehouseid like '%s%%'", houseid));\r
+               query.append(" ");\r
+               query.append("order by filename, mediaid");\r
+               IResultSetConsumer consumer = rs -> {\r
+                       String fileName = rs.getString("filename");\r
+                       if (houseid.equals(fileName)) {\r
+                               result[0] = rs.getLong("mediaid");\r
+                               return false;\r
+                       } else\r
+                               return true;\r
+               };\r
+               manager.executeQuery(query.toString(), consumer, null);\r
+               return result[0];\r
+       }\r
+\r
+}\r
index d89aca15cabb0681a6f2cdd231e30ec218ea9bef..11349f6fbf518adfaf450fbffebc3e319a85d658 100644 (file)
@@ -54,7 +54,7 @@ public class TSMBackupStep extends JobStep {
                        //A dupla ellenorzes a napon beluli ismetlesek miatt kell\r
                        long existingMediaId = archiveItem.getExistingMediaId();\r
                        if (existingMediaId == 0)\r
-                               existingMediaId = manager.getExistingRundownMedia(sourceFileName.replace(MXFEXT, ""));\r
+                               existingMediaId = ItemManagerExtensions.getExistingRundownMedia(manager, sourceFileName.replace(MXFEXT, ""));\r
 \r
                        if (existingMediaId == 0) {\r
                                StoreUri sourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, sourceMediaFile.getParent().toString());\r
@@ -105,10 +105,10 @@ public class TSMBackupStep extends JobStep {
                        List<MediaFile> mediaFiles = existingMedia.getMediaFiles();\r
                        if (mediaFiles != null) {\r
                                for (MediaFile mf : mediaFiles) {\r
+                                       mf.setPersister(manager);\r
                                        mf.setId(0);\r
                                        mf.setMedia(mediaCubeMedia);\r
                                        mf.add();\r
-                                       mediaCubeMedia.appendMediaFile(mf);\r
                                }\r
                        }\r
                }\r
index 7f1f21b2a6ae44f531ff4b99bea0cfcf52f3fe05..efdcf7f5fec1284ad0fdf86b49944b9679e62eae 100644 (file)
@@ -105,7 +105,7 @@ public class TranscodeSELENIOStep extends JobStep {
                        //A dupla ellenorzes a napon beluli ismetlesek miatt kell\r
                        long existingMediaId = archiveItem.getExistingMediaId();\r
                        if (existingMediaId == 0)\r
-                               existingMediaId = manager.getExistingRundownMedia(sourceFileName.replace(MXFEXT, ""));\r
+                               existingMediaId = ItemManagerExtensions.getExistingRundownMedia(manager, sourceFileName.replace(MXFEXT, ""));\r
                        if (existingMediaId != 0)\r
                                return null;\r
 \r
index 774bdee71a1db52cdcf94565aa501185ab0cd28b..51097f8b96ebe00ea5e7537b46295a27c3345f52 100644 (file)
@@ -99,6 +99,13 @@ public class NexioDispatcher implements ClipEventListener {
        public NexioDispatcher() {\r
                this.db = NoSQLUtils.getNoSQLDB();\r
                disabled = Boolean.parseBoolean(System.getProperty(NEXIO_DISABLE, "false"));\r
+\r
+               //              Runtime.getRuntime().addShutdownHook(new Thread() {\r
+               //                      @Override\r
+               //                      public void run() {\r
+               //                              logger.info("SHUTDOWN!!!!!");\r
+               //                      }\r
+               //              });\r
        }\r
 \r
        @Override\r
index a4705e22e74b6e2c54d2f4f3a4557fab3e2a8a28..fad74d42eba95dab4ab697535ddd62078f273e92 100644 (file)
@@ -10,6 +10,8 @@ import org.apache.logging.log4j.Logger;
 import com.ibm.nosql.json.api.BasicDBList;\r
 import com.ibm.nosql.json.api.BasicDBObject;\r
 import com.ibm.nosql.json.api.DB;\r
+import com.ibm.nosql.json.api.DBCursor;\r
+import com.ibm.nosql.json.api.DBObject;\r
 import com.ibm.nosql.json.api.NoSQLClient;\r
 \r
 public class NoSQLUtils {\r
@@ -87,6 +89,16 @@ public class NoSQLUtils {
                return result;\r
        }\r
 \r
+       public static List<DBObject> asList(DBCursor cursor) {\r
+               List<DBObject> result = null;\r
+               if (cursor.hasNext())\r
+                       result = cursor.toArray();\r
+               cursor.close();\r
+               if (result == null)\r
+                       result = new ArrayList<>();\r
+               return result;\r
+       }\r
+\r
        public static long asLong(BasicDBObject obj, String name) {\r
                long result = 0;\r
                if (obj != null && obj.containsKey(name))\r
@@ -103,8 +115,8 @@ public class NoSQLUtils {
 \r
        public static DB getNoSQLDB() {\r
                try {\r
-                       if (noSQLClient == null)\r
-                               noSQLClient = NoSQLClient.getDB(NoSQLUtils.Url, NoSQLUtils.User, NoSQLUtils.Pass);\r
+                       //                      if (noSQLClient == null)\r
+                       noSQLClient = NoSQLClient.getDB(NoSQLUtils.Url, NoSQLUtils.User, NoSQLUtils.Pass);\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
                }\r
index 3040888ae7b1dac6c2a43c79cd5459479bbd28c4..df2e030085101cb8f07381bfccd9963172831363 100644 (file)
@@ -69,6 +69,7 @@ public class OctopusAPI implements IOctopusAPI {
                DBCursor findParents = rundownCollection.find(query);\r
                if (findParents.hasNext())\r
                        result = findParents.toArray();\r
+               findParents.close();\r
                return result;\r
        }\r
 \r
@@ -157,9 +158,14 @@ public class OctopusAPI implements IOctopusAPI {
                DBCollection storyCollection = db.getCollection(STORY_COLLECTION);\r
                BasicDBObject criteria = new BasicDBObject(MOS_OBJECTS, new BasicDBObject($ELEMMATCH, new BasicDBObject(OBJ_ID, id)));\r
                DBCursor find = storyCollection.find(criteria, new BasicDBObject(REF_RUNDOWN, 1));\r
-               if (!find.hasNext())\r
+               //List<DBObject> rundowns = NoSQLUtils.asList(find);\r
+               if (!find.hasNext()) {\r
+                       find.close();\r
                        return null;\r
-               return getReferencedObjects(find.toArray(), RUNDOWN_COLLECTION, REF_RUNDOWN);\r
+               }\r
+               List<DBObject> result = getReferencedObjects(find.toArray(), RUNDOWN_COLLECTION, REF_RUNDOWN);\r
+               find.close();\r
+               return result;\r
        }\r
 \r
        @Override\r
index 3e5c9bdc329f21cafc8b96b027741f57f2c62299..0b5f655fb34f36cad804dbdfe19d32705702d773 100644 (file)
@@ -146,7 +146,7 @@ public interface IItemManager extends IEntityPersister {
         */\r
        List<ItemType> getDynamicItemTypes();\r
 \r
-       long getExistingRundownMedia(String houseid);\r
+       //      long getExistingRundownMedia(String houseid);\r
 \r
        /**\r
         * Elkéri a FileTypeDAO-tól a bemeneti paraméterként kapott névvel rendelekző FileType-ot.\r
index 6729fe820470ef72b66edfe06dcdc19eb89eb5d1..26854aca3d63814a15197c46651fb39784719e6f 100644 (file)
@@ -554,25 +554,25 @@ public class ItemManager extends MemoryCache implements IItemManager {
                return result;\r
        }\r
 \r
-       @Override\r
-       public long getExistingRundownMedia(String houseid) {\r
-               final long[] result = { 0 };\r
-               StringBuilder query = new StringBuilder();\r
-               query.append("select itemid, mediaid, replace(mediafilehouseid, concat('-', concat(itemhouseid,'.MXF')), '') filename");\r
-               query.append(" ");\r
-               query.append("from vw_items where replace(mediafilehouseid, concat('-', itemhouseid), '') != mediafilehouseid");\r
-               query.append(" ");\r
-               query.append("and replace(mediafilehouseid, concat('-', concat(itemhouseid,'.MXF')), '') = ?");\r
-               IStatementDecorator decorator = st -> {\r
-                       st.setString(1, houseid);\r
-               };\r
-               IResultSetConsumer consumer = rs -> {\r
-                       result[0] = rs.getLong("mediaid");\r
-                       return false;\r
-               };\r
-               executeQuery(query.toString(), consumer, decorator);\r
-               return result[0];\r
-       }\r
+       //      @Override\r
+       //      public long getExistingRundownMedia(String houseid) {\r
+       //              final long[] result = { 0 };\r
+       //              StringBuilder query = new StringBuilder();\r
+       //              query.append("select itemid, mediaid, replace(mediafilehouseid, concat('-', concat(itemhouseid,'.MXF')), '') filename");\r
+       //              query.append(" ");\r
+       //              query.append("from vw_items where replace(mediafilehouseid, concat('-', itemhouseid), '') != mediafilehouseid");\r
+       //              query.append(" ");\r
+       //              query.append("and replace(mediafilehouseid, concat('-', concat(itemhouseid,'.MXF')), '') = ?");\r
+       //              IStatementDecorator decorator = st -> {\r
+       //                      st.setString(1, houseid);\r
+       //              };\r
+       //              IResultSetConsumer consumer = rs -> {\r
+       //                      result[0] = rs.getLong("mediaid");\r
+       //                      return false;\r
+       //              };\r
+       //              executeQuery(query.toString(), consumer, decorator);\r
+       //              return result[0];\r
+       //      }\r
 \r
        @Override\r
        public FileType getFileType(String name) {\r
index 83902809893d4ca72e8980588deae754e56d31ea..a32ded2b49baac438d88ab2c34bc612d56bec86d 100644 (file)
@@ -66,7 +66,7 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                Map<String, Object> jobParameters = importJob.getJobParameters();\r
                Object targetPath = jobParameters.get(TARGETPATH);\r
                if (!(targetPath instanceof String)) {\r
-                       Messagebox.show("Nem található a rendszerben a 'import-morpheus-missing-materials.xml' folyamatsablon.");\r
+                       Messagebox.show("Nem található az 'import-morpheus-missing-materials.xml' folyamatsablonban a 'targetPath' paraméter.");\r
                        return;\r
 \r
                }\r
index 559974f11aeab3e74542fc2a0a981a15e4ba78db..f5d2e8af471f0137868d63f0e5786a025fa64963 100644 (file)
@@ -20,7 +20,7 @@ public class NewsHistoryCharts {
                Point maxPoint = null;\r
                for (String name : datas.keySet()) {\r
                        BasicDBObject dbo = NoSQLUtils.asDBObject(datas, name);\r
-                       Number y = dbo.getLong(member);\r
+                       Number y = NoSQLUtils.asLong(dbo, member);\r
                        Point point = new Point(name, y);\r
                        charts.getSeries().addPoint(point);\r
                        if (maxPoint == null || y.longValue() > maxPoint.getY().longValue())\r
index 0afd81fff635aacd1eaffda99c070e4591b4a46b..3a0d3b8b218e1a7c8acfbb1b1be5e83acb551d8f 100644 (file)
@@ -31,9 +31,11 @@ import org.junit.AfterClass;
 import org.junit.BeforeClass;\r
 import org.junit.Test;\r
 \r
+import com.ibm.nosql.json.JSONUtil;\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
+import com.ibm.nosql.json.api.DBObject;\r
 \r
 import sqlj.runtime.ref.DefaultContext;\r
 import user.commons.CalendarUtils;\r
@@ -71,9 +73,9 @@ public class Support {
                //              System.setProperty("jobengine.octopus.rundowns.name", "test_rundowns");\r
                //              System.setProperty("jobengine.octopus.stories.name", "test_stories");\r
                //              System.setProperty("jobengine.octopus.storyfolders.name", "test_storyfolders");\r
-               System.setProperty("jobengine.octopus.rundowns.name", "rundowns180608");\r
-               System.setProperty("jobengine.octopus.stories.name", "stories180608");\r
-               System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180608");\r
+               System.setProperty("jobengine.octopus.rundowns.name", "rundowns180620");\r
+               System.setProperty("jobengine.octopus.stories.name", "stories180620");\r
+               System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180620");\r
 \r
                System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
                System.setProperty("jobengine.nosql.db.user", "db2admin");\r
@@ -226,28 +228,47 @@ public class Support {
                final Map<Media, List<String>> result = new HashMap<>();\r
                final List<String> resultList = new ArrayList<>();\r
                StringBuilder query = new StringBuilder();\r
-               query.append("select itemid, mediaid, replace(mediafilehouseid, concat('-', concat(itemhouseid,'.MXF')), '') filename");\r
+               query.append("select mediaid, mediafilehouseid, filename");\r
                query.append(" ");\r
-               query.append("from vw_items where replace(mediafilehouseid, concat('-', itemhouseid), '') != mediafilehouseid");\r
+               query.append(String.format("from vw_rundown_items where mediafilehouseid like '%s%%'", houseid));\r
                query.append(" ");\r
-               query.append("and replace(mediafilehouseid, concat('-', concat(itemhouseid,'.MXF')), '') = ?");\r
-               IStatementDecorator decorator = st -> {\r
-                       st.setString(1, houseid);\r
-               };\r
+               query.append("order by filename, mediaid");\r
                IResultSetConsumer consumer = rs -> {\r
-                       Media media = manager.getMedia(rs.getLong("mediaid"));\r
-\r
-                       if (result.size() == 0)\r
-                               result.put(media, resultList);\r
+                       String fileName = rs.getString("filename");\r
+                       if (houseid.equals(fileName)) {\r
+                               Media media = manager.getMedia(rs.getLong("mediaid"));\r
+                               if (result.size() == 0)\r
+                                       result.put(media, resultList);\r
 \r
-                       Item item = manager.getItem(media.getItemId());\r
-                       resultList.add(item.getTitle());\r
+                               Item item = manager.getItem(media.getItemId());\r
+                               resultList.add(item.getTitle());\r
+                       }\r
                        return true;\r
                };\r
-               manager.executeQuery(query.toString(), consumer, decorator);\r
+               manager.executeQuery(query.toString(), consumer, null);\r
                return result;\r
        }\r
 \r
+       public long getExistingRundownMedia(IItemManager manager, String houseid) {\r
+               final long[] result = { 0 };\r
+               StringBuilder query = new StringBuilder();\r
+               query.append("select mediaid, mediafilehouseid, filename");\r
+               query.append(" ");\r
+               query.append(String.format("from vw_rundown_items where mediafilehouseid like '%s%%'", houseid));\r
+               query.append(" ");\r
+               query.append("order by filename, mediaid");\r
+               IResultSetConsumer consumer = rs -> {\r
+                       String fileName = rs.getString("filename");\r
+                       if (houseid.equals(fileName)) {\r
+                               result[0] = rs.getLong("mediaid");\r
+                               return false;\r
+                       } else\r
+                               return true;\r
+               };\r
+               manager.executeQuery(query.toString(), consumer, null);\r
+               return result[0];\r
+       }\r
+\r
        private Item getRundownItem(BasicDBObject rundown) {\r
 \r
                StringBuilder query = new StringBuilder();\r
@@ -265,6 +286,22 @@ public class Support {
                return result[0];\r
        }\r
 \r
+       public List<String> getRundownMedias(String from, String to) {\r
+               final List<String> result = new ArrayList<>();\r
+               String query = "select distinct(filename) from vw_rundown_items where archived > ? and archived < ?";\r
+               IStatementDecorator decorator = s -> {\r
+                       s.setString(1, from);\r
+                       s.setString(2, to);\r
+               };\r
+               IResultSetConsumer consumer = rs -> {\r
+                       String fileName = rs.getString(1);\r
+                       result.add(fileName);\r
+                       return true;\r
+               };\r
+               manager.executeQuery(query, consumer, decorator);\r
+               return result;\r
+       }\r
+\r
        private String getRundownTitle(BasicDBObject rundown) {\r
                String name = NoSQLUtils.asString(NoSQLUtils.asDBObject(rundown, IOctopusAPI.RUNDOWN_TYPE), IOctopusAPI.NAME);\r
                if (StringUtils.isBlank(name))\r
@@ -463,11 +500,58 @@ public class Support {
        }\r
 \r
        @Test\r
-       public void test1() {\r
-               File sourceMediaFile = new File("c:/_downloads/mediacube-backlog-2018-05.pdf");\r
-               String sourceFileName = sourceMediaFile.getName();\r
-               String sourceFile = Paths.get("l:", sourceFileName).toString();\r
-               System.out.println(sourceFile);\r
+       public void repairRundownChunksNoLog() throws Exception {\r
+               OctopusAPI octopusAPI = new OctopusAPI();\r
+               List<String> archivedFiles = getRundownMedias("2018-03-03", "2018-06-07");\r
+               for (String file : archivedFiles) {\r
+                       //lenyeli a duplikalt hozzadast, lekezelni. addig nem futtathato!!!!!!!\r
+                       Map<Media, List<String>> existing = getExistingItemHouseIDs(file);\r
+\r
+                       Media media = (Media) existing.keySet().toArray()[0];\r
+                       List<String> itemTitles = (List<String>) existing.values().toArray()[0];\r
+                       List<BasicDBObject> rundowns = ListUtils.cast(octopusAPI.getRundownsByPlaceHolderID(file));\r
+                       System.out.println(String.format("%s %d: ", file, media.getId()));\r
+\r
+                       if (rundowns == null)\r
+                               continue;\r
+                       for (BasicDBObject rd : rundowns) {\r
+                               String rundownTitle = getRundownTitle(rd);\r
+                               if (itemTitles.contains(rundownTitle) || rundownTitle.contains("00:00"))\r
+                                       continue;\r
+\r
+                               Item item = getRundownItem(rd);\r
+                               if (item == null) {\r
+                                       item = manager.createItem("Generic", rundownTitle, null, NoSQLUtils.asString(rd, IOctopusAPI.ID));\r
+                                       item.add();\r
+                                       System.out.print(String.format("* %s,", rundownTitle));\r
+                               } else {\r
+                                       System.out.print(String.format("%s (%d),", rundownTitle, item.getId()));\r
+                               }\r
+\r
+                               List<MediaFile> mediaFiles = media.getMediaFiles();\r
+                               if (mediaFiles != null) {\r
+                                       for (MediaFile mf : mediaFiles) {\r
+                                               mf.setId(0);\r
+                                               mf.setMediaId(0);\r
+                                       }\r
+                               }\r
+                               media.setId(0);\r
+                               media.setItemId(item.getId());\r
+                               media.setPersister(manager);\r
+                               media.add();\r
+\r
+                       }\r
+               }\r
+       }\r
+\r
+       @Test\r
+       public void test1() throws IOException {\r
+               byte[] content = Files.readAllBytes(Paths.get("//10.10.1.100/BRAAVOS/ARCHIVE/.STATUS/!!!!!76952087-76828571-CAM02_2070-20180517082324.MXF.json"));\r
+\r
+               DBObject o = JSONUtil.jsonToDbObject(new String(content));\r
+\r
+               System.out.println(o);\r
+\r
        }\r
 \r
 }\r