<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/" -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="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/" -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=rundowns -Djobengine.octopus.storyfolders.name=storyfolders -Djobengine.octopus.stories.name=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="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
"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
<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
{\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
<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
<?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
<?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
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
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
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
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
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
--- /dev/null
+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
--- /dev/null
+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
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
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
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
} 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
--- /dev/null
+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
//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
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
//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
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
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
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
\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
DBCursor findParents = rundownCollection.find(query);\r
if (findParents.hasNext())\r
result = findParents.toArray();\r
+ findParents.close();\r
return result;\r
}\r
\r
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
*/\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
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
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
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
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
// 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
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
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
}\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