#131 Szegmentálásba visszalépve a szegmensek nem módosíthatóakEdit this section
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 28 Feb 2019 09:37:18 +0000 (09:37 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 28 Feb 2019 09:37:18 +0000 (09:37 +0000)
#130 Szegmensek meglétének kijelzése hibásEdit this section
#100 Forrás listázó a lista változása esetén néha hibaüzenetet ad

git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31403

19 files changed:
client/Maestro/Configuration/UJ-configuration-tqc-check.json
client/Maestro/Configuration/configuration - Copy.json
client/Maestro/Maestro.csproj
client/Maestro/MaestroForm.Metadata.cs
client/Maestro/Properties/AssemblyInfo.cs
client/MediaCubeClient/Properties/AssemblyInfo.cs
client/PlanAIRClient/Properties/AssemblyInfo.cs
client/PlanAIRClient/TrafficIDSelector.cs
client/PlanAIRClient/Workers/TrafficWorker.cs
server/RemoteSystemsTempFiles/.project [new file with mode: 0644]
server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/Support.java
server/user.jobengine.executors/config/config.xml
server/user.jobengine.executors/jobtemplates/sys-recreate-lowres.xml
server/user.jobengine.executors/src/user/jobengine/server/steps/CreateMissingLowresStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTypeDetector.java
server/user.jobengine.executors/src/user/jobengine/server/steps/UpdateGhostMediaData.java [new file with mode: 0644]
server/user.jobengine.osgi.db/sql/4-CreateTrigger.db2 [deleted file]
server/user.jobengine.osgi.db/sql/4-CreateTrigger.sql [new file with mode: 0644]
server/user.jobengine.osgi.server/test/user/jobengine/server/IT/Support.java

index 7180a0dd52c5bc2b497d51ab68fa3af02b1aace3..c7ea89f9a89c52d0a63327b79edb7e88479f151f 100644 (file)
@@ -1,5 +1,5 @@
 {\r
-  "title": "TESZT TQC TESZT check",\r
+  "title": "TQC check",\r
   "active": true,\r
   "startInTray": false,\r
   "enableCustomMetadataId": true,\r
     "$type": "UNCSource",\r
     "filter": "avi,wav,mxf",\r
     "local": {\r
-      "address": "file://c:\\_video",\r
-      "userName": "mediacube",\r
-      "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-      "timeout": 1000\r
-    },\r
-    "remote": {\r
-      "address": "ftp://10.10.1.100/TESZT/CHECK",\r
+      "address": "file://c:/_video",\r
       "userName": "mediacube",\r
       "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
       "timeout": 1000\r
@@ -34,8 +28,9 @@
         "timeout": 1000\r
       }\r
     },\r
-    {\r
+      {\r
       "$type": "OctopusMetadata",\r
+      "disabled": true,\r
       "server": {\r
         "address": "http://10.10.1.27/services/rest/octopus/",\r
         "timeout": 1000\r
   ],\r
   "targets": [\r
     {\r
-      "label": "1",\r
-      "processor": "FXPTargetProcessor",\r
-      "subFolderFormat": "%IDROOT%-%TEXT%",\r
-      "outputFormat": "%ID%-%TEXT%",\r
-      "tag": "1",\r
-      "disableFileVersioning": true,\r
-      "enableOverride": true,\r
-      "remote": {\r
-        "address": "ftp://10.10.1.100/TESZT/1",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "label": "2",\r
-      "processor": "FXPTargetProcessor",\r
-      "subFolderFormat": "%IDROOT%-%TEXT%",\r
-      "outputFormat": "%ID%-%TEXT%",\r
-      "tag": "2",\r
-      "disableFileVersioning": true,\r
-      "enableOverride": true,\r
-      "remote": {\r
-        "address": "ftp://10.10.1.100/TESZT/2",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    },  \r
-    {\r
-      "label": "KESZ",\r
-      "processor": "FXPTargetProcessor",\r
-      "subFolderFormat": "%IDROOT%-%TEXT%",\r
-      "outputFormat": "%ID%-%TEXT%",\r
-      "tag": "KESZ",\r
+      "label": "Adáskész",\r
+      "processor": "FTPTargetProcessor",\r
+      "outputFormat": "%ID%",\r
+      "killDateDays": 5,\r
+      "saveSegments": true,\r
+      "tag": "Adáskész",\r
       "disableFileVersioning": true,\r
       "enableOverride": true,\r
-         "deleteAfterCopy": true,\r
       "remote": {\r
-        "address": "ftp://10.10.1.100/TESZT/KESZ",\r
+        "address": "ftp://10.10.1.105/TESZT",\r
         "userName": "mediacube",\r
         "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
         "timeout": 1000\r
       }\r
     }\r
+    \r
   ]\r
 }\r
index 446a12c34dd6bc8e7868f1d4b6bf5b63bb4cd52e..a8b6ec5db610107afa629cc37ee6820a2d6761b8 100644 (file)
@@ -1,6 +1,6 @@
 {\r
   "title": "Development",\r
-  "active": true,\r
+  "active": false,\r
   "startInTray": false,\r
   "enableCustomMetadataId": true,\r
   "filter": "avi",\r
index 6b80905e74f37823de18dfe04bbec49c7fb6459b..a55d12db132a1007cb35931058cd6eefdffd9615 100644 (file)
     <None Include="Configuration\global.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
+    <None Include="Configuration\UJ-configuration-tqc-check.json">\r
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
+    </None>\r
     <None Include="Connected Services\packages.config" />\r
     <None Include="Maestro_TemporaryKey.pfx" />\r
     <None Include="nlog.config">\r
index 150275080832872b657ac670d3eecc9d719d95a3..1fabee9bce06575a423cb3408c0875ac216f79f5 100644 (file)
@@ -139,9 +139,11 @@ namespace Maestro {
             if (MovieSegments == null)\r
                 return;\r
             foreach (var s in MovieSegments) {\r
+                /*\r
                 //eredetileg a szegmens adatokkal ez nem jon le singlesegment eseten, de kell a mukodeshez\r
                 if (!trafficIDSelector.MultiSegment && s.MediaID == null)\r
                     s.MediaID = SelectedMetadata.ID;\r
+                */\r
                 //redefine\r
                 if (true.Equals(SelectedMetadata?.IsRedefine))\r
                     s.ReadOnly = SelectedMetadata.ID != s.MediaID;\r
@@ -172,6 +174,7 @@ namespace Maestro {
             if (readOnly && ArchiveMetadata != null && !SelectedMetadata.IsRedefine)\r
                 MsgBox.Warning("Az anyag már el van fogadva, a szegmens módosítás nem kerül mentésre. A szegmensek módosításához vissza kell vonni az anyag elfogadását az adástervező rendszerben.");\r
             OpenFile(fileInfo, true, readOnly);\r
+            UpdateDefineSegmentsStatus();\r
             Cursor.Current = Cursors.Default;\r
         }\r
 \r
index d57fd57694c5e538288d24375d1f0e9e204abb44..da87d941492975462121bc87022ca43f0979fc0f 100644 (file)
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers\r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("2.0.9.4")]\r
-[assembly: AssemblyFileVersion("2.0.9.4")]\r
+[assembly: AssemblyVersion("2.0.9.5")]\r
+[assembly: AssemblyFileVersion("2.0.9.5")]\r
index 9b072e3b3ba41d804744aa2fc5f9e691316c5693..b2ced48ebe1e30b062ad13f4816b2e6a4548e37a 100644 (file)
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
 //      Build Number\r
 //      Revision\r
 //\r
-[assembly: AssemblyVersion("1.0.0.1")]\r
-[assembly: AssemblyFileVersion("1.0.0.1")]\r
+[assembly: AssemblyVersion("1.0.0.2")]\r
+[assembly: AssemblyFileVersion("1.0.0.2")]\r
index f379123979a97488a4f7806c8598e19177eada6e..ca4782af56a877682cee09d3c65c42d22fc97df6 100644 (file)
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers\r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("1.0.0.2")]\r
-[assembly: AssemblyFileVersion("1.0.0.2")]\r
+[assembly: AssemblyVersion("1.0.0.3")]\r
+[assembly: AssemblyFileVersion("1.0.0.3")]\r
index 4981b581c0cbb1d510a7c4fefd19556d20b70592..9f775eed698b283d5714fd0fd3a8bdb0c397f433 100644 (file)
@@ -42,7 +42,10 @@ namespace TrafficClient {
         private void RefreshKeepPosition() {\r
             int pos = dgTraffic.FirstDisplayedScrollingRowIndex;\r
             RefreshResults();\r
-            dgTraffic.FirstDisplayedScrollingRowIndex = pos;\r
+            //lehet ures a lista\r
+            try {\r
+                dgTraffic.FirstDisplayedScrollingRowIndex = pos;\r
+            } catch { }\r
         }\r
 \r
         private void OnRefreshTrafficGrid(IMessage m) {\r
index ef26b1eff573f08eb04571c5c77e403e3811ab08..c53c3056f8bf3b832329efa41468535a27473434 100644 (file)
@@ -6,6 +6,7 @@ using System.Data.SqlClient;
 \r
 namespace TrafficClient.Workers {\r
     public class TrafficWorker {\r
+        private static readonly Logger logger = LogManager.GetCurrentClassLogger();\r
 \r
         protected IMessageBus messageBus;\r
         protected PlanAirDataReader dataReader;\r
@@ -20,9 +21,13 @@ namespace TrafficClient.Workers {
         }\r
 \r
         protected void TryConnect() {\r
-            if (connection.State != ConnectionState.Open) {\r
-                connection.Close();\r
-                connection.Open();\r
+            try {\r
+                if (connection.State != ConnectionState.Open) {\r
+                    connection.Close();\r
+                    connection.Open();\r
+                }\r
+            } catch (Exception e) {\r
+                OnError(logger, e);\r
             }\r
         }\r
 \r
diff --git a/server/RemoteSystemsTempFiles/.project b/server/RemoteSystemsTempFiles/.project
new file mode 100644 (file)
index 0000000..7675629
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+       <name>RemoteSystemsTempFiles</name>\r
+       <comment></comment>\r
+       <projects>\r
+       </projects>\r
+       <buildSpec>\r
+       </buildSpec>\r
+       <natures>\r
+               <nature>org.eclipse.rse.ui.remoteSystemsTempNature</nature>\r
+       </natures>\r
+</projectDescription>\r
index 85c2b8e2bc0f4e29e7cb42f8860ce9f9b0e4c8a1..3a2adc7050653044c0a54df101a87e3e5bad1f23 100644 (file)
@@ -84,28 +84,45 @@ public class Support {
                URI sourcePath = new URI("file://10.10.1.100/BRAAVOS/ARCHIVE");\r
                try {\r
                        stream = Files.newDirectoryStream(Paths.get(sourcePath));\r
-                       List<File> allFiles = new ArrayList<>();\r
+                       List<String> allFiles = new ArrayList<>();\r
                        for (Path p : stream) {\r
                                check_rd_collect(p, allFiles);\r
                        }\r
                        stream.close();\r
 \r
-                       stream = Files.newDirectoryStream(Paths.get(sourcePath));\r
+                       stream = Files.newDirectoryStream(Paths.get(Paths.get(sourcePath).toString(), ".STATUS"));\r
+                       List<String> allStatus = new ArrayList<>();\r
                        for (Path p : stream) {\r
-                               check_rd_process(p, allFiles);\r
+                               check_rd_collect_status(p, allStatus);\r
                        }\r
                        stream.close();\r
+\r
+                       check_rd_process(allFiles, allStatus);\r
                } catch (Exception e) {\r
                        System.err.println(e.getMessage());\r
                }\r
 \r
        }\r
 \r
-       private void check_rd_collect(Path mediaFilePath, List<File> allFiles) {\r
+       private void check_rd_collect(Path mediaFilePath, List<String> allFiles) {\r
                File mediaFile = mediaFilePath.toFile();\r
                if (mediaFile.isDirectory() || !mediaFile.getName().toUpperCase().endsWith(".MXF"))\r
                        return;\r
-               allFiles.add(mediaFile);\r
+               allFiles.add(mediaFile.getName().toUpperCase());\r
+       }\r
+\r
+       private void check_rd_collect_status(Path mediaFilePath, List<String> allFiles) {\r
+               File file = mediaFilePath.toFile();\r
+               if (file.isDirectory() || (!file.getName().toUpperCase().endsWith(".JSON") && !file.getName().toUpperCase().endsWith(".KILLDATE")))\r
+                       return;\r
+\r
+               if (file.getName().toUpperCase().endsWith(".KILLDATE")) {\r
+                       String absolutePath = file.getAbsolutePath();\r
+                       int pos = absolutePath.lastIndexOf(".");\r
+                       pos = absolutePath.lastIndexOf(".", pos - 1);\r
+                       file = new File(absolutePath.substring(0, pos) + ".KILLDATE");\r
+               }\r
+               allFiles.add(file.getName().toUpperCase());\r
        }\r
 \r
        private File check_rd_nonzero_fellow(String mediaid, List<File> allFiles) {\r
@@ -119,7 +136,7 @@ public class Support {
                return null;\r
        }\r
 \r
-       private void check_rd_process(Path mediaFilePath, List<File> allFiles) {\r
+       private void check_rd_process(List<String> allFiles, List<String> allStatus) {\r
                File mediaFile = mediaFilePath.toFile();\r
                if (mediaFile.isDirectory() || !mediaFile.getName().toUpperCase().endsWith(".MXF"))\r
                        return;\r
index e1d591d4950627a181454ef1bcf17ba946f1cecc..744df7f4b854e9a12d0293e3bd929cb80d69a363 100644 (file)
@@ -33,4 +33,5 @@
        <executor className="user.jobengine.server.steps.TSMRetrieveMissingMaterialStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.UploadRecordingToNexioStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.MediaToolStep" maxConcurrent="1"/>\r
+       <executor className="user.jobengine.server.steps.UpdateGhostMediaData" maxConcurrent="1"/>\r
 </executors>
\ No newline at end of file
index b98bf6a07224e7722ea7d1e0ee53c4e0c780d3f6..1b6d73223a3eb3dda91a84cd2c5da23a340b4fa1 100644 (file)
@@ -8,6 +8,8 @@
                        <parameter name="transcoderAddress" type="java.lang.String" />\r
                        <parameter name="transcoderTemplateName" type="java.lang.String" />\r
                        <parameter name="webPath" type="java.lang.String" />\r
+                       <parameter name="localRetrievePath" 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="localRetrievePath" />\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
                                </input>\r
                        </inputs>\r
                </calljobstep>\r
+               <calljobstep type="user.jobengine.server.steps.UpdateGhostMediaData" weight="1">\r
+                       <inputs>\r
+                               <input>\r
+                                       <variable name="mediaCubeMedia" />\r
+                               </input>\r
+                       </inputs>\r
+               </calljobstep>\r
        </commands>\r
 </jobtemplate>
\ No newline at end of file
index cc7ce391b8a050857618b937b6f1f3cdc96ec8bf..e623850ec42cde6e6b7b57c599d238c4e8827639 100644 (file)
@@ -1,7 +1,6 @@
 package user.jobengine.server.steps;\r
 \r
 import java.nio.file.Paths;\r
-import java.util.List;\r
 \r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
@@ -10,11 +9,9 @@ import org.apache.logging.log4j.Marker;
 import com.ibm.nosql.json.api.BasicDBObject;\r
 import com.ibm.nosql.json.api.DB;\r
 import com.ibm.nosql.json.api.DBCollection;\r
-import com.ibm.nosql.json.api.DBObject;\r
 \r
 import user.commons.nosql.NoSQLUtils;\r
-import user.jobengine.db.ItemDAOEx;\r
-import user.jobengine.db.ItemManager;\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
@@ -22,36 +19,30 @@ import user.jobengine.server.IJobRuntime;
 public class CreateMissingLowresStep extends JobStep {\r
        private static final Logger logger = LogManager.getLogger();\r
        private Marker marker;\r
+       private long highresStoreId;\r
 \r
        @StepEntry\r
        public Object[] execute(String localHiresPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
                Object[] result = { null, null, "%s", null, 0, true };\r
                marker = jobRuntime.getMarker();\r
-               ItemDAOEx dao = new ItemDAOEx((ItemManager) jobEngine.getItemManager());\r
-               List<Media> medias = dao.getUntranscodedMedias();\r
-\r
                DB db = NoSQLUtils.getNoSQLDB();\r
                DBCollection collection = db.getCollection("missing_lowres");\r
+               IItemManager manager = jobEngine.getItemManager();\r
+               highresStoreId = manager.getSystemStore(false).getId();\r
+               Media media = getFirstUntranscodedMedia(manager, collection);\r
+\r
                try {\r
-                       if (medias == null || medias.size() == 0) {\r
+                       if (media == null) {\r
                                throw new Exception("Nincs feldolgozandó hiány.");\r
                        }\r
 \r
-                       for (Media media : medias) {\r
-                               String name = media.getMediaFilesName();\r
-                               if (name == null)\r
-                                       continue;\r
-                               DBObject existing = collection.findOne(new BasicDBObject("name", name));\r
-                               if (existing != null)\r
-                                       continue;\r
-\r
-                               result[0] = media;\r
-                               ArchiveItem archiveItem = new ArchiveItem();\r
-                               archiveItem.setMediaFile(Paths.get(localHiresPath, name).toString());\r
-                               result[1] = archiveItem;\r
-                               collection.save(new BasicDBObject("name", name));\r
-                               break;\r
-                       }\r
+                       String name = media.getMediaFilesName();\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(marker, "Hiányzó lowres mediaId: {}", media.getId());\r
 \r
                } catch (Exception e) {\r
                        logger.catching(e);\r
@@ -61,4 +52,30 @@ public class CreateMissingLowresStep extends JobStep {
                }\r
                return result;\r
        }\r
+\r
+       private Media getFirstUntranscodedMedia(IItemManager manager, DBCollection collection) {\r
+               Media[] result = { null };\r
+               String query = "select v.mediaid from vw_mediafiles v, mediafile mf where (v.mediafilecount=1 and mf.mediaid = v.mediaid and mf.storeid=1)";\r
+               manager.executeQuery(query, rs -> {\r
+                       try {\r
+                               long mediaId = rs.getLong(1);\r
+                               Media media = manager.getMedia(mediaId);\r
+\r
+                               //TEST!!!\r
+                               //                              if (!media.getHouseId().equals("134118999"))\r
+                               //                                      return true;\r
+\r
+                               String name = media.getMediaFilesName();\r
+                               long existing = collection.find(new BasicDBObject("name", name)).count();\r
+                               if (existing > 0)\r
+                                       return true;\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
index f5b1b0fb4a272f233be7dbf46f476eb1144b73ba..778dd7b9b82f15c69f5537fe81b73df6d541606c 100644 (file)
@@ -3,10 +3,14 @@ package user.jobengine.server.steps;
 import org.apache.commons.lang.StringUtils;\r
 \r
 public class MetadataTypeDetector {\r
+\r
        public enum MetadataType {\r
                TrafficMaterial, TrafficPromo, TrafficAD, OctopusStory, OctopusPlaceholder, Generic\r
        }\r
 \r
+       private static final String HYPHEN = "-";\r
+       private static final String DOT = ".";\r
+\r
        private static final String REGEXP_TRAFFICMATERIALID = "^M{1}[0-9]{6}[A-Z]{1}$";\r
        private static final String REGEXP_TRAFFICADID = "^R{1}[0-9]{6}[A-Z]{1}$";\r
        private static final String REGEXP_TRAFFICPROMOID = "^P{1}[0-9]{6}[A-Z]{1}$";\r
@@ -32,4 +36,18 @@ public class MetadataTypeDetector {
                return MetadataType.Generic;\r
        }\r
 \r
+       public static String truncateExtension(String name) {\r
+               String result = name;\r
+               if (result != null && result.contains(DOT))\r
+                       result = result.substring(0, result.lastIndexOf(DOT));\r
+               return result;\r
+       }\r
+\r
+       public static String truncateVersion(String name) {\r
+               String result = name;\r
+               if (result != null && result.contains(HYPHEN))\r
+                       result = result.split(HYPHEN)[0];\r
+               return result;\r
+       }\r
+\r
 }\r
diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/UpdateGhostMediaData.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/UpdateGhostMediaData.java
new file mode 100644 (file)
index 0000000..7b37d3c
--- /dev/null
@@ -0,0 +1,83 @@
+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.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 UpdateGhostMediaData 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.getMarker();\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
+                       Store highresStore = manager.getSystemStore(false);\r
+                       Store lowresStore = manager.getSystemStore(true);\r
+                       MediaFile lowres = get(lowresStore, mediaFiles);\r
+                       MediaFile highres = get(highresStore, mediaFiles);\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
+                       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
+                       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 mediaId: {}", media.getId());\r
+\r
+                                       MediaFile mf = (MediaFile) manager.get(MediaFile.class, lowres.getId());\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, highres.getRelativePath());\r
+                               st.setLong(2, highresStore.getId());\r
+                               st.setLong(3, highres.getId());\r
+                       });\r
+\r
+               }\r
+\r
+               return null;\r
+       }\r
+\r
+       private MediaFile get(Store store, List<MediaFile> mediaFiles) {\r
+               for (MediaFile mf : mediaFiles) {\r
+                       if (mf.getStoreId() == store.getId())\r
+                               return mf;\r
+               }\r
+               return null;\r
+       }\r
+\r
+}\r
diff --git a/server/user.jobengine.osgi.db/sql/4-CreateTrigger.db2 b/server/user.jobengine.osgi.db/sql/4-CreateTrigger.db2
deleted file mode 100644 (file)
index ce9888c..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
--- execute with \r
---     db2 -td@ -vmf 2-CreateStructure.db2\r
-\r
---DROP TRIGGER TRG_INSERT_ITEM@\r
-\r
---CREATE TRIGGER TRG_INSERT_ITEM\r
-        --AFTER INSERT ON ITEM\r
-        --REFERENCING NEW AS r\r
-        --FOR EACH ROW\r
---BEGIN ATOMIC\r
---     DECLARE x VARCHAR(255);\r
---     CALL SYSPROC.SYSTS_UPDATE(NULL, 'item_title',  NULL, 'hu_HU', :x);\r
---     CALL SYSPROC.SYSTS_UPDATE(NULL, 'item_desc',  NULL, 'hu_HU', :x);\r
---     CALL SYSPROC.SYSTS_UPDATE(NULL, 'item_houseid',  NULL, 'hu_HU', :x);\r
---END\r
---@\r
-\r
-\r
-CREATE TRIGGER DB2ADMIN.TRG_MEDIAFILE_AFTER_INSERT after insert\r
-on mediafile\r
-referencing new as n\r
-for each row\r
-when (n.storeid = 1)\r
-begin atomic\r
-    insert into mediadescription (itemid, mediaid, mediafileid, description)\r
-    select \r
-        itemid,\r
-        mediaid, \r
-        mediafileid,\r
-        COALESCE(hundate(archived), '') concat ' ' \r
-        concat COALESCE(defdate(archived), '') concat ' ' \r
-        concat COALESCE(itemhouseid, '') concat ' ' \r
-        concat COALESCE(itemtitle, '') concat ' ' \r
-        concat COALESCE(itemdescription,'') concat ' ' \r
-        concat COALESCE(mediahouseid, '') concat ' ' \r
-        concat COALESCE(mediatitle, '') concat ' ' \r
-        concat COALESCE(mediadescription, '') concat ' ' \r
-        concat COALESCE(mediafilehouseid, '')\r
-    from vw_items_description \r
-    where mediafileid = n.id;\r
-end\r
-GO\r
-\r
-CREATE TRIGGER DB2ADMIN.TRG_MEDIAFILE_AFTER_UPDATE after update of HOUSEID\r
-on mediafile\r
-referencing new as n\r
-for each row\r
-when (n.storeid = 1)\r
-begin atomic\r
-    update mediadescription set description = (\r
-    select \r
-        COALESCE(hundate(archived), '') concat ' ' \r
-        concat COALESCE(defdate(archived), '') concat ' ' \r
-        concat COALESCE(itemhouseid, '') concat ' ' \r
-        concat COALESCE(itemtitle, '') concat ' ' \r
-        concat COALESCE(itemdescription,'') concat ' ' \r
-        concat COALESCE(mediahouseid, '') concat ' ' \r
-        concat COALESCE(mediatitle, '') concat ' ' \r
-        concat COALESCE(mediadescription, '') concat ' ' \r
-        concat COALESCE(mediafilehouseid, '')\r
-    from vw_items_description \r
-    where mediafileid = n.id);\r
-end\r
-GO\r
-\r
-CREATE TRIGGER DB2ADMIN.TRG_MEDIA_AFTER_UPDATE after update on media\r
-referencing new as n\r
-for each row\r
-begin atomic\r
-    update mediadescription set description = (\r
-    select \r
-        COALESCE(hundate(archived), '') concat ' ' \r
-        concat COALESCE(defdate(archived), '') concat ' ' \r
-        concat COALESCE(itemhouseid, '') concat ' ' \r
-        concat COALESCE(itemtitle, '') concat ' ' \r
-        concat COALESCE(itemdescription,'') concat ' ' \r
-        concat COALESCE(mediahouseid, '') concat ' ' \r
-        concat COALESCE(mediatitle, '') concat ' ' \r
-        concat COALESCE(mediadescription, '') concat ' ' \r
-        concat COALESCE(mediafilehouseid, '')\r
-    from vw_items_description \r
-    where mediaid = n.id);\r
-end\r
-GO\r
-\r
-CREATE TRIGGER DB2ADMIN.TRG_ITEM_AFTER_UPDATE after update on item\r
-referencing new as n\r
-for each row\r
-begin atomic\r
-    update mediadescription set description = (\r
-    select \r
-        COALESCE(hundate(archived), '') concat ' ' \r
-        concat COALESCE(defdate(archived), '') concat ' ' \r
-        concat COALESCE(itemhouseid, '') concat ' ' \r
-        concat COALESCE(itemtitle, '') concat ' ' \r
-        concat COALESCE(itemdescription,'') concat ' ' \r
-        concat COALESCE(mediahouseid, '') concat ' ' \r
-        concat COALESCE(mediatitle, '') concat ' ' \r
-        concat COALESCE(mediadescription, '') concat ' ' \r
-        concat COALESCE(mediafilehouseid, '')\r
-    from vw_items_description \r
-    where itemid = n.id);\r
-end\r
-GO\r
diff --git a/server/user.jobengine.osgi.db/sql/4-CreateTrigger.sql b/server/user.jobengine.osgi.db/sql/4-CreateTrigger.sql
new file mode 100644 (file)
index 0000000..409c3b4
--- /dev/null
@@ -0,0 +1,63 @@
+CREATE OR REPLACE FUNCTION "DB2ADMIN"."FULLDESC"  (IN initemid BIGINT, IN inmediaid BIGINT, IN inmediafileid BIGINT) \r
+returns CLOB(400000) \r
+return \r
+SELECT \r
+    COALESCE(hundate(archived), '') || ' ' ||\r
+    COALESCE(defdate(archived), '') || ' ' ||\r
+    COALESCE(itemhouseid, '') || ' ' ||\r
+    COALESCE(itemtitle, '') || ' ' ||\r
+    COALESCE(itemdescription,'') || ' ' ||\r
+    COALESCE(mediahouseid, '') || ' ' ||\r
+    COALESCE(mediatitle, '') || ' ' ||\r
+    COALESCE(mediadescription, '') || ' ' ||\r
+    COALESCE(mediafilehouseid, '')\r
+from vw_items_description WHERE itemid = initemid AND mediaid = inmediaid AND mediafileid = inmediafileid\r
+GO\r
+\r
+CREATE OR REPLACE TRIGGER DB2ADMIN.TRG_MEDIAFILE_AFTER_INSERT after insert\r
+on mediafile\r
+referencing new as n\r
+for each row\r
+when (n.storeid = 1)\r
+begin atomic\r
+    insert into mediadescription (itemid, mediaid, mediafileid, description)\r
+    select \r
+        itemid,\r
+        mediaid, \r
+        mediafileid,\r
+        fulldesc(itemid, mediaid, mediafileid)\r
+    from vw_items \r
+    where mediafileid = n.id;\r
+end\r
+GO\r
+\r
+CREATE OR REPLACE TRIGGER DB2ADMIN.TRG_MEDIAFILE_AFTER_DELETE after delete\r
+on mediafile\r
+referencing old as o\r
+for each row\r
+when (o.storeid = 1)\r
+begin atomic\r
+    delete from mediadescription where mediafileid = o.id;\r
+end\r
+GO\r
+\r
+CREATE OR REPLACE TRIGGER DB2ADMIN.TRG_MEDIA_AFTER_UPDATE after update on media\r
+referencing new as n\r
+for each row\r
+begin atomic\r
+    update mediadescription SET description = fulldesc(itemid, mediaid, mediafileid) where mediaid = n.id;\r
+end\r
+GO\r
+\r
+CREATE OR REPLACE TRIGGER DB2ADMIN.TRG_ITEM_AFTER_UPDATE after update on item\r
+referencing new as n\r
+for each row\r
+begin atomic\r
+    update mediadescription SET description = fulldesc(itemid, mediaid, mediafileid) where itemid = n.id;\r
+end\r
+GO\r
+\r
+--osszes frissitese\r
+--update mediadescription SET description = fulldesc(itemid, mediaid, mediafileid)\r
+\r
+\r
index d5408eb5dfa599989b6fd4adad1725384e18992f..ceebf214149d65afb3b7a19848895eedd7990c9d 100644 (file)
@@ -82,10 +82,10 @@ public class Support {
                System.setProperty("jobengine.octopus.stories.name", "stories180620");\r
                System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180620");\r
 \r
-               System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
+               System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.29:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
                System.setProperty("jobengine.nosql.db.user", "db2admin");\r
                System.setProperty("jobengine.nosql.db.password", "password");\r
-               System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
+               System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.29:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
                System.setProperty(ItemManager.DBUSERNAME, "db2admin");\r
                System.setProperty(ItemManager.DBPASSWORD, "password");\r
                System.setProperty(LogUtils.LOGLEVEL, "INFO");\r
@@ -592,4 +592,36 @@ public class Support {
                String idToCheck = houseid.substring(0, houseid.lastIndexOf("-"));\r
                System.out.println(idToCheck);\r
        }\r
+\r
+       @Test\r
+       public void test5() throws Exception {\r
+               Item i = manager.createItem("Generic", "Item", "", "desc1");\r
+               Media m = manager.createMedia("Generic", "Media", "", "desc2");\r
+               i.appendMedia(m);\r
+               MediaFile mf = manager.createMediaFile("xxx", manager.getFileType("High-res"), manager.getSystemStore(false), m);\r
+               m.appendMediaFile(mf);\r
+               manager.mergeItemStructure(i);\r
+               System.out.println("ItemId:" + i.getId());\r
+               System.out.println("MediaId:" + m.getId());\r
+               System.out.println("MediaFileId:" + mf.getId());\r
+\r
+               i.setHouseId("1desc1");\r
+               i.modify();\r
+               System.out.println("Item modified");\r
+\r
+               m.setHouseId("2desc2");\r
+               m.modify();\r
+               System.out.println("Media modified");\r
+\r
+               mf.remove();\r
+               System.out.println("MediaFile deleted");\r
+       }\r
+\r
+       @Test\r
+       public void test6() throws Exception {\r
+               String result = "sss.valami.yy";\r
+               if (result != null && result.contains("."))\r
+                       result = result.substring(0, result.lastIndexOf("."));\r
+               System.out.println(result);\r
+       }\r
 }\r