<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 -Dlog4j.configurationFile=settings/log4j2.xml -Djetty.home=settings -Djetty.etc.config.urls=jetty.xml -Dgosh.home=configuration -Djava.io.tmpdir=tmp"/>\r
+ <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dlog4j.configurationFile=settings/log4j2.xml -Djetty.home=settings/jetty -Djetty.etc.config.urls=jetty.xml,jetty-ssl.xml,jetty-ssl-context.xml,jetty-http.xml,jetty-https.xml -Dgosh.home=configuration -Djava.io.tmpdir=tmp"/>\r
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="C:\_workspace\USER\MediaCube\server\-product\production\HIRTV"/>\r
<stringAttribute key="pde.version" value="3.3"/>\r
<setAttribute key="selected_target_bundles">\r
\Q/production/AMC/tmp/\E.*\r
\Q/production/LOCAL/log/\E.*\r
\Q/production/LOCAL/tmp/\E.*\r
+\Q/production/HIRTV/jobs/classes/\E.*\r
+\Q/production/LOCAL/jobs/classes/\E.*\r
--- /dev/null
+@echo off\r
+cd "F:\mediacube"\r
+\r
+if not exist Z:\ net use Z: \\192.168.23.160\VICC dal /user:hadmin /persistent:yes\r
+if not exist G:\downloads mkdir G:\downloads\r
+if not exist G:\uploads mkdir G:\uploads\r
+if not exist F:\mediacube\uploads mklink /D F:\mediacube\uploads G:\uploads\r
+if not exist F:\mediacube\downloads mklink /D F:\mediacube\downloads G:\downloads\r
+\r
+del /Q G:\downloads\.STATUS\*.catched\r
+del /Q G:\downloads\*.part\r
+\r
+del /Q G:\uploads\.STATUS\*.catched\r
+del /Q G:\uploads\*.part\r
+\r
+if exist tmp rmdir tmp /s /q\r
+mkdir tmp\r
+\r
+set "DSMI_CONFIG=F:\mediacube\settings\dsm.opt"\r
+set "DSM_CONFIG=F:\mediacube\settings\dsm.opt"\r
+set "DSMI_DIR=c:\Program Files\Tivoli\TSM\baclient"\r
+set "DSM_DIR=F:\mediacube"\r
+set "DSMI_LOG=F:\mediacube\log"\r
+set "LD_LIBRARY_PATH=c:\Program Files\Tivoli\TSM\baclient;c:\opt\mediacube"\r
+set "LIBPATH=c:\Program Files\Tivoli\TSM\baclient"\r
+set "SHLIB_PATH=c:\Program Files\Tivoli\TSM\baclient"\r
+set "PATH=F:\jdk1.8.0_112\bin\;%PATH%"\r
+\r
+java ^\r
+-Dcom.sun.management.jmxremote ^\r
+-Dcom.sun.management.jmxremote.port=9010 ^\r
+-Dcom.sun.management.jmxremote.local.only=false ^\r
+-Dcom.sun.management.jmxremote.authenticate=false ^\r
+-Dcom.sun.management.jmxremote.ssl=false ^\r
+-Dorg.eclipse.epp.logging.aeri.skipReports=true ^\r
+-Declipse.ignoreApp=true ^\r
+-Dosgi.noShutdown=true ^\r
+-Dlog4j.configurationFile=settings/log4j2.xml ^\r
+-Djetty.home=settings ^\r
+-Djetty.etc.config.urls=jetty.xml ^\r
+-Djava.io.tmpdir=tmp ^\r
+-Dfile.encoding=UTF-8 ^\r
+-Dgosh.home=configuration ^\r
+-Djna.library.path=F:/mediacube ^\r
+-jar plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar ^\r
+-Xms512m ^\r
+-Xmx4096m ^\r
+-console\r
+++ /dev/null
-executors:\r
- - className: user.jobengine.server.steps.ArchiveListBuilderStep\r
- maxConcurrent: 1\r
- - className: user.jobengine.server.steps.ArchiveMaterialSubmitStep\r
- maxConcurrent: 2\r
--- /dev/null
+{"joblist":[\r
+ {\r
+ "template": "cancelable.xml"\r
+ }, \r
+ {\r
+ "active": true,\r
+ "executeimmediate": true,\r
+ "name" : "OCTOPUS adatok szinkronizálása",\r
+ "template": "sync-octopus.xml",\r
+ "cronexpression": "0/30 * * * * ?",\r
+ "parameters": [\r
+ {"name": "includeArchived", "value": false, "type": "java.lang.Boolean"},\r
+ {"name": "address", "value": "http://10.10.1.10/api/v1", "type": "java.lang.String"},\r
+ {"name": "user", "value": "mam", "type": "java.lang.String"},\r
+ {"name": "pwd", "value": "napocska", "type": "java.lang.String"}\r
+ ]\r
+ }, \r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "Limitált archiválás az ISILON/ARCHIVE mappából",\r
+ "template": "archive-limited.xml",\r
+ "cronexpression": "0 0 6-22/2 * * ?",\r
+ "parameters": [ \r
+ {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE", "type": "java.lang.String"},\r
+ {"name": "killDateDays", "value": 1, "type": "java.lang.Integer"},\r
+ {"name": "limit", "value": 20, "type": "java.lang.Integer"}\r
+ ]\r
+ },\r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "Archiválás az ISILON/ARCHIVE mappából",\r
+ "template": "archive-ondemand.xml",\r
+ "cronexpression": "0 0 1 * * ?",\r
+ "parameters": [ \r
+ {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE", "type": "java.lang.String"},\r
+ {"name": "killDateDays", "value": 1, "type": "java.lang.Integer"},\r
+ {"name": "limit", "value": 0, "type": "java.lang.Integer"}\r
+ ]\r
+ },\r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "PROXY pótlás FFASTRANS 71",\r
+ "template": "sys-recreate-lowres-71.xml",\r
+ "cronexpression": "0 * * * * ?",\r
+ "parameters": [ \r
+ {"name": "localLowresPath", "value": "/mnt/FIXTRANSCODER-71/OUTPUT", "type": "java.lang.String" },\r
+ {"name": "transcoderAddress", "value": "http://10.10.1.71:65445/api/json/v1/", "type": "java.lang.String"},\r
+ {"name": "globalRetrievePath", "value": "file://10.10.1.30/transcode", "type": "java.lang.String"},\r
+ {"name": "localRetrievePath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String"},\r
+ {"name": "localHiresPath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String" },\r
+ {"name": "globalHiresPath", "value": "L:\\transcode", "type": "java.lang.String" },\r
+ {"name": "transcoderTemplateName", "value": "MAM_proxy", "type": "java.lang.String"}\r
+ ]\r
+ },\r
+ {\r
+ "active": false,\r
+ "executeimmediate": false,\r
+ "name" : "PROXY pótlás FFASTRANS 72",\r
+ "template": "sys-recreate-lowres-72.xml",\r
+ "cronexpression": "10 * * * * ?",\r
+ "parameters": [ \r
+ {"name": "localLowresPath", "value": "/mnt/FIXTRANSCODER-72/OUTPUT", "type": "java.lang.String" },\r
+ {"name": "transcoderAddress", "value": "http://10.10.1.72:65445/api/json/v1/", "type": "java.lang.String"},\r
+ {"name": "globalRetrievePath", "value": "file://10.10.1.30/transcode", "type": "java.lang.String"},\r
+ {"name": "localRetrievePath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String"},\r
+ {"name": "localHiresPath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String" },\r
+ {"name": "globalHiresPath", "value": "L:\\transcode", "type": "java.lang.String" },\r
+ {"name": "transcoderTemplateName", "value": "MAM_proxy", "type": "java.lang.String"}\r
+ ]\r
+ },\r
+ {\r
+ "active": false,\r
+ "executeimmediate": false,\r
+ "name" : "PROXY pótlás FFASTRANS 73",\r
+ "template": "sys-recreate-lowres-73.xml",\r
+ "cronexpression": "20 * * * * ?",\r
+ "parameters": [ \r
+ {"name": "localLowresPath", "value": "/mnt/FIXTRANSCODER-73/OUTPUT", "type": "java.lang.String" },\r
+ {"name": "transcoderAddress", "value": "http://10.10.1.73:65445/api/json/v1/", "type": "java.lang.String"},\r
+ {"name": "globalRetrievePath", "value": "file://10.10.1.30/transcode", "type": "java.lang.String"},\r
+ {"name": "localRetrievePath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String"},\r
+ {"name": "localHiresPath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String" },\r
+ {"name": "globalHiresPath", "value": "L:\\transcode", "type": "java.lang.String" },\r
+ {"name": "transcoderTemplateName", "value": "MAM_proxy", "type": "java.lang.String"}\r
+ ]\r
+ },\r
+ {\r
+ "active": false,\r
+ "executeimmediate": false,\r
+ "name" : "PROXY pótlás FFASTRANS 74",\r
+ "template": "sys-recreate-lowres-74.xml",\r
+ "cronexpression": "30 * * * * ?",\r
+ "parameters": [ \r
+ {"name": "localLowresPath", "value": "/mnt/FIXTRANSCODER-74/OUTPUT", "type": "java.lang.String" },\r
+ {"name": "transcoderAddress", "value": "http://10.10.1.74:65445/api/json/v1/", "type": "java.lang.String"},\r
+ {"name": "globalRetrievePath", "value": "file://10.10.1.30/transcode", "type": "java.lang.String"},\r
+ {"name": "localRetrievePath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String"},\r
+ {"name": "localHiresPath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String" },\r
+ {"name": "globalHiresPath", "value": "L:\\transcode", "type": "java.lang.String" },\r
+ {"name": "transcoderTemplateName", "value": "MAM_proxy", "type": "java.lang.String"}\r
+ ]\r
+ },\r
+ {\r
+ "name" : "SYS: create-lowres-ondemand",\r
+ "template": "create-lowres-ondemand.xml",\r
+ "parameters": [ \r
+ {"name": "globalRetrievePath", "value": "file://10.10.1.30/transcode", "type": "java.lang.String"},\r
+ {"name": "localRetrievePath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String"},\r
+ {"name": "localHiresPath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String" },\r
+ {"name": "globalHiresPath", "value": "L:\\transcode", "type": "java.lang.String" },\r
+ {"name": "localLowresPath", "value": "/mnt/FIXTRANSCODER/OUTPUT", "type": "java.lang.String" },\r
+ {"name": "transcoderAddress", "value": "http://10.10.1.74:65445/api/json/v1/", "type": "java.lang.String"},\r
+ {"name": "transcoderTemplateName", "value": "MAM_proxy", "type": "java.lang.String"}\r
+ ]\r
+ },\r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "Lejárt ISISLON/ARCHIVE anyagok törlése",\r
+ "template": "delete-materials1.xml",\r
+ "cronexpression": "0 0 5 * * ?",\r
+ "parameters": [ \r
+ {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE", "type": "java.lang.String"},\r
+ {"name": "skipArchiveCheck", "value": true, "type": "java.lang.Boolean"}\r
+ ]\r
+ }, \r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "Lejárt ISILON/TQC/CHECK/KESZ anyagok törlése",\r
+ "template": "delete-materials2.xml",\r
+ "cronexpression": "0 0 8 * * ?",\r
+ "parameters": [ \r
+ {"name": "sourcePath", "value": "/mnt/ISILON/TQC/CHECK/KESZ", "type": "java.lang.String"},\r
+ {"name": "skipArchiveCheck", "value": true, "type": "java.lang.Boolean"}\r
+ ]\r
+ }, \r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "Lejárt ISILON/TQC/PROMO/KESZ anyagok törlése",\r
+ "template": "delete-materials3.xml",\r
+ "cronexpression": "0 0 6 * * ?",\r
+ "parameters": [ \r
+ {"name": "sourcePath", "value": "/mnt/ISILON/TQC/PROMO/KESZ", "type": "java.lang.String"},\r
+ {"name": "skipArchiveCheck", "value": true, "type": "java.lang.Boolean"}\r
+ ]\r
+ }, \r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "Lejárt ISILON/TQC/REKLAM/KESZ anyagok törlése",\r
+ "template": "delete-materials4.xml",\r
+ "cronexpression": "0 0 7 * * ?",\r
+ "parameters": [ \r
+ {"name": "sourcePath", "value": "/mnt/ISILON/TQC/REKLAM/KESZ", "type": "java.lang.String"},\r
+ {"name": "skipArchiveCheck", "value": true, "type": "java.lang.Boolean"}\r
+ ]\r
+ }, \r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "Lejárt ISILON/OCTOPUS/_NAPI_MEGTEKINTO anyagok törlése",\r
+ "template": "delete-materials5.xml",\r
+ "cronexpression": "0 0 22 * * ?",\r
+ "parameters": [ \r
+ {"name": "sourcePath", "value": "/mnt/ISILON/OCTOPUS/_NAPI_MEGTEKINTO", "type": "java.lang.String"},\r
+ {"name": "skipArchiveCheck", "value": true, "type": "java.lang.Boolean"}\r
+ ]\r
+ }, \r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "Lejárt ISISLON/PROMO_NLE mappák törlése",\r
+ "template": "delete-promo-materials.xml",\r
+ "cronexpression": "0 0 6 * * ?",\r
+ "parameters": [ \r
+ {"name": "sourcePath", "value": "/mnt/ISILON/PROMO_NLE", "type": "java.lang.String"}\r
+ ]\r
+ }, \r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "NEXIO bejátszó anyagok másolása az ISILON/ARCHIVE mappába",\r
+ "template": "copyforarchive-nexio-materials.xml",\r
+ "cronexpression": "0 0 10 * * ?",\r
+ "parameters": [ \r
+ {"name": "nexioPort", "value": 2098, "type": "java.lang.Integer"},\r
+ {"name": "nexioUserName", "value": "administrator", "type": "java.lang.String"},\r
+ {"name": "nexioPassword", "value": "system", "type": "java.lang.String"},\r
+ {"name": "archiveFtp", "value": "ftp://10.10.1.100/ARCHIVE", "type": "java.lang.String"},\r
+ {"name": "archiveUserName", "value": "mediacube", "type": "java.lang.String"},\r
+ {"name": "archivePassword", "value": "Broadca5T", "type": "java.lang.String"},\r
+ {"name": "daysBeforeNow", "value": 1, "type": "java.lang.Integer"},\r
+ {"name": "nexioKillDateDays", "value": 21, "type": "java.lang.Integer"},\r
+ {"name": "nexioAgency", "value": "ARCHIVED", "type": "java.lang.String"}\r
+ ]\r
+ }, \r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "NEXIO visszarögzített anyagok másolása az ISILON/ARCHIVE mappába",\r
+ "template": "copyforarchive-nexio-recordings.xml",\r
+ "cronexpression": "0 0 12 * * ? *",\r
+ "parameters": [ \r
+ {"name": "nexioPort", "value": 2098, "type": "java.lang.Integer"},\r
+ {"name": "nexioUserName", "value": "administrator", "type": "java.lang.String"},\r
+ {"name": "nexioPassword", "value": "system", "type": "java.lang.String"},\r
+ {"name": "archiveFtp", "value": "ftp://10.10.1.100/ARCHIVE", "type": "java.lang.String"},\r
+ {"name": "archiveUserName", "value": "mediacube", "type": "java.lang.String"},\r
+ {"name": "archivePassword", "value": "Broadca5T", "type": "java.lang.String"},\r
+ {"name": "filterAgencies", "value": "schedule-rec", "type": "java.lang.String"},\r
+ {"name": "limit", "value": 30, "type": "java.lang.Integer"},\r
+ {"name": "nexioKillDateDays", "value": 7, "type": "java.lang.Integer"},\r
+ {"name": "nexioAgency", "value": "HIRADO_ARCHIVED", "type": "java.lang.String"}\r
+ ]\r
+ }, \r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "Híranyag statisztika importálása",\r
+ "template": "import-statistics.xml",\r
+ "cronexpression": "0 0 6 * * ?",\r
+ "parameters": [ \r
+ {"name": "daysBeforeNow", "value": 1, "type": "java.lang.Integer"}\r
+ ]\r
+ },\r
+ {\r
+ "active": false,\r
+ "executeimmediate": true,\r
+ "name" : "TRAFFIC anyagok visszatöltése",\r
+ "template": "retrieve-traffic-missing-materials.xml",\r
+ "cronexpression": "0 0 0/1 1/1 * ? *",\r
+ "parameters": [\r
+ {"name": "dbUrl", "value": "jdbc:sqlserver://10.10.1.45\\sql16;databaseName=PA_Echo;", "type": "java.lang.String"},\r
+ {"name": "userName", "value": "MAM", "type": "java.lang.String"},\r
+ {"name": "password", "value": "Echotv.hu", "type": "java.lang.String"},\r
+ {"name": "lookupDays", "value": 7, "type": "java.lang.Integer"},\r
+ {"name": "targetPath", "value": "/mnt/ISILON/PLAYOUT/IceGateway/Input", "type": "java.lang.String"},\r
+ {"name": "killDateDays", "value": 10, "type": "java.lang.Integer"}\r
+ ]\r
+ }, \r
+ {\r
+ "active": true,\r
+ "executeimmediate": false,\r
+ "name" : "Lejárt NEXIO anyagok törlése",\r
+ "template": "delete-nexio-materials.xml",\r
+ "cronexpression": "0 0 6 * * ?",\r
+ "parameters": [ \r
+ {"name": "port", "value": 2098, "type": "java.lang.Integer"},\r
+ {"name": "userName", "value": "administrator", "type": "java.lang.String"},\r
+ {"name": "password", "value": "system", "type": "java.lang.String"},\r
+ {"name": "filterAgencies", "value": "HIRADO_23_00,HIRADO_ARCHIVED,HIRADO_CLN", "type": "java.lang.String"},\r
+ {"name": "gracePeriodDays", "value": 1, "type": "java.lang.Integer"},\r
+ {"name": "notificationOnly", "value": false, "type": "java.lang.Boolean"}\r
+ ]\r
+ }, \r
+ {\r
+ "name" : "SYS: MORPHEUS 'missing materials' importálása",\r
+ "template": "import-morpheus-missing-materials.xml",\r
+ "parameters": [ \r
+ {"name": "csvFilePath", "value": "/mnt/MORPHEUS", "type": "java.lang.String"},\r
+ {"name": "processedFolder", "value": "DONE", "type": "java.lang.String"},\r
+ {"name": "targetPath", "value": "/mnt/ISILON/ARCHIVE_RESTORE", "type": "java.lang.String"}\r
+ ]\r
+ },\r
+ {\r
+ "name" : "SYS: batch-retrieve-ondemand",\r
+ "template": "batch-retrieve-ondemand.xml"\r
+ },\r
+ {\r
+ "name" : "SYS: retrieve-ondemand",\r
+ "template": "retrieve-ondemand.xml",\r
+ "parameters": [ \r
+ {"name": "globalRetrievePath", "value": "file://isilon.intra.echotv.hu", "type": "java.lang.String"},\r
+ {"name": "localRetrievePath", "value": "/mnt/ISILON", "type": "java.lang.String"},\r
+ {"name": "materialOutputFolder", "value": "PLAYOUT_NLE", "type": "java.lang.String"},\r
+ {"name": "promoOutputFolder", "value": "PROMO_NLE", "type": "java.lang.String"},\r
+ {"name": "advertisementOutputFolder", "value": "REKLAM_NLE", "type": "java.lang.String"},\r
+ {"name": "octopusOutputFolder", "value": "OCTOPUS", "type": "java.lang.String"},\r
+ {"name": "genericOutputFolder", "value": "ARCHIVE_RESTORE", "type": "java.lang.String"},\r
+ {"name": "onlineOutputFolder", "value": "ONLINE", "type": "java.lang.String"},\r
+ {"name": "killDateDays", "value": 7, "type": "java.lang.Integer"},\r
+ {"name": "nexioAgency", "value": "ARCHIVE_RESTORE", "type": "java.lang.String"},\r
+ {"name": "nexioPort", "value": 2098, "type": "java.lang.Integer"},\r
+ {"name": "nexioUserName", "value": "administrator", "type": "java.lang.String"},\r
+ {"name": "nexioPassword", "value": "system", "type": "java.lang.String"}\r
+ ]\r
+ },\r
+ {\r
+ "name" : "sys: MORPHEUS 'missing materials' importálása",\r
+ "template": "sys-import-morpheus-missing-materials.xml",\r
+ "parameters": [ \r
+ {"name": "csvFilePath", "value": "/mnt/MORPHEUS", "type": "java.lang.String"},\r
+ {"name": "processedFolder", "value": "DONE", "type": "java.lang.String"},\r
+ {"name": "targetPath", "value": "/mnt/ISILON/PLAYOUT/Video", "type": "java.lang.String"}\r
+ ]\r
+ },\r
+ {\r
+ "name" : "sys: MORPHEUS 'missing material' visszatöltése",\r
+ "template": "sys-retrieve-missing-material.xml",\r
+ "parameters": [ \r
+ {"name": "targetPath", "value": "/mnt/ISILON/PLAYOUT/Video", "type": "java.lang.String"},\r
+ {"name": "globalRetrievePath", "value": "\\\\10.10.1.100\\BRAAVOS\\PLAYOUT\\Video", "type": "java.lang.String"},\r
+ {"name": "morpheusDeviceID", "value": "ISILON", "type": "java.lang.String"},\r
+ {"name": "dbUrl", "value": "jdbc:sqlserver://10.10.1.45;databaseName=PA_Echo;", "type": "java.lang.String"},\r
+ {"name": "userName", "value": "MAM", "type": "java.lang.String"},\r
+ {"name": "password", "value": "Echotv.hu", "type": "java.lang.String"},\r
+ {"name": "targetMetadataPath", "value": "/mnt/ISILON/PLAYOUT/MorpheusGateway/Input", "type": "java.lang.String"}\r
+ ]\r
+ }\r
+]}\r
+\r
+\r
+\r
-{"joblist":[\r
- {\r
- "template": "cancelable.xml"\r
- }, \r
- {\r
- "active": true,\r
- "executeimmediate": true,\r
- "name" : "OCTOPUS adatok szinkronizálása",\r
- "template": "sync-octopus.xml",\r
- "cronexpression": "0/30 * * * * ?",\r
- "parameters": [\r
- {"name": "includeArchived", "value": false, "type": "java.lang.Boolean"}\r
- ]\r
- }, \r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "Limitált archiválás az ISILON/ARCHIVE mappából",\r
- "template": "archive-limited.xml",\r
- "cronexpression": "0 0 6-22/1 * * ?",\r
- "parameters": [ \r
- {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE", "type": "java.lang.String"},\r
- {"name": "killDateDays", "value": 1, "type": "java.lang.Integer"},\r
- {"name": "limit", "value": 20, "type": "java.lang.Integer"}\r
- ]\r
- },\r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "Archiválás az ISILON/ARCHIVE mappából",\r
- "template": "archive-ondemand.xml",\r
- "cronexpression": "0 0 1 * * ?",\r
- "parameters": [ \r
- {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE", "type": "java.lang.String"},\r
- {"name": "killDateDays", "value": 1, "type": "java.lang.Integer"},\r
- {"name": "limit", "value": 0, "type": "java.lang.Integer"}\r
- ]\r
- },\r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "PROXY pótlás FFASTRANS 71",\r
- "template": "sys-recreate-lowres-71.xml",\r
- "cronexpression": "0 * * * * ?",\r
- "parameters": [ \r
- {"name": "localLowresPath", "value": "/mnt/FIXTRANSCODER-71/OUTPUT", "type": "java.lang.String" },\r
- {"name": "transcoderAddress", "value": "http://10.10.1.71:65445/api/json/v1/", "type": "java.lang.String"},\r
- {"name": "globalRetrievePath", "value": "file://10.10.1.30/transcode", "type": "java.lang.String"},\r
- {"name": "localRetrievePath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String"},\r
- {"name": "localHiresPath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String" },\r
- {"name": "globalHiresPath", "value": "L:\\transcode", "type": "java.lang.String" },\r
- {"name": "transcoderTemplateName", "value": "MAM_proxy", "type": "java.lang.String"}\r
- ]\r
- },\r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "PROXY pótlás FFASTRANS 72",\r
- "template": "sys-recreate-lowres-72.xml",\r
- "cronexpression": "10 * * * * ?",\r
- "parameters": [ \r
- {"name": "localLowresPath", "value": "/mnt/FIXTRANSCODER-72/OUTPUT", "type": "java.lang.String" },\r
- {"name": "transcoderAddress", "value": "http://10.10.1.72:65445/api/json/v1/", "type": "java.lang.String"},\r
- {"name": "globalRetrievePath", "value": "file://10.10.1.30/transcode", "type": "java.lang.String"},\r
- {"name": "localRetrievePath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String"},\r
- {"name": "localHiresPath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String" },\r
- {"name": "globalHiresPath", "value": "L:\\transcode", "type": "java.lang.String" },\r
- {"name": "transcoderTemplateName", "value": "MAM_proxy", "type": "java.lang.String"}\r
- ]\r
- },\r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "PROXY pótlás FFASTRANS 73",\r
- "template": "sys-recreate-lowres-73.xml",\r
- "cronexpression": "20 * * * * ?",\r
- "parameters": [ \r
- {"name": "localLowresPath", "value": "/mnt/FIXTRANSCODER-73/OUTPUT", "type": "java.lang.String" },\r
- {"name": "transcoderAddress", "value": "http://10.10.1.73:65445/api/json/v1/", "type": "java.lang.String"},\r
- {"name": "globalRetrievePath", "value": "file://10.10.1.30/transcode", "type": "java.lang.String"},\r
- {"name": "localRetrievePath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String"},\r
- {"name": "localHiresPath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String" },\r
- {"name": "globalHiresPath", "value": "L:\\transcode", "type": "java.lang.String" },\r
- {"name": "transcoderTemplateName", "value": "MAM_proxy", "type": "java.lang.String"}\r
- ]\r
- },\r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "PROXY pótlás FFASTRANS 74",\r
- "template": "sys-recreate-lowres-74.xml",\r
- "cronexpression": "30 * * * * ?",\r
- "parameters": [ \r
- {"name": "localLowresPath", "value": "/mnt/FIXTRANSCODER-74/OUTPUT", "type": "java.lang.String" },\r
- {"name": "transcoderAddress", "value": "http://10.10.1.74:65445/api/json/v1/", "type": "java.lang.String"},\r
- {"name": "globalRetrievePath", "value": "file://10.10.1.30/transcode", "type": "java.lang.String"},\r
- {"name": "localRetrievePath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String"},\r
- {"name": "localHiresPath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String" },\r
- {"name": "globalHiresPath", "value": "L:\\transcode", "type": "java.lang.String" },\r
- {"name": "transcoderTemplateName", "value": "MAM_proxy", "type": "java.lang.String"}\r
- ]\r
- },\r
- {\r
- "name" : "SYS: create-lowres-ondemand",\r
- "template": "create-lowres-ondemand.xml",\r
- "parameters": [ \r
- {"name": "globalRetrievePath", "value": "file://10.10.1.30/transcode", "type": "java.lang.String"},\r
- {"name": "localRetrievePath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String"},\r
- {"name": "localHiresPath", "value": "/mediacube/data/lowres/www/video/IFT3/transcode", "type": "java.lang.String" },\r
- {"name": "globalHiresPath", "value": "L:\\transcode", "type": "java.lang.String" },\r
- {"name": "localLowresPath", "value": "/mnt/FIXTRANSCODER/OUTPUT", "type": "java.lang.String" },\r
- {"name": "transcoderAddress", "value": "http://10.10.1.74:65445/api/json/v1/", "type": "java.lang.String"},\r
- {"name": "transcoderTemplateName", "value": "MAM_proxy", "type": "java.lang.String"}\r
- ]\r
- },\r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "Lejárt ISILON/TQC/CHECK/KESZ anyagok törlése",\r
- "template": "delete-materials.xml",\r
- "cronexpression": "0 0 8 * * ?",\r
- "parameters": [ \r
- {"name": "sourcePath", "value": "/mnt/ISILON/TQC/CHECK/KESZ", "type": "java.lang.String"}\r
- ]\r
- }, \r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "Lejárt ISILON/TQC/PROMO/KESZ anyagok törlése",\r
- "template": "delete-materials.xml",\r
- "cronexpression": "0 0 6 * * ?",\r
- "parameters": [ \r
- {"name": "sourcePath", "value": "/mnt/ISILON/TQC/PROMO/KESZ", "type": "java.lang.String"}\r
- ]\r
- }, \r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "Lejárt ISILON/TQC/REKLAM/KESZ anyagok törlése",\r
- "template": "delete-materials.xml",\r
- "cronexpression": "0 0 7 * * ?",\r
- "parameters": [ \r
- {"name": "sourcePath", "value": "/mnt/ISILON/TQC/REKLAM/KESZ", "type": "java.lang.String"}\r
- ]\r
- }, \r
- {\r
+{\r
+ "joblist": [{\r
"active": true,\r
- "executeimmediate": false,\r
- "name" : "Lejárt ISILON/ARCHIVE anyagok törlése",\r
- "template": "delete-materials.xml",\r
- "cronexpression": "0 0 5 * * ?",\r
- "parameters": [ \r
- {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE", "type": "java.lang.String"}\r
- ]\r
- }, \r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "Lejárt ISILON/OCTOPUS/_NAPI_MEGTEKINTO anyagok törlése",\r
- "template": "delete-materials.xml",\r
- "cronexpression": "0 0 22 * * ?",\r
- "parameters": [ \r
- {"name": "sourcePath", "value": "/mnt/ISILON/OCTOPUS/_NAPI_MEGTEKINTO", "type": "java.lang.String"}\r
- ]\r
- }, \r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "Lejárt ISISLON/PROMO_NLE mappák törlése",\r
- "template": "delete-promo-materials.xml",\r
- "cronexpression": "0 0 6 * * ?",\r
- "parameters": [ \r
- {"name": "sourcePath", "value": "/mnt/ISILON/PROMO_NLE", "type": "java.lang.String"}\r
- ]\r
- }, \r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "NEXIO bejátszó anyagok másolása az ISILON/ARCHIVE mappába",\r
- "template": "copyforarchive-nexio-materials.xml",\r
- "cronexpression": "0 0 10 * * ?",\r
- "parameters": [ \r
- {"name": "nexioPort", "value": 2098, "type": "java.lang.Integer"},\r
- {"name": "nexioUserName", "value": "administrator", "type": "java.lang.String"},\r
- {"name": "nexioPassword", "value": "system", "type": "java.lang.String"},\r
- {"name": "archiveFtp", "value": "ftp://10.10.1.100/ARCHIVE", "type": "java.lang.String"},\r
- {"name": "archiveUserName", "value": "mediacube", "type": "java.lang.String"},\r
- {"name": "archivePassword", "value": "Broadca5T", "type": "java.lang.String"},\r
- {"name": "daysBeforeNow", "value": 1, "type": "java.lang.Integer"},\r
- {"name": "nexioKillDateDays", "value": 21, "type": "java.lang.Integer"},\r
- {"name": "nexioAgency", "value": "ARCHIVED", "type": "java.lang.String"}\r
- ]\r
- }, \r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "NEXIO visszarögzített anyagok másolása az ISILON/ARCHIVE mappába",\r
- "template": "copyforarchive-nexio-recordings.xml",\r
- "cronexpression": "0 0 12 * * ? *",\r
- "parameters": [ \r
- {"name": "nexioPort", "value": 2098, "type": "java.lang.Integer"},\r
- {"name": "nexioUserName", "value": "administrator", "type": "java.lang.String"},\r
- {"name": "nexioPassword", "value": "system", "type": "java.lang.String"},\r
- {"name": "archiveFtp", "value": "ftp://10.10.1.100/ARCHIVE", "type": "java.lang.String"},\r
- {"name": "archiveUserName", "value": "mediacube", "type": "java.lang.String"},\r
- {"name": "archivePassword", "value": "Broadca5T", "type": "java.lang.String"},\r
- {"name": "filterAgencies", "value": "schedule-rec", "type": "java.lang.String"},\r
- {"name": "limit", "value": 30, "type": "java.lang.Integer"},\r
- {"name": "nexioKillDateDays", "value": 7, "type": "java.lang.Integer"},\r
- {"name": "nexioAgency", "value": "HIRADO_ARCHIVED", "type": "java.lang.String"}\r
- ]\r
- }, \r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "Híranyag statisztika importálása",\r
- "template": "import-statistics.xml",\r
- "cronexpression": "0 0 6 * * ?",\r
- "parameters": [ \r
- {"name": "daysBeforeNow", "value": 1, "type": "java.lang.Integer"}\r
- ]\r
- },\r
- {\r
- "active": false,\r
- "executeimmediate": true,\r
- "name" : "TRAFFIC anyagok visszatöltése",\r
- "template": "retrieve-traffic-missing-materials.xml",\r
- "cronexpression": "0 0 0/1 1/1 * ? *",\r
- "parameters": [\r
- {"name": "dbUrl", "value": "jdbc:sqlserver://10.10.1.45\\sql16;databaseName=PA_Echo;", "type": "java.lang.String"},\r
- {"name": "userName", "value": "MAM", "type": "java.lang.String"},\r
- {"name": "password", "value": "Echotv.hu", "type": "java.lang.String"},\r
- {"name": "lookupDays", "value": 7, "type": "java.lang.Integer"},\r
- {"name": "targetPath", "value": "/mnt/ISILON/PLAYOUT/IceGateway/Input", "type": "java.lang.String"},\r
- {"name": "killDateDays", "value": 10, "type": "java.lang.Integer"}\r
- ]\r
- }, \r
- {\r
- "active": false,\r
- "executeimmediate": true,\r
- "name" : "Lejárt ISISLON/ARCHIVE_TEMP anyagok törlése",\r
- "template": "delete-materials.xml",\r
- "cronexpression": "0 0 0/1 1/1 * ? *",\r
- "parameters": [ \r
- {"name": "sourcePath", "value": "/mnt/ISILON/ARCHIVE_TEMP", "type": "java.lang.String"}\r
- ]\r
- }, \r
- {\r
- "active": true,\r
- "executeimmediate": false,\r
- "name" : "Lejárt NEXIO anyagok törlése",\r
- "template": "delete-nexio-materials.xml",\r
- "cronexpression": "0 0 6 * * ?",\r
- "parameters": [ \r
- {"name": "port", "value": 2098, "type": "java.lang.Integer"},\r
- {"name": "userName", "value": "administrator", "type": "java.lang.String"},\r
- {"name": "password", "value": "system", "type": "java.lang.String"},\r
- {"name": "filterAgencies", "value": "HIRADO_23_00,HIRADO_ARCHIVED,HIRADO_CLN", "type": "java.lang.String"},\r
- {"name": "gracePeriodDays", "value": 1, "type": "java.lang.Integer"},\r
- {"name": "notificationOnly", "value": false, "type": "java.lang.Boolean"}\r
- ]\r
- }, \r
- {\r
- "active": false,\r
- "executeimmediate": false,\r
- "name" : "Párhuzamosított teszt folyamat",\r
- "template": "fake-concurrent.xml",\r
- "cronexpression": "0/10 * * ? * *",\r
- "parameters": [ {"name": "itemID", "value": 1, "type": "java.lang.Long"} ]\r
- },\r
- {\r
- "active": false,\r
- "executeimmediate": false,\r
- "name" : "Teszt folyamat",\r
- "template": "fake.xml",\r
- "cronexpression": "0/10 * * ? * *",\r
- "parameters": [ {"name": "itemID", "value": 1, "type": "java.lang.Long"} ]\r
- },\r
- {\r
- "name" : "SYS: MORPHEUS 'missing materials' importálása",\r
- "template": "import-morpheus-missing-materials.xml",\r
- "parameters": [ \r
- {"name": "csvFilePath", "value": "/mnt/MORPHEUS", "type": "java.lang.String"},\r
- {"name": "processedFolder", "value": "DONE", "type": "java.lang.String"},\r
- {"name": "targetPath", "value": "/mnt/ISILON/ARCHIVE_RESTORE", "type": "java.lang.String"}\r
- ]\r
- },\r
- {\r
- "name" : "SYS: batch-retrieve-ondemand",\r
- "template": "batch-retrieve-ondemand.xml",\r
- },\r
- {\r
- "name" : "SYS: retrieve-ondemand",\r
- "template": "retrieve-ondemand.xml",\r
- "parameters": [ \r
- {"name": "globalRetrievePath", "value": "file://isilon.intra.echotv.hu", "type": "java.lang.String"},\r
- {"name": "localRetrievePath", "value": "/mnt/ISILON", "type": "java.lang.String"},\r
- {"name": "materialOutputFolder", "value": "PLAYOUT_NLE", "type": "java.lang.String"},\r
- {"name": "promoOutputFolder", "value": "PROMO_NLE", "type": "java.lang.String"},\r
- {"name": "advertisementOutputFolder", "value": "REKLAM_NLE", "type": "java.lang.String"},\r
- {"name": "octopusOutputFolder", "value": "OCTOPUS", "type": "java.lang.String"},\r
- {"name": "genericOutputFolder", "value": "ARCHIVE_RESTORE", "type": "java.lang.String"},\r
- {"name": "onlineOutputFolder", "value": "ONLINE", "type": "java.lang.String"},\r
- {"name": "killDateDays", "value": 7, "type": "java.lang.Integer"},\r
- {"name": "nexioAgency", "value": "ARCHIVE_RESTORE", "type": "java.lang.String"},\r
- {"name": "nexioPort", "value": 2098, "type": "java.lang.Integer"},\r
- {"name": "nexioUserName", "value": "administrator", "type": "java.lang.String"},\r
- {"name": "nexioPassword", "value": "system", "type": "java.lang.String"}\r
- ]\r
- },\r
- {\r
- "name" : "sys: MORPHEUS 'missing materials' importálása",\r
- "template": "sys-import-morpheus-missing-materials.xml",\r
- "parameters": [ \r
- {"name": "csvFilePath", "value": "/mnt/MORPHEUS", "type": "java.lang.String"},\r
- {"name": "processedFolder", "value": "DONE", "type": "java.lang.String"},\r
- {"name": "targetPath", "value": "/mnt/ISILON/PLAYOUT/Video", "type": "java.lang.String"}\r
- ]\r
- },\r
- {\r
- "name" : "sys: MORPHEUS 'missing material' visszatöltése",\r
- "template": "sys-retrieve-missing-material.xml",\r
- "parameters": [ \r
- {"name": "targetPath", "value": "/mnt/ISILON/PLAYOUT/Video", "type": "java.lang.String"},\r
- {"name": "globalRetrievePath", "value": "\\\\10.10.1.100\\BRAAVOS\\PLAYOUT\\Video", "type": "java.lang.String"},\r
- {"name": "morpheusDeviceID", "value": "ISILON", "type": "java.lang.String"},\r
- {"name": "dbUrl", "value": "jdbc:sqlserver://10.10.1.45;databaseName=PA_Echo;", "type": "java.lang.String"},\r
- {"name": "userName", "value": "MAM", "type": "java.lang.String"},\r
- {"name": "password", "value": "Echotv.hu", "type": "java.lang.String"},\r
- {"name": "targetMetadataPath", "value": "/mnt/ISILON/PLAYOUT/MorpheusGateway/Input", "type": "java.lang.String"}\r
- ]\r
- }\r
-]}\r
-\r
-\r
-\r
+ "cronexpression": "0/2 * * * * ?",\r
+ "template": "cancelable.xml"\r
+ }\r
+ ]\r
+}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate multiInstance="true" useSessionLog="true">\r
+<jobtemplate multiInstance="false" useSessionLog="true">\r
<commands>\r
<calljobstep id="step1" type="user.jobengine.server.steps.CancelableStep" weight="1" />\r
</commands>\r
<declarations>\r
<parameters>\r
<parameter name="sourcePath" type="java.lang.String"/>\r
+ <parameter name="skipArchiveCheck" type="java.lang.Boolean"/>\r
</parameters>\r
</declarations>\r
<commands>\r
<input>\r
<parameter name="sourcePath" />\r
</input>\r
+ <input>\r
+ <parameter name="skipArchiveCheck" />\r
+ </input>\r
</inputs>\r
</calljobstep>\r
</commands>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate name="Anyagok törlése" multiInstance="true" useSessionLog="true">\r
+ <declarations>\r
+ <parameters>\r
+ <parameter name="sourcePath" type="java.lang.String"/>\r
+ <parameter name="skipArchiveCheck" type="java.lang.Boolean"/>\r
+ </parameters>\r
+ </declarations>\r
+ <commands>\r
+ <calljobstep id="id1" type="user.jobengine.server.steps.CleanupMountedLocationStep" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="sourcePath" />\r
+ </input>\r
+ <input>\r
+ <parameter name="skipArchiveCheck" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
+ </commands>\r
+</jobtemplate>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate name="Anyagok törlése" multiInstance="true" useSessionLog="true">\r
+ <declarations>\r
+ <parameters>\r
+ <parameter name="sourcePath" type="java.lang.String"/>\r
+ <parameter name="skipArchiveCheck" type="java.lang.Boolean"/>\r
+ </parameters>\r
+ </declarations>\r
+ <commands>\r
+ <calljobstep id="id1" type="user.jobengine.server.steps.CleanupMountedLocationStep" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="sourcePath" />\r
+ </input>\r
+ <input>\r
+ <parameter name="skipArchiveCheck" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
+ </commands>\r
+</jobtemplate>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate name="Anyagok törlése" multiInstance="true" useSessionLog="true">\r
+ <declarations>\r
+ <parameters>\r
+ <parameter name="sourcePath" type="java.lang.String"/>\r
+ <parameter name="skipArchiveCheck" type="java.lang.Boolean"/>\r
+ </parameters>\r
+ </declarations>\r
+ <commands>\r
+ <calljobstep id="id1" type="user.jobengine.server.steps.CleanupMountedLocationStep" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="sourcePath" />\r
+ </input>\r
+ <input>\r
+ <parameter name="skipArchiveCheck" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
+ </commands>\r
+</jobtemplate>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate name="Anyagok törlése" multiInstance="true" useSessionLog="true">\r
+ <declarations>\r
+ <parameters>\r
+ <parameter name="sourcePath" type="java.lang.String"/>\r
+ <parameter name="skipArchiveCheck" type="java.lang.Boolean"/>\r
+ </parameters>\r
+ </declarations>\r
+ <commands>\r
+ <calljobstep id="id1" type="user.jobengine.server.steps.CleanupMountedLocationStep" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="sourcePath" />\r
+ </input>\r
+ <input>\r
+ <parameter name="skipArchiveCheck" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
+ </commands>\r
+</jobtemplate>
\ No newline at end of file
<declarations>\r
<parameters>\r
<parameter name="includeArchived" type="java.lang.Boolean" />\r
+ <parameter name="address" type="java.lang.String" />\r
+ <parameter name="user" type="java.lang.String" />\r
+ <parameter name="pwd" type="java.lang.String" />\r
</parameters>\r
</declarations>\r
<commands>\r
<input>\r
<parameter name="includeArchived" />\r
</input>\r
+ <input>\r
+ <parameter name="address" />\r
+ </input>\r
+ <input>\r
+ <parameter name="user" />\r
+ </input>\r
+ <input>\r
+ <parameter name="pwd" />\r
+ </input>\r
</inputs>\r
</calljobstep>\r
</commands>\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.nio.file.DirectoryStream;\r
-import java.nio.file.Files;\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-import java.util.LinkedList;\r
-import java.util.List;\r
-\r
-import org.apache.commons.lang.StringUtils;\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
-/**\r
- * Az archivalhato mediak listazasa MediaFileWrapper objektumokban. A listazott media allomanyokat megjeloli .catched signal allomannyal, hogy a legkozelebbi\r
- * listazas figyelmen kivul hagyja.\r
- *\r
- * @author robi\r
- */\r
-public class ArchiveListBuilderStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- // private static final String UTF8 = "utf-8";\r
- private static final String STATUSFOLDER = ".STATUS";\r
- private static final String JSONEXT = ".json";\r
- private static final String CATCHEDEXT = ".catched";\r
-\r
- public static final String ITEM_TITLE = "itemTitle";\r
- public static final String ITEM_HOUSEID = "itemHouseId";\r
- public static final String ITEM_DESCRIPTION = "itemDescription";\r
- public static final String MEDIA_HOUSEID = "mediaHouseId";\r
- public static final String MEDIA_TITLE = "mediaTitle";\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
- private static final String TAGS = "tags";\r
-\r
- private Marker marker;\r
-\r
- private ArchiveItem createArchiveItem(Path jsonFilePath, Path mediaFilePath, Path catchedFilePath) {\r
- ArchiveItem result = null;\r
- try {\r
- result = ArchiveItem.fromFile(jsonFilePath);\r
- result.setMediaFile(mediaFilePath.toString());\r
- result.setCatchedFile(catchedFilePath.toString());\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- }\r
-\r
- return result;\r
- }\r
-\r
- private void createCatchedFile(Path catchedFilePath) {\r
- try {\r
- Files.createFile(catchedFilePath);\r
- //Files.write(catchedFilePath, CATCHED.getBytes(UTF8), StandardOpenOption.CREATE);\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- }\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(String sourcePath, int limit, IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
- marker = jobRuntime.getSessionMarker();\r
- List<ArchiveItem> archiveList = new LinkedList<ArchiveItem>();\r
- DirectoryStream<Path> directoryStream = null;\r
- try {\r
- DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get(sourcePath));\r
- for (Path p : stream) {\r
- processPathItem(p, archiveList);\r
- }\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- logger.error(marker, "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", e.getMessage());\r
- } finally {\r
- if (directoryStream != null) {\r
- try {\r
- directoryStream.close();\r
- } catch (IOException e) {\r
- }\r
- }\r
- }\r
-\r
- if (limit > 0 && archiveList.size() > limit) {\r
- archiveList = archiveList.subList(0, limit);\r
- logger.info(marker, "A folyamat alkalmazza a beállított {} limitet.", limit);\r
- }\r
-\r
- if (archiveList.size() == 0)\r
- logger.info(marker, "Nincs archiválandó anyag.");\r
- else\r
- logger.info(marker, "Az archiváló folyamat {} új anyagot érzékelt.", archiveList == null ? 0 : archiveList.size());\r
-\r
- for (ArchiveItem archiveItem : archiveList) {\r
- createCatchedFile(Paths.get(archiveItem.getCatchedFile()));\r
- }\r
-\r
- return new Object[] { archiveList };\r
- }\r
-\r
- private boolean processPathItem(Path mediaFilePath, final List<ArchiveItem> archiveList) {\r
- File mediaFile = mediaFilePath.toFile();\r
-\r
- // if (mediaFile.length() > 0)\r
- // return false;\r
-\r
- if (mediaFile.isDirectory()) {\r
- return false;\r
- }\r
-\r
- Path dotStorePath = Paths.get(mediaFilePath.getParent().toString(), STATUSFOLDER);\r
- Path catchedFilePath = Paths.get(dotStorePath.toString(), mediaFile.getName() + CATCHEDEXT);\r
- File catchedFile = catchedFilePath.toFile();\r
- if (catchedFile.exists()) {\r
- logger.warn("{} file is already catched.", mediaFile.getName());\r
- return false;\r
- }\r
-\r
- Path jsonFilePath = Paths.get(dotStorePath.toString(), mediaFile.getName() + JSONEXT);\r
- File jsonFile = jsonFilePath.toFile();\r
- if (!jsonFile.exists()) {\r
- logger.warn("{} has no json metadata.", mediaFile.getName());\r
- return false;\r
- }\r
-\r
- ArchiveItem archiveItem = createArchiveItem(jsonFilePath, mediaFilePath, catchedFilePath);\r
-\r
- if (archiveItem == null) {\r
- logger.warn("{} has no metadata specified.", mediaFile.getName());\r
- return false;\r
- }\r
-\r
- if (StringUtils.isBlank(archiveItem.getItemHouseId())) {\r
- logger.warn("{} has no Item HouseID specified in metadata.", mediaFile.getName());\r
- return false;\r
- }\r
-\r
- if (StringUtils.isBlank(archiveItem.getItemTitle())) {\r
- logger.warn("{} has no Item Title specified in metadata.", mediaFile.getName());\r
- return false;\r
- }\r
-\r
- if (StringUtils.isBlank(archiveItem.getMediaHouseId())) {\r
- logger.warn("{} has no Media HouseID specified in metadata.", mediaFile.getName());\r
- return false;\r
- }\r
-\r
- if (StringUtils.isBlank(archiveItem.getMediaTitle())) {\r
- logger.warn("{} has no Media Title specified in metadata.", mediaFile.getName());\r
- return false;\r
- }\r
-\r
- //A tenyleges archivalast vesszuk elore\r
- if (mediaFile.length() == 0)\r
- archiveList.add(archiveItem);\r
- else\r
- archiveList.add(0, archiveItem);\r
- //createCatchedFile(catchedFilePath);\r
- return true;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.File;\r
-import java.util.List;\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.commons.ListUtils;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class ArchiveMaterialSubmitStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final String JOBTEMPLATE = "archive-material.xml";\r
- private static final String KILL_DATE_DAYS = "killDateDays";\r
- private static final String ARCHIVE = "Archiválás";\r
- private static final String ARCHIVE_ITEM = "archiveItem";\r
- private Marker marker;\r
-\r
- @StepEntry\r
- public Object[] execute(List<ArchiveItem> archiveList, int killDateDays, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- marker = jobRuntime.getSessionMarker();\r
- if (archiveList == null || archiveList.size() == 0)\r
- return null;\r
-\r
- if (jobRuntime.forkPrepare()) {\r
- for (int i = 0; i < archiveList.size(); i++) {\r
- ArchiveItem archiveItem = archiveList.get(i);\r
- try {\r
- IJobRuntime runtime = jobEngine.submit(jobRuntime, null, JOBTEMPLATE, ARCHIVE,\r
- ListUtils.asMap(ARCHIVE_ITEM, archiveItem, KILL_DATE_DAYS, killDateDays));\r
- \r
- int progress = (i + 1) * 100 / archiveList.size();\r
- setProgress(progress);\r
- if (runtime == null)\r
- throw new Exception("Submit returned null runtime");\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- String fileName = new File(archiveItem.getMediaFile()).getName();\r
- logger.error(marker, "Az '{}' állomány archiválási kísérlete sikertelen. A rendszer üzenete: {}", fileName, e.getMessage());\r
- if (!archiveItem.removeCatchedFile())\r
- logger.error(marker, "Az '{}' állomány .catched jelző állománya nem törölhető.", fileName);\r
- throw e;\r
- }\r
- }\r
- }\r
- jobRuntime.forkWaitComplete();\r
- return null;\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.nio.file.FileVisitResult;\r
-import java.nio.file.FileVisitor;\r
-import java.nio.file.Files;\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-import java.nio.file.attribute.BasicFileAttributes;\r
-import java.text.SimpleDateFormat;\r
-import java.util.Arrays;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.apache.commons.io.FilenameUtils;\r
-import org.apache.commons.lang.StringUtils;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-\r
-import user.commons.JobStatus;\r
-import user.commons.ListUtils;\r
-import user.commons.mediatool.MediaInfo;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-import user.mediacube.metadata.interfaces.IMetadata;\r
-import user.mediacube.metadata.interfaces.IMetadataProvider;\r
-import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
-import user.mediacube.metadata.interfaces.MetadataProviderType;\r
-import user.mediacube.metadata.interfaces.MetadataType;\r
-import user.mediacube.metadata.interfaces.PlanAirMetadataListOptions;\r
-\r
-public class ArchiveRecursive extends JobStep implements FileVisitor<Path> {\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final String JOBTEMPLATE = "archive-material.xml";\r
- private static final String ITEM_TITLE = "itemTitle";\r
- private static final String ITEM_HOUSEID = "itemHouseId";\r
- private static final String MEDIA_HOUSEID = "mediaHouseId";\r
- private static final String MEDIA_TITLE = "mediaTitle";\r
- private static final String MEDIA_DESCRIPTION = "mediaDescription";\r
- private static final String MEDIA_TYPE = "mediaType";\r
- private static final String ARCHIVE = "Archiválás";\r
- private static final String ARCHIVE_ITEM = "archiveItem";\r
- private static final String KILL_DATE_DAYS = "killDateDays";\r
- private SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd");\r
-\r
- private List<String> skipPathNames = Arrays.asList("!ARCHIVALAS_ALATT", "VASAROLT", EscortFiles.STATUSFOLDER, EscortFiles.CONFLICTFOLDER);\r
- private int limit;\r
- private int submitted;\r
- private int killDateDays;\r
-\r
- private boolean canReadMediaInfo(Path mediaFilePath) {\r
- boolean result = false;\r
- try {\r
- MediaInfo mi = new MediaInfo(mediaFilePath);\r
- mi.process();\r
- result = true;\r
- } catch (Exception e) {\r
- logger.warn(getSessionMarker(), e.getMessage());\r
- }\r
- return result;\r
- }\r
-\r
- private void checkArchiveItem(ArchiveItem archiveItem, Path mediaPath) throws Exception {\r
- if (archiveItem == null)\r
- throw new Exception(mediaPath + " has no metadata specified.");\r
-\r
- if (StringUtils.isBlank(archiveItem.getItemHouseId()))\r
- throw new Exception(mediaPath + " has no Item HouseID specified in metadata.");\r
-\r
- if (StringUtils.isBlank(archiveItem.getItemTitle()))\r
- throw new Exception(mediaPath + " has no Item Title specified in metadata.");\r
-\r
- if (StringUtils.isBlank(archiveItem.getMediaHouseId()))\r
- throw new Exception(mediaPath + " has no Media HouseID specified in metadata.");\r
-\r
- if (StringUtils.isBlank(archiveItem.getMediaTitle()))\r
- throw new Exception(mediaPath + " has no Media Title specified in metadata.");\r
- }\r
-\r
- private ArchiveItem createArchiveItem(Path filePath) throws Exception {\r
- ArchiveItem result = null;\r
-\r
- String fileName = filePath.getFileName().toString();\r
- String mediaHouseId = FilenameUtils.removeExtension(fileName);\r
- try {\r
- result = getPlanAirMetadata(mediaHouseId);\r
- } catch (Exception e) {\r
-\r
- logger.error("PlanAir metadata error", e);\r
- //nem latja a drivert pl.\r
- throw e;\r
- }\r
-\r
- if (result == null) {\r
- result = new ArchiveItem();\r
- BasicFileAttributes attr = Files.readAttributes(filePath, BasicFileAttributes.class);\r
- result.setItemHouseId(df.format(attr.lastModifiedTime().toMillis()));\r
- result.setItemTitle(filePath.getParent().toString());\r
- result.setMediaHouseId(mediaHouseId);\r
- result.setMediaTitle(fileName);\r
- //TODO kesobb kivenni\r
- //result.setMediaDescription("/OMARCHIVE");\r
- result.setMediaType("Generic");\r
- }\r
-\r
- result.setMediaFile(filePath.toString());\r
- return result;\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(String sourcePath, int killDateDays, int limit) throws Exception {\r
- this.killDateDays = killDateDays;\r
- this.limit = limit;\r
- try {\r
- if (getJobRuntime().forkPrepare()) {\r
- Files.walkFileTree(Paths.get(sourcePath), this);\r
- }\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", sourcePath, e.getMessage());\r
- } finally {\r
- if (submitted > 0)\r
- getJobRuntime().forkWaitComplete();\r
- else\r
- getJobRuntime().cancelForkPrepare();\r
-\r
- }\r
- return null;\r
- }\r
-\r
- private ArchiveItem getPlanAirMetadata(String mediaHouseId) throws Exception {\r
- PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();\r
- opt.setSearch(mediaHouseId);\r
- opt.setType(MetadataType.Material);\r
-\r
- BasicDBObject json = null;\r
- List<IMetadata> data = null;\r
-\r
- IMetadataProviderFactory factory = getService(IMetadataProviderFactory.class);\r
- IMetadataProvider planairProvider = factory.getProvider(MetadataProviderType.PLANAIR);\r
-\r
- ArchiveItem result = null;\r
- data = planairProvider.list(opt);\r
- if (data.size() != 0)\r
- json = data.get(0).asJSON();\r
- else {\r
- opt.setType(MetadataType.Promo);\r
- data = planairProvider.list(opt);\r
- if (data.size() != 0)\r
- json = data.get(0).asJSON();\r
- else {\r
- opt.setType(MetadataType.AD);\r
- data = planairProvider.list(opt);\r
- if (data.size() != 0)\r
- json = data.get(0).asJSON();\r
- }\r
- }\r
- if (json != null) {\r
- result = new ArchiveItem();\r
- result.setItemHouseId(json.getString(ITEM_HOUSEID));\r
- result.setItemTitle(json.getString(ITEM_TITLE));\r
- result.setMediaHouseId(json.getString(MEDIA_HOUSEID));\r
- result.setMediaTitle(json.getString(MEDIA_TITLE));\r
- result.setMediaDescription(json.getString(MEDIA_DESCRIPTION));\r
- result.setMediaType(json.getString(MEDIA_TYPE));\r
- }\r
- return result;\r
- }\r
-\r
- private boolean handleArchiveConflict(Path mediaPath) throws Exception {\r
- boolean result = false;\r
- String sourceFileName = mediaPath.getFileName().toString();\r
- if (getManager().isMediaFileExists(sourceFileName)) {\r
- EscortFiles.createMediaCatch(mediaPath);\r
- result = true;\r
-\r
- // try {\r
- // Path parent = sourcePath.getParent();\r
- // Path conflictPath = Paths.get(parent.toString(), CONFLICT);\r
- // File folder = conflictPath.toFile();\r
- // if (!folder.exists() || !folder.isDirectory()) {\r
- // Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxrwxrwx");\r
- // FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(perms);\r
- // try {\r
- // Files.createDirectories(conflictPath, attr);\r
- // } catch (Exception e) {\r
- // try {\r
- // Files.createDirectory(conflictPath);\r
- // } catch (Exception e1) {\r
- // logger.catching(e);\r
- // throw e;\r
- // }\r
- // }\r
- // }\r
- //\r
- // Path conflictFile = Paths.get(conflictPath.toString(), sourceFileName);\r
- // if (conflictFile.toFile().exists())\r
- // conflictFile = Paths.get(conflictPath.toString(), sourceFileName + (new Date()).getTime());\r
- // Files.move(sourcePath, conflictFile);\r
- // result = true;\r
- // } catch (Exception e1) {\r
- // logger.error(getSessionMarker(), "Hiba az '{}' állomány mappába mozgatásakor. A rendszer üzenete: {}", CONFLICT, e1.getMessage());\r
- // }\r
- }\r
-\r
- return result;\r
- }\r
-\r
- @Override\r
- public FileVisitResult postVisitDirectory(Path paramT, IOException paramIOException) throws IOException {\r
- return FileVisitResult.CONTINUE;\r
- }\r
-\r
- @Override\r
- public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes paramBasicFileAttributes) throws IOException {\r
- Path dirName = dir.getFileName();\r
- logger.info("PreVisit {}", dir);\r
-\r
- if (skipPathNames.contains(dirName.toString()))\r
- return FileVisitResult.SKIP_SUBTREE;\r
- else\r
- logger.info("PreVisit {}", dir);\r
-\r
- return FileVisitResult.CONTINUE;\r
- }\r
-\r
- private boolean processPathItem(Path mediaPath) throws Exception {\r
- if (submitted == limit)\r
- return false;\r
-\r
- // if (!"Transfered".equals(mediaPath.getParent().getFileName().toString()))\r
- // return false;\r
-\r
- if (mediaPath.getFileName().toString().startsWith("."))\r
- return false;\r
-\r
- File mediaFile = mediaPath.toFile();\r
- if (mediaFile.isDirectory())\r
- return false;\r
-\r
- if (EscortFiles.isMediaCatched(mediaPath))\r
- return false;\r
-\r
- if (handleArchiveConflict(mediaPath))\r
- return false;\r
-\r
- if (!canReadMediaInfo(mediaPath))\r
- return false;\r
-\r
- ArchiveItem archiveItem = createArchiveItem(mediaPath);\r
-\r
- try {\r
- checkArchiveItem(archiveItem, mediaPath);\r
- submitted++;\r
-\r
- Map<String, Object> parameters = ListUtils.asMap(ARCHIVE_ITEM, archiveItem, KILL_DATE_DAYS, killDateDays);\r
- IJobRuntime runtime = getEngine().submit(getJobRuntime(), e -> {\r
- if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED))\r
- EscortFiles.removeMediaCatch(mediaPath);\r
- }, JOBTEMPLATE, ARCHIVE, 1, IJobEngine.DEFAULT_OWNER, parameters);\r
- if (runtime == null)\r
- throw new Exception("Submit returned null runtime");\r
- runtime.setRelated(mediaPath.toString());\r
- EscortFiles.createMediaCatch(mediaPath);\r
- } catch (Exception e) {\r
- String fileName = new File(archiveItem.getMediaFile()).getName();\r
- logger.error(getSessionMarker(), "Az '{}' állomány archiválási kísérlete sikertelen. A rendszer üzenete: {}", fileName, e.getMessage());\r
- }\r
-\r
- return true;\r
- }\r
-\r
- @Override\r
- public FileVisitResult visitFile(Path filePath, BasicFileAttributes paramBasicFileAttributes) throws IOException {\r
- //logger.info("Will archived {}", filePath);\r
- try {\r
- processPathItem(filePath);\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- }\r
- return FileVisitResult.CONTINUE;\r
- }\r
-\r
- @Override\r
- public FileVisitResult visitFileFailed(Path filePath, IOException paramIOException) throws IOException {\r
- logger.info("Error archive {}", filePath);\r
- return FileVisitResult.CONTINUE;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.MediaCubeFinishMarker;\r
-import user.commons.MediaCubeMarker;\r
-import user.jobengine.db.ArchivedMedia;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.scheduler.ScheduledJob;\r
-\r
-public class BatchRetrieveForkStep extends JobStep {\r
- private static final String TARGET_PATH_TYPE = "targetPathType";\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final String CHILD_TEMPLATE = "retrieve-ondemand.xml";\r
- private static final String ARCHIVEDMEDIA = "archivedMedia";\r
- private static final String RECIPIENT = "successRecipient";\r
- private static final String HOUSEID = "houseId";\r
- private MediaCubeMarker marker;\r
-\r
- @StepEntry\r
- public Object[] execute(List<ArchivedMedia> basket, String houseId, String recipient, String targetPathType, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
- throws Exception {\r
- marker = (MediaCubeMarker) jobRuntime.getSessionMarker();\r
-\r
- //session szinten csak a finishMarker cimzettje az erdekes, es ezt a cimet pluszban hasznalja a konfigban megadott cimmel\r
- //a finishMarker orokli a cim bellitast a sessionMarkertol\r
- marker.setTo(recipient);\r
-\r
- ((MediaCubeMarker) jobRuntime.getFinishMarker()).setTo(recipient);\r
-\r
- if (basket == null || basket.size() == 0)\r
- return null;\r
- setProgress(10);\r
-\r
- MediaCubeMarker mailMarker = new MediaCubeMarker(recipient);\r
- mailMarker.setSessionName("Archívum viszatöltés");\r
- mailMarker.setSessionID(houseId);\r
- logger.info(mailMarker, "A visszatöltések elindultak az alábbi állományokra:");\r
-\r
- if (jobRuntime.forkPrepare()) {\r
- for (ArchivedMedia archivedMedia : basket) {\r
- logger.info(mailMarker, archivedMedia.getMedia().getMediaFilesName());\r
- submit(archivedMedia, recipient, houseId, targetPathType, jobEngine, jobRuntime);\r
- }\r
- }\r
- setProgress(50);\r
- logger.info(new MediaCubeFinishMarker(mailMarker), "A visszatöltések végeztével megerősítő üzenetet küldünk.");\r
- jobRuntime.forkWaitComplete();\r
- setProgress(100);\r
- return null;\r
- }\r
-\r
- public void submit(ArchivedMedia archivedMedia, String recipient, String houseId, String targetPathType, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
- throws Exception {\r
- try {\r
- ScheduledJob scheduledJob = jobEngine.getScheduledJob(CHILD_TEMPLATE);\r
- Map<String, Object> parameters = scheduledJob.getJobParameters();\r
- parameters.put(ARCHIVEDMEDIA, archivedMedia);\r
- parameters.put(HOUSEID, houseId);\r
- parameters.put(RECIPIENT, recipient);\r
- parameters.put(TARGET_PATH_TYPE, targetPathType);\r
- IJobRuntime child = jobEngine.submit(jobRuntime, null, CHILD_TEMPLATE, String.format("Visszatöltés %s részére", recipient), parameters);\r
- ((MediaCubeMarker) child.getSessionMarker()).setTo(recipient);\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- logger.error(marker, "Hiba a kötegelt visszatöltésben. A rendszer üzenete: {}", e.getMessage());\r
- }\r
-\r
- }\r
-\r
-}\r
package user.jobengine.server.steps;\r
\r
-import org.apache.commons.net.ftp.FTPClient;\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
-import org.apache.logging.log4j.Marker;\r
-import org.apache.logging.log4j.MarkerManager;\r
\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.FtpDirectoryLister;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-\r
-\r
-/* DO NOT REMOVE!\r
-import user.jobengine.server.steps.TestLib;\r
-*/\r
public class CancelableStep extends JobStep {\r
private static final Logger logger = LogManager.getLogger();\r
int count = 10;\r
\r
@StepEntry\r
public Object[] execute(int param) throws Exception {\r
+\r
+ getJobRuntime().setRelated("TESZT" + param);\r
+ for (int i = 0; i < count; i++) {\r
+ if (getJobRuntime().isWaitingCancel())\r
+ break;\r
+ if (i == 1)\r
+ throw new Exception("AAAAAAAAAA");\r
+\r
+ Thread.sleep(1000);\r
+ int progress = (i + 1) * 100 / count;\r
+ setProgress(progress);\r
+ }\r
+\r
try {\r
- TestLib t = new TestLib();\r
-\r
- Marker marker = MarkerManager.getMarker("MEDIAPROFILE");\r
- getJobRuntime().setRelated("TESZT" + param);\r
-\r
- for (int i = 0; i < count; i++) {\r
- if (getJobRuntime().isWaitingCancel())\r
- break;\r
- Thread.sleep(1000);\r
- /*\r
- if (param==0)\r
- throw new Exception();\r
- if (param==1) {\r
- getJobRuntime().setDisableRetry(true);\r
- throw new Exception();\r
- }\r
- */\r
- int progress = (i + 1) * 100 / count;\r
- setProgress(progress);\r
- }\r
+\r
+ // logger.warn("Ez a fo logba megy");\r
+ //\r
+ // //marker="MEDIACUBE"\r
+ // logger.warn(getMarker(), "Ez a markered logba megy");\r
+ //\r
+ // //marker="MEDIACUBE | folyamat_nev"\r
+ // logger.warn(getJobRuntime().getSessionMarker(), "Ez a markered logba megy es a nevesitett logba");\r
+\r
} catch (Exception e) {\r
- logger.info(e.getMessage());\r
+ e.printStackTrace();\r
throw e;\r
}\r
- return null;\r
+ return new Object[] { param };\r
}\r
\r
}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.nio.file.DirectoryStream;\r
-import java.nio.file.FileVisitResult;\r
-import java.nio.file.FileVisitor;\r
-import java.nio.file.Files;\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-import java.nio.file.SimpleFileVisitor;\r
-import java.nio.file.attribute.BasicFileAttributes;\r
-import java.text.ParseException;\r
-import java.text.SimpleDateFormat;\r
-import java.util.ArrayList;\r
-import java.util.Collections;\r
-import java.util.Date;\r
-import java.util.List;\r
-\r
-import org.apache.commons.io.FileUtils;\r
-import org.apache.commons.lang.StringUtils;\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.commons.RemoteFile;\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Store;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class CleanupMountedLocationStep extends JobStep implements FileVisitor<Path> {\r
-\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final String PROJECTFOLDER = "PROJECT";\r
- private static final String DATEFORMAT = "yyyyMMdd";\r
- private static final String DOT = ".";\r
- private static final String STATUSFOLDER = ".STATUS";\r
- private static final String EWC2EXT = ".ewc2";\r
- private static final String XMPEXT = ".xmp";\r
- private static final String CATCHEDEXT = ".catched";\r
- private static final String KILLDATEEXT = ".killdate";\r
- private static final String JSONEXT = ".json";\r
-\r
- private static boolean isEmpty(final Path directory) throws IOException {\r
- try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(directory)) {\r
- final int[] count = new int[] { 0 };\r
- final int[] specialCount = new int[] { 0 };\r
- dirStream.forEach(p -> {\r
- count[0]++;\r
- // if (p.getFileName().toString().toLowerCase().equals(PROJECTFOLDER.toLowerCase()))\r
- // specialCount[0]++;\r
- if (p.getFileName().toString().toLowerCase().equals(STATUSFOLDER.toLowerCase()))\r
- specialCount[0]++;\r
-\r
- });\r
- if (specialCount[0] == count[0])\r
- return true;\r
- }\r
- return false;\r
- }\r
-\r
- private Marker marker;\r
-\r
- final int[] allCount = new int[] { 0 };\r
- final int[] currentCount = new int[] { 0 };\r
-\r
- private Path sourcePath;\r
- private SimpleDateFormat dateFormat;\r
- private StoreUri tsmStoreUri;\r
-\r
- private Date checkExpiration(List<Path> killDateFiles) {\r
- Date killDate = null;\r
- for (Path killDateFile : killDateFiles) {\r
- Date currentKillDate = getKillDate(killDateFile);\r
- if (currentKillDate == null)\r
- continue;\r
- if ((killDate != null && currentKillDate.after(killDate)) || killDate == null)\r
- killDate = currentKillDate;\r
- }\r
- return new Date().after(killDate) ? killDate : null;\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(String sourceFolder, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- marker = getSessionMarker();\r
- sourcePath = Paths.get(sourceFolder);\r
- DirectoryStream<Path> directoryStream = null;\r
- if (StringUtils.isBlank(sourcePath.toString())) {\r
- logger.error(marker, "A folyamat 'sourcePath' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'sourceFolder' input parameter missing.");\r
- }\r
-\r
- if (!sourcePath.toFile().exists() || !sourcePath.toFile().isDirectory()) {\r
- logger.error(marker, "A {} mappa nem létezik.", sourceFolder);\r
- throw new NullPointerException(String.format("Directory %s not exists.", sourceFolder));\r
- }\r
-\r
- Store tsmStore = getManager().getSystemStore(false);\r
- if (tsmStore == null)\r
- throw new NullPointerException("A TSM bejegyzés nem található!");\r
-\r
- tsmStoreUri = tsmStore.getSourceStoreUri(RemoteStoreProtocol.TSM);\r
- if (tsmStoreUri == null)\r
- throw new NullPointerException("A TSM forrás elérése nem található!");\r
-\r
- try {\r
- setProgress(1);\r
- dateFormat = new SimpleDateFormat(DATEFORMAT);\r
-\r
- Files.walkFileTree(sourcePath, new SimpleFileVisitor<Path>() {\r
- @Override\r
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {\r
- allCount[0]++;\r
- return super.visitFile(file, attrs);\r
- }\r
- });\r
- Files.walkFileTree(sourcePath, this);\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- logger.error(marker, "Hiba a '{}' mappa feldolgozásában. A rendszer hibaüzenete: {}", sourcePath, e.getMessage());\r
- throw e;\r
- } finally {\r
- if (directoryStream != null) {\r
- try {\r
- directoryStream.close();\r
- } catch (IOException e) {\r
- }\r
- }\r
- }\r
- return null;\r
- }\r
-\r
- private Date getKillDate(Path killDateFile) {\r
- String fileName = killDateFile.getFileName().toString();\r
- int end = fileName.lastIndexOf(DOT);\r
- if (end < 1)\r
- return null;\r
- int start = fileName.lastIndexOf(DOT, end - 1);\r
- if (start < 0)\r
- return null;\r
- String strKillDate = fileName.substring(start + 1, end);\r
- Date result = null;\r
- if (StringUtils.isNumeric(strKillDate)) {\r
- try {\r
- result = dateFormat.parse(strKillDate);\r
- } catch (ParseException e) {\r
- logger.error(marker, "A {} fájl 'killdate' állománya hibás formátumú, a {} karaktersorozat nem konvertálható dátummá.", fileName, strKillDate);\r
- return null;\r
- }\r
- } else\r
- logger.error(marker, "A {} fájl 'killdate' állománya hibás formátumú, az dátum helyett ez áll: '{}'.", fileName, strKillDate);\r
- return result;\r
- }\r
-\r
- private List<Path> getKillDateFiles(Path filePath) {\r
- String killDateFilePattern = String.format("%s.*%s", filePath.getFileName().toString(), KILLDATEEXT);\r
- List<Path> result = new ArrayList<>();\r
- Path statusPath = null;\r
- try {\r
- statusPath = Paths.get(filePath.getParent().toString(), STATUSFOLDER);\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- return null;\r
- }\r
- File statusPathFile = statusPath.toFile();\r
- if (statusPathFile.exists() && statusPathFile.isDirectory()) {\r
- try (DirectoryStream<Path> stream = Files.newDirectoryStream(statusPath, killDateFilePattern)) {\r
- stream.forEach(p -> result.add(p));\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- }\r
- }\r
- Collections.sort(result);\r
- return result;\r
- }\r
-\r
- private boolean isArchived(Path filePath) {\r
- boolean result = false;\r
- String name = filePath.getFileName().toString();\r
- String[] tsmName = new String[] { null };\r
- String query = String.format("SELECT relativepath FROM MEDIAFILE WHERE houseid = '%s'", name);\r
- getManager().executeQuery(query, rs -> {\r
- tsmName[0] = rs.getString("relativepath");\r
- return false;\r
- }, null);\r
-\r
- if (tsmName[0] != null) {\r
- try {\r
- RemoteFile remoteFile = tsmStoreUri.getRemoteFile(tsmName[0]);\r
- result = remoteFile != null;\r
- } catch (Exception e) {\r
- logger.error(e.getMessage());\r
- } finally {\r
- tsmStoreUri.cleanUp();\r
- }\r
- }\r
- return result;\r
- }\r
-\r
- @Override\r
- public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {\r
- if (!dir.equals(sourcePath) && isEmpty(dir)) {\r
- if (!removeExistingSpecialDirectory(dir, PROJECTFOLDER))\r
- return FileVisitResult.CONTINUE;\r
- if (!removeExistingSpecialDirectory(dir, STATUSFOLDER))\r
- return FileVisitResult.CONTINUE;\r
- if (removeFile(dir))\r
- logger.info(marker, "A {} üres mappa törlése sikeres.", dir);\r
-\r
- }\r
- return FileVisitResult.CONTINUE;\r
- }\r
-\r
- @Override\r
- public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {\r
-\r
- //A .-al kezdodo mappakat kihagyjuk\r
- if (dir.getFileName().toString().startsWith("."))\r
- return FileVisitResult.SKIP_SUBTREE;\r
-\r
- return FileVisitResult.CONTINUE;\r
- }\r
-\r
- private void processPathItem(Path filePath) {\r
- currentCount[0]++;\r
-\r
- if (filePath.getFileName().toString().startsWith("."))\r
- return;\r
-\r
- int progress = currentCount[0] * 100 / allCount[0];\r
- setProgress(progress);\r
-\r
- logger.info("Checking {}", filePath);\r
- List<Path> killDateFiles = getKillDateFiles(filePath);\r
- if (killDateFiles == null || killDateFiles.size() == 0) {\r
- logger.warn(marker, "A {} fájlhoz nem található 'killdate' állomány.", filePath);\r
- return;\r
- }\r
-\r
- if (killDateFiles.size() != 1)\r
- logger.warn(marker, "A {} fájlhoz több 'killdate' állomány található, a legújabb dátum határozza meg a törlés időpontját.", filePath);\r
-\r
- Date killDate = checkExpiration(killDateFiles);\r
- if (killDate == null)\r
- return;\r
-\r
- if (!isArchived(filePath)) {\r
- logger.error(marker, "A(z) {} anyag törlésre van kijelölve, de nem található az archívumban.", filePath);\r
- return;\r
- }\r
-\r
- if (removeFiles(filePath, killDateFiles))\r
- logger.info(marker, "A {} fájl és kapcsolódó állományai a {} killdate bejegyzés alapján sikeresen törlődtek.", filePath.getFileName(),\r
- dateFormat.format(killDate));\r
- else\r
- logger.warn(marker, "A {} fájl és kapcsolódó állományai a {} killdate bejegyzés alapján csak részlegesen vagy egyáltalán nem törlődtek.",\r
- filePath.getFileName(), dateFormat.format(killDate));\r
- }\r
-\r
- private boolean removeExistingSpecialDirectory(Path dir, String folderName) throws IOException {\r
- File projectPath = Paths.get(dir.toString(), folderName).toFile();\r
- if (projectPath.exists() && projectPath.isDirectory()) {\r
- FileUtils.deleteDirectory(projectPath);\r
- if (projectPath.exists()) {\r
- logger.warn(marker, "A {} alatti {} mappa törlése nem sikerült.", dir, folderName);\r
- return false;\r
- }\r
- }\r
- return true;\r
- }\r
-\r
- private boolean removeFile(Path filePath) {\r
- boolean result = false;\r
- try {\r
- //logger.error("REMOVE {}", filePath);\r
- File file = filePath.toFile();\r
- if (file.exists())\r
- result = file.delete();\r
- } catch (Exception e) {\r
- logger.error(marker, "A {} fájl nem törölhető. A rendszer hibaüzenete: {}", filePath, e.getMessage());\r
- }\r
- return result;\r
- }\r
-\r
- private boolean removeFiles(Path filePath, List<Path> killDateFiles) {\r
- if (!removeFile(filePath))\r
- return false;\r
-\r
- removeFile(Paths.get(filePath.toString() + EWC2EXT));\r
- removeFile(Paths.get(filePath.toString() + XMPEXT));\r
- removeFile(Paths.get(filePath.getParent().toString(), STATUSFOLDER, filePath.getFileName().toString() + CATCHEDEXT));\r
- removeFile(Paths.get(filePath.getParent().toString(), STATUSFOLDER, filePath.getFileName().toString() + JSONEXT));\r
-\r
- boolean result = true;\r
- for (Path killDateFile : killDateFiles) {\r
- if (!removeFile(killDateFile))\r
- result = false;\r
- }\r
-\r
- return result;\r
- }\r
-\r
- @Override\r
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {\r
- processPathItem(file);\r
- return FileVisitResult.CONTINUE;\r
- }\r
-\r
- @Override\r
- public FileVisitResult visitFileFailed(Path file, IOException e) throws IOException {\r
- logger.error(marker, "A {} fájl nem érhető el. A rendszer hibaüzenete: {}", file.toString(), e.getMessage());\r
- return FileVisitResult.CONTINUE;\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
-\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.nosql.NoSQLUtils;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.Store;\r
-\r
-public class CreateArchiveItemStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(Media mediaCubeMedia, String localHiresPath) throws Exception {\r
- DB db = NoSQLUtils.getNoSQLDB();\r
- DBCollection collection = db.getCollection("missing_lowres");\r
- Store highResStore = getManager().getSystemStore(false);\r
-\r
- ArchiveItem archiveItem = null;\r
- try {\r
- if (mediaCubeMedia.getMediaFilesCount() != 1)\r
- throw new Exception("Expected media count is 1, found " + mediaCubeMedia.getMediaFilesCount());\r
- if (mediaCubeMedia.getMediaFiles().get(0).getStoreId() != highResStore.getId())\r
- throw new Exception("Expected media store is a high-res store");\r
-\r
- String name = mediaCubeMedia.getMediaFileRealName();\r
- archiveItem = new ArchiveItem();\r
- archiveItem.setMediaFile(Paths.get(localHiresPath, name).toString());\r
- collection.save(new BasicDBObject("name", name));\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- logger.info(getMarker(), e.getMessage());\r
- throw e;\r
- } finally {\r
- setProgress(100);\r
- }\r
- return new Object[] { archiveItem };\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
-\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.MediaCubeUndoMarker;\r
-import user.commons.nosql.NoSQLUtils;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class CreateMissingLowresStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(String localHiresPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- Object[] result = new Object[] { null, null, "%s", null, 0, true };\r
- DB db = NoSQLUtils.getNoSQLDB();\r
- DBCollection collection = db.getCollection("missing_lowres");\r
- IItemManager manager = jobEngine.getItemManager();\r
- Media media = getFirstUntranscodedMedia(manager, collection);\r
-\r
- try {\r
- if (media == null) {\r
- logger.info(new MediaCubeUndoMarker(getSessionMarker().getSessionID()), "Nincs feldolgozandó hiány.");\r
- // throw new Exception("Nincs feldolgozandó hiány.");\r
- cancel();\r
- return null;\r
- }\r
-\r
- String name = media.getMediaFileRealName();\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
- logger.info(getSessionMarker(), "Processing mediaID: {}", media.getId());\r
-\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- logger.error(getSessionMarker(), e.getMessage());\r
- throw e;\r
- } finally {\r
- setProgress(100);\r
- }\r
- return result;\r
- }\r
-\r
- private Media getFirstUntranscodedMedia(IItemManager manager, DBCollection collection) {\r
- Media[] result = new Media[] { null };\r
- //MV\r
- String query = "SELECT mediaid FROM VW_MISSING_PROXY_IDS WHERE HOUSEID like 'M%' or HOUSEID like 'P%' or HOUSEID like 'R%' ORDER BY modified DESC";\r
-\r
- //HTV\r
- //String query = "SELECT mediaid FROM VW_MISSING_PROXY_IDS";\r
- manager.executeQuery(query, rs -> {\r
- try {\r
- long mediaId = rs.getLong(1);\r
- Media media = manager.getMedia(mediaId);\r
- //a nevgeneralas miatt az eredeti MediaFilesName nem jo, a pontos nev kell nekunk\r
- String name = media.getMediaFileRealName();\r
- logger.info(getSessionMarker(), "Checking {}", name);\r
- long existing = collection.find(new BasicDBObject("name", name)).count();\r
- if (existing > 0) {\r
- logger.info(getSessionMarker(), "{} is on missing_lowres list", name);\r
- return true;\r
- }\r
-\r
- result[0] = media;\r
- } catch (Exception e) {\r
- logger.error(e);\r
- }\r
- return false;\r
- }, null);\r
- return result[0];\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps.shared;\r
-\r
-import java.io.BufferedReader;\r
-import java.io.InputStreamReader;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-public class ExternalCommand {\r
- private static final Logger logger = LogManager.getLogger();\r
- private ExternalProfile profile;\r
-\r
- public ExternalCommand(ExternalProfile profile) {\r
- this.profile = profile;\r
- }\r
-\r
- public String execute(String input, String output, boolean firstResponse, IExternalCallback responseCallBack) throws Exception {\r
- List<String> arguments = getArguments(input, output);\r
- List<String> command = new ArrayList<>();\r
- command.add(profile.getExecutable());\r
- command.addAll(arguments);\r
-\r
- ProcessBuilder processBuilder = new ProcessBuilder();\r
- processBuilder.command(command);\r
-\r
- String result = null;\r
- try {\r
- logger.info("Executing : {}", processBuilder.command());\r
-\r
- Process process = processBuilder.start();\r
- try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {\r
- String line = null;\r
- while ((line = reader.readLine()) != null) {\r
- logger.debug("Process response: {}", line);\r
- if (responseCallBack != null)\r
- responseCallBack.onResponse(line);\r
- //System.out.println(line);\r
- if (line != null && line.length() > 0) {\r
- result = line;\r
- if (firstResponse)\r
- break;\r
- }\r
- }\r
- int exitCode = process.waitFor();\r
- if (exitCode != 0) {\r
- StringBuilder msg = new StringBuilder();\r
- try (BufferedReader errReader = new BufferedReader(new InputStreamReader(process.getErrorStream()))) {\r
- String errline = null;\r
- while ((errline = errReader.readLine()) != null) {\r
- msg.append(errline);\r
- }\r
- } catch (Exception ex) {\r
- }\r
-\r
- throw new Exception("Exited with error code : " + exitCode + ". " + msg);\r
- }\r
- } catch (Exception e) {\r
- throw e;\r
- }\r
- } catch (Exception e) {\r
- logger.error(e);\r
- throw e;\r
- }\r
-\r
- return result;\r
- }\r
-\r
- private List<String> getArguments(String input, String output) {\r
- List<String> result = new ArrayList<>();\r
-\r
- profile.getArguments().forEach(i -> {\r
- result.add(i.replace("%i", input).replace("%o", output));\r
- });\r
- return result;\r
- }\r
-\r
-}
\ No newline at end of file
+++ /dev/null
-package user.jobengine.server.steps.shared;\r
-\r
-import user.commons.configuration.SystemConfiguration;\r
-\r
-public class ExternalCommandExecutor {\r
-\r
- public void execute(String profileName, String input, String output, IExternalCallback responseCallBack) throws Exception {\r
- ExternalCommand externalCommand = getExternalCommand(profileName);\r
- externalCommand.execute(input, output, false, responseCallBack);\r
- }\r
-\r
- private ExternalCommand getExternalCommand(String profileName) throws Exception {\r
- ExternalProfilesConfig config = SystemConfiguration.getInstance().load("settings/external-commands.yaml", ExternalProfilesConfig.class);\r
-\r
- if (config == null)\r
- throw new Exception("Missing external-commands.yaml configuration");\r
-\r
- ExternalProfile selectedProfile = null;\r
- for (ExternalProfile profile : config.getProfiles()) {\r
- if (profileName.equals(profile.getName())) {\r
- selectedProfile = profile;\r
- break;\r
- }\r
- }\r
-\r
- if (selectedProfile == null)\r
- throw new Exception("Missing profile " + profileName + " in external-commands.yaml configuration");\r
-\r
- return new ExternalCommand(selectedProfile);\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps.shared;\r
-\r
-import java.util.List;\r
-\r
-public class ExternalProfile {\r
- private String executable;\r
- private String name;\r
- private List<String> arguments;\r
-\r
- public List<String> getArguments() {\r
- return arguments;\r
- }\r
-\r
- public String getExecutable() {\r
- return executable;\r
- }\r
-\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- public void setArguments(List<String> arguments) {\r
- this.arguments = arguments;\r
- }\r
-\r
- public void setExecutable(String executable) {\r
- this.executable = executable;\r
- }\r
-\r
- public void setName(String name) {\r
- this.name = name;\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-package user.jobengine.server.steps.shared;\r
-\r
-import java.util.List;\r
-\r
-public class ExternalProfilesConfig {\r
- private List<ExternalProfile> profiles;\r
-\r
- public List<ExternalProfile> getProfiles() {\r
- return profiles;\r
- }\r
-\r
- public void setProfiles(List<ExternalProfile> profiles) {\r
- this.profiles = profiles;\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-package user.jobengine.server.steps;\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.commons.StoreUri;\r
-import user.commons.remotestore.IProgressEventListener;\r
-import user.commons.remotestore.ProgressEvent;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class FileCopyStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- private IItemManager manager;\r
- private Marker marker;\r
-\r
- private void check(String sourceProtocol, String sourcePath, String sourceFileName, String targetProtocol, String targetPath, String targetFileName,\r
- IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
- if (jobEngine == null) {\r
- logger.error(marker, "A folyamatkezelő réteg nem elérhető.");\r
- throw new NullPointerException("Internal error, missing JobEngine reference.");\r
- }\r
- manager = jobEngine.getItemManager();\r
- if (manager == null) {\r
- logger.error(marker, "Az adatbáziskezelő réteg nem elérhető.");\r
- throw new NullPointerException("Internal error, missing ItemManager reference.");\r
- }\r
- if (sourceProtocol == null) {\r
- logger.error(marker, "A forrás protokol bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'sourceProtocol' input parameter missing.");\r
- }\r
- if (sourcePath == null) {\r
- logger.error(marker, "A forrás fájl elérés bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'sourcePath' input parameter missing.");\r
- }\r
- if (sourceFileName == null) {\r
- logger.error(marker, "A forrás fájlnév bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'sourceFileName' input parameter missing.");\r
- }\r
- if (targetProtocol == null) {\r
- logger.error(marker, "A cél protokol bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'targetProtocol' input parameter missing.");\r
- }\r
- if (targetPath == null) {\r
- logger.error(marker, "A cél fájl elérés bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'targetPath' input parameter missing.");\r
- }\r
- if (targetFileName == null) {\r
- logger.error(marker, "A cél fájlnév bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'targetFileName' input parameter missing.");\r
- }\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(String sourceProtocol, String sourcePath, String sourceFileName, String targetProtocol, String targetPath, String targetFileName,\r
- int killDateDays, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- marker = jobRuntime.getSessionMarker();\r
-\r
- check(sourceProtocol, sourcePath, sourceFileName, targetProtocol, targetPath, targetFileName, jobEngine, jobRuntime);\r
-\r
- StoreUri source = null;\r
- StoreUri target = null;\r
-\r
- try {\r
- source = manager.createStoreUri(Enum.valueOf(RemoteStoreProtocol.class, sourceProtocol), sourcePath);\r
- target = manager.createStoreUri(Enum.valueOf(RemoteStoreProtocol.class, targetProtocol), targetPath);\r
- source.addProgressListener(new IProgressEventListener() {\r
- @Override\r
- public void progressChanged(ProgressEvent evt) {\r
- jobRuntime.incrementProgress(evt.getProgress());\r
- }\r
- });\r
-\r
- source.transferFrom(target, sourceFileName, targetFileName);\r
- if (killDateDays > -1)\r
- EscortFiles.createUNCKillDate(targetPath, targetFileName, killDateDays, marker);\r
-\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- throw e;\r
- } finally {\r
- if (source != null) {\r
- source.cleanUp();\r
- }\r
- if (target != null) {\r
- target.cleanUp();\r
- }\r
- }\r
-\r
- return null;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.util.regex.Matcher;\r
-import java.util.regex.Pattern;\r
-\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-\r
-public class FileSearchFilterOptions {\r
-\r
- private BasicDBObject filter;\r
-\r
- public FileSearchFilterOptions(BasicDBObject filter) {\r
- this.filter = filter;\r
- }\r
-\r
- public boolean acceptFile(Path file) {\r
- if (filter == null)\r
- return true;\r
-\r
- if (filter.containsKey("fileName")) {\r
- //.*\.(sh|ini|conf|vhost|xml|php)$\r
- String fileNamePattern = filter.getString("fileName");\r
- if (fileNamePattern == null || fileNamePattern.trim().length() == 0)\r
- return true;\r
-\r
- Pattern pattern = Pattern.compile(fileNamePattern, Pattern.CASE_INSENSITIVE);\r
-\r
- Matcher matcher = pattern.matcher(file.getFileName().toString());\r
- if (matcher.find())\r
- return true;\r
-\r
- }\r
-\r
- return false;\r
- }\r
-\r
- public boolean preAcceptDirectory(Path file) {\r
- return true;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.BufferedInputStream;\r
-import java.io.BufferedOutputStream;\r
-import java.io.File;\r
-import java.io.FileInputStream;\r
-import java.io.FileOutputStream;\r
-import java.io.IOException;\r
-import java.io.InputStream;\r
-import java.io.OutputStream;\r
-import java.nio.file.Files;\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-import java.nio.file.attribute.BasicFileAttributes;\r
-import java.text.SimpleDateFormat;\r
-import java.util.Arrays;\r
-import java.util.LinkedHashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.apache.commons.io.FilenameUtils;\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.QueryBuilder;\r
-\r
-import user.commons.IEntityBase;\r
-import user.commons.MediaCubeMarker;\r
-import user.commons.nosql.NoSQLUtils;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.MediaFile;\r
-import user.jobengine.db.MediaFileDAO;\r
-import user.mediacube.metadata.interfaces.IMetadata;\r
-import user.mediacube.metadata.interfaces.IMetadataProvider;\r
-import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
-import user.mediacube.metadata.interfaces.MetadataProviderType;\r
-import user.mediacube.metadata.interfaces.MetadataType;\r
-import user.mediacube.metadata.interfaces.PlanAirMetadataListOptions;\r
-\r
-public class HSMMigrateStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final String MXFEXT = ".mxf";\r
- private static final String MOVEXT = ".mov";\r
- private Marker marker = null;\r
- private IMetadataProvider hsmProvider;\r
- private Map<String, BasicDBObject> tapeContents = new LinkedHashMap<>();\r
- private DBCollection excludes;\r
- private DBCollection fileHistory;\r
- private DBCollection volumeHistory;\r
- private DB db;\r
- private IMetadataProvider planairProvider;\r
- private SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd");\r
-\r
- private void cleanupHistory() {\r
- if (db == null)\r
- db = NoSQLUtils.getNoSQLDB();\r
- if (fileHistory == null)\r
- fileHistory = db.getCollection("hsm_migrate_file_history");\r
- if (volumeHistory == null)\r
- volumeHistory = db.getCollection("hsm_migrate_volume_history");\r
- fileHistory.drop();\r
- volumeHistory.drop();\r
- }\r
-\r
- private BasicDBObject createMetadata(String volumeName, String fileName) throws Exception {\r
-\r
- Path filePath = Paths.get(fileName);\r
- String mediaHouseId = FilenameUtils.removeExtension(filePath.getFileName().toString());\r
- BasicDBObject result = null;\r
- try {\r
- result = getPlanAirMetadata(mediaHouseId);\r
- } catch (Exception e) {\r
-\r
- logger.error("PlanAir metadata error", e);\r
- //nem latja a drivert pl.\r
- //throw e;\r
- }\r
-\r
- if (result == null) {\r
- result = new BasicDBObject();\r
- BasicFileAttributes attr = Files.readAttributes(filePath, BasicFileAttributes.class);\r
- result.put("itemHouseId", df.format(attr.lastModifiedTime().toMillis()));\r
- result.put("itemTitle", filePath.getParent().toString());\r
- result.put("mediaHouseId", mediaHouseId);\r
- result.put("mediaTitle", fileName);\r
- result.put("mediaDescription", volumeName);\r
- result.put("mediaType", "Generic");\r
- }\r
- result.put("userName", "mediacube");\r
- return result;\r
- }\r
-\r
- @SuppressWarnings("serial")\r
- @StepEntry\r
- public Object[] execute(String sourceLocation, String targetLocation) throws Exception {\r
- marker = getJobRuntime().getSessionMarker();\r
- //remove from prod\r
- //cleanupHistory();\r
- hsmProvider = getMetadataProvider(MetadataProviderType.HSM);\r
- if (hsmProvider == null)\r
- throw new NullPointerException("No HSM metadata provider available");\r
- planairProvider = getMetadataProvider(MetadataProviderType.PLANAIR);\r
- if (planairProvider == null)\r
- throw new NullPointerException("No PLANAIR metadata provider available");\r
- Path targetPath = Paths.get(targetLocation);\r
- try {\r
- List<IMetadata> volumes = hsmProvider.list(new BasicDBObject());\r
- for (IMetadata volume : volumes) {\r
- String volumeName = volume.getTitle();\r
-\r
- BasicDBObject historyResult = queryVolumeHistory(volumeName);\r
- if (historyResult != null) {\r
- logger.info(marker, "A kazetta már feldolgozásra került: {}", volumeName);\r
- continue;\r
- }\r
- logger.info(marker, "A kazetta feldolgozása elindul: {}", volumeName);\r
- List<IMetadata> contents = getContents(volumeName);\r
- int p = 0;\r
- boolean oneSuccess = false;\r
- boolean hasError = false;\r
- for (IMetadata content : contents) {\r
- BasicDBObject c = content.asJSON();\r
- String hsmFileName = c.getString("fileName");\r
- long contentFileSize = NoSQLUtils.asLong(c, "fileSize");\r
- if (!tapeContents.containsKey(hsmFileName)) {\r
- tapeContents.put(hsmFileName, c);\r
- Path sourceFilePath = Paths.get(sourceLocation, hsmFileName);\r
- if (contentFileSize < Files.getFileStore(targetPath).getUsableSpace()) {\r
- Path targetFilePath = Paths.get(targetLocation, sourceFilePath.getFileName().toString());\r
-\r
- try {\r
- if (processHSMFile(volumeName, hsmFileName, sourceFilePath, targetFilePath)) {\r
- oneSuccess = true;\r
- }\r
- } catch (Exception e) {\r
- hasError = true;\r
- }\r
- }\r
- }\r
- setProgress(p++ * 100 / contents.size());\r
-\r
- if (getJobRuntime().isWaitingCancel()) {\r
- logger.info("Job canceled by user");\r
- //ne mentsuk a szalagot meg\r
- return null;\r
- }\r
-\r
- }\r
-\r
- if (oneSuccess && !hasError) {\r
- saveVolumeHistory(volumeName);\r
- String subject = "A kazetta eltávolítható a HSM rendszerből: " + volumeName;\r
- logger.info(new MediaCubeMarker() {\r
- {\r
- setSubject(subject);\r
- }\r
- }, subject);\r
- }\r
-\r
- //ha mar sikerult valamit archivalni kilepunk\r
- if (oneSuccess)\r
- break;\r
- }\r
- } catch (Exception e) {\r
- logger.error(marker, "Hiba a migráció során. A rendszer hibaüzenete: {}", e.getMessage());\r
- throw e;\r
- }\r
-\r
- return null;\r
- }\r
-\r
- private List<IMetadata> getContents(String volumeName) throws Exception {\r
- List<IMetadata> contents = null;\r
- contents = hsmProvider.list(new BasicDBObject("volumeName", volumeName));\r
- return contents;\r
- }\r
-\r
- protected IMetadataProvider getMetadataProvider(MetadataProviderType type) {\r
- IMetadataProviderFactory factory = getService(IMetadataProviderFactory.class);\r
- if (factory == null)\r
- return null;\r
- return factory.getProvider(type);\r
- }\r
-\r
- private BasicDBObject getPlanAirMetadata(String mediaHouseId) throws Exception {\r
- PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();\r
- opt.setSearch(mediaHouseId);\r
-\r
- List<IMetadata> result = null;\r
- opt.setType(MetadataType.Material);\r
- result = planairProvider.list(opt);\r
- if (result.size() != 0)\r
- return result.get(0).asJSON();\r
-\r
- opt.setType(MetadataType.Promo);\r
- result = planairProvider.list(opt);\r
- if (result.size() != 0)\r
- return result.get(0).asJSON();\r
-\r
- opt.setType(MetadataType.AD);\r
- result = planairProvider.list(opt);\r
- if (result.size() != 0)\r
- return result.get(0).asJSON();\r
-\r
- return null;\r
- }\r
-\r
- //true if need copy\r
- public boolean prepareCopy(String hsmFileName, Path source, Path target) throws IOException {\r
- boolean result = true;\r
- BasicDBObject excludeResult = queryExclude(hsmFileName);\r
- if (excludeResult != null) {\r
- logger.warn(marker, "Kivételként megjelölt: {}", hsmFileName);\r
- return false;\r
- }\r
-\r
- File sourceFile = source.toFile();\r
- File targetFile = target.toFile();\r
-\r
- if (!sourceFile.exists()) {\r
- logger.warn(marker, "A forrás nem elérhető: {}", source);\r
- return false;\r
- }\r
-\r
- // BasicDBObject historyResult = queryFileHistory(contentFileName);\r
- // if (historyResult != null)\r
- // return false;\r
-\r
- // if (!mediaFile.getName().toLowerCase().endsWith(MOVEXT.toLowerCase()) && !mediaFile.getName().toLowerCase().endsWith(MXFEXT.toLowerCase()))\r
- // return;\r
- // logger.info("Start copy from {} to {}", sourceFilePath, targetFilePath);\r
-\r
- boolean targetExists = targetFile.exists();\r
-\r
- long targetLength = targetFile.length();\r
- long sourceLength = sourceFile.length();\r
-\r
- if (targetLength == sourceLength) {\r
- logger.warn(marker, "A fájl már fel van dolgozva: {}, {} -> {}", source, sourceLength, targetLength);\r
- return false;\r
- }\r
-\r
- if (targetLength > sourceLength) {\r
- logger.warn(marker, "A célfájl nagyobb, törlöm: {}", target);\r
- Files.delete(target);\r
- targetLength = 0;\r
- targetExists = false;\r
- }\r
-\r
- if (targetExists) {\r
- logger.warn(marker, "A fájl már létezik, a másolás folytatódik: {}, {} -> {}", target, sourceLength, targetLength);\r
- } else\r
- logger.warn(marker, "Migrálás: {}, {} -> {}", source, sourceLength, targetLength);\r
-\r
- return result;\r
- }\r
-\r
- private boolean processHSMFile(String volumeName, String hsmFileName, Path sourceFilePath, Path targetFilePath) throws Exception {\r
- int repeat = 4;\r
- boolean successCopy = false;\r
-\r
- IItemManager manager = getManager();\r
- MediaFileDAO mfDAO = (MediaFileDAO) manager.getBaseDAO(MediaFile.class);\r
- List<IEntityBase> mediaFiles = mfDAO.getByHouseId(sourceFilePath.getFileName().toString());\r
- if (mediaFiles != null && mediaFiles.size() > 0) {\r
- logger.warn(marker, "Már archivált: {}", hsmFileName);\r
- return false;\r
- }\r
-\r
- if (prepareCopy(hsmFileName, sourceFilePath, targetFilePath)) {\r
- while (repeat > 0) {\r
- try {\r
- resumeableCopy(sourceFilePath, targetFilePath);\r
- repeat = 0;\r
- successCopy = true;\r
- } catch (Exception e) {\r
- if (Files.exists(targetFilePath) && targetFilePath.toFile().length() == 0)\r
- Files.delete(targetFilePath);\r
- //logger.warn(marker, "Hiba a másolás során: {} ({})", sourceFilePath, e.getMessage());\r
- repeat--;\r
- }\r
- }\r
- }\r
- String metadataFileName = sourceFilePath.getFileName() + EscortFiles.DOT_JSON;\r
- Path metadataPath = Paths.get(targetFilePath.getParent().toString(), EscortFiles.STATUSFOLDER, metadataFileName);\r
- boolean createMetadata = Files.exists(targetFilePath) && !Files.exists(metadataPath);\r
-\r
- if (successCopy || createMetadata) {\r
- String metadata = null;\r
- try {\r
- metadata = createMetadata(volumeName, hsmFileName).toPrettyString("");\r
- EscortFiles.createMetadata(targetFilePath.getParent().toString(), targetFilePath.getFileName().toString(), metadata);\r
- //saveFileHistory(contentFileName);\r
-\r
- } catch (Exception e) {\r
- logger.error(marker, "Metadata error", e);\r
- return false;\r
- }\r
- return true;\r
- }\r
-\r
- logger.error(marker, "A fájl másolása nem lehetséges: {}", sourceFilePath);\r
- return false;\r
- }\r
-\r
- public BasicDBObject queryExclude(String fileName) {\r
- if (db == null)\r
- db = NoSQLUtils.getNoSQLDB();\r
- if (excludes == null)\r
- excludes = db.getCollection("hsm_migrate_exclude");\r
- Path filePath = Paths.get(fileName);\r
- String pureFileName = FilenameUtils.removeExtension(filePath.getFileName().toString());\r
- QueryBuilder qb = QueryBuilder.start("name").in(Arrays.asList(fileName, pureFileName));\r
- BasicDBObject exceptionResult = NoSQLUtils.asSingle(excludes.find(qb.get()));\r
- return exceptionResult;\r
- }\r
-\r
- public BasicDBObject queryFileHistory(String fileName) {\r
- if (db == null)\r
- db = NoSQLUtils.getNoSQLDB();\r
- if (fileHistory == null)\r
- fileHistory = db.getCollection("hsm_migrate_file_history");\r
- QueryBuilder qb = QueryBuilder.start("name").in(Arrays.asList(fileName));\r
- BasicDBObject historyResult = NoSQLUtils.asSingle(fileHistory.find(qb.get()));\r
- return historyResult;\r
- }\r
-\r
- public BasicDBObject queryVolumeHistory(String volumeName) {\r
- if (db == null)\r
- db = NoSQLUtils.getNoSQLDB();\r
- if (volumeHistory == null)\r
- volumeHistory = db.getCollection("hsm_migrate_volume_history");\r
- QueryBuilder qb = QueryBuilder.start("name").in(Arrays.asList(volumeName));\r
- BasicDBObject historyResult = NoSQLUtils.asSingle(volumeHistory.find(qb.get()));\r
- return historyResult;\r
- }\r
-\r
- public void resumeableCopy(Path source, Path target) throws Exception {\r
- File sourceFile = source.toFile();\r
- File targetFile = target.toFile();\r
- boolean targetExists = targetFile.exists();\r
-\r
- long targetLength = targetFile.length();\r
- long sourceLength = sourceFile.length();\r
-\r
- try (InputStream in = new BufferedInputStream(new FileInputStream(sourceFile));\r
- OutputStream out = new BufferedOutputStream(new FileOutputStream(targetFile, targetExists))) {\r
-\r
- byte[] buffer = new byte[128 * 1024];\r
- int lengthRead;\r
-\r
- if (targetExists)\r
- in.skip(targetLength);\r
-\r
- while ((lengthRead = in.read(buffer)) > 0) {\r
- out.write(buffer, 0, lengthRead);\r
- out.flush();\r
- targetLength = targetFile.length();\r
- if (targetLength > sourceLength) {\r
- throw new Exception("Hiba! A fájl túl nagy lett.");\r
- }\r
-\r
- if (getJobRuntime().isWaitingCancel()) {\r
- break;\r
- }\r
- }\r
-\r
- targetLength = targetFile.length();\r
- sourceLength = sourceFile.length();\r
- if (targetLength != sourceLength) {\r
- throw new Exception("Hiba! A fájl mérete nem egyezik.");\r
- }\r
- }\r
- }\r
-\r
- private void saveFileHistory(String fileName) {\r
- if (db == null)\r
- db = NoSQLUtils.getNoSQLDB();\r
- if (fileHistory == null)\r
- fileHistory = db.getCollection("hsm_migrate_file_history");\r
- BasicDBObject item = new BasicDBObject();\r
- item.put("name", fileName);\r
- fileHistory.save(item);\r
-\r
- }\r
-\r
- private void saveVolumeHistory(String volumeName) {\r
- if (db == null)\r
- db = NoSQLUtils.getNoSQLDB();\r
- if (volumeHistory == null)\r
- volumeHistory = db.getCollection("hsm_migrate_volume_history");\r
- BasicDBObject item = new BasicDBObject();\r
- item.put("name", volumeName);\r
- volumeHistory.save(item);\r
-\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps.shared;\r
-\r
-public interface IExternalCallback {\r
- void onResponse(String data);\r
-}
\ No newline at end of file
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import org.apache.commons.lang.StringUtils;\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.commons.RemoteFile;\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.IProgressEventListener;\r
-import user.commons.remotestore.ProgressEvent;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-//import user.jobengine.db.Media;\r
-import user.jobengine.db.ArchivedMedia;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.Store;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class MXFCutterStep extends JobStep {\r
- private static final String TARGETNAMEPATTERN = "-ARCH-%s";\r
- private static final Logger logger = LogManager.getLogger();\r
- private IItemManager manager;\r
- private StoreUri tempTargetUri;\r
- private StoreUri tempSourceUri;\r
- private String sourceFileName;\r
- private Marker marker;\r
- private int nexioPort;\r
- private String nexioUserName, nexioPassword;\r
- private String nexioHost;\r
-\r
- protected void checkTargetPath(String targetPath) {\r
- if (StringUtils.isBlank(targetPath)) {\r
- logger.error(marker, "A folyamat 'targetPath' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'targetPath' input parameter missing.");\r
- }\r
- }\r
-\r
- protected StoreUri createTargetUri(IItemManager manager, String targetPath) throws NullPointerException {\r
- StoreUri result = null;\r
- result = manager.createStoreUri(RemoteStoreProtocol.FTP, nexioHost);\r
- result.setPortNumber(nexioPort);\r
- result.setUserName(nexioUserName);\r
- result.setPassword(nexioPassword);\r
-\r
- return result;\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(ArchivedMedia archivedMedia, String targetPath, String houseId, String successRecipient, int killDateDays, boolean useNexioTarget,\r
- String nexioAgency, int nexioPort, String nexioUserName, String nexioPassword, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- this.nexioPort = nexioPort;\r
- this.nexioUserName = nexioUserName;\r
- this.nexioPassword = nexioPassword;\r
- nexioHost = System.getProperty("nexio.host");\r
- marker = jobRuntime.getSessionMarker();\r
-\r
- if (useNexioTarget && archivedMedia.getTcIn() != null && archivedMedia.getTcOut() != null) {\r
- setAndCheck(archivedMedia, houseId, targetPath, useNexioTarget, jobEngine);\r
-\r
- final IJobRuntime runtime = jobRuntime;\r
- sourceFileName = houseId + TARGETNAMEPATTERN;\r
- tempSourceUri.addProgressListener(new IProgressEventListener() {\r
- @Override\r
- public void progressChanged(ProgressEvent evt) {\r
- runtime.incrementProgress(evt.getProgress());\r
- }\r
- });\r
-\r
- RemoteFile result = tempSourceUri.transferFrom(tempTargetUri, sourceFileName, sourceFileName);\r
-\r
- EscortFiles.setNEXIOKillDate(killDateDays, houseId, nexioAgency, tempTargetUri);\r
-\r
- logger.info("A {} videó kivágva {}s - {}s", sourceFileName, archivedMedia.getTcIn(), archivedMedia.getTcOut());\r
- }\r
-\r
- return null;\r
- }\r
-\r
- // private String getSourceFileName(ArchivedMedia archivedMedia, Store\r
- // store) {\r
- // List<MediaFile> mediaFiles = archivedMedia.getMedia().getMediaFiles();\r
- // if (mediaFiles == null)\r
- // return null;\r
- // for (MediaFile mediaFile : mediaFiles) {\r
- // if (mediaFile.getStore().getId() == store.getId())\r
- // return mediaFile.getRelativePath();\r
- // }\r
- // return null;\r
- // }\r
-\r
- private void setAndCheck(ArchivedMedia archivedMedia, String houseId, String targetPath, boolean useNexioTarget, IJobEngine jobEngine) {\r
- if (jobEngine == null) {\r
- logger.error(marker, "A folyamatkezelő réteg nem elérhető.");\r
- throw new NullPointerException("Internal error, missing JobEngine reference.");\r
- }\r
- manager = jobEngine.getItemManager();\r
- if (manager == null) {\r
- logger.error(marker, "Az adatbáziskezelő réteg nem elérhető.");\r
- throw new NullPointerException("Internal error, missing ItemManager reference.");\r
- }\r
- if (archivedMedia == null) {\r
- logger.error(marker, "A folyamat 'mediaCubeMedia' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
- }\r
- checkTargetPath(targetPath);\r
- if (StringUtils.isBlank(houseId)) {\r
- logger.error(marker, "A folyamat 'houseId' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'houseId' input parameter missing.");\r
- }\r
- Store tsmStore = manager.getSystemStore(false);\r
- if (tsmStore == null) {\r
- logger.error(marker, "A TSM rendszer beállítás nem elérhető.");\r
- throw new NullPointerException("System is not configured properly, missing TSM Store.");\r
- }\r
-\r
- tempSourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, targetPath);\r
- if (tempSourceUri == null) {\r
- logger.error(marker, "A TSM rendszer beállítás paraméterei nem elérhetőek.");\r
- throw new NullPointerException("System is not configured properly, missing TSM StoreUri.");\r
- }\r
- tempTargetUri = createTargetUri(manager, targetPath);\r
- // sourceFileName = getSourceFileName(archivedMedia, tsmStore);\r
- if (sourceFileName == null) {\r
- logger.error(marker, "Adatbázis bejegyzés hiba, a visszatöltendő fájl neve nem található.");\r
- throw new NullPointerException("Database error, missing MediaFile 'relativePath'.");\r
- }\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import javax.ws.rs.client.Entity;\r
-import javax.ws.rs.client.Invocation.Builder;\r
-import javax.ws.rs.core.MediaType;\r
-import javax.ws.rs.core.MultivaluedMap;\r
-import javax.ws.rs.core.Response;\r
-import javax.ws.rs.core.Response.Status;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-import org.jboss.resteasy.client.jaxrs.ResteasyClient;\r
-import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;\r
-import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;\r
-import org.jboss.resteasy.specimpl.MultivaluedMapImpl;\r
-\r
-import com.ibm.nosql.json.JSONUtil;\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-\r
-public class MediaCubeClient {\r
- private static Logger logger = LogManager.getLogger();\r
- private ResteasyWebTarget webTarget;\r
-\r
- public MediaCubeClient(String address) {\r
- ResteasyClient client = new ResteasyClientBuilder().build();\r
- webTarget = client.target(address);\r
- }\r
-\r
- BasicDBObject getDbObject(String json) {\r
- BasicDBObject result = (BasicDBObject) JSONUtil.jsonToDbObject(json);\r
-\r
- if (result == null)\r
- throw new NullPointerException("API Result is null!");\r
-\r
- if (result.containsKey("exception")) {\r
- BasicDBObject e = (BasicDBObject) result.get("exception");\r
- throw new RuntimeException(e.getString("message"));\r
- }\r
- //{"exception":{"message":"Invalid credentials.","publicName":"AuthenticationFailedException"}}\r
- return result;\r
- }\r
-\r
- public BasicDBObject getStatus(long jobId) {\r
- MultivaluedMap<String, Object> vars = new MultivaluedMapImpl<>();\r
- vars.add("jobId", jobId);\r
- Response response = query("services/rest/jobengine/jobstatus", vars).get();\r
- if (response.getStatus() != Status.OK.getStatusCode()) {\r
- logger.error(response.readEntity(String.class));\r
- System.out.println(response.readEntity(String.class));\r
- return null;\r
- }\r
- String result = response.readEntity(String.class);\r
- return getDbObject(result);\r
- }\r
-\r
- private Builder query(String path, MultivaluedMap<String, Object> vars) {\r
- ResteasyWebTarget target = webTarget.path(path).queryParams(vars);\r
- Builder result = target.request();\r
- return result;\r
- }\r
-\r
- public long startjob(String template, String name, BasicDBObject jobParams) throws Exception {\r
- MultivaluedMap<String, Object> vars = new MultivaluedMapImpl<>();\r
- vars.add("template", template);\r
- vars.add("name", name);\r
- Response response = query("services/rest/jobengine/startjob", vars).post(Entity.entity(jobParams.toString(), MediaType.APPLICATION_JSON));\r
-\r
- if (response.getStatus() != Status.OK.getStatusCode()) {\r
- logger.error(response.readEntity(String.class));\r
- return 0;\r
- }\r
-\r
- String resultObject = response.readEntity(String.class);\r
- return Long.parseLong(resultObject);\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\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.commons.mediatool.MediaInfo;\r
-import user.jobengine.db.Media;\r
-\r
-public class MediaToolStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- private Marker marker;\r
-\r
- @StepEntry\r
- public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia) throws Exception {\r
- marker = getSessionMarker();\r
-\r
- //TODO ez most minden esetben ujranezi\r
- // if (mediaCubeMedia.getLength() > 0)\r
- // return null;\r
-\r
- Path filePath = Paths.get(archiveItem.getMediaFile());\r
- MediaInfo mi = new MediaInfo(filePath);\r
- try {\r
- mi.process();\r
- long frames = mi.getFrames();\r
- if (frames > 0) {\r
- mediaCubeMedia.setLength(frames);\r
- getManager().modify(mediaCubeMedia);\r
- }\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- logger.error(marker, "A '{}' média analizálása sikertelen. A rendszer üzenete: {}", filePath, e.getMessage());\r
- }\r
- return null;\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.File;\r
-import java.nio.file.Files;\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-import java.nio.file.attribute.FileAttribute;\r
-import java.nio.file.attribute.PosixFilePermission;\r
-import java.nio.file.attribute.PosixFilePermissions;\r
-import java.util.Date;\r
-import java.util.Set;\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.BasicDBList;\r
-\r
-import user.jobengine.db.Item;\r
-import user.jobengine.db.ItemManager;\r
-import user.jobengine.db.ItemType;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-/**\r
- * Itemek es mediak krealasa a ArchiveItem objektum alapjan.\r
- *\r
- * @author robi\r
- */\r
-public class MetadataTransformStep extends JobStep {\r
- private static final String CONFLICT = ".CONFLICT";\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final String ITEM_MANAGER_IS_NULL = "ItemManager is null";\r
- public static final String DEFAULT_MEDIATYPE = "Generic";\r
- private ItemManager itemManager;\r
-\r
- private Marker marker;;\r
-\r
- private void addTags(ArchiveItem archiveItem, Media mediaCubeMedia) {\r
- BasicDBList tags = archiveItem.getTags();\r
- if (tags != null) {\r
- for (Object tag : tags) {\r
-\r
- try {\r
- String tagText = String.valueOf(tag);\r
- itemManager.addMediaTag(tagText, mediaCubeMedia.getId());\r
- System.out.println();\r
-\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- }\r
- }\r
- }\r
- }\r
-\r
- private void checkDuplicates(ArchiveItem archiveItem, String sourceFileName) throws Exception {\r
- if (itemManager.isMediaFileExists(sourceFileName)) {\r
- try {\r
- Path sourcePath = Paths.get(archiveItem.getMediaFile());\r
- Path parent = sourcePath.getParent();\r
- Path conflictPath = Paths.get(parent.toString(), CONFLICT);\r
- File folder = conflictPath.toFile();\r
- if (!folder.exists() || !folder.isDirectory()) {\r
- Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxrwxrwx");\r
- FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(perms);\r
- try {\r
- Files.createDirectories(conflictPath, attr);\r
- } catch (Exception e) {\r
- try {\r
- Files.createDirectory(conflictPath);\r
- } catch (Exception e1) {\r
- logger.catching(e);\r
- throw e;\r
- }\r
- }\r
- }\r
-\r
- Files.move(sourcePath, Paths.get(conflictPath.toString(), sourceFileName + (new Date()).getTime()));\r
- } catch (Exception e1) {\r
- logger.catching(e1);\r
- logger.error(marker, "Hiba az '{}' állomány mappába másolásakor. A rendszer üzenete: {}", CONFLICT, e1.getMessage());\r
- }\r
- throw new Exception("Az '" + sourceFileName + "' állomány már megtalálható az archívumban, archiválása nem lehetséges.");\r
- }\r
- }\r
-\r
- private Item createItem(ArchiveItem archiveItem) {\r
- Item mediaCubeItem = getExistingItem(archiveItem.getItemHouseId(), archiveItem.getItemTitle());\r
- if (mediaCubeItem == null)\r
- mediaCubeItem = itemManager.createItem(DEFAULT_MEDIATYPE, archiveItem.getItemTitle(), archiveItem.getItemDescription(),\r
- archiveItem.getItemHouseId());\r
- return mediaCubeItem;\r
- }\r
-\r
- private Media createMedia(ArchiveItem archiveItem, Item mediaCubeItem, String mediaType) {\r
- Media mediaCubeMedia;\r
- mediaCubeMedia = itemManager.createMedia(mediaType, archiveItem.getMediaTitle(), archiveItem.getMediaDescription(), archiveItem.getMediaHouseId());\r
- mediaCubeMedia.setLength(archiveItem.getDuration());\r
- mediaCubeItem.appendMedia(mediaCubeMedia);\r
-\r
- return mediaCubeMedia;\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(ArchiveItem archiveItem, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- marker = jobRuntime.getSessionMarker();\r
- Media mediaCubeMedia = null;\r
- itemManager = (ItemManager) jobEngine.getItemManager();\r
- if (itemManager == null)\r
- throw new NullPointerException(ITEM_MANAGER_IS_NULL);\r
- try {\r
- File sourceMediaFile = new File(archiveItem.getMediaFile());\r
- String sourceFileName = sourceMediaFile.getName();\r
- checkDuplicates(archiveItem, sourceFileName);\r
- Item mediaCubeItem = createItem(archiveItem);\r
- jobRuntime.incrementProgress(50);\r
- String mediaType = getCreateType(archiveItem);\r
- mediaCubeMedia = createMedia(archiveItem, mediaCubeItem, mediaType);\r
- //ha itemid 0 akkor merge, egyebkent media insert\r
-\r
- if (mediaCubeItem.getId() == 0)\r
- itemManager.mergeItemStructure(mediaCubeItem);\r
- else {\r
- mediaCubeMedia.setItemId(mediaCubeItem.getId());\r
- mediaCubeMedia.add();\r
- }\r
-\r
- addTags(archiveItem, mediaCubeMedia);\r
-\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- String fileName = new File(archiveItem.getMediaFile()).getName();\r
- logger.error(marker, "Az '{}' állomány nem archiválható, mert a metaadat transzformáció sikertelen. A rendszer üzenete: {}", fileName,\r
- e.getMessage());\r
- if (!archiveItem.removeCatchedFile())\r
- logger.error(marker, "Az '{}' állomány .catched jelző állománya nem törölhető.", fileName);\r
- throw e;\r
- } finally {\r
- jobRuntime.incrementProgress(100);\r
- }\r
- return new Object[] { mediaCubeMedia };\r
- }\r
-\r
- private String getCreateType(ArchiveItem archiveItem) {\r
- String mediaType = archiveItem.getMediaType();\r
- if (mediaType == null || mediaType.length() == 0)\r
- mediaType = DEFAULT_MEDIATYPE;\r
- else {\r
- ItemType mediaItemType = itemManager.getItemType(mediaType);\r
- if (mediaItemType == null)\r
- itemManager.createItemType(mediaType, mediaType).add();\r
- }\r
- return mediaType;\r
- }\r
-\r
- private Item getExistingItem(String itemHouseId, String itemTitle) {\r
- Item[] result = new Item[] { null };\r
- String sql = String.format("select id from item where houseid='%s' and title='%s'", itemHouseId, itemTitle);\r
- itemManager.executeQuery(sql, rs -> {\r
- long id = rs.getLong("id");\r
- result[0] = itemManager.getItem(id);\r
- return true;\r
- }, null);\r
- return result[0];\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.IOException;\r
-import java.nio.file.FileVisitResult;\r
-import java.nio.file.FileVisitor;\r
-import java.nio.file.Files;\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-import java.nio.file.SimpleFileVisitor;\r
-import java.nio.file.attribute.BasicFileAttributes;\r
-\r
-import org.apache.commons.lang.StringUtils;\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.db.ArchivedMedia;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class OutputPathAndNameSelectorStep extends JobStep {\r
-\r
- private static final String TARGETNAMEPATTERN = "-ARCH-%s";\r
-\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- private Marker marker;\r
-\r
- private void check(String localRetrievePath, String materialOutputFolder, String promoOutputFolder, String advertisementOutputFolder,\r
- String octopusOutputFolder, String genericOutputFolder, String houseId, String targetPathType) {\r
- if (StringUtils.isBlank(localRetrievePath)) {\r
- logger.error(marker, "A folyamat 'localRetrievePath' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'localRetrievePath' input parameter missing.");\r
- }\r
- if (StringUtils.isBlank(materialOutputFolder)) {\r
- logger.error(marker, "A folyamat 'materialOutputFolder' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'materialOutputFolder' input parameter missing.");\r
- }\r
- if (StringUtils.isBlank(promoOutputFolder)) {\r
- logger.error(marker, "A folyamat 'promoOutputFolder' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'promoOutputFolder' input parameter missing.");\r
- }\r
- if (StringUtils.isBlank(advertisementOutputFolder)) {\r
- logger.error(marker, "A folyamat 'advertisementOutputFolder' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'advertisementOutputFolder' input parameter missing.");\r
- }\r
- if (StringUtils.isBlank(octopusOutputFolder)) {\r
- logger.error(marker, "A folyamat 'octopusOutputFolder' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'octopusOutputFolder' input parameter missing.");\r
- }\r
- if (StringUtils.isBlank(genericOutputFolder)) {\r
- logger.error(marker, "A folyamat 'genericOutputFolder' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'genericOutputFolder' input parameter missing.");\r
- }\r
- if (StringUtils.isBlank(houseId)) {\r
- logger.error(marker, "A folyamat 'houseId' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'houseId' input parameter missing.");\r
- }\r
- if (StringUtils.isBlank(targetPathType)) {\r
- logger.error(marker, "A folyamat 'targetPathType' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'targetPathType' input parameter missing.");\r
- }\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(String localRetrievePath, String materialOutputFolder, String promoOutputFolder, String advertisementOutputFolder,\r
- String octopusOutputFolder, String genericOutputFolder, String onlineOutputFolder, String houseId, String targetPathType,\r
- ArchivedMedia archivedMedia, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- marker = jobRuntime.getSessionMarker();\r
- check(localRetrievePath, materialOutputFolder, promoOutputFolder, advertisementOutputFolder, octopusOutputFolder, genericOutputFolder, houseId,\r
- targetPathType);\r
- Object[] result = null;\r
- switch (Integer.parseInt(targetPathType)) {\r
- case 0:\r
- String outputFolder = getFolderById(materialOutputFolder, promoOutputFolder, advertisementOutputFolder, octopusOutputFolder, genericOutputFolder,\r
- houseId, archivedMedia);\r
- result = localTargetInit(localRetrievePath, outputFolder, houseId, jobRuntime);\r
- break;\r
- case 1:\r
- result = localTargetInit(localRetrievePath, onlineOutputFolder, houseId, jobRuntime);\r
- break;\r
- case 2:\r
-\r
- if (archivedMedia.getTcIn() != null && archivedMedia.getTcOut() != null)\r
- result = new Object[] { genericOutputFolder, houseId, true };\r
- else\r
- result = new Object[] { null, houseId, true };\r
- break;\r
- }\r
- return result;\r
- }\r
-\r
- private String getFolderById(String materialOutputFolder, String promoOutputFolder, String advertisementOutputFolder, String octopusOutputFolder,\r
- String genericOutputFolder, String houseId, ArchivedMedia archivedMedia) throws Exception {\r
- String id = houseId.toUpperCase();\r
- MetadataType mdType = MetadataTypeDetector.GuessMetadataType(id);\r
- String result = null;\r
-\r
- //a groovy nem latja enumnak, hanem az objektum tulajdonsaganak\r
- switch (mdType.toString()) {\r
- case "OctopusPlaceholder":\r
- case "OctopusStory":\r
- result = octopusOutputFolder;\r
- break;\r
- case "TrafficMaterial":\r
- result = materialOutputFolder;\r
- break;\r
- case "TrafficPromo":\r
- result = promoOutputFolder;\r
- break;\r
- case "TrafficAD":\r
- result = advertisementOutputFolder;\r
- break;\r
- case "Generic":\r
- result = genericOutputFolder;\r
- break;\r
- }\r
- return result;\r
- }\r
-\r
- private String getPossiblePath(String id, Path targetPath) throws IOException {\r
- String[] result = new String[] { targetPath.toString() };\r
- FileVisitor<Path> matcherVisitor = new SimpleFileVisitor<Path>() {\r
- @Override\r
- public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {\r
- String dirName = dir.getFileName().toString();\r
- if (dirName.startsWith(id + "-") || dirName.equals(id)) {\r
- result[0] = dir.toString();\r
- return FileVisitResult.TERMINATE;\r
- }\r
- return FileVisitResult.CONTINUE;\r
- }\r
- };\r
- Files.walkFileTree(targetPath.getParent(), matcherVisitor);\r
- return result[0];\r
- }\r
-\r
- private Object[] localTargetInit(String localRetrievePath, String outputFolder, String houseId, IJobRuntime jobRuntime) throws IOException {\r
- String id = houseId.toUpperCase();\r
- String targetPath = getPossiblePath(id, Paths.get(localRetrievePath, outputFolder, id)).toString();\r
- String targetNamePattern = houseId + TARGETNAMEPATTERN;\r
- try {\r
- EscortFiles.ensureUNCFolder(Paths.get(targetPath));\r
- } catch (Exception e) {\r
- logger.error(jobRuntime.getSessionMarker(), "A cél mappa '{}' nem létezik és nem hozható létre. A rendszer hibaüzenete: {}", targetPath,\r
- e.getMessage());\r
- throw e;\r
- }\r
- return new Object[] { targetPath, targetNamePattern, false };\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.IOException;\r
-import java.nio.file.FileVisitResult;\r
-import java.nio.file.FileVisitor;\r
-import java.nio.file.Files;\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-import java.nio.file.SimpleFileVisitor;\r
-import java.nio.file.attribute.BasicFileAttributes;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-\r
-/* DO NOT REMOVE!\r
-import user.jobengine.server.steps.FileSearchFilterOptions;\r
-*/\r
-\r
-public class PathItemsCollectorStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(String sourceFolder, BasicDBObject filter) throws Exception {\r
- Path sourcePath = Paths.get(sourceFolder);\r
-\r
- List<String> files = new ArrayList<>();\r
-\r
- //teljes rekurzivitas szuressel\r
- FileSearchFilterOptions filterOptions = new FileSearchFilterOptions(filter);\r
- FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {\r
- @Override\r
- public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {\r
- if (!filterOptions.preAcceptDirectory(dir))\r
- return FileVisitResult.SKIP_SUBTREE;\r
- return FileVisitResult.CONTINUE;\r
- }\r
-\r
- @Override\r
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {\r
- if (filterOptions.acceptFile(file)) {\r
- files.add(file.toString());\r
- logger.info(file.getFileName());\r
- }\r
- return FileVisitResult.CONTINUE;\r
- }\r
-\r
- @Override\r
- public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {\r
- return FileVisitResult.CONTINUE;\r
- }\r
-\r
- };\r
-\r
- try {\r
- Files.walkFileTree(sourcePath, visitor);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), "Hiba a '{}' mappa feldolgozásában. A rendszer hibaüzenete: {}", sourcePath, e.getMessage());\r
- logger.catching(e);\r
- throw e;\r
- } finally {\r
- }\r
- return new Object[] { files };\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Paths;\r
-\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-\r
-public class PrepareRemoteTranscodeJobParametersStep extends JobStep {\r
- @StepEntry\r
- public Object[] execute(String profileName, String fileName) throws Exception {\r
- String transcoderInputDir = "m:\";\r
- String transcoderOutputDir = "m:\";\r
- String outFileName = fileName.substring(0, fileName.lastIndexOf(".")) + ".mp4";\r
- BasicDBObject parameters = new BasicDBObject();\r
- parameters.put("profile", profileName);\r
- parameters.put("input", Paths.get(transcoderInputDir, fileName));\r
- parameters.put("output", Paths.get(transcoderOutputDir, outFileName));\r
- return new Object[] { parameters };\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-import com.ibm.nosql.json.api.DB;\r
-import com.ibm.nosql.json.api.DBCollection;\r
-\r
-import user.commons.MediaCubeUndoMarker;\r
-import user.commons.nosql.NoSQLUtils;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.Media;\r
-\r
-public class QueryMissingProxyMediaStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute() throws Exception {\r
- Object[] result = new Object[] { null };\r
- DB db = NoSQLUtils.getNoSQLDB();\r
- DBCollection collection = db.getCollection("missing_lowres");\r
- Media media = getFirstUntranscodedMedia(collection);\r
-\r
- try {\r
- if (media == null) {\r
- logger.info(new MediaCubeUndoMarker(getSessionMarker().getSessionID()), "Nincs feldolgozandó hiány.");\r
- // throw new Exception("Nincs feldolgozandó hiány.");\r
- cancel();\r
- return null;\r
- }\r
-\r
- String name = media.getMediaFileRealName();\r
- collection.save(new BasicDBObject("name", name));\r
- logger.info(getSessionMarker(), "Processing mediaID: {}", media.getId());\r
- result[0] = media;\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- logger.error(getSessionMarker(), e.getMessage());\r
- throw e;\r
- } finally {\r
- setProgress(100);\r
- }\r
- return result;\r
- }\r
-\r
- private Media getFirstUntranscodedMedia(DBCollection collection) {\r
- Media[] result = new Media[] { null };\r
- //MV\r
- String query = "SELECT mediaid FROM VW_MISSING_PROXY_IDS WHERE HOUSEID like 'M%' or HOUSEID like 'P%' or HOUSEID like 'R%' ORDER BY modified DESC";\r
-\r
- //HTV\r
- //String query = "SELECT mediaid FROM VW_MISSING_PROXY_IDS";\r
- IItemManager manager = getManager();\r
- manager.executeQuery(query, rs -> {\r
- try {\r
- long mediaId = rs.getLong(1);\r
- Media media = manager.getMedia(mediaId);\r
- //a nevgeneralas miatt az eredeti MediaFilesName nem jo, a pontos nev kell nekunk\r
- String name = media.getMediaFileRealName();\r
- logger.info(getSessionMarker(), "Checking {}", name);\r
- long existing = collection.find(new BasicDBObject("name", name)).count();\r
- if (existing > 0) {\r
- logger.info(getSessionMarker(), "{} is on missing_lowres list", name);\r
- return true;\r
- }\r
-\r
- result[0] = media;\r
- } catch (Exception e) {\r
- logger.error(e);\r
- }\r
- return false;\r
- }, null);\r
- return result[0];\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-\r
-/*\r
-import user.jobengine.server.steps.MediaCubeClient;\r
-*/\r
-public class RemoteJobStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(String server, String template, String name, String profile) throws Exception {\r
- try {\r
- MediaCubeClient mc = new MediaCubeClient(server);\r
- BasicDBObject params = new BasicDBObject();\r
- params.put("profile", profile);\r
- params.put("input", "c:/_workspace/data/video/proba1.mxf");\r
- params.put("output", "c:/_video/proba1.mp4");\r
-\r
- long jobId = mc.startjob(template, name, params);\r
- logger.info(getMarker(), "Started {} on server {}", jobId, server);\r
- while (true) {\r
- BasicDBObject status = mc.getStatus(jobId);\r
- if (status != null)\r
- setProgress(status.getInt("progress"));\r
-\r
- String jobStatus = status.getString("status");\r
- if ("SUSPENDED".equals(jobStatus))\r
- throw new Exception(status.getString("description"));\r
-\r
- if ("FINISHED".equals(jobStatus))\r
- break;\r
- }\r
-\r
- } catch (Exception e) {\r
- throw e;\r
- }\r
- return new Object[] { null };\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.nio.file.Files;\r
-import java.nio.file.attribute.BasicFileAttributes;\r
-import java.sql.Timestamp;\r
-import java.util.Date;\r
-import java.util.List;\r
-\r
-import org.apache.commons.lang.RandomStringUtils;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-import org.apache.logging.log4j.Marker;\r
-import org.apache.logging.log4j.message.Message;\r
-import org.apache.logging.log4j.message.ParameterizedMessage;\r
-\r
-import user.commons.RemoteFile;\r
-import user.commons.StoreUri;\r
-import user.commons.mediatool.Timecode;\r
-import user.commons.mediatool.Timecode.Type;\r
-import user.commons.remotestore.IProgressEventListener;\r
-import user.commons.remotestore.IStatusEventListener;\r
-import user.commons.remotestore.ProgressEvent;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.commons.remotestore.StatusEvent;\r
-import user.jobengine.db.FileType;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.MediaFile;\r
-import user.jobengine.db.Store;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.JobEngineException;\r
-\r
-public class TSMBackupStep extends JobStep {\r
- private static final String MXFEXT = ".MXF";\r
- private static final Logger logger = LogManager.getLogger();\r
- private IItemManager manager;\r
- private File sourceMediaFile;\r
- private Store tsmStore;\r
- private StoreUri targetUri;\r
- private FileType fileType;\r
- private Marker marker;\r
-\r
- @StepEntry\r
- public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, int killDateDays) throws Exception {\r
- marker = getSessionMarker();\r
-\r
- File sourceMediaFile = new File(archiveItem.getMediaFile());\r
- String sourceFileName = sourceMediaFile.getName();\r
- Timecode timecode = new Timecode(mediaCubeMedia.getLength(), Type.PAL);\r
- String details = String.format("%s (%s, %d bytes)", sourceFileName, timecode.toString(), sourceMediaFile.length());\r
- getJobRuntime().setDescription(details);\r
- try {\r
-\r
- setAndCheck(archiveItem, mediaCubeMedia, getEngine());\r
-\r
- //TODO mxf helyett az osszes kiterjesztest!!!!!\r
- //A dupla ellenorzes a napon beluli ismetlesek miatt kell\r
- long existingMediaId = archiveItem.getExistingMediaId();\r
- if (sourceMediaFile.length() == 0 && existingMediaId == 0) {\r
- existingMediaId = ItemManagerExtensions.getExistingRundownMedia(manager, sourceFileName.replace(MXFEXT, ""));\r
- if (existingMediaId == 0)\r
- existingMediaId = -1;\r
- }\r
-\r
- if (existingMediaId == 0)\r
- existingMediaId = ItemManagerExtensions.getExistingRundownMedia(manager, sourceFileName.replace(MXFEXT, ""));\r
-\r
- boolean randomizeName = Boolean.parseBoolean(System.getProperty("jobengine.randomize.archives", "false"));\r
-\r
- String targetFileName;\r
- if (randomizeName) {\r
- // a-z, A-Z, 0-9. For example: WRMcpIk7, s57JwCVA\r
- //veletlenszeru neveket adunk!\r
- targetFileName = String.format("%s-%s", RandomStringUtils.randomAlphanumeric(8), sourceFileName);\r
- } else\r
- targetFileName = sourceFileName;\r
-\r
- if (existingMediaId == 0) {\r
- StoreUri sourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, sourceMediaFile.getParent().toString());\r
-\r
- final IJobRuntime runtime = getJobRuntime();\r
- sourceUri.addProgressListener(new IProgressEventListener() {\r
- @Override\r
- public void progressChanged(ProgressEvent evt) {\r
- runtime.incrementProgress(evt.getProgress());\r
- }\r
- });\r
- sourceUri.addStatusListener(new IStatusEventListener() {\r
- @Override\r
- public void statusChanged(StatusEvent evt) {\r
- evt.setCancel(!canContinue());\r
- }\r
- });\r
-\r
- RemoteFile remoteFile = sourceUri.transferFrom(targetUri, sourceFileName, targetFileName);\r
- }\r
-\r
- if (existingMediaId > 0)\r
- logger.info(marker, "Az '{}' TSM mentése nem szükséges, mert már megtalálható az archívumban.", sourceFileName);\r
-\r
- //Fel kell szabadítani, hogy a kovetkezo archivalaskor is nekifusson\r
- if (existingMediaId == -1) {\r
- logger.info(marker, "Az '{}' mentése jelenleg nem lehetséges, mert a szükséges metaadat még nem található meg az archívumban.", sourceFileName);\r
- if (!archiveItem.removeCatchedFile())\r
- logger.error(marker,\r
- "Az '{}' állomány .catched jelző állománya nem törölhető. Az újabb archiválási kísérlethez annak kézi eltávolítása szükséges!",\r
- sourceMediaFile.getName());\r
- mediaCubeMedia.remove();\r
- } else {\r
- saveMetadata(mediaCubeMedia, sourceMediaFile, targetFileName, existingMediaId);\r
- logger.info(marker, "Az '{}' archiválása sikeres.", sourceFileName);\r
- if (killDateDays != 0)\r
- EscortFiles.createUNCKillDate(sourceMediaFile.getParent(), sourceFileName, killDateDays, marker);\r
- }\r
-\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- Message m = new ParameterizedMessage("Az '{}' állomány archiválása sikertelen. A rendszer hibaüzenete: {}", details, e.getMessage());\r
- logger.error(marker, m);\r
- if (!archiveItem.removeCatchedFile())\r
- logger.error(marker,\r
- "Az '{}' állomány .catched jelző állománya nem törölhető. Az újabb archiválási kísérlethez annak kézi eltávolítása szükséges!",\r
- sourceMediaFile.getName());\r
- throw new Exception(m.getFormattedMessage());\r
- }\r
- return null;\r
- }\r
-\r
- private void saveMetadata(Media mediaCubeMedia, File sourceFile, String targetFileName, long existingMediaId) {\r
-\r
- if (existingMediaId == 0) {\r
- MediaFile mediaFile = manager.createMediaFile(targetFileName, fileType, tsmStore, mediaCubeMedia);\r
- mediaFile.setHouseId(sourceFile.getName());\r
- mediaFile.add();\r
- } else {\r
- Media existingMedia = manager.getMedia(existingMediaId);\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
- }\r
- }\r
- }\r
- mediaCubeMedia.setPersister(manager);\r
-\r
- try {\r
- BasicFileAttributes attr = Files.readAttributes(sourceFile.toPath(), BasicFileAttributes.class);\r
- mediaCubeMedia.setArchived(new Timestamp(attr.creationTime().toMillis()));\r
- } catch (IOException e) {\r
- logger.catching(e);\r
- mediaCubeMedia.setArchived(new Timestamp(new Date().getTime()));\r
- }\r
-\r
- mediaCubeMedia.modify();\r
- }\r
-\r
- private void setAndCheck(ArchiveItem archiveItem, Media mediaCubeMedia, IJobEngine jobEngine) throws JobEngineException, IOException {\r
- if (jobEngine == null) {\r
- logger.error(marker, "Az folyamatkezelő réteg nem elérhető.");\r
- throw new NullPointerException("Internal error, missing JobEngine reference.");\r
- }\r
- manager = jobEngine.getItemManager();\r
- if (manager == null) {\r
- logger.error(marker, "Az adatbáziskezelő réteg nem elérhető.");\r
- throw new NullPointerException("Internal error, missing ItemManager reference.");\r
- }\r
- if (archiveItem == null) {\r
- logger.error(marker, "A folyamat 'archiveItem' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, missing 'archiveItem' input parameter.");\r
- }\r
- sourceMediaFile = new File(archiveItem.getMediaFile());\r
- if (sourceMediaFile == null) {\r
- logger.error(marker, "A folyamat 'archiveItem' bemeneti paraméter 'mediaFile' értéke üres.");\r
- throw new NullPointerException("System is not configured properly, missing 'mediaFile' value in 'archiveItem' input parameter.");\r
- }\r
- if (!sourceMediaFile.exists()) {\r
- logger.error(marker, "Az {} állomány nem létezik vagy nem érhető el.", sourceMediaFile.getName());\r
- throw new IOException(String.format("Input file {} not exists or unreachable.", sourceMediaFile.getName()));\r
- }\r
- tsmStore = manager.getSystemStore(false);\r
- if (tsmStore == null) {\r
- logger.error(marker, "A TSM rendszer beállítás nem elérhető.");\r
- throw new NullPointerException("System is not configured properly, missing TSM Store.");\r
- }\r
- targetUri = tsmStore.getSourceStoreUri(RemoteStoreProtocol.TSM);\r
- if (targetUri == null) {\r
- logger.error(marker, "A TSM rendszer beállítás paraméterei nem elérhetőek.");\r
- throw new NullPointerException("System is not configured properly, missing TSM StoreUri.");\r
- }\r
- fileType = manager.getFileType("High-res");\r
- if (fileType == null) {\r
- logger.error(marker, "Adatbázis bejegyzés hiba, a 'High-res' FileType nem található.");\r
- throw new NullPointerException("System is not configured properly, missing 'High-res' FileType.");\r
- }\r
- if (mediaCubeMedia == null) {\r
- logger.error(marker, "A folyamat 'mediaCubeMedia' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
- }\r
-\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.ArchivedMedia;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class TSMExtendedRetrieveStep extends TSMRestoreStep {\r
- private static String NEXIO_HOST = System.getProperty("nexio.host");\r
- // private static String NEXIO_HOST = SystemConfiguration.getInstance().value("services.nexio.host");\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- private boolean useNexioTarget;\r
- private int nexioPort;\r
- private String nexioUserName, nexioPassword;\r
- private String nexioAgency;\r
-\r
- @Override\r
- protected void afterRestore(StoreUri targetUri, String targetPath, int killDateDays, String targetFileName) throws Exception {\r
- if (useNexioTarget) {\r
- EscortFiles.setNEXIOKillDate(killDateDays, targetFileName, nexioAgency, targetUri);\r
- } else {\r
- super.afterRestore(targetUri, targetPath, killDateDays, targetFileName);\r
- }\r
- }\r
-\r
- @Override\r
- protected void beforeRestore(StoreUri targetURI, String targetName) throws Exception {\r
- String newTargetName = targetName;\r
- if (targetName.contains("."))\r
- newTargetName = targetName.substring(0, targetName.lastIndexOf('.'));\r
- if (useNexioTarget)\r
- if (targetURI.fileExists(newTargetName + ".mxf"))\r
- throw new Exception(String.format("%s-The newly created file name is existed.", getClass().getSimpleName()));\r
- }\r
-\r
- @Override\r
- protected void checkTargetPath(String targetPath) {\r
- if (!useNexioTarget)\r
- super.checkTargetPath(targetPath);\r
- }\r
-\r
- @Override\r
- protected StoreUri createTargetUri(IItemManager manager, String targetPath) throws NullPointerException {\r
- StoreUri result = null;\r
- logger.info(getSessionMarker(), "Create target uri {}", targetPath);\r
- if (useNexioTarget) {\r
- if (NEXIO_HOST == null) {\r
- throw new NullPointerException("Missing system property on 'nexio.host' name");\r
- }\r
- result = manager.createStoreUri(RemoteStoreProtocol.FTP, NEXIO_HOST);\r
- result.setPortNumber(nexioPort);\r
- result.setUserName(nexioUserName);\r
- result.setPassword(nexioPassword);\r
- } else\r
- result = super.createTargetUri(manager, targetPath);\r
- return result;\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(ArchivedMedia archivedMedia, String targetPath, String targetNamePattern, String successRecipient, int killDateDays,\r
- String localRetrievePath, String globalRetrievePath, boolean useNexioTarget, String nexioAgency, int nexioPort, String nexioUserName,\r
- String nexioPassword, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- this.useNexioTarget = useNexioTarget;\r
- this.nexioAgency = nexioAgency;\r
- this.nexioPort = nexioPort;\r
- this.nexioUserName = nexioUserName;\r
- this.nexioPassword = nexioPassword;\r
- if (nexioPort == 0) {\r
- throw new NullPointerException("System is not configured properly, 'nexioPort' input parameter missing.");\r
- }\r
- if (nexioUserName == null) {\r
- throw new NullPointerException("System is not configured properly, 'nexioUserName' input parameter missing.");\r
- }\r
- if (nexioPassword == null) {\r
- throw new NullPointerException("System is not configured properly, 'nexioPassword' input parameter missing.");\r
- }\r
- if (nexioAgency == null) {\r
- throw new NullPointerException("System is not configured properly, 'nexioAgency' input parameter missing.");\r
- }\r
-\r
- return super.execute(archivedMedia.getMedia(), targetPath, targetNamePattern, successRecipient, killDateDays, localRetrievePath, globalRetrievePath,\r
- jobEngine, jobRuntime);\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.IOException;\r
-import java.nio.file.Paths;\r
-import java.util.List;\r
-\r
-import org.apache.commons.lang.StringUtils;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-import org.apache.logging.log4j.Marker;\r
-import org.apache.logging.log4j.message.Message;\r
-\r
-import user.commons.LogUtils;\r
-import user.commons.RemoteFile;\r
-import user.commons.StoreUri;\r
-import user.commons.mediatool.Timecode;\r
-import user.commons.mediatool.Timecode.Type;\r
-import user.commons.remotestore.IProgressEventListener;\r
-import user.commons.remotestore.IStatusEventListener;\r
-import user.commons.remotestore.ProgressEvent;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.commons.remotestore.StatusEvent;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.MediaFile;\r
-import user.jobengine.db.Store;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class TSMRestoreStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- private IItemManager manager;\r
- private StoreUri targetUri;\r
- private StoreUri sourceUri;\r
- private String sourceFileName;\r
- private Marker marker;\r
-\r
- protected void afterRestore(StoreUri targetUri, String targetPath, int killDateDays, String targetFileName) throws IOException, Exception {\r
- if (killDateDays > 0)\r
- EscortFiles.createUNCKillDate(targetPath, targetFileName, killDateDays, marker);\r
- }\r
-\r
- protected void beforeRestore(StoreUri targetURI, String targetFileName) throws Exception {\r
- }\r
-\r
- protected void checkTargetPath(String targetPath) {\r
- if (StringUtils.isBlank(targetPath)) {\r
- logger.error(marker, "A folyamat 'targetPath' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'targetPath' input parameter missing.");\r
- }\r
- }\r
-\r
- protected StoreUri createTargetUri(IItemManager manager, String targetPath) {\r
- return manager.createStoreUri(RemoteStoreProtocol.LOCAL, targetPath);\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(Media mediaCubeMedia, String targetPath, String targetNamePattern, String successRecipient, int killDateDays,\r
- String localRetrievePath, String globalRetrievePath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- marker = jobRuntime.getSessionMarker();\r
- setAndCheck(mediaCubeMedia, targetPath, targetNamePattern, localRetrievePath, globalRetrievePath, jobEngine);\r
- String targetFileName = String.format(targetNamePattern, sourceFileName);\r
- Timecode timecode = new Timecode(mediaCubeMedia.getLength(), Type.PAL);\r
- try {\r
- String details = String.format("%s (%s)", sourceFileName, timecode.toString());\r
- jobRuntime.setDescription(details);\r
- beforeRestore(targetUri, targetNamePattern);\r
- final IJobRuntime runtime = jobRuntime;\r
- sourceUri.addProgressListener(new IProgressEventListener() {\r
- @Override\r
- public void progressChanged(ProgressEvent evt) {\r
- runtime.incrementProgress(evt.getProgress());\r
- }\r
- });\r
- sourceUri.addStatusListener(new IStatusEventListener() {\r
- @Override\r
- public void statusChanged(StatusEvent evt) {\r
- evt.setCancel(!canContinue());\r
- }\r
- });\r
- RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, targetFileName);\r
-\r
- String globalTargetPath = Paths.get(targetPath, targetFileName).getParent().toString().replace(Paths.get(localRetrievePath).toString(),\r
- globalRetrievePath);\r
-\r
- logger.info(marker,\r
- "Az '{}' állomány visszatöltése sikeres volt '{}' néven. A célmappa a <a href='{}' target='_blank'>ide kattintva</a> nyitható meg.",\r
- sourceFileName, targetFileName, globalTargetPath);\r
- afterRestore(targetUri, targetPath, killDateDays, targetFileName);\r
-\r
- } catch (Exception e) {\r
- Message msg = LogUtils.format("Az '{}' állomány visszatöltése sikertelen. A rendszer hibaüzenete: {}", sourceFileName, e.getMessage());\r
- logger.error(marker, msg);\r
- // logger.error(jobRuntime.marker, msg);\r
- logger.catching(e);\r
- throw e;\r
- }\r
-\r
- return null;\r
- }\r
-\r
- private String getSourceFileName(Media mediaCubeMedia, Store store) {\r
- List<MediaFile> mediaFiles = mediaCubeMedia.getMediaFiles();\r
- if (mediaFiles == null)\r
- return null;\r
- for (MediaFile mediaFile : mediaFiles) {\r
- if (mediaFile.getStore().getId() == store.getId())\r
- return mediaFile.getRelativePath();\r
- }\r
- return null;\r
- }\r
-\r
- private void setAndCheck(Media mediaCubeMedia, String targetPath, String targetNamePattern, String localRetrievePath, String globalRetrievePath,\r
- IJobEngine jobEngine) {\r
- if (jobEngine == null) {\r
- logger.error(marker, "Az folyamatkezelő réteg nem elérhető.");\r
- throw new NullPointerException("Internal error, missing JobEngine reference.");\r
- }\r
- manager = jobEngine.getItemManager();\r
- if (manager == null) {\r
- logger.error(marker, "Az adatbáziskezelő réteg nem elérhető.");\r
- throw new NullPointerException("Internal error, missing ItemManager reference.");\r
- }\r
- if (mediaCubeMedia == null) {\r
- logger.error(marker, "A folyamat 'mediaCubeMedia' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
- }\r
- checkTargetPath(targetPath);\r
- if (StringUtils.isBlank(targetNamePattern)) {\r
- logger.error(marker, "A folyamat 'targetNamePattern' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'targetNamePattern' input parameter missing.");\r
- }\r
- Store tsmStore = manager.getSystemStore(false);\r
- if (tsmStore == null) {\r
- logger.error(marker, "A TSM rendszer beállítás nem elérhető.");\r
- throw new NullPointerException("System is not configured properly, missing TSM Store.");\r
- }\r
- sourceUri = tsmStore.getSourceStoreUri(RemoteStoreProtocol.TSM);\r
- if (sourceUri == null) {\r
- logger.error(marker, "A TSM rendszer beállítás paraméterei nem elérhetőek.");\r
- throw new NullPointerException("System is not configured properly, missing TSM StoreUri.");\r
- }\r
- targetUri = createTargetUri(manager, targetPath);\r
- sourceFileName = getSourceFileName(mediaCubeMedia, tsmStore);\r
- if (sourceFileName == null) {\r
- logger.error(marker, "Adatbázis bejegyzés hiba, a visszatöltendő fájl neve nem található.");\r
- throw new NullPointerException("Database error, missing MediaFile 'relativePath'.");\r
- }\r
-\r
- if (StringUtils.isBlank(localRetrievePath)) {\r
- logger.error(marker, "A folyamat 'localRetrievePath' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'localRetrievePath' input parameter missing.");\r
- }\r
- if (StringUtils.isBlank(globalRetrievePath)) {\r
- logger.error(marker, "A folyamat 'globalRetrievePath' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'globalRetrievePath' input parameter missing.");\r
- }\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Files;\r
-import java.nio.file.Paths;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.StoreUri;\r
-import user.commons.mediatool.Timecode;\r
-import user.commons.mediatool.Timecode.Type;\r
-import user.commons.remotestore.IProgressEventListener;\r
-import user.commons.remotestore.IStatusEventListener;\r
-import user.commons.remotestore.ProgressEvent;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.commons.remotestore.StatusEvent;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.MediaFile;\r
-import user.jobengine.db.Store;\r
-\r
-public class TSMSimpleRestoreStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(long mediaId, String targetPath) throws Exception {\r
- String fileName = null;\r
- try {\r
- Media media = getManager().getMedia(mediaId);\r
- MediaFile mediaFile = getManager().getSystemMediaFile(media);\r
- fileName = mediaFile.getRelativePath();\r
- Timecode timecode = new Timecode(media.getLength(), Type.PAL);\r
- getJobRuntime().setDescription(String.format("%s (%s)", fileName, timecode.toString()));\r
- Store tsmStore = getManager().getSystemStore(false);\r
- StoreUri sourceStoreUri = getManager().getStoreUri(tsmStore.getName(), RemoteStoreProtocol.TSM);\r
- sourceStoreUri.addProgressListener(new IProgressEventListener() {\r
- @Override\r
- public void progressChanged(ProgressEvent evt) {\r
- setProgress(evt.getProgress());\r
- }\r
- });\r
- sourceStoreUri.addStatusListener(new IStatusEventListener() {\r
- @Override\r
- public void statusChanged(StatusEvent evt) {\r
- evt.setCancel(!canContinue());\r
- }\r
- });\r
- StoreUri targetStoreUri = getManager().createStoreUri(RemoteStoreProtocol.LOCAL, targetPath);\r
- sourceStoreUri.transferFrom(targetStoreUri, fileName, fileName + ".part");\r
- Files.move(Paths.get(targetPath, fileName + ".part"), Paths.get(targetPath, fileName));\r
- } catch (Exception e) {\r
- logger.error("Az '{}' állomány visszatöltése sikertelen. A rendszer üzenete: {}", fileName, e.getMessage());\r
- throw e;\r
- }\r
-\r
- return null;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.IJob;\r
-import user.commons.JobStatus;\r
-import user.commons.ListUtils;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class TestForkCancelableStep extends JobStep {\r
- private static final String CHILD_TITLE = "Párhuzamosított alfolyamat";\r
- // private static final String CHILD_TEMPLATE = "fake-concurrent.xml";\r
- private static final String CHILD_TEMPLATE = "cancelable.xml";\r
- private static final Logger logger = LogManager.getLogger();\r
- int count = 3;\r
-\r
- @StepEntry\r
- public Object[] execute(IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- for (int i = 0; i < count; i++) {\r
- IJobRuntime rt = getEngine().submit(null, e -> {\r
- if (e.getStatus().equals(JobStatus.SUSPENDED)) {\r
- IJobRuntime rt = (IJobRuntime) e.getSource();\r
- logger.info("Cleanup on SUSPEND {}, {}", rt.getId(), rt.isDisableRetry());\r
- }\r
- }, CHILD_TEMPLATE, "JOB " + i, 0, IJobEngine.DEFAULT_OWNER, ListUtils.asMap("param", i));\r
- \r
- rt.setRelated("TEST" + rt.getId());\r
- }\r
-\r
- logger.info("Done");\r
- return null;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-public class TestLib {\r
-\r
- public void hello() {\r
- System.out.println("Hello from lib");\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.nio.file.Files;\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-\r
-import org.apache.commons.io.FilenameUtils;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-import org.apache.logging.log4j.Marker;\r
-import org.apache.logging.log4j.message.Message;\r
-import org.apache.logging.log4j.message.ParameterizedMessage;\r
-\r
-import user.commons.FFAStransAPI;\r
-import user.commons.IFFAStransAPI;\r
-import user.commons.StoreUri;\r
-import user.commons.mediatool.Timecode;\r
-import user.commons.mediatool.Timecode.Type;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.FileType;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.Store;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class TranscodeFFAStranStep extends JobStep {\r
- private static final int POLL_INTERVALL = 3000;\r
- private static final String MP4EXT = ".MP4";\r
- private static final String MXFEXT = ".MXF";\r
- private static final String LOWRES_FILETYPE = "Low-res";\r
- private static final Logger logger = LogManager.getLogger("TranscodeFFAStranStep");\r
- private IItemManager manager;\r
- private Store store;\r
- private FileType fileType;\r
- private Media mediaCubeMedia;\r
- private Marker marker;\r
-\r
- @StepEntry\r
- public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, String transcoderAddress, String transcoderTemplateName,\r
- String globalHiresSourcePath, String localLowresTargetPath, boolean deleteSource, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
-\r
- this.marker = jobRuntime.getSessionMarker();\r
- this.manager = jobEngine.getItemManager();\r
- this.store = check(manager.getCurrentLowresStore(), "lowres Store");\r
- this.fileType = check(manager.getFileType(LOWRES_FILETYPE), "lowres FileType");\r
- this.mediaCubeMedia = check(mediaCubeMedia, "mediaCubeMedia");\r
- check(archiveItem, "archiveItem");\r
- check(transcoderAddress, "transcoderAddress");\r
- check(transcoderTemplateName, "transcoderTemplateName");\r
- check(globalHiresSourcePath, "globalHiresSourcePath");\r
- check(localLowresTargetPath, "localLowresTargetPath");\r
-\r
- File sourceMediaFile = new File(archiveItem.getMediaFile());\r
- logger.info("Transcoding {}", archiveItem.getMediaFile());\r
- String sourceFileName = sourceMediaFile.getName();\r
- Timecode timecode = new Timecode(mediaCubeMedia.getLength(), Type.PAL);\r
-\r
- String details = String.format("%s (%s, %d bytes)", sourceFileName, timecode.toString(), sourceMediaFile.length());\r
-\r
- StoreUri storeUri = store.getTargetStoreUri(RemoteStoreProtocol.LOCAL);\r
- if (storeUri == null)\r
- throw new Exception("Can not detect proxy folder.");\r
-\r
- String webPath = storeUri.toString(true);\r
-\r
- Path targetPath = null;\r
- try {\r
- String targetFileName = FilenameUtils.removeExtension(sourceFileName) + MP4EXT;\r
- targetPath = Paths.get(localLowresTargetPath, targetFileName);\r
- if (!targetPath.toFile().exists()) {\r
- // jobRuntime.setDescription(String.format("%s: %s", jobRuntime.getDescription(), details));\r
- jobRuntime.setDescription(String.format("%s transzkódolása", details));\r
- String sourceFile = Paths.get(globalHiresSourcePath, sourceFileName).toString();\r
- IFFAStransAPI api = new FFAStransAPI(transcoderAddress, p -> {\r
- if (p <= 100)\r
- jobRuntime.incrementProgress(p);\r
- });\r
-\r
- api.submit(transcoderTemplateName, sourceFile);\r
- api.monitor(POLL_INTERVALL);\r
- }\r
-\r
- //a sikeres transzkod utan nem mindig van ott egybol a fajl\r
- long started = System.currentTimeMillis();\r
- while (!targetPath.toFile().exists()) {\r
- long current = System.currentTimeMillis();\r
- //max 5 perc varakozas\r
- if (current - started > 5 * 60 * 1000)\r
- throw new Exception("Transcode job target file access timed out");\r
- Thread.sleep(POLL_INTERVALL);\r
- }\r
-\r
- postprocess(targetPath, webPath);\r
-\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- Message m = new ParameterizedMessage("{} átkódolás hiba: {}", sourceFileName, e.getMessage());\r
- logger.error(marker, m);\r
- throw new Exception(m.getFormattedMessage());\r
- } finally {\r
- try {\r
- if (deleteSource && sourceMediaFile != null && sourceMediaFile.exists())\r
- sourceMediaFile.delete();\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- }\r
- try {\r
- if (deleteSource && targetPath != null && targetPath.toFile().exists())\r
- Files.delete(targetPath);\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- }\r
- }\r
- return null;\r
- }\r
-\r
- private void postprocess(Path transcodedFilePath, String webPath) throws IOException {\r
- Path lowresPath = null;\r
- try {\r
- String transcodedFileName = transcodedFilePath.getFileName().toString();\r
- String targetPath = null;\r
- if (transcodedFileName.indexOf(".") > 2) {\r
- Path subdir = Paths.get(transcodedFileName.substring(0, 1), transcodedFileName.substring(1, 2), transcodedFileName.substring(2, 3));\r
- EscortFiles.ensureUNCFolder(webPath, subdir.toString());\r
- targetPath = Paths.get(subdir.toString(), transcodedFileName).toString();\r
- } else {\r
- targetPath = transcodedFileName;\r
- }\r
- lowresPath = Paths.get(webPath, targetPath);\r
- int version = 1;\r
- while (lowresPath.toFile().exists()) {\r
- String fileName = transcodedFileName + version + MP4EXT;\r
- lowresPath = Paths.get(lowresPath.toString().replace(transcodedFileName, fileName));\r
- targetPath = targetPath.replace(transcodedFileName, fileName);\r
- transcodedFileName = fileName;\r
- version++;\r
- }\r
-\r
- Files.move(transcodedFilePath, lowresPath);\r
- manager.createMediaFile(targetPath, fileType, store, mediaCubeMedia).add();\r
- } catch (IOException e) {\r
- logger.catching(e);\r
- logger.error(marker, "A '{}' állomány mozgatása a '{}' helyre nem sikerült.", transcodedFilePath, lowresPath);\r
- throw e;\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-/*\r
-import user.jobengine.server.steps.shared.IExternalCallback;\r
-import user.jobengine.server.steps.shared.ExternalProfile;\r
-import user.jobengine.server.steps.shared.ExternalProfilesConfig;\r
-import user.jobengine.server.steps.shared.ExternalCommand;\r
-import user.jobengine.server.steps.shared.ExternalCommandExecutor;\r
- */\r
-\r
-import java.nio.file.Paths;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.mediaarea.MediaArea;\r
-import user.jobengine.server.steps.shared.ExternalCommandExecutor;\r
-import user.jobengine.server.steps.shared.IExternalCallback;\r
-\r
-public class TranscodeFFMpegStep extends JobStep implements IExternalCallback {\r
- private static final Logger logger = LogManager.getLogger();\r
- private long allFrameCount;\r
- private long processedFrameCount;\r
-\r
- @StepEntry\r
- public Object[] execute(String input, String output, String profile) throws Exception {\r
- try {\r
- MediaArea ma = new MediaArea(Paths.get(input));\r
- ma.process();\r
- allFrameCount = ma.getFrameCount();\r
-\r
- ExternalCommandExecutor executor = new ExternalCommandExecutor();\r
- executor.execute(profile, input, output, this);\r
- } catch (Exception e) {\r
- logger.error(getMarker(), "Media information not available. System message: {}", e.getMessage());\r
- throw e;\r
- }\r
- return null;\r
- }\r
-\r
- @Override\r
- public void onResponse(String line) {\r
- String[] values = line.split("=");\r
- if ("frame".equals(values[0])) {\r
- processedFrameCount = Integer.parseInt(values[1]);\r
- int progress = (int) (processedFrameCount * 100 / allFrameCount);\r
- if (progress > 0)\r
- setProgress(progress);\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.util.List;\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.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.MediaFile;\r
-import user.jobengine.db.Store;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
-\r
-public class UpdateGhostMediaDataStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- private Marker marker;\r
-\r
- @StepEntry\r
- public Object[] execute(Media mediaCubeMedia, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- marker = jobRuntime.getSessionMarker();\r
-\r
- IItemManager manager = jobEngine.getItemManager();\r
- //Refresh from db\r
- List<MediaFile> mediaFiles = manager.getMedia(mediaCubeMedia.getId()).getMediaFiles();\r
- if (mediaFiles != null && mediaFiles.size() == 2) {\r
- MediaFile lowres = null;\r
- MediaFile highres = null;\r
-\r
- for (MediaFile mf : mediaFiles) {\r
- if (mf.getStore().getSourceStoreUri(RemoteStoreProtocol.HTTP) != null)\r
- lowres = mf;\r
- else\r
- highres = mf;\r
- }\r
-\r
- if (highres == null) {\r
- logger.info(marker, "Nincs highres mediaId: {}", mediaCubeMedia.getId());\r
- return null;\r
- }\r
- if (lowres == null) {\r
- logger.info(marker, "Nincs lowres mediaId: {}", mediaCubeMedia.getId());\r
- return null;\r
- }\r
-\r
- String id = MetadataTypeDetector.truncateExtension(highres.getRelativePath());\r
- id = MetadataTypeDetector.truncateVersion(id);\r
- boolean detect = MetadataTypeDetector.GuessMetadataType(id) == MetadataType.OctopusPlaceholder\r
- || MetadataTypeDetector.GuessMetadataType(id) == MetadataType.OctopusStory;\r
- if (!detect) {\r
- logger.info(marker, "Nem bejátszó mediaId: {}, file: {}", mediaCubeMedia.getId(), highres.getRelativePath());\r
- return null;\r
- }\r
-\r
- Store highresStore = manager.getSystemStore(false);\r
- final long sourceMediaId = lowres.getId();\r
- final long highresMediaFileId = highres.getId();\r
- final String highresRealtivePath = highres.getRelativePath();\r
-\r
- manager.executeQuery("SELECT mediaid FROM mediafile WHERE relativepath=? and storeid=? and id!=?", rs -> {\r
- long mediaId = rs.getLong(1);\r
- Media media = manager.getMedia(mediaId);\r
- if (media.getMediaFilesCount() == 1) {\r
- logger.info(marker, "Hiányzó szellem lowres hozzáadása {} alapján", media.getId());\r
-\r
- MediaFile mf = (MediaFile) manager.get(MediaFile.class, sourceMediaId);\r
- mf.setMedia(media);\r
- mf.setId(0);\r
- manager.add(mf);\r
- media.setLength(mediaCubeMedia.getLength());\r
- manager.modify(media);\r
- }\r
- return true;\r
- }, st -> {\r
- st.setString(1, highresRealtivePath);\r
- st.setLong(2, highresStore.getId());\r
- st.setLong(3, highresMediaFileId);\r
- });\r
-\r
- }\r
-\r
- return null;\r
- }\r
-\r
-}\r
datasource:\r
mediacube:\r
-# url: jdbc:db2://10.11.1.90:50000/mc\r
-# user: db2admin\r
-# password: password\r
- url: jdbc:db2://192.168.100.2:50000/mc\r
- user: db2inst1\r
+ url: jdbc:db2://10.10.1.27:50000/mc\r
+ user: db2admin\r
password: password\r
-# url: jdbc:db2://10.10.1.27:50000/mc\r
-# user: db2admin\r
-# password: password\r
external-indexer: false\r
simple-search: true\r
login-timeout: 3\r
pool-size: 10\r
mediacube-nosql:\r
-# url: jdbc:db2://10.11.1.90:50000/mc\r
-# user: db2admin\r
-# password: password\r
- url: jdbc:db2://192.168.100.2:50000/mc\r
- user: db2inst1\r
+ url: jdbc:db2://10.10.1.27:50000/mc\r
+ user: db2admin\r
password: password\r
-# url: jdbc:db2://10.10.1.27:50000/mc\r
-# user: db2admin\r
-# password: password\r
schema: test\r
login-timeout: 3\r
hsm: \r
--- /dev/null
+#This configuration file was written by: org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxFwConfigFileParser\r
+#Thu May 13 15:59:00 CEST 2021\r
+osgi.bundles=reference\:file\:cglib_2.2.2.jar@4,reference\:file\:com.fasterxml.jackson.core.jackson-annotations_2.4.5.jar@4,reference\:file\:com.fasterxml.jackson.core.jackson-core_2.4.5.jar@4,reference\:file\:com.fasterxml.jackson.core.jackson-databind_2.4.5.jar@4,reference\:file\:com.fasterxml.jackson.dataformat.jackson-dataformat-yaml_2.4.5.jar@4,reference\:file\:com.fasterxml.jackson.datatype.jackson-datatype-joda_2.4.5.jar@4,reference\:file\:com.fasterxml.jackson.jaxrs.jackson-jaxrs-base_2.4.5.jar@4,reference\:file\:com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider_2.4.5.jar@4,reference\:file\:com.fasterxml.jackson.module.jackson-module-jaxb-annotations_2.4.5.jar@4,reference\:file\:com.ibm.db2.jcc_1.4.0.jar@4,reference\:file\:com.ibm.nosql_4.19.26.jar@4,reference\:file\:com.microsoft.sqlserver.sqljdbc_6.0.8112.100.jar@4,reference\:file\:com.sun.jna_5.8.0.jar@4,reference\:file\:com.sun.jna.platform_5.8.0.jar@4,reference\:file\:groovy_3.0.3.jar@4,reference\:file\:io.humble.video-arch-x86_64-pc-linux-gnu6_0.2.1.jar@4,reference\:file\:io.humble.video-arch-x86_64-w64-mingw32_0.2.1.jar@4,reference\:file\:io.humble.video-noarch_0.2.1.jar@4,reference\:file\:javax.annotation-api_1.2.0.jar@4,reference\:file\:javax.mail_1.5.0.b01.jar@4,reference\:file\:javax.servlet-api_3.1.0.jar@4,reference\:file\:javax.ws.rs-api_2.0.1.jar@4,reference\:file\:jcifs_1.3.17.jar@4,reference\:file\:joda-time_2.2.0.jar@4,reference\:file\:junit_4.12.0.jar@4,reference\:file\:org.apache.aries.spifly.dynamic.bundle_1.0.8.jar@4,reference\:file\:org.apache.aries.util_1.0.0.jar@4,reference\:file\:org.apache.commons.beanutils_1.8.3.jar@4,reference\:file\:org.apache.commons.collections_3.2.2.jar@4,reference\:file\:org.apache.commons.digester_3.2.0.jar@4,reference\:file\:org.apache.commons.io_2.6.0.jar@4,reference\:file\:org.apache.commons.lang_2.6.0.jar@4,reference\:file\:org.apache.commons.net_3.6.0.jar@4,reference\:file\:org.apache.felix.gogo.command_0.12.0.jar@4,reference\:file\:org.apache.felix.gogo.runtime_0.12.0.jar@4,reference\:file\:org.apache.felix.gogo.shell_0.12.0.jar@4,reference\:file\:org.apache.httpcomponents.httpclient_4.2.6.jar@4,reference\:file\:org.apache.httpcomponents.httpcore_4.2.5.jar@4,reference\:file\:org.apache.logging.log4j.api_2.8.2.jar@1\:start,reference\:file\:org.apache.logging.log4j.core_2.8.2.jar@4,reference\:file\:org.apache.logging.log4j.slf4j-impl_2.8.2.jar@4,reference\:file\:org.apache.servicemix.bundles.quartz_2.3.0.2.jar@4,reference\:file\:org.eclipse.equinox.common_3.8.0.v20160509-1230.jar@2\:start,reference\:file\:org.eclipse.equinox.console_1.1.200.v20150929-1405.jar@4,reference\:file\:org.eclipse.equinox.ds_1.4.400.v20160226-2036.jar@1\:start,reference\:file\:org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar@4,reference\:file\:org.eclipse.equinox.util_1.0.500.v20130404-1337.jar@4,reference\:file\:org.eclipse.jetty.client_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.deploy_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.http_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.io_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.osgi.boot_9.3.9.v20160517.jar@4\:start,reference\:file\:org.eclipse.jetty.schemas_3.1.0.jar@4,reference\:file\:org.eclipse.jetty.security_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.server_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.servlet_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.util_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.webapp_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.websocket.api_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.websocket.client_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.websocket.common_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.websocket.server_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.websocket.servlet_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.jetty.xml_9.3.9.v20160517.jar@4,reference\:file\:org.eclipse.osgi.services_3.2.100.v20100503.jar@4,reference\:file\:org.hamcrest.core_1.3.0.jar@4,reference\:file\:org.jboss.resteasy.client_3.0.11.Final.jar@4,reference\:file\:org.jboss.resteasy.jaxb-provider_3.0.11.Final.jar@4,reference\:file\:org.jboss.resteasy.jaxrs_3.0.11.Final.jar@4,reference\:file\:org.jboss.resteasy.jaxrs-api_3.0.11.Final.jar@4,reference\:file\:org.jmock_2.6.0.jar@4,reference\:file\:org.jmock.junit4_2.6.0.jar@4,reference\:file\:org.mybatis.mybatis_3.5.2.jar@4,reference\:file\:org.objectweb.asm_5.0.1.jar@4,reference\:file\:org.objectweb.asm.commons_5.0.1.jar@4,reference\:file\:org.objectweb.asm.tree_5.0.1.jar@4,reference\:file\:org.omnifaces_3.4.1.jar@4,reference\:file\:slf4j.api_1.7.24.jar@4,reference\:file\:slf4j.simple_1.7.2.jar@4,reference\:file\:user.commons.log4j2_1.0.0.jar@4,reference\:file\:user.commons.zk_8.0.3.jar@4,reference\:file\:user.jobengine.osgi.commons_1.0.0.jar@4\:start,reference\:file\:user.jobengine.osgi.db_1.0.0.jar@4,reference\:file\:user.jobengine.osgi.server_1.0.0.jar@4,reference\:file\:user.jobengine.osgi.services_1.0.0.jar@4,reference\:file\:user.mediacube.gui_1.0.0.jar@4,reference\:file\:user.mediacube.metadata_1.0.0.jar@4,reference\:file\:user.tsm.client_1.2.0.jar@4\r
+equinox.use.ds=true\r
+osgi.bundles.defaultStartLevel=4\r
+osgi.framework=file\:plugins/org.eclipse.osgi_3.11.2.v20161107-1947.jar\r
+osgi.framework.extensions=\r
+eclipse.p2.data.area=@config.dir/../p2\r
+eclipse.p2.profile=DefaultProfile\r
org.apache.commons.io.output;version="2.2.0",
org.apache.commons.logging,
org.apache.commons.logging.impl,
+ org.apache.commons.net.ftp;version="3.6.0",
org.apache.ibatis.jdbc;version="3.5.2",
org.codehaus.groovy.control;version="3.0.3",
org.junit
import com.ibm.nosql.json.api.QueryBuilder;\r
\r
import user.commons.ListUtils;\r
+import user.commons.RemoteFile;\r
+import user.commons.StoreUri;\r
import user.commons.nosql.NoSQLUtils;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.db.Item;\r
import user.jobengine.db.ItemManager;\r
manager.remove(i);\r
}\r
\r
+ @Test\r
+ public void testFTP() throws Exception {\r
+\r
+ StoreUri sourceUri = manager.createStoreUri(RemoteStoreProtocol.FTP, "10.10.1.55");\r
+ sourceUri.setPortNumber(2098);\r
+ sourceUri.setUserName("administrator");\r
+ sourceUri.setPassword("system");\r
+ List<RemoteFile> remoteFiles = sourceUri.getRemoteFiles();\r
+ RemoteFile remoteFile = sourceUri.getRemoteFile("210506_0000_HIRADO.mxf");\r
+\r
+ assertNotNull(remoteFile);\r
+\r
+ }\r
+\r
@Test\r
public void testLoadMVExclude() throws Exception {\r
DB db = NoSQLUtils.getNoSQLDB();\r
logger.info(getMarker(), "Executing {}", i);\r
if (getJobRuntime().isWaitingCancel())\r
break;\r
- Thread.sleep(100);\r
+ Thread.sleep(1000);\r
int progress = (i + 1) * 100 / 10;\r
setProgress(progress);\r
}\r
@StepEntry\r
public Object[] execute(String localHiresPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
Object[] result = new Object[] { null, null, "%s", null, 0, true };\r
+\r
DB db = NoSQLUtils.getNoSQLDB();\r
DBCollection collection = db.getCollection("missing_lowres");\r
IItemManager manager = jobEngine.getItemManager();\r
private Media getFirstUntranscodedMedia(IItemManager manager, DBCollection collection) {\r
Media[] result = new Media[] { null };\r
//MV\r
- String query = "SELECT mediaid FROM VW_MISSING_PROXY_IDS WHERE HOUSEID like 'M%' or HOUSEID like 'P%' or HOUSEID like 'R%' ORDER BY modified DESC";\r
+ //String query = "SELECT mediaid FROM VW_MISSING_PROXY_IDS WHERE HOUSEID like 'M%' or HOUSEID like 'P%' or HOUSEID like 'R%' ORDER BY modified DESC";\r
\r
//HTV\r
- //String query = "SELECT mediaid FROM VW_MISSING_PROXY_IDS";\r
+ String query = "SELECT mediaid FROM VW_MISSING_PROXY_IDS";\r
manager.executeQuery(query, rs -> {\r
try {\r
long mediaId = rs.getLong(1);\r
logger.info(getSessionMarker(), "Checking {}", name);\r
long existing = collection.find(new BasicDBObject("name", name)).count();\r
if (existing > 0) {\r
- logger.info(getSessionMarker(), "{} is on missing_lowres list", name);\r
+ //logger.info(getSessionMarker(), "{} is on missing_lowres list", name);\r
return true;\r
}\r
\r
import user.jobengine.server.IJobRuntime;\r
\r
public class DeleteNEXIOMaterialsStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
+ private static final Logger logger = LogManager.getLogger(DeleteNEXIOMaterialsStep.class);\r
private static final String NEXIOCLIPS = "nexioclips";\r
private static final String KILLDATE = "killdate";\r
private static final String LONGNAMEID = "longnameid";\r
return;\r
}\r
sourceUri.delete(remoteFile);\r
- logger.info(jobRuntime.getSessionMarker(), "A '{}' fájl törlése sikeres volt.", remoteFile.getName());\r
+ logger.info(jobRuntime.getSessionMarker(), "A '{}' fájl törlése sikeres volt.", name);\r
} catch (Exception e) {\r
- logger.error(jobRuntime.getSessionMarker(), "A '{}' fájl nem törölhető. A rendszer hibaüzenete: {}", remoteFile.getName(), e.getMessage());\r
+ logger.error(jobRuntime.getSessionMarker(), "A '{}' fájl nem törölhető. A rendszer hibaüzenete: {}", name, e.getMessage());\r
}\r
}\r
\r
public Object[] execute(int port, String userName, String password, String filterAgencies, int gracePeriodDays, boolean notificationOnly,\r
IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
this.jobRuntime = jobRuntime;\r
+ logger.info("TESZT");\r
if (StringUtils.isBlank(NEXIO_HOST)) {\r
logger.error(jobRuntime.getSessionMarker(), "A 'nexio.host' rendszer paraméter nem található.");\r
throw new NullPointerException("System is not configured properly, 'nexio.host' startup parameter missing.");\r
else\r
delete(name);\r
i++;\r
- setProgress(i * 100 / clips.size());\r
+ int progress = i * 100 / clips.size();\r
+ setProgress(progress);\r
}\r
\r
return null;\r
this.sourceStoreUri = sourceStoreUri;\r
this.sourceFileName = sourceFileName;\r
long start = System.currentTimeMillis();\r
+\r
Object[] result = super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
RemoteFile remoteFile = sourceStoreUri.getRemoteFile(targetFileName);\r
if (remoteFile != null && remoteFile.getSize() > 0) {\r
logger.info(getMarker(), "{} size is {}, upload speed was {}/sec", targetFileName, FileSizeUtils.sizeAsString(remoteFile.getSize()), speed);\r
}\r
}\r
+\r
return result;\r
}\r
\r
} catch (Exception e) {\r
logger.error(getSessionMarker(), e.getMessage());\r
}\r
+\r
return result;\r
}\r
\r
import org.apache.logging.log4j.Logger;\r
\r
import user.commons.remotestore.IProgressEventListener;\r
-import user.commons.remotestore.ProgressEvent;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
import user.jobengine.server.steps.shared.OctopusDataMiner;\r
\r
public class SyncOCTOPUSDataStep extends JobStep {\r
private static final Logger logger = LogManager.getLogger();\r
private IProgressEventListener progressListener;\r
\r
- private IProgressEventListener createListener(final IJobRuntime jobRuntime) {\r
- return new IProgressEventListener() {\r
- @Override\r
- public void progressChanged(ProgressEvent evt) {\r
- //logger.debug("Progress changed to " + evt.getProgress() + "%");\r
- jobRuntime.incrementProgress(evt.getProgress());\r
- }\r
- };\r
- }\r
-\r
@StepEntry\r
- public Object[] execute(boolean includeArchived, IJobEngine jobEngine, final IJobRuntime jobRuntime) throws Exception {\r
+ public Object[] execute(boolean includeArchived, String address, String user, String pwd) throws Exception {\r
OctopusDataMiner dataMiner = null;\r
try {\r
- //jobRuntime.incrementProgress(10);\r
- progressListener = createListener(jobRuntime);\r
- dataMiner = new OctopusDataMiner();\r
- dataMiner.addProgressListener(progressListener);\r
+ dataMiner = new OctopusDataMiner(address, user, pwd);\r
+ dataMiner.addProgressListener(e -> {\r
+ setProgress(e.getProgress());\r
+ });\r
dataMiner.execute(includeArchived);\r
} catch (Exception e) {\r
logger.error(getMarker(), "Általános folyamat hiba. A rendszer hibaüzenete: {}", e.getMessage());\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
\r
+import user.commons.RemoteFile;\r
import user.commons.StoreUri;\r
import user.commons.remotestore.FtpDirectoryLister;\r
import user.commons.remotestore.RemoteStoreProtocol;\r
private static final String DOT_PART = ".part";\r
private static final Logger logger = LogManager.getLogger();\r
\r
- @StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
- try {\r
- getJobRuntime().setCancelable(false);\r
-\r
- Store sourceStore = getManager().getStore(sourceStoreUri.getStoreId());\r
- Store targetStore = getManager().getStore(targetStoreUri.getStoreId());\r
-\r
- String description = String.format("%s -> %s : %s", sourceStore.getName(), targetStore.getName(), sourceFileName);\r
- getJobRuntime().setDescription(description);\r
-\r
- sourceStoreUri.addProgressListener(e -> setProgress(e.getProgress()));\r
-\r
- StoreUri currentTargetStoreUri = getTargetStoreUri(targetStoreUri);\r
- tryCopy(sourceStoreUri, sourceFileName, currentTargetStoreUri, targetFileName);\r
- } catch (Exception e) {\r
- logger.error(getMarker(), "Error in transfer of {} when copying from {} to {}.", sourceFileName, sourceStoreUri, targetStoreUri);\r
- throw e;\r
- } finally {\r
- if (sourceStoreUri != null)\r
- sourceStoreUri.cleanUp();\r
- if (targetStoreUri != null)\r
- targetStoreUri.cleanUp();\r
- }\r
- return null;\r
- }\r
-\r
- protected StoreUri getTargetStoreUri(StoreUri targetStoreUri) {\r
- return targetStoreUri;\r
- }\r
-\r
- protected String getTmpExtension() {\r
- return DOT_PART;\r
- }\r
-\r
- private void tryCopy(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
+ private void copy(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
String currentTargetFileName = targetFileName;\r
\r
boolean renameAfterCopy = false;\r
}\r
}\r
}\r
+\r
+ @StepEntry\r
+ public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
+ try {\r
+ getJobRuntime().setCancelable(false);\r
+\r
+ Store sourceStore = getManager().getStore(sourceStoreUri.getStoreId());\r
+ Store targetStore = getManager().getStore(targetStoreUri.getStoreId());\r
+\r
+ setDescription("{} -> {} : {}", sourceStore.getName(), targetStore.getName(), sourceFileName);\r
+\r
+ sourceStoreUri.addProgressListener(e -> setProgress(e.getProgress()));\r
+\r
+ StoreUri currentTargetStoreUri = getTargetStoreUri(targetStoreUri);\r
+\r
+ try {\r
+ RemoteFile remoteFile = currentTargetStoreUri.getRemoteFile(targetFileName);\r
+ if (remoteFile != null) {\r
+ logger.info("File {} already exists on target {}, skipping transfer", targetFileName, targetStore.getName());\r
+ }\r
+ } catch (Exception e) {\r
+ }\r
+\r
+ copy(sourceStoreUri, sourceFileName, currentTargetStoreUri, targetFileName);\r
+ } catch (Exception e) {\r
+ logger.error(getMarker(), "Error in transfer of {} when copying from {} to {}.", sourceFileName, sourceStoreUri, targetStoreUri);\r
+ throw e;\r
+ } finally {\r
+ getJobRuntime().setDescription(null);\r
+ if (sourceStoreUri != null)\r
+ sourceStoreUri.cleanUp();\r
+ if (targetStoreUri != null)\r
+ targetStoreUri.cleanUp();\r
+ }\r
+ return null;\r
+ }\r
+\r
+ protected StoreUri getTargetStoreUri(StoreUri targetStoreUri) {\r
+ return targetStoreUri;\r
+ }\r
+\r
+ protected String getTmpExtension() {\r
+ return DOT_PART;\r
+ }\r
}\r
\r
import user.commons.configuration.SystemConfiguration;\r
\r
-/*\r
- package user.jobengine.server.steps.IExternalCallback;\r
- package user.jobengine.server.steps.ExternalProfile;\r
- package user.jobengine.server.steps.ExternalProfilesConfig;\r
- package user.jobengine.server.steps.ExternalCommand;\r
-\r
- */\r
public class ExternalCommandExecutor {\r
\r
public void execute(String profileName, String input, String output, IExternalCallback responseCallBack) throws Exception {\r
\r
import user.commons.CalendarUtils;\r
import user.commons.ListUtils;\r
-import user.commons.configuration.SystemConfiguration;\r
import user.commons.nosql.NoSQLUtils;\r
import user.commons.octopus.IOctopusAPI;\r
import user.commons.remotestore.IProgressEventListener;\r
private static final String FIELDS_STORYFOLDER = "id,name,modified";\r
private static final String FIELDS_STORYFOLDER_STORYIDS = "id,stories,Story.id";\r
private static final String RUNDOWN = "Rundown";\r
- private static final String OCTOPUS_DEVICE_NAME = "Octopus-Device-Name";\r
- private static final String OCTOPUS_DEVICE_ID = "Octopus-Device-Id";\r
+ // private static final String OCTOPUS_DEVICE_NAME = "Octopus-Device-Name";\r
+ // private static final String OCTOPUS_DEVICE_ID = "Octopus-Device-Id";\r
private static final String FIELDS = "fields";\r
private static final String EXIT = "Exit";\r
private static final String RESULT = "result";\r
private static final String MOSLABEL = "MOS: ";\r
private static final Object STORY = "Story";\r
\r
- private static String OCTOPUS_API_ADDRESS = SystemConfiguration.getInstance().value("services.octopus.api.address");\r
- private static String OCTOPUS_API_USER = SystemConfiguration.getInstance().value("services.octopus.api.user");\r
- private static String OCTOPUS_API_PASSWORD = SystemConfiguration.getInstance().value("services.octopus.api.password");\r
+ // private static String OCTOPUS_API_ADDRESS = SystemConfiguration.getInstance().value("services.octopus.api.address");\r
+ // private static String OCTOPUS_API_USER = SystemConfiguration.getInstance().value("services.octopus.api.user");\r
+ // private static String OCTOPUS_API_PASSWORD = SystemConfiguration.getInstance().value("services.octopus.api.password");\r
private DB db;\r
private ResteasyWebTarget webTarget;\r
private HashSet<Long> storyIDs = new HashSet<>();\r
private int currentObjectIndex;\r
private boolean disableWrite = false;\r
\r
- public OctopusDataMiner() {\r
+ public OctopusDataMiner(String address, String user, String pwd) {\r
db = NoSQLUtils.getNoSQLDB();\r
ResteasyClient client = new ResteasyClientBuilder().build();\r
- webTarget = client.target(OCTOPUS_API_ADDRESS).register(new BasicAuthentication(OCTOPUS_API_USER, OCTOPUS_API_PASSWORD));\r
+ webTarget = client.target(address).register(new BasicAuthentication(user, pwd));\r
}\r
\r
public void addProgressListener(IProgressEventListener listener) {\r
\r
private Builder query(String path, String fields) {\r
ResteasyWebTarget target = webTarget.path(path).queryParam(FIELDS, fields);\r
- Builder result = target.request().header(OCTOPUS_DEVICE_ID, OCTOPUS_API_USER).header(OCTOPUS_DEVICE_NAME, OCTOPUS_API_PASSWORD);\r
+ //Builder result = target.request().header(OCTOPUS_DEVICE_ID, OCTOPUS_API_USER).header(OCTOPUS_DEVICE_NAME, OCTOPUS_API_PASSWORD);\r
+ Builder result = target.request();\r
return result;\r
}\r
\r
if (remoteFile == null)
throw new Exception(String.format("RemoteFile '%s' not exists.", fileName));
logger.info("Transfering RemoteFile {}, size {}", remoteFile.getName(), remoteFile.getSize());
+
IDirectoryLister outputLister = RemoteFileHandler.createLister(targetStoreUri);
+
if (outputLister == null)
throw new Exception("OutputLister is null.");
ftpClient.enterLocalPassiveMode();\r
\r
//210510 ha tud, akkor menjen a gyoker konyvtarba ld. AMC ISILON valtas\r
- ftpClient.changeWorkingDirectory("/");\r
+ //ftpClient.changeWorkingDirectory("/");\r
\r
if (pathElements.length > 1) {\r
for (int i = 1; i < pathElements.length; i++) {\r
--- /dev/null
+--
+-- Copyright 2010-2016 the original author or authors.
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
+-- // Alter PASA STOREURI change to FTP protocol
+-- Migration SQL that makes the change goes here.
+
+update storeuri set protocol='FTP', URI='isilon.bcplay.local', username='mcube', password='K6NV5aFemp', rootpath='ifs/MEDIA/PasaPool' where storeid in (select id from store where name = 'PASAPOOL');
+@
+update storeuri set protocol='FTP', URI='isilon.bcplay.local', username='mcube', password='K6NV5aFemp', rootpath='ifs/MEDIA/BeachPool' where storeid in (select id from store where name = 'PEABLEBEACH');
+@
+update storeuri set protocol='FTP', URI='isilon.bcplay.local', username='mcube', password='K6NV5aFemp', rootpath='ifs/MEDIA/SelenioPool' where storeid in (select id from store where name = 'SELENIOPOOL');
+@
+update storeuri set protocol='FTP', URI='isilon.bcplay.local', username='mcube', password='K6NV5aFemp', rootpath='ifs/MEDIA/SelenioPool/16_9' where storeid in (select id from store where name = 'SELENIOPOOL_16_9');
+@
+update storeuri set protocol='FTP', URI='isilon.bcplay.local', username='mcube', password='K6NV5aFemp', rootpath='ifs/MEDIA/SelenioPool/16_9/Processiong' where storeid in (select id from store where name = 'SELENIOPOOL_16_9_PROCESSING');
+@
+update storeuri set protocol='FTP', URI='isilon.bcplay.local', username='mcube', password='K6NV5aFemp', rootpath='ifs/MEDIA/SelenioPool/4_3' where storeid in (select id from store where name = 'SELENIOPOOL_4_3');
+@
+update storeuri set protocol='FTP', URI='isilon.bcplay.local', username='mcube', password='K6NV5aFemp', rootpath='ifs/MEDIA/SelenioPool/4_3/Processiong' where storeid in (select id from store where name = 'SELENIOPOOL_4_3_PROCESSING');
+@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+
+update storeuri set protocol='FTP', URI='10.170.100.21', username='10.170.100.21\pbadmin', password='Txhkkmot52', rootpath='MEDIA_FS/PasaPool' where storeid in (select id from store where name = 'PASAPOOL');
+@
+update storeuri set protocol='FTP', URI='10.170.100.21', username='10.170.100.21\pbadmin', password='Txhkkmot52', rootpath='MEDIA_FS/BeachPool' where storeid in (select id from store where name = 'PEABLEBEACH');
+@
+update storeuri set protocol='FTP', URI='10.170.100.21', username='10.170.100.21\pbadmin', password='Txhkkmot52', rootpath='MEDIA_FS/SelenioPool' where storeid in (select id from store where name = 'SELENIOPOOL');
+@
+update storeuri set protocol='FTP', URI='10.170.100.21', username='10.170.100.21\pbadmin', password='Txhkkmot52', rootpath='MEDIA_FS/SelenioPool/16_9' where storeid in (select id from store where name = 'SELENIOPOOL_16_9');
+@
+update storeuri set protocol='FTP', URI='10.170.100.21', username='10.170.100.21\pbadmin', password='Txhkkmot52', rootpath='MEDIA_FS/SelenioPool/16_9/Processiong' where storeid in (select id from store where name = 'SELENIOPOOL_16_9_PROCESSING');
+@
+update storeuri set protocol='FTP', URI='10.170.100.21', username='10.170.100.21\pbadmin', password='Txhkkmot52', rootpath='MEDIA_FS/SelenioPool/4_3' where storeid in (select id from store where name = 'SELENIOPOOL_4_3');
+@
+update storeuri set protocol='FTP', URI='10.170.100.21', username='10.170.100.21\pbadmin', password='Txhkkmot52', rootpath='MEDIA_FS/SelenioPool/4_3/Processiong' where storeid in (select id from store where name = 'SELENIOPOOL_4_3_PROCESSING');
+@
+
sql.append("i.title itemtitle,");\r
sql.append("m.id mediaid,");\r
sql.append("m.title mediatitle,");\r
+ sql.append("m.archived,");\r
sql.append("m.creation,");\r
sql.append("m.length,");\r
sql.append("m.itemtypeid mediaitemtypeid,");\r
}\r
\r
if (options.getFrom() != null)\r
- sql.append(String.format(" AND m.creation > '%s'", df.format(options.getFrom())));\r
+ sql.append(String.format(" AND m.archived > '%s'", df.format(options.getFrom())));\r
\r
if (options.getTo() != null)\r
- sql.append(String.format(" AND m.creation < '%s'", df.format(options.getTo())));\r
+ sql.append(String.format(" AND m.archived < '%s'", df.format(options.getTo())));\r
\r
if (options.isMissingProxy())\r
sql.append(" AND vw_mf.mediafilecount=1");\r
media.setTitle(rs.getString("mediatitle"));\r
media.setHouseId(rs.getString("mediahouseid"));\r
media.setCreation(rs.getTimestamp("creation"));\r
+ media.setArchived(rs.getTimestamp("archived"));\r
media.setLength(rs.getLong("length"));\r
media.setMediaFilesCount(rs.getInt("mediafilecount"));\r
media.setMediaFilesName(rs.getString("mediafilehouseid"));\r
\r
String loadTemplateXml(String template);\r
\r
+ void resetStepClassLoader();\r
+\r
}\r
if (schedulerService != null)
schedulerService.shutdown();
+ jobEngineConfiguration.resetStepClassLoader();
jobEngineConfiguration.load(this, true);
schedulerService = new SchedulerService(this);
startUpBarrier.reset();
logger.info("JobEngine gracefully stopped");
+ jobEngineConfiguration.resetStepClassLoader();
jobEngineConfiguration.load(this, false);
vm.start();
schedulerService = new SchedulerService(this);
schedulerService.startup();
+ logger.info("JobEngine gracefully started");
isRunning = true;
}
private final List<JobTemplate> templates = Collections.synchronizedList(new ArrayList<JobTemplate>());\r
private final Map<String, BasicDBObject> schedules = new LinkedHashMap<String, BasicDBObject>();\r
private URLClassLoader stepsClassLoader;\r
+ private boolean resetStepClassLoader;\r
\r
public synchronized void bindSystemConfiguration(Object service) {\r
if (service instanceof IConfiguration) {\r
\r
if (stepsClassLoader == null)\r
stepsClassLoader = createParentClassLoader();\r
+ else {\r
+ if (resetStepClassLoader) {\r
+ stepsClassLoader.close();\r
+ stepsClassLoader = createParentClassLoader();\r
+ }\r
+ }\r
\r
Class<IJobStep> stepClass = null;\r
\r
}\r
\r
private URLClassLoader createParentClassLoader() throws MalformedURLException {\r
+ logger.info("Creating URLClassLoader");\r
try {\r
String stepClassesDir = systemConfig.getConfig(DIR_CLASSES);\r
Path path = Paths.get(stepClassesDir);\r
URL[] urls = { path.toUri().toURL() };\r
- logger.info("Creating URLClassLoader with {}", this.getClass().getClassLoader());\r
- // stepsClassLoader = URLClassLoader.newInstance(urls, Thread.currentThread().getContextClassLoader());\r
stepsClassLoader = URLClassLoader.newInstance(urls, Thread.currentThread().getContextClassLoader());\r
} catch (FileNotFoundException e) {\r
//nincs jobs/classes mappa\r
URL[] urls = {};\r
- logger.info("Creating URLClassLoader");\r
- // stepsClassLoader = URLClassLoader.newInstance(urls, Thread.currentThread().getContextClassLoader());\r
- stepsClassLoader = URLClassLoader.newInstance(urls, this.getClass().getClassLoader());\r
+ stepsClassLoader = URLClassLoader.newInstance(urls, Thread.currentThread().getContextClassLoader());\r
}\r
return stepsClassLoader;\r
}\r
}\r
return result;\r
}\r
+\r
+ @Override\r
+ public void resetStepClassLoader() {\r
+ resetStepClassLoader = true;\r
+ }\r
}\r
GroovyClassLoader stepClassLoader = (GroovyClassLoader) cl;
stepClassLoader.close();
- URLClassLoader stepParentClassLoader = (URLClassLoader) cl.getParent();
- stepParentClassLoader.close();
+ // URLClassLoader stepParentClassLoader = (URLClassLoader) cl.getParent();
+ // stepParentClassLoader.close();
} else if (cl instanceof URLClassLoader) {
- URLClassLoader stepClassLoader = (URLClassLoader) cl;
- stepClassLoader.close();
+ // URLClassLoader stepClassLoader = (URLClassLoader) cl;
+ // stepClassLoader.close();
}
}
try {\r
realJob.doJob();\r
} catch (Exception e) {\r
- logger.warn(e.getMessage());\r
+ //logger.warn(e.getMessage());\r
}\r
}\r
}\r
\r
\r
<!-- Enable http to https redirect \r
+--> \r
<security-constraint>\r
<web-resource-collection>\r
<web-resource-name>Everything on the app</web-resource-name>\r
<transport-guarantee>CONFIDENTIAL</transport-guarantee>\r
</user-data-constraint>\r
</security-constraint>\r
---> \r
</web-app>\r
<label value="@load(each.media.houseId)" />\r
<label value="@load(each.media.title)" />\r
<label value="@load(each.media.mediaFileRealName)" />\r
- <label style="font-size: 10px;" value="@load(each.media.creation) @converter('user.jobengine.zk.model.ShortDateConverter')" />\r
+ <label style="font-size: 10px;" value="@load(each.media.archived) @converter('user.jobengine.zk.model.ShortDateConverter')" />\r
<cell>\r
<vlayout>\r
<hlayout>\r
-version=2.7.3\r
+version=2.7.4\r
footer=2016-2021 © Copyright User Rendszerház Kft.\r
\r
login_info=Információ\r
if (service instanceof IJobEngine) {\r
jobEngine = (IJobEngine) service;\r
logger.info("IJobEngine service binded");\r
+\r
+ FrameworkUtil.getBundle(ClassFromBundle).getBundleContext().\r
}\r
}\r
\r