git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorMárk Mérész <USER\mark.meresz>
Mon, 16 Jul 2018 14:51:11 +0000 (14:51 +0000)
committerMárk Mérész <USER\mark.meresz>
Mon, 16 Jul 2018 14:51:11 +0000 (14:51 +0000)
13 files changed:
server/-configuration/scheduledjobs.json
server/user.jobengine.executors/config/config.xml
server/user.jobengine.executors/jobtemplates/batch-retrieve-ondemand.xml
server/user.jobengine.executors/jobtemplates/retrieve-ondemand.xml
server/user.jobengine.executors/src/user/jobengine/server/steps/BatchRetrieveForkStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMExtendedRetrieveStep.java [new file with mode: 0644]
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java
server/user.jobengine.osgi.server/.settings/org.eclipse.core.resources.prefs
server/user.jobengine.osgi.server/pages/retrievebatchselector.zul
server/user.jobengine.osgi.server/pages/searchitems.zul
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/RetrieveBatchSelectorModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java

index de2427f5ff2a02b6ea9b045a68ada3d2abda413c..9c0dfcc3533754d179d3e4f909febb7018bbb862 100644 (file)
@@ -22,7 +22,6 @@
        {"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 216ae54ff84f9430c89f8e1a7f93783d3df0946a..16370083869faf37fdd4fbffc333a35943a5cc16 100644 (file)
@@ -26,6 +26,7 @@
        <executor className="user.jobengine.server.steps.TranscodeFFAStranStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.TranscodeSELENIOStep" maxConcurrent="4"/>\r
        <executor className="user.jobengine.server.steps.TSMBackupStep" maxConcurrent="1"/>\r
+       <executor className="user.jobengine.server.steps.TSMExtendedRetrieveStep" maxConcurrent="1" />\r
        <executor className="user.jobengine.server.steps.TSMRestoreStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.TSMRetrieveMissingMaterialStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.UploadRecordingToNexioStep" maxConcurrent="1"/>\r
index 141af1e4ae199fd490d373b0a7fd541eac601f70..b5ae11e4a0deb80a881b556fce6c365981b64272 100644 (file)
@@ -5,6 +5,7 @@
                        <parameter name="basket" type="java.util.ArrayList" />\r
                        <parameter name="houseId" type="java.lang.String" />\r
                        <parameter name="recipient" type="java.lang.String" />\r
+                       <parameter name="targetPathType" type="java.lang.String" />\r
                </parameters>\r
        </declarations>\r
        <commands>\r
@@ -19,6 +20,9 @@
                                <input>\r
                                        <parameter name="recipient" />\r
                                </input>\r
+                               <input>\r
+                                       <parameter name="targetPathType" />\r
+                               </input>\r
                        </inputs>\r
                </calljobstep>\r
        </commands>\r
index 5e776672fe11b3306d37dc61bd962f6a20b35dc8..b3501f3d684404b1f551e80719964885acb8a774 100644 (file)
@@ -7,15 +7,16 @@
                        <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
+                       <parameter name="targetPathType" type="java.lang.String" />\r
                        <parameter name="killDateDays" type="java.lang.Integer"/>\r
                </parameters>\r
                <variables>\r
                        <variable name="targetPath" type="java.lang.String" />\r
                        <variable name="targetNamePattern" type="java.lang.String" />\r
+                       <variable name="useNexioTarget" type="java.lang.Boolean" />\r
                </variables>\r
        </declarations>\r
        <commands>\r
                                        <parameter name="genericOutputFolder" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="retrieveToNexio" />\r
+                                       <parameter name="houseId" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="houseId" />\r
+                                       <parameter name="targetPathType" />\r
                                </input>\r
                        </inputs>\r
                        <outputs>\r
                                <output>\r
                                        <variable name="targetNamePattern" />\r
                                </output>\r
+                               <output>\r
+                                       <variable name="useNexioTarget" />\r
+                               </output>\r
                        </outputs>                      \r
                </calljobstep>\r
-               <calljobstep type="user.jobengine.server.steps.TSMRestoreStep" weight="1">\r
+               <calljobstep type="user.jobengine.server.steps.TSMExtendedRetrieveStep" weight="1">\r
                        <inputs>\r
                                <input>\r
                                        <parameter name="mediaCubeMedia" />\r
@@ -72,6 +76,9 @@
                                <input>\r
                                        <parameter name="globalRetrievePath" />\r
                                </input>\r
+                               <input>\r
+                                       <variable name="useNexioTarget" />\r
+                               </input>\r
                        </inputs>\r
                </calljobstep>\r
        </commands>\r
index 6024566fd05e367fe1397a7ddfca3008ea16fbf7..cf2bc4dfc90ef888c4a3692d9422eae68624b9a8 100644 (file)
@@ -13,6 +13,7 @@ import user.jobengine.server.IJobRuntime;
 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 MEDIACUBEMEDIA = "mediaCubeMedia";\r
@@ -21,7 +22,8 @@ public class BatchRetrieveForkStep extends JobStep {
        private MediaCubeMarker marker;\r
 \r
        @StepEntry\r
-       public Object[] execute(List<Media> basket, String houseId, String recipient, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+       public Object[] execute(List<Media> basket, String houseId, String recipient, String targetPathType, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
+                       throws Exception {\r
                marker = (MediaCubeMarker) jobRuntime.getMarker();\r
                marker.setTo(recipient);\r
 \r
@@ -30,7 +32,7 @@ public class BatchRetrieveForkStep extends JobStep {
                setProgress(10);\r
                if (jobRuntime.forkPrepare()) {\r
                        for (Media mediaCubeMedia : basket) {\r
-                               submit(mediaCubeMedia, recipient, houseId, jobEngine, jobRuntime);\r
+                               submit(mediaCubeMedia, recipient, houseId, targetPathType, jobEngine, jobRuntime);\r
                        }\r
                }\r
                setProgress(50);\r
@@ -39,13 +41,15 @@ public class BatchRetrieveForkStep extends JobStep {
                return null;\r
        }\r
 \r
-       public void submit(Media mediaCubeMedia, String recipient, String houseId, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+       public void submit(Media mediaCubeMedia, 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(MEDIACUBEMEDIA, mediaCubeMedia);\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.getMarker()).setTo(recipient);\r
                } catch (Exception e) {\r
index c44132494e13e67064daeac84571af45e5c532be..9e1d02318cd5edd3595886735d4554b0e2a5ee19 100644 (file)
@@ -12,6 +12,7 @@ import java.nio.file.attribute.BasicFileAttributes;
 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
@@ -23,59 +24,74 @@ public class OutputPathAndNameSelectorStep extends JobStep {
 \r
        private static final Logger logger = LogManager.getLogger();\r
 \r
-       private void check(String localRetrievePath, String trafficOutputFolder, String octopusOutputFolder, String genericOutputFolder, String houseId) {\r
+       private Marker marker;\r
+\r
+       private void check(String localRetrievePath, String trafficOutputFolder, String octopusOutputFolder, String genericOutputFolder, String houseId,\r
+                       String targetPathType) {\r
                if (StringUtils.isBlank(localRetrievePath)) {\r
-                       logger.error(getMarker(), "A folyamat 'localRetrievePath' bemeneti paramétere üres.");\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(trafficOutputFolder)) {\r
-                       logger.error(getMarker(), "A folyamat 'trafficOutputFolder' bemeneti paramétere üres.");\r
+                       logger.error(marker, "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(octopusOutputFolder)) {\r
-                       logger.error(getMarker(), "A folyamat 'octopusOutputFolder' bemeneti paramétere üres.");\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(getMarker(), "A folyamat 'genericOutputFolder' bemeneti paramétere üres.");\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(getMarker(), "A folyamat 'houseId' bemeneti paramétere üres.");\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 trafficOutputFolder, String octopusOutputFolder, String genericOutputFolder,\r
-                       boolean retrieveToNexio, String houseId, IJobEngine jobEngine, IJobRuntime jobRuntime) throws IOException {\r
-               check(localRetrievePath, trafficOutputFolder, octopusOutputFolder, genericOutputFolder, houseId);\r
+                       String onlineOutputFolder, boolean retrieveToNexio, String houseId, String targetPathType, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
+                       throws IOException {\r
+               marker = jobRuntime.getMarker();\r
+               check(localRetrievePath, trafficOutputFolder, octopusOutputFolder, genericOutputFolder, houseId, targetPathType);\r
+               Object[] result = null;\r
+               switch (Integer.parseInt(targetPathType)) {\r
+               case 0:\r
+                       String outputFolder = getFolderById(trafficOutputFolder, octopusOutputFolder, genericOutputFolder, houseId);\r
+                       return localTargetInit(localRetrievePath, outputFolder, houseId, jobRuntime);\r
+               case 1:\r
+                       return localTargetInit(localRetrievePath, onlineOutputFolder, houseId, jobRuntime);\r
+               case 2:\r
+                       return new Object[] { null, houseId + TARGETNAMEPATTERN, true };\r
+               }\r
+               return result;\r
+       }\r
 \r
+       private String getFolderById(String trafficOutputFolder, String octopusOutputFolder, String genericOutputFolder, String houseId) {\r
                String id = houseId.toUpperCase();\r
                MetadataType mdType = MetadataTypeDetector.GuessMetadataType(id);\r
-               String targetPath = null;\r
+               String result = null;\r
                switch (mdType) {\r
                case Generic:\r
-                       targetPath = Paths.get(localRetrievePath, genericOutputFolder, id).toString();\r
+                       result = genericOutputFolder;\r
                        break;\r
                case OctopusPlaceholder:\r
                case OctopusStory:\r
-                       targetPath = getPossiblePath(id, Paths.get(localRetrievePath, octopusOutputFolder, id)).toString();\r
+                       result = octopusOutputFolder;\r
                        break;\r
                case TrafficMaterial:\r
                case TrafficPromo:\r
                case TrafficAD:\r
-                       targetPath = getPossiblePath(id, Paths.get(localRetrievePath, trafficOutputFolder, id)).toString();\r
+                       result = trafficOutputFolder;\r
                        break;\r
                }\r
-               String targetNamePattern = houseId + TARGETNAMEPATTERN;\r
-               try {\r
-                       EscortFiles.ensureUNCFolder(Paths.get(targetPath));\r
-               } catch (Exception e) {\r
-                       logger.error(jobRuntime.getMarker(), "A cél mappa '{}' nem létezik és nem hozható létre. A rendszer hibaüzenete: {}", targetPath, e.getMessage());\r
-                       throw e;\r
-               }\r
-               return new Object[] { targetPath, targetNamePattern };\r
+               return result;\r
        }\r
 \r
        private String getPossiblePath(String id, Path targetPath) throws IOException {\r
@@ -95,4 +111,16 @@ public class OutputPathAndNameSelectorStep extends JobStep {
                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.getMarker(), "A cél mappa '{}' nem létezik és nem hozható létre. A rendszer hibaüzenete: {}", targetPath, e.getMessage());\r
+                       throw e;\r
+               }\r
+               return new Object[] { targetPath, targetNamePattern, false };\r
+       }\r
 }\r
diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMExtendedRetrieveStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMExtendedRetrieveStep.java
new file mode 100644 (file)
index 0000000..9d1d5fd
--- /dev/null
@@ -0,0 +1,50 @@
+package user.jobengine.server.steps;\r
+\r
+import user.commons.StoreUri;\r
+import user.commons.remotestore.RemoteStoreProtocol;\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 TSMExtendedRetrieveStep extends TSMRestoreStep {\r
+       private boolean useNexioTarget;\r
+\r
+       @Override\r
+       protected StoreUri createTargetUri(IItemManager manager, String targetPath) throws NullPointerException {\r
+               StoreUri result = null;\r
+               if (useNexioTarget) {\r
+                       String nexioHost = System.getProperty("nexio.host"), nexioPassword = System.getProperty("nexioPassword"),\r
+                                       nexioUserName = System.getProperty("nexioUserName");\r
+                       Integer nexioPort = Integer.parseInt(System.getProperty("nexioPort"));\r
+                       if (nexioHost == null) {\r
+                               throw new NullPointerException("Missing system property on 'nexio.host' name");\r
+                       }\r
+                       if (nexioPassword == null) {\r
+                               throw new NullPointerException("Missing system property on 'nexioPassword' name");\r
+                       }\r
+                       if (nexioPort == 0) {\r
+                               throw new NullPointerException("Missing system property on 'nexioPort' name");\r
+                       }\r
+                       if (nexioUserName == null) {\r
+                               throw new NullPointerException("Missing system property on 'nexioUserName' name");\r
+                       }\r
+                       result = manager.createStoreUri(RemoteStoreProtocol.FTP, nexioHost);\r
+                       result.setPortNumber(nexioPort);\r
+                       result.setUserName(nexioUserName);\r
+                       result.setPassword(nexioPassword);\r
+\r
+               } else\r
+                       result = super.createTargetUri(manager, targetPath);\r
+               return result;\r
+       }\r
+\r
+       @StepEntry\r
+       public Object[] execute(Media mediaCubeMedia, String targetPath, String targetNamePattern, String successRecipient, int killDateDays,\r
+                       String localRetrievePath, String globalRetrievePath, boolean useNexioTarget, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               this.useNexioTarget = useNexioTarget;\r
+               return super.execute(mediaCubeMedia, targetPath, targetNamePattern, successRecipient, killDateDays, localRetrievePath, globalRetrievePath, jobEngine,\r
+                               jobRuntime);\r
+       }\r
+\r
+}\r
index 65827e658d87ee4444b1e18a8b96c314b7b50ecf..02190245cc435201be646fb4acd358288e7d51bd 100644 (file)
@@ -33,6 +33,10 @@ public class TSMRestoreStep extends JobStep {
        private String sourceFileName;\r
        private Marker marker;\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
@@ -40,7 +44,7 @@ public class TSMRestoreStep extends JobStep {
                setAndCheck(mediaCubeMedia, targetPath, targetNamePattern, localRetrievePath, globalRetrievePath, jobEngine);\r
                String targetFileName = null;\r
                try {\r
-                       //TODO check file existance?\r
+                       // TODO check file existance?\r
                        final IJobRuntime runtime = jobRuntime;\r
                        sourceUri.addProgressListener(new IProgressEventListener() {\r
                                @Override\r
@@ -73,7 +77,7 @@ public class TSMRestoreStep extends JobStep {
                } 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.error(jobRuntime.marker, msg);\r
                        logger.catching(e);\r
                        throw e;\r
                }\r
@@ -125,7 +129,7 @@ public class TSMRestoreStep extends JobStep {
                        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 = manager.createStoreUri(RemoteStoreProtocol.LOCAL, targetPath);\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
index 54d10621762b7c71703ef00637f3692075f8ed4d..3d9a8da395acd015fca77b7901cd9d12c0f3b497 100644 (file)
@@ -2,3 +2,4 @@ eclipse.preferences.version=1
 encoding//pages/login.zul=UTF-8\r
 encoding//resources/i3-label_hu.properties=UTF-8\r
 encoding//src/user/jobengine/server/JobRuntime.java=UTF-8\r
+encoding//src/user/jobengine/zk/model/SearchModel.java=UTF-8\r
index fcfd7e158b54da577c364af739d431b73a2d9b4c..75149595d508fca83013814589268ad1acf6b9cf 100644 (file)
                                <textbox value="@load(jlm.email) @save(jlm.email,before='execute')" width="100%" tabindex="2" forward="onOK=execute.onClick"\r
                                        constraint="/.+@.+\.[a-z]+/: Kérem adjon meg egy email címet!" />\r
                        </row>\r
+                       <row>\r
+                               <label value="Visszatöltés módja:"></label>\r
+                               <selectbox model="@load(jlm.reloadTypes)"></selectbox>\r
+                       </row>\r
                        <row>\r
                                <cell colspan="2">\r
-                                       <listbox ctrlKeys="#del" onCtrlKey="@command('remove')" height="400px" id="basketList" sizedByContent="false" model="@load(jlm.basketItems)" multiple="true" checkmark="true" \r
-                                               style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" sclass="listbox-normal-style" emptyMessage="Üres" \r
-                                               selectedItems="@save(jlm.selectedItems)">\r
+                                       <listbox ctrlKeys="#del" onCtrlKey="@command('remove')" height="400px" id="basketList" sizedByContent="false" model="@load(jlm.basketItems)"\r
+                                               multiple="true" checkmark="true" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" sclass="listbox-normal-style"\r
+                                               emptyMessage="Üres" selectedItems="@save(jlm.selectedItems)">\r
                                                <listhead>\r
                                                        <listheader label="Azonosító" hflex="min" align="left" sort="auto" />\r
                                                        <listheader label="Cím" hflex="min" align="left" sort="auto" />\r
@@ -41,7 +45,7 @@
                        <row>\r
                                <cell colspan="2">\r
                                        <toolbar vflex="min" style="font-size:8px">\r
-                                               <toolbarbutton id="remove" image="/img/ic_remove_shopping_cart_black_18dp.png" autodisable="self" onClick="@command('remove')"/>\r
+                                               <toolbarbutton id="remove" image="/img/ic_remove_shopping_cart_black_18dp.png" autodisable="self" onClick="@command('remove')" />\r
                                        </toolbar>\r
                                </cell>\r
                        </row>\r
index 3d3212d86780a35618d92e867ee8d1033f0bcf4a..13f6e05da9b28cdc1a357805ca5e3c4c18ed5cbe 100644 (file)
                                                                <column hflex="min">\r
                                                                        <checkbox checked="@bind(vm.allSelected)" />\r
                                                                </column>\r
-                                                               <column label="ID" sort="auto" hflex="min" align="left" />\r
-                                                               <column label="Cím" sort="auto" align="left" />\r
-                                                               <column label="Fájlnév" sort="auto" hflex="min" align="left" />\r
-                                                               <column label="Hossz" sort="auto" hflex="min" align="right" />\r
+                                                               <column label="ID" sort="auto" hflex="1" align="left" />\r
+                                                               <column label="Cím" sort="auto" hflex="2" align="left" />\r
+                                                               <column label="Fájlnév" sort="auto" hflex="5" align="left" />\r
+                                                               <column label="Hossz" sort="auto" hflex="2" align="right" />\r
                                                                <!--                                                            <column width="20px" align="right" style="cursor: pointer" popup="sortOther" /> -->\r
                                                        </columns>\r
                                                        <rows id="rows" style="cursor: pointer;">\r
                                        <center border="none">\r
 \r
                                                <groupbox closable="false" mold="3d" width="100%" height="100%">\r
-                                               \r
+                                                       <div>\r
+                                                       <button label="Visszaugrás a kijelölt videóhoz" onClick="@command('jumpToPosition')" autodisable="self" disabled="@load(vm.selectedObject eq null)"\r
+                                                                       width="min" id="backToVideoButton"/>\r
+                                                       </div>\r
+                                                       <div width="100%" sclass="menuButtons">\r
                                                        <toolbar vflex="min" style="font-size:8px">\r
                                                                <toolbarbutton image="/img/ic_compare_arrows_black_18dp.png" autodisable="self" onClick="@command('showInResults')" \r
                                                                        disabled="@load(vm.selectedObject eq null)"\r
                                                                        disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)"\r
                                                                        label="Szerkesztés" />\r
                                                        </toolbar>\r
-                                               \r
-<!--                                                   <div width="100%" sclass="menuButtons"> -->\r
-<!--                                                           <button label="Kosárba" onClick="@command('downloadMedia')" autodisable="self" disabled="@load(not vm.hasTSMMediaFile)" -->\r
-<!--                                                                   sclass="buttonBold" /> -->\r
-<!--                                                           <button id="copyMediaIdButton" label="MédiaId vágólapra másolás" onClick="@command('copyMediaIdToClipboard')" autodisable="self" -->\r
-<!--                                                                   disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" /> -->\r
-<!--                                                           <button id="metadataButton" label="Szerkesztés" onClick="@command('openMetaDataDialog')" autodisable="self" -->\r
-<!--                                                                   disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" /> -->\r
-<!--                                                   </div> -->\r
+                                                       \r
+                                                               <button label="Kosárba" onClick="@command('downloadMedia')" autodisable="self" disabled="@load(not vm.hasTSMMediaFile)"\r
+                                                                       sclass="buttonBold" />\r
+                                                               <button id="copyMediaIdButton" label="Email kiküldése" onClick="@command('copyMediaIdToClipboard')" autodisable="self"\r
+                                                                       disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" />\r
+                                                               <button id="metadataButton" label="Szerkesztés" onClick="@command('openMetaDataDialog')" autodisable="self"\r
+                                                                       disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" />\r
+                                                       </div>\r
 \r
                                                        <div width="100%" height="90%" style="padding: 4px; overflow:auto; background-color: white">\r
                                                                <div>\r
                                                </groupbox>\r
                                        </center>\r
                                </borderlayout>\r
-\r
                        </center>\r
                </borderlayout>\r
        </div>\r
index 13b30a59f1fa5bf0b388fe15ec6a18f3e1f408c8..e687a0a21dc369b46bef451a8d73750590abc111 100644 (file)
@@ -16,6 +16,8 @@ import org.zkoss.bind.annotation.NotifyChange;
 import org.zkoss.zk.ui.Component;\r
 import org.zkoss.zk.ui.select.Selectors;\r
 import org.zkoss.zk.ui.select.annotation.Wire;\r
+import org.zkoss.zul.ListModel;\r
+import org.zkoss.zul.ListModelList;\r
 import org.zkoss.zul.Messagebox;\r
 import org.zkoss.zul.Window;\r
 \r
@@ -27,17 +29,38 @@ import user.jobengine.server.scheduler.ScheduledJob;
 import user.jobengine.zk.util.SessionUtil;\r
 \r
 public class RetrieveBatchSelectorModel extends BaseModel {\r
+       private enum Types {\r
+               Automatikus("0"), Online("1"), Nexio("2");\r
+               private final String value;\r
+\r
+               Types(String value) {\r
+                       this.value = value;\r
+               }\r
+\r
+               public String getValue() {\r
+                       return value;\r
+               }\r
+\r
+       }\r
+\r
+       private static final String TARGET_PATH_TYPE = "targetPathType";\r
+\r
        private static final Logger logger = LogManager.getLogger();\r
        private static final String BASKET = "basket";\r
        private static final String RECIPIENT = "recipient";\r
        private static final String HOUSEID = "houseId";\r
        private static final String RESTORE = "Visszatöltés";\r
+\r
        private static final String JOBTEMPLATE = "batch-retrieve-ondemand.xml";\r
+\r
+       private ListModelList reloadTypes = new ListModelList<>(Types.values());\r
+\r
        private List<ArchivedMedia> selectedItems;\r
-       private boolean disabled;\r
 \r
+       private boolean disabled;\r
        @Wire()\r
        private Window wndRetrieveBatch;\r
+\r
        private String houseId;\r
        private String email;\r
        private MenuModel menuModel;\r
@@ -46,6 +69,7 @@ public class RetrieveBatchSelectorModel extends BaseModel {
        public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
                menuModel = (MenuModel) SessionUtil.getAttribute(SessionUtil.MENUMODEL);\r
                Selectors.wireComponents(view, this, false);\r
+               reloadTypes.addToSelection(Types.values()[0]);\r
        }\r
 \r
        @Command\r
@@ -68,6 +92,7 @@ public class RetrieveBatchSelectorModel extends BaseModel {
                        parameters.put(HOUSEID, houseId);\r
                        parameters.put(RECIPIENT, email);\r
                        parameters.put(BASKET, getMedias());\r
+                       parameters.put(TARGET_PATH_TYPE, Types.valueOf(reloadTypes.getSelection().iterator().next().toString()).value);\r
                        jobEngine.submit(JOBTEMPLATE, RESTORE, parameters);\r
 \r
                        menuModel.clearBasket();\r
@@ -101,6 +126,10 @@ public class RetrieveBatchSelectorModel extends BaseModel {
                return result;\r
        }\r
 \r
+       public ListModel<String> getReloadTypes() {\r
+               return reloadTypes;\r
+       }\r
+\r
        public List<ArchivedMedia> getSelectedItems() {\r
                return selectedItems;\r
        }\r
@@ -132,8 +161,8 @@ public class RetrieveBatchSelectorModel extends BaseModel {
                this.houseId = houseId;\r
        }\r
 \r
-       public void setSelectedItems(List<ArchivedMedia> selectedItems) {\r
-               this.selectedItems = selectedItems;\r
+       public void setReloadTypes(ListModelList reloadTypes) {\r
+               this.reloadTypes = reloadTypes;\r
        }\r
 \r
 }
\ No newline at end of file
index 966f73a301dc1545849326f80e22f192faa0d50d..0d43bc1996a1f2fb4fb96c5d725b800c576d7f21 100644 (file)
@@ -13,6 +13,7 @@ import java.util.Map;
 import org.apache.commons.lang.StringUtils;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
+import org.zkoss.bind.BindContext;\r
 import org.zkoss.bind.ValidationContext;\r
 import org.zkoss.bind.Validator;\r
 import org.zkoss.bind.annotation.AfterCompose;\r
@@ -28,7 +29,7 @@ import org.zkoss.zk.ui.event.MouseEvent;
 import org.zkoss.zk.ui.event.SortEvent;\r
 import org.zkoss.zk.ui.select.Selectors;\r
 import org.zkoss.zk.ui.select.annotation.Wire;\r
-import org.zkoss.zk.ui.util.Clients;\r
+import org.zkoss.zul.Button;\r
 import org.zkoss.zul.Checkbox;\r
 import org.zkoss.zul.Column;\r
 import org.zkoss.zul.Detail;\r
@@ -81,10 +82,15 @@ public class SearchModel extends AsyncBaseModel {
        Timer timer;\r
        @Wire\r
        Grid itemsGrid;\r
+       @Wire\r
+       Button backToVideoButton;\r
        private String orderBy;\r
        private boolean orderAscending;\r
 \r
        private Map<String, String> topColorClasses;\r
+       private int selectedRowIndex;\r
+       private int selectedPageIndex;\r
+       private String mediaID;\r
 \r
        public SearchModel() {\r
                typeFilters = new LinkedHashMap<>();\r
@@ -154,7 +160,7 @@ public class SearchModel extends AsyncBaseModel {
                        column.addEventListener("onSort", evt -> doSort(evt));\r
                }\r
 \r
-               String mediaID = SessionUtil.getQueryParameter(MEDIA_ID);\r
+               mediaID = SessionUtil.getQueryParameter(MEDIA_ID);\r
                if (mediaID != null)\r
                        searchResult = new InitializedCachedListModel(mediaID, searchValue, new ArrayList<String>(), orderBy, orderAscending);\r
        }\r
@@ -169,7 +175,9 @@ public class SearchModel extends AsyncBaseModel {
                Clipboard clipboard = toolkit.getSystemClipboard();\r
                StringSelection strSel = new StringSelection(url);\r
                clipboard.setContents(strSel, null);\r
-               Messagebox.show("A médiához szükséges URL a vágólapra másolva, az URL a következő:\n" + url, "", Messagebox.OK, Messagebox.NONE);\r
+               String email = String.format("mailto:?subject=Média címe: %s &body=A média itt tekinthető meg: %s", selectedObject.getMedia().getTitle(), url);\r
+               // Messagebox.show("A médiához szükséges URL a vágólapra másolva, az URL a következő:\n" + email, "", Messagebox.OK, Messagebox.NONE);\r
+               Executions.getCurrent().sendRedirect(email, "_blank");\r
        }\r
 \r
        @Command\r
@@ -373,17 +381,18 @@ public class SearchModel extends AsyncBaseModel {
        }\r
 \r
        @Command\r
-       public void onAfterRenderGrid() {\r
-               registerTask(() -> {\r
-                       logger.info("onAfterRenderGrid");\r
-                       List<Component> children = itemsGrid.getRows().getChildren();\r
-                       if (children.size() > 0) {\r
-                               int pos = itemsGrid.getPageSize() * itemsGrid.getActivePage();\r
-                               Component top = children.get(pos);\r
-                               Clients.scrollIntoView(top);\r
-                       }\r
-               });\r
-               timer.start();\r
+       @NotifyChange("itemsGrid")\r
+       public void jumpToPosition(@ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) {\r
+               itemsGrid.setActivePage(selectedPageIndex);\r
+       }\r
+\r
+       @Command\r
+       public void onPaging() {\r
+               if (mediaID != null) {\r
+                       selectedObject = searchResult.getElementAt(0);\r
+                       highlight(selectedObject, true);\r
+                       notifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath");\r
+               }\r
        }\r
 \r
        @Command\r
@@ -406,9 +415,12 @@ public class SearchModel extends AsyncBaseModel {
 \r
        @Command\r
        @NotifyChange({ "selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath" })\r
-       public void selectMediaArchive(@BindingParam("selectedObject") ArchivedMedia selectedObject) {\r
+       public void selectMediaArchive(@BindingParam("selectedObject") ArchivedMedia selectedObject, @ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) {\r
+               Event event = ctx.getTriggerEvent();\r
+               selectedRowIndex = ((Row) event.getTarget()).getIndex();\r
                highlight(this.selectedObject, false);\r
                this.selectedObject = selectedObject;\r
+               selectedPageIndex = itemsGrid.getActivePage();\r
                highlight(this.selectedObject, true);\r
 \r
                logger.info(itemsGrid.getActivePage());\r