git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 29 Jun 2018 09:24:22 +0000 (09:24 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 29 Jun 2018 09:24:22 +0000 (09:24 +0000)
server/-configuration/scheduledjobs.json
server/user.jobengine.executors/jobtemplates/retrieve-ondemand.xml
server/user.jobengine.executors/jobtemplates/sys-import-morpheus-missing-materials.xml [moved from server/user.jobengine.executors/jobtemplates/import-morpheus-missing-materials.xml with 100% similarity]
server/user.jobengine.executors/jobtemplates/sys-recreate-length.xml
server/user.jobengine.executors/jobtemplates/sys-retrieve-missing-material.xml [moved from server/user.jobengine.executors/jobtemplates/retrieve-missing-material.xml with 79% similarity]
server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRetrieveMissingMaterialStep.java
server/user.jobengine.osgi.server/pages/searchitems.zul
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java
server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/jobengine/JobengineService.java

index 5da5c503b0bfcbb1cf9947bc3220f410c3241d13..abd4df80f3bb9060f78b0b169ac3d187a45a8348 100644 (file)
@@ -5,7 +5,8 @@
          "name" : "SYS: recreate-lowres",\r
       "template": "sys-recreate-lowres.xml",\r
       "parameters": [ \r
-       {"name": "filePath", "value": "c:/_downloads/Silicon.Valley.S04E08.HDTV.x264.HUN-SFY/Silicon.Valley.S04E08.HDTV.x264.HUN-SFY.mkv", "type": "java.lang.String" }\r
+       {"name": "localHiresPath", "value": "", "type": "java.lang.String" },\r
+       {"name": "globalRetrievePath", "value": "", "type": "java.lang.String" }\r
       ]\r
        },\r
        {\r
          "name" : "SYS: retrieve-ondemand",\r
       "template": "retrieve-ondemand.xml",\r
       "parameters": [ \r
-       {"name": "trafficOutputPath", "value": "/mnt/ISILON/PLAYOUT_NLE", "type": "java.lang.String"},\r
-       {"name": "octopusOutputPath", "value": "/mnt/ISILON/OCTOPUS", "type": "java.lang.String"},\r
-       {"name": "genericOutputPath", "value": "/mnt/ISILON/ARCHIVE_RESTORE", "type": "java.lang.String"},\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": "trafficOutputFolder", "value": "PLAYOUT_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": "retrieveToNexio", "value": false, "type": "java.lang.Boolean"},\r
        {"name": "killDateDays", "value": 7, "type": "java.lang.Integer"}\r
       ]\r
        },\r
index da99265b2b84ddb4b69f7492c073d005bd72fc09..5e776672fe11b3306d37dc61bd962f6a20b35dc8 100644 (file)
@@ -2,9 +2,12 @@
 <jobtemplate name="Archivált anyag visszatöltése" multiInstance="true">\r
        <declarations>\r
                <parameters>\r
-                       <parameter name="trafficOutputPath" type="java.lang.String" />\r
-                       <parameter name="octopusOutputPath" type="java.lang.String" />\r
-                       <parameter name="genericOutputPath" type="java.lang.String" />\r
+                       <parameter name="localRetrievePath" type="java.lang.String" />\r
+                       <parameter name="globalRetrievePath" type="java.lang.String" />\r
+                       <parameter name="trafficOutputFolder" type="java.lang.String" />\r
+                       <parameter name="octopusOutputFolder" type="java.lang.String" />\r
+                       <parameter name="genericOutputFolder" type="java.lang.String" />\r
+                       <parameter name="retrieveToNexio" type="java.lang.Boolean" />\r
                        <parameter name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
                        <parameter name="houseId" type="java.lang.String" />\r
                        <parameter name="successRecipient" type="java.lang.String" />\r
                <calljobstep type="user.jobengine.server.steps.OutputPathAndNameSelectorStep" weight="1">\r
                        <inputs>\r
                                <input>\r
-                                       <parameter name="trafficOutputPath" />\r
+                                       <parameter name="localRetrievePath" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="octopusOutputPath" />\r
+                                       <parameter name="trafficOutputFolder" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="genericOutputPath" />\r
+                                       <parameter name="octopusOutputFolder" />\r
+                               </input>\r
+                               <input>\r
+                                       <parameter name="genericOutputFolder" />\r
+                               </input>\r
+                               <input>\r
+                                       <parameter name="retrieveToNexio" />\r
                                </input>\r
                                <input>\r
                                        <parameter name="houseId" />\r
                                <input>\r
                                        <parameter name="killDateDays" />\r
                                </input>\r
+                               <input>\r
+                                       <parameter name="localRetrievePath" />\r
+                               </input>\r
+                               <input>\r
+                                       <parameter name="globalRetrievePath" />\r
+                               </input>\r
                        </inputs>\r
                </calljobstep>\r
        </commands>\r
index ccf8632add5e6726c2c22e0cfbba1b5fa3e375d2..e9ec0f9b1c53e9be29106dc6e68cc22003264fcb 100644 (file)
@@ -3,6 +3,7 @@
        <declarations>\r
                <parameters>\r
                        <parameter name="localHiresPath" type="java.lang.String" />\r
+                       <parameter name="globalRetrievePath" type="java.lang.String" />\r
                </parameters>\r
                <variables>\r
                        <variable name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
                                <input>\r
                                        <variable name="killDateDays" />\r
                                </input>\r
+                               <input>\r
+                                       <parameter name="localHiresPath" />\r
+                               </input>\r
+                               <input>\r
+                                       <parameter name="globalRetrievePath" />\r
+                               </input>\r
                        </inputs>\r
                </calljobstep>\r
                <calljobstep type="user.jobengine.server.steps.MediaToolStep" weight="1">\r
similarity index 79%
rename from server/user.jobengine.executors/jobtemplates/retrieve-missing-material.xml
rename to server/user.jobengine.executors/jobtemplates/sys-retrieve-missing-material.xml
index cc96b017951946e42b428d9d3294165c07458870..afff5429486e8ffe28164c1e36f4036e76ec5c6b 100644 (file)
@@ -4,6 +4,7 @@
                <parameters>\r
                        <parameter name="material" type="com.ibm.nosql.json.api.BasicDBObject" />\r
                        <parameter name="targetPath" type="java.lang.String" />\r
+                       <parameter name="globalRetrievePath" type="java.lang.String" />\r
                </parameters>\r
        </declarations>\r
        <commands>\r
@@ -15,6 +16,9 @@
                                <input>\r
                                        <parameter name="targetPath" />\r
                                </input>\r
+                               <input>\r
+                                       <parameter name="globalRetrievePath" />\r
+                               </input>\r
                        </inputs>\r
                </calljobstep>\r
        </commands>\r
index 927c66799b07fead39500c2c19cd51be6c7d73ed..6e1a7f8d119e824e21f067c4e7cfa91015588d5a 100644 (file)
@@ -23,18 +23,22 @@ public class OutputPathAndNameSelectorStep extends JobStep {
 \r
        private static final Logger logger = LogManager.getLogger();\r
 \r
-       private void check(String trafficOutputPath, String octopusOutputPath, String genericOutputPath, String houseId) {\r
-               if (StringUtils.isBlank(trafficOutputPath)) {\r
-                       logger.error(getMarker(), "A folyamat 'trafficOutputPath' bemeneti paramétere üres.");\r
-                       throw new NullPointerException("System is not configured properly, 'trafficOutputPath' input parameter missing.");\r
+       private void check(String localRetrievePath, String trafficOutputFolder, String octopusOutputFolder, String genericOutputFolder, String houseId) {\r
+               if (StringUtils.isBlank(localRetrievePath)) {\r
+                       logger.error(getMarker(), "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(octopusOutputPath)) {\r
-                       logger.error(getMarker(), "A folyamat 'octopusOutputPath' bemeneti paramétere üres.");\r
-                       throw new NullPointerException("System is not configured properly, 'octopusOutputPath' input parameter missing.");\r
+               if (StringUtils.isBlank(trafficOutputFolder)) {\r
+                       logger.error(getMarker(), "A folyamat 'trafficOutputFolder' bemeneti paramétere üres.");\r
+                       throw new NullPointerException("System is not configured properly, 'trafficOutputFolder' input parameter missing.");\r
                }\r
-               if (StringUtils.isBlank(genericOutputPath)) {\r
-                       logger.error(getMarker(), "A folyamat 'genericOutputPath' bemeneti paramétere üres.");\r
-                       throw new NullPointerException("System is not configured properly, 'genericOutputPath' input parameter missing.");\r
+               if (StringUtils.isBlank(octopusOutputFolder)) {\r
+                       logger.error(getMarker(), "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(getMarker(), "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(getMarker(), "A folyamat 'houseId' bemeneti paramétere üres.");\r
@@ -43,23 +47,23 @@ public class OutputPathAndNameSelectorStep extends JobStep {
        }\r
 \r
        @StepEntry\r
-       public Object[] execute(String trafficOutputPath, String octopusOutputPath, String genericOutputPath, String houseId, IJobEngine jobEngine,\r
-                       IJobRuntime jobRuntime) throws IOException {\r
-               check(trafficOutputPath, octopusOutputPath, genericOutputPath, houseId);\r
+       public Object[] execute(String localRetrievePath, String trafficOutputFolder, String octopusOutputFolder, String genericOutputFolder,\r
+                       boolean retrieveToNexio, String houseId, IJobEngine jobEngine, IJobRuntime jobRuntime) throws IOException {\r
+               check(localRetrievePath, trafficOutputFolder, octopusOutputFolder, genericOutputFolder, houseId);\r
 \r
                String id = houseId.toUpperCase();\r
                MetadataType mdType = MetadataTypeDetector.GuessMetadataType(id);\r
                String targetPath = null;\r
                switch (mdType) {\r
                case GENERIC:\r
-                       targetPath = Paths.get(genericOutputPath, id).toString();\r
+                       targetPath = Paths.get(localRetrievePath, genericOutputFolder, id).toString();\r
                        break;\r
                case OCTOPUSPLACEHOLDER:\r
                case OCTOPUSSTORY:\r
-                       targetPath = getPossiblePath(id, Paths.get(octopusOutputPath, id)).toString();\r
+                       targetPath = getPossiblePath(id, Paths.get(localRetrievePath, octopusOutputFolder, id)).toString();\r
                        break;\r
                case TRAFFIC:\r
-                       targetPath = getPossiblePath(id, Paths.get(trafficOutputPath, id)).toString();\r
+                       targetPath = getPossiblePath(id, Paths.get(localRetrievePath, trafficOutputFolder, id)).toString();\r
                        break;\r
                }\r
                String targetNamePattern = houseId + TARGETNAMEPATTERN;\r
index 854d9372176b81ebc3f33b0b07fb6b009d938c1b..65827e658d87ee4444b1e18a8b96c314b7b50ecf 100644 (file)
@@ -1,5 +1,6 @@
 package user.jobengine.server.steps;\r
 \r
+import java.nio.file.Paths;\r
 import java.util.List;\r
 \r
 import org.apache.commons.lang.StringUtils;\r
@@ -33,10 +34,10 @@ public class TSMRestoreStep extends JobStep {
        private Marker marker;\r
 \r
        @StepEntry\r
-       public Object[] execute(Media mediaCubeMedia, String targetPath, String targetNamePattern, String successRecipient, int killDateDays, IJobEngine jobEngine,\r
-                       IJobRuntime jobRuntime) throws Exception {\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.getMarker();\r
-               setAndCheck(mediaCubeMedia, targetPath, targetNamePattern, jobEngine);\r
+               setAndCheck(mediaCubeMedia, targetPath, targetNamePattern, localRetrievePath, globalRetrievePath, jobEngine);\r
                String targetFileName = null;\r
                try {\r
                        //TODO check file existance?\r
@@ -56,7 +57,12 @@ public class TSMRestoreStep extends JobStep {
                        targetFileName = String.format(targetNamePattern, sourceFileName);\r
                        RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, targetFileName);\r
 \r
-                       Message msg = LogUtils.format("Az '{}' állomány visszatöltése sikeres volt az '{}' néven.", sourceFileName, targetFileName);\r
+                       String globalTargetPath = Paths.get(targetPath, targetFileName).getParent().toString().replace(Paths.get(localRetrievePath).toString(),\r
+                                       globalRetrievePath);\r
+\r
+                       Message msg = LogUtils.format(\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
                        if (StringUtils.isNotBlank(successRecipient))\r
                                logger.info(new MediaCubeMarker(successRecipient), msg);\r
                        logger.info(marker, msg);\r
@@ -86,7 +92,8 @@ public class TSMRestoreStep extends JobStep {
                return null;\r
        }\r
 \r
-       private void setAndCheck(Media mediaCubeMedia, String targetPath, String targetNamePattern, IJobEngine jobEngine) {\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
@@ -124,5 +131,14 @@ public class TSMRestoreStep extends JobStep {
                        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
index efb9e9081484b19134ec8df6ae3cdc0065183c3b..f28782f305d0b31d25e205259005c203ddf30d35 100644 (file)
@@ -19,11 +19,12 @@ public class TSMRetrieveMissingMaterialStep extends TSMRestoreStep {
        private static final Logger logger = LogManager.getLogger();\r
 \r
        @StepEntry\r
-       public Object[] execute(BasicDBObject material, String targetPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+       public Object[] execute(BasicDBObject material, String targetPath, String globalRetrievePath, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
+                       throws Exception {\r
                try {\r
                        IItemManager itemManager = jobEngine.getItemManager();\r
                        Media mediaCubeMedia = itemManager.getMedia(material.getLong(MorpheusStrings.MEDIAID));\r
-                       super.execute(mediaCubeMedia, targetPath, TARGETNAMEPATTERN, null, 0, jobEngine, jobRuntime);\r
+                       super.execute(mediaCubeMedia, targetPath, TARGETNAMEPATTERN, null, 0, targetPath, globalRetrievePath, jobEngine, jobRuntime);\r
                        saveMaterial(material, MorpheusStrings.STATUS_DONE);\r
                } catch (Exception e) {\r
                        saveMaterial(material, MorpheusStrings.STATUS_ERROR);\r
index 9d353115bca3dc29c0022b5f0c8633a127ac13df..aa5fade25b0a5471845400fe1f1018b9bef6a01b 100644 (file)
@@ -49,16 +49,22 @@ div.z-row-content span {
                text-color: black;\r
 }\r
 \r
+.RED100 {\r
+       border-color: #FFCDD2;\r
+}\r
+\r
 .RED100 .z-toolbarbutton-content {\r
        background: #FFCDD2;\r
 }\r
 \r
 .RED200 .z-toolbarbutton-content {\r
        background: #EF9A9A;\r
+       border-color: #EF9A9A;;\r
 }\r
 \r
 .BROWN100 .z-toolbarbutton-content {\r
        background: #D7CCC8;\r
+       border-color: #D7CCC8;\r
 }\r
 \r
 .YELLOW200 .z-toolbarbutton-content {\r
@@ -122,6 +128,21 @@ div.z-row-content span {
        background:transparent;\r
 }\r
 \r
+.z-toolbarbutton {\r
+       border-width: 2px;\r
+}\r
+\r
+.z-toolbarbutton-checked {\r
+       border: 2px solid #808080;\r
+}\r
+\r
+.type-inlist {\r
+       width:80px; \r
+       border-left:1px solid #008AC8; \r
+       border-bottom:1px solid #008AC8; \r
+       padding:4px;\r
+}\r
+\r
        </style>\r
        <div id="scdiv" width="100%" height="100%" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.SearchModel')">\r
                <timer id="timer" delay="100" repeats="true" onTimer="@command('uiTick')" />\r
@@ -197,7 +218,7 @@ div.z-row-content span {
                                                                                                onClick="@command('selectMediaArchive', selectedObject=each)" />\r
                                                                                                <div sclass="details">\r
                                                                                                        <hlayout>\r
-                                                                                                               <div style="width:80px; border-left:1px solid #008AC8; border-bottom:1px solid #008AC8; padding:4px;">\r
+                                                                                                               <div class="RED100 type-inlist">\r
                                                                                                                        <label style="font-size: 10px;" value="@load(each.media.itemType.name)" />\r
                                                                                                                </div>\r
                                                                                                                <label style="font:20px Century Gothic; color:#008AC8;" value="@load(each.item.title)" />\r
index a32ded2b49baac438d88ab2c34bc612d56bec86d..e4346162ece1375cce12556e734639de78a65d34 100644 (file)
@@ -19,7 +19,6 @@ import com.ibm.nosql.json.api.DB;
 import com.ibm.nosql.json.api.DBCollection;\r
 import com.ibm.nosql.json.api.DBCursor;\r
 \r
-import user.commons.ListUtils;\r
 import user.commons.morpheus.MorpheusStrings;\r
 import user.commons.nosql.NoSQLUtils;\r
 import user.jobengine.db.ItemManagerData.SignalType;\r
@@ -35,8 +34,8 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
        private static final Logger logger = LogManager.getLogger();\r
        private static final String TARGETPATH = "targetPath";\r
        private static final String IMPORT_DISABLED = "importDisabled";\r
-       private static final String IMPORT_TEMPLATE = "import-morpheus-missing-materials.xml";\r
-       private static final String RETRIEVE_TEMPLATE = "retrieve-missing-material.xml";\r
+       private static final String IMPORT_TEMPLATE = "sys-import-morpheus-missing-materials.xml";\r
+       private static final String RETRIEVE_TEMPLATE = "sys-retrieve-missing-material.xml";\r
        private ListModelList<BasicDBObject> jobList = new ListModelList<BasicDBObject>();\r
        private Set<BasicDBObject> selectedJobs;\r
        private IJobEngine jobEngine = null;\r
@@ -83,9 +82,12 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                                logger.warn("'{}' already retrieving", name);\r
                        } else {\r
                                try {\r
-                                       //String targetPath, String targetNamePattern, String successRecipient\r
-                                       jobEngine.submit(RETRIEVE_TEMPLATE, String.format("%s hiányzó anyag visszatöltése", name),\r
-                                                       ListUtils.asMap(MorpheusStrings.MATERIAL, material, TARGETPATH, String.valueOf(targetPath)));\r
+\r
+                                       ScheduledJob retriveJob = jobEngine.getScheduledJob(RETRIEVE_TEMPLATE);\r
+                                       Map<String, Object> parameters = retriveJob.getJobParameters();\r
+                                       parameters.put(MorpheusStrings.MATERIAL, material);\r
+                                       parameters.put(TARGETPATH, String.valueOf(targetPath));\r
+                                       jobEngine.submit(RETRIEVE_TEMPLATE, String.format("%s hiányzó anyag visszatöltése", name), parameters);\r
                                } catch (Exception e) {\r
                                        logger.catching(e);\r
                                }\r
index e8e9acfca7f4062f167297eb2a1d48406779de55..b7053bff95c4457d93f6a036155dcf31d7f02acb 100644 (file)
@@ -120,4 +120,22 @@ public class JobengineService {
                }\r
                return result;\r
        }\r
+\r
+       @GET\r
+       @Path("/openlocal")\r
+       @Produces({ "application/internet-shortcut" })\r
+       public Response openLocal(@QueryParam("path") String path) {\r
+               Response result = null;\r
+               try {\r
+                       StringBuilder sb = new StringBuilder();\r
+                       sb.append("[InternetShortcut]");\r
+                       sb.append("\r\n");\r
+                       sb.append("URL=");\r
+                       sb.append(path);\r
+                       result = Response.ok(sb.toString()).header("Content-disposition", "inline; filename=open.url").build();\r
+               } catch (Exception e) {\r
+                       result = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();\r
+               }\r
+               return result;\r
+       }\r
 }\r