git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 27 Sep 2019 13:09:46 +0000 (13:09 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 27 Sep 2019 13:09:46 +0000 (13:09 +0000)
server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SupportCheckItem.java [new file with mode: 0644]
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/RESTController.java
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/db/IndexerViewSqlProvider.java
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/lucene/LuceneIndexer.java
server/user.jobengine.executors/jobtemplates/retrieve-ondemand.xml
server/user.jobengine.executors/src/user/jobengine/server/steps/MXFCutterStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/PlanAirExtensions.java
server/user.jobengine.osgi.server/src/user/jobengine/osgi/server/ComponentBinder.java
server/user.jobengine.osgi.server/test/user/jobengine/server/IT/SupportCheckItem.java [deleted file]

diff --git a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SupportCheckItem.java b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SupportCheckItem.java
new file mode 100644 (file)
index 0000000..8368dc7
--- /dev/null
@@ -0,0 +1,141 @@
+package hu.user.mediacube.executors.tests;\r
+\r
+import java.sql.Connection;\r
+import java.sql.PreparedStatement;\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.sql.Timestamp;\r
+\r
+import org.junit.AfterClass;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+\r
+import user.commons.logging.LogUtils;\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.IResultSetConsumer;\r
+import user.jobengine.db.IStatementDecorator;\r
+import user.jobengine.db.ItemManager;\r
+import user.jobengine.server.steps.MetadataTypeDetector;\r
+import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
+import user.jobengine.server.steps.PlanAirExtensions;\r
+\r
+public class SupportCheckItem {\r
+       class PlanAirProcessor implements IStatementDecorator, IResultSetConsumer {\r
+\r
+               private final MetadataType type;\r
+               private String search;\r
+               private String itemHouseId;\r
+               private String itemTitle;\r
+\r
+               public PlanAirProcessor(String search) {\r
+                       this.search = MetadataTypeDetector.truncateExtension(search);\r
+                       this.type = MetadataTypeDetector.GuessMetadataType(this.search);\r
+                       this.search = this.search.substring(1, this.search.length() - 1);\r
+               }\r
+\r
+               @Override\r
+               public void decorate(PreparedStatement statement) throws SQLException {\r
+                       statement.setString(1, search);\r
+               }\r
+\r
+               public String getItemHouseId() {\r
+                       return itemHouseId;\r
+               }\r
+\r
+               public String getItemTitle() {\r
+                       return itemTitle;\r
+               }\r
+\r
+               public MetadataType getType() {\r
+                       return type;\r
+               }\r
+\r
+               public Connection process(Connection connection) throws Exception {\r
+                       return PlanAirExtensions.search(connection, type, manager, "jdbc:sqlserver://10.10.1.45;databaseName=PA_Echo;", "MAM", "Echotv.hu", this, this);\r
+               }\r
+\r
+               @Override\r
+               public boolean process(ResultSet resultSet) throws SQLException {\r
+                       switch (type) {\r
+                       case TrafficMaterial:\r
+                               itemHouseId = resultSet.getString("v_ProgrammeID");\r
+                               itemTitle = resultSet.getString("v_ProgTitle");\r
+                               break;\r
+                       default:\r
+                               throw new SQLException("Not implemented!");\r
+                       }\r
+                       return true;\r
+               }\r
+\r
+       }\r
+\r
+       protected static IItemManager manager = null;\r
+       private static final String LOWRES_ROOT = "//10.10.1.27/mclowres/www/video";\r
+\r
+       private static final long[] duplicateLength = { 0 };\r
+\r
+       @BeforeClass\r
+       static public void setUpConnection() {\r
+               //              System.setProperty("jobengine.octopus.rundowns.name", "test_rundowns");\r
+               //              System.setProperty("jobengine.octopus.stories.name", "test_stories");\r
+               //              System.setProperty("jobengine.octopus.storyfolders.name", "test_storyfolders");\r
+               System.setProperty("jobengine.octopus.rundowns.name", "rundowns180620");\r
+               System.setProperty("jobengine.octopus.stories.name", "stories180620");\r
+               System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180620");\r
+\r
+               System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
+               System.setProperty("jobengine.nosql.db.user", "db2admin");\r
+               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.DBUSERNAME, "db2admin");\r
+               System.setProperty(ItemManager.DBPASSWORD, "password");\r
+               System.setProperty(LogUtils.LOGLEVEL, "INFO");\r
+               // System.setProperty(ItemManager.DBURL,\r
+\r
+               manager = new ItemManager();\r
+               manager.connect();\r
+       }\r
+\r
+       @AfterClass\r
+       static public void tearDownConnection() {\r
+               manager.disconnect();\r
+       }\r
+\r
+       @Test\r
+       public void process() throws SQLException {\r
+               final Connection[] con = { null };\r
+               manager.executeQuery(\r
+                               "select itemid, itemhouseid, itemtitle, mediaid, mediafilehouseid, mediacreated from vw_items where mediatype = 'ECHO műsor' order by mediacreated desc",\r
+                               rs -> {\r
+\r
+                                       long itemId = rs.getLong("itemId");\r
+                                       String itemHouseId = rs.getString("itemHouseId");\r
+                                       itemHouseId = itemHouseId == null ? "" : itemHouseId;\r
+                                       String itemTitle = rs.getString("itemTitle");\r
+                                       itemTitle = itemTitle == null ? "" : itemTitle;\r
+                                       String mediaFileHouseId = rs.getString("mediaFileHouseId");\r
+                                       Timestamp mediaCreated = rs.getTimestamp("mediaCreated");\r
+                                       try {\r
+                                               PlanAirProcessor p = new PlanAirProcessor(mediaFileHouseId);\r
+                                               if (p.getType() == MetadataType.TrafficMaterial) {\r
+                                                       con[0] = p.process(con[0]);\r
+                                                       String itemHouseId2 = p.getItemHouseId() == null ? "" : p.getItemHouseId();\r
+                                                       String itemTitle2 = p.getItemTitle() == null ? "" : p.getItemTitle();\r
+                                                       if (!itemHouseId2.equals(itemHouseId) || !itemTitle2.equals(itemTitle)) {\r
+\r
+                                                               System.out.println(\r
+                                                                               "Item " + itemId + " : wrong | " + mediaCreated + ", " + mediaFileHouseId + ", " + itemHouseId + ", " + itemTitle);\r
+                                                               System.out.println("\t good | " + itemHouseId2 + ", " + itemTitle2);\r
+                                                       }\r
+\r
+                                               }\r
+                                       } catch (Exception e) {\r
+                                               e.printStackTrace();\r
+                                       }\r
+                                       return true;\r
+                               }, null);\r
+\r
+               con[0].close();\r
+       }\r
+\r
+}\r
index a5dcf215f74e347b74e35acee8196e5c1bdadb9b..d2bf166295ebec3594fff9d5cf1e0c8b3dc053c9 100644 (file)
@@ -58,9 +58,10 @@ public class RESTController {
                return new ResponseEntity<>("Reset complete", HttpStatus.OK);\r
        }\r
 \r
-       @GetMapping(path = "/search/{queryString}/{skipRecords}/{takeRecords}", produces = "application/json")\r
-       public List<IndexerDescription> search(@PathVariable String queryString, @PathVariable int skipRecords, @PathVariable int takeRecords) {\r
-               return indexer.search(queryString, skipRecords, takeRecords);\r
+       @GetMapping(path = "/search/{queryString}/{skipRecords}/{takeRecords}/{orderIndex}/{orderDirection}", produces = "application/json")\r
+       public List<IndexerDescription> search(@PathVariable String queryString, @PathVariable int skipRecords, @PathVariable int takeRecords,\r
+                       @PathVariable int orderIndex, @PathVariable int orderDirection) {\r
+               return indexer.search(queryString, skipRecords, takeRecords, orderIndex, orderDirection);\r
        }\r
 \r
 }
\ No newline at end of file
index 4d455f6014c33086d766fd543be9689faf7250ff..77976bd18617733a3ce4a5e4caeeb46a2f029814 100644 (file)
@@ -13,7 +13,8 @@ public class IndexerViewSqlProvider {
        public String selectAll() {\r
                SQL sql = new SQL();\r
                sql.SELECT("*");\r
-               sql.FROM("VW_INDEXER").FETCH_FIRST_ROWS_ONLY(100);\r
+               sql.FROM("VW_INDEXER");\r
+               //.FETCH_FIRST_ROWS_ONLY(100);\r
                return sql.toString();\r
        }\r
 \r
index db21aece74497432dd4b10bab59cd83796f8cda0..9bb84696854483d47e99b60d9448a2272ad44a13 100644 (file)
@@ -28,6 +28,7 @@ import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.Sort;\r
 import org.apache.lucene.search.SortField;\r
 import org.apache.lucene.search.SortField.Type;\r
+import org.apache.lucene.search.SortedNumericSortField;\r
 import org.apache.lucene.search.TopDocs;\r
 import org.apache.lucene.search.uhighlight.UnifiedHighlighter;\r
 import org.apache.lucene.store.Directory;\r
@@ -105,7 +106,7 @@ public class LuceneIndexer {
                start();\r
        }\r
 \r
-       public List<IndexerDescription> search(String queryString, int skipRecords, int takeRecords) {\r
+       public List<IndexerDescription> search(String queryString, int skipRecords, int takeRecords, int orderIndex, int orderDirection) {\r
                List<IndexerDescription> ret = new ArrayList<>();\r
                IndexReader indexReader = null;\r
                IndexSearcher searcher = null;\r
@@ -114,8 +115,27 @@ public class LuceneIndexer {
                        searcher = new IndexSearcher(indexReader);\r
 \r
                        Query query = new QueryParser(DESCRIPTION, analyzer).parse(queryString);\r
-                       //                      SortField sort = new SortedNumericSortField("id", Type.LONG, true);\r
-                       SortField sort = new SortField("mediaTitle", Type.STRING, false);\r
+                       SortField sort = null;\r
+                       boolean reverse = orderDirection == 1;\r
+                       switch (orderIndex) {\r
+                       case 0:\r
+                               sort = new SortField("mediaId", Type.STRING, reverse);\r
+                               break;\r
+                       case 1:\r
+                               sort = new SortField("mediaTitle", Type.STRING, reverse);\r
+                               break;\r
+                       case 2:\r
+                               sort = new SortField("mediaFileHouseId", Type.STRING, reverse);\r
+                               break;\r
+                       case 3:\r
+                               sort = new SortField("archived", Type.STRING, reverse);\r
+                               break;\r
+                       case 4:\r
+                               sort = new SortedNumericSortField("length", Type.LONG, true);\r
+                               break;\r
+\r
+                       }\r
+                       logger.info("Apply {}", sort);\r
 \r
                        //mediahouseid,mediatitle, mediafilehouseid,archived,hossz\r
                        TopDocs results = searcher.search(query, skipRecords + takeRecords, new Sort(sort));\r
index ede6854a1afd138a87bcfc287dddc61190713414..704fb8e5e4f875208ac0e3dae787ef310356fea4 100644 (file)
                                <input>\r
                                        <variable name="targetPath" />\r
                                </input>\r
-                               <input>\r
-                                       <variable name="targetNamePattern" />\r
-                               </input>\r
                                <input>\r
                                        <parameter name="successRecipient" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="killDateDays" />\r
-                               </input>\r
-                               <input>\r
-                                       <parameter name="localRetrievePath" />\r
+                                       <parameter name="houseId" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="globalRetrievePath" />\r
+                                       <parameter name="killDateDays" />\r
                                </input>\r
                                <input>\r
                                        <variable name="useNexioTarget" />\r
index 5b356e4c32e43ddc4d0dbae1a2c114cf38c15a7b..b435b6a57ee677b31b1f64d90a8a5dd0308a3ca6 100644 (file)
@@ -47,9 +47,8 @@ public class MXFCutterStep extends JobStep {
        }\r
 \r
        @StepEntry\r
-       public Object[] execute(ArchivedMedia archivedMedia, String targetPath, String houseId, String successRecipient,\r
-                       int killDateDays, boolean useNexioTarget, String nexioAgency, Integer nexioPort, String nexioUserName,\r
-                       String nexioPassword, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+       public Object[] execute(ArchivedMedia archivedMedia, String targetPath, String houseId, String successRecipient, int killDateDays, boolean useNexioTarget,\r
+                       String nexioAgency, int nexioPort, String nexioUserName, String nexioPassword, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
                this.nexioPort = nexioPort;\r
                this.nexioUserName = nexioUserName;\r
                this.nexioPassword = nexioPassword;\r
@@ -72,8 +71,7 @@ public class MXFCutterStep extends JobStep {
 \r
                        EscortFiles.setNEXIOKillDate(killDateDays, houseId, nexioAgency, tempTargetUri);\r
 \r
-                       logger.info("A {} videó kivágva {}s - {}s", sourceFileName, archivedMedia.getTcIn(),\r
-                                       archivedMedia.getTcOut());\r
+                       logger.info("A {} videó kivágva {}s - {}s", sourceFileName, archivedMedia.getTcIn(), archivedMedia.getTcOut());\r
                }\r
 \r
                return null;\r
@@ -91,8 +89,7 @@ public class MXFCutterStep extends JobStep {
        // return null;\r
        // }\r
 \r
-       private void setAndCheck(ArchivedMedia archivedMedia, String houseId, String targetPath, boolean useNexioTarget,\r
-                       IJobEngine jobEngine) {\r
+       private void setAndCheck(ArchivedMedia archivedMedia, String houseId, String targetPath, boolean useNexioTarget, IJobEngine jobEngine) {\r
                if (jobEngine == null) {\r
                        logger.error(marker, "A folyamatkezelő réteg nem elérhető.");\r
                        throw new NullPointerException("Internal error, missing JobEngine reference.");\r
@@ -104,8 +101,7 @@ public class MXFCutterStep extends JobStep {
                }\r
                if (archivedMedia == null) {\r
                        logger.error(marker, "A folyamat 'mediaCubeMedia' bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
                }\r
                checkTargetPath(targetPath);\r
                if (StringUtils.isBlank(houseId)) {\r
index e30f1903613b3a3c7b14af050bd65b807e845a66..46d1f7976d61314e28dff53f4bc678ead2f05cc2 100644 (file)
@@ -30,6 +30,7 @@ import user.commons.mediatool.Timecode;
 import user.commons.mediatool.Timecode.Type;\r
 import user.jobengine.db.IItemManager;\r
 import user.jobengine.db.IResultSetConsumer;\r
+import user.jobengine.db.IStatementDecorator;\r
 import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
 \r
 public class PlanAirExtensions {\r
@@ -254,6 +255,35 @@ public class PlanAirExtensions {
                return result;\r
        }\r
 \r
+       public static Connection search(Connection con, MetadataType type, IItemManager manager, String dbUrl, String userName, String password,\r
+                       IResultSetConsumer consumer, IStatementDecorator decorator) throws Exception {\r
+               try {\r
+                       Class.forName(SQLSERVER_JDBC_SQL_SERVER_DRIVER);\r
+\r
+                       if (con == null)\r
+                               connection = DriverManager.getConnection(dbUrl, userName, password);\r
+                       //TODO hiba esetén exception\r
+                       switch (type) {\r
+                       case TrafficMaterial:\r
+                               manager.executeQuery(connection, MATERIAL_SQL, consumer, decorator);\r
+                               break;\r
+                       case TrafficPromo:\r
+                               manager.executeQuery(connection, PROMO_SQL, consumer, decorator);\r
+                               break;\r
+                       case TrafficAD:\r
+                               manager.executeQuery(connection, AD_SQL, consumer, decorator);\r
+                               break;\r
+                       }\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+                       throw e;\r
+               } finally {\r
+                       //                      if (connection != null)\r
+                       //                              connection.close();\r
+               }\r
+               return connection;\r
+       }\r
+\r
        private static String XMLtoString(Document doc) throws TransformerException {\r
                DOMSource domSource = new DOMSource(doc);\r
                TransformerFactory tf = TransformerFactory.newInstance();\r
index c7c6ee14bf621b9a73443a4397267b50ca103e13..0dd3f5ade0b6d05000fe5126b4f5db41fdbef7a5 100644 (file)
@@ -7,7 +7,6 @@ import user.commons.nexio.INexioAPI;
 import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
 \r
 public class ComponentBinder {\r
-       private static final String MEDIACUBE = "MEDIACUBE";\r
        private static final Logger logger = LogManager.getLogger();\r
        private static INexioAPI nexioAPI;\r
        private static IMetadataProviderFactory metadataProviderFactory;\r
diff --git a/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/SupportCheckItem.java b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/SupportCheckItem.java
deleted file mode 100644 (file)
index 3a64560..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-package user.jobengine.server.IT;\r
-\r
-import java.sql.Timestamp;\r
-\r
-import org.junit.AfterClass;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-\r
-import user.commons.logging.LogUtils;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.ItemManager;\r
-import user.jobengine.osgi.server.ComponentBinder;\r
-import user.mediacube.metadata.interfaces.IMetadataProvider;\r
-import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
-import user.mediacube.metadata.interfaces.MetadataProviderType;\r
-\r
-public class SupportCheckItem {\r
-       protected static IItemManager manager = null;\r
-       private static final String LOWRES_ROOT = "//10.10.1.27/mclowres/www/video";\r
-       private static final long[] duplicateLength = { 0 };\r
-\r
-       @BeforeClass\r
-       static public void setUpConnection() {\r
-               //              System.setProperty("jobengine.octopus.rundowns.name", "test_rundowns");\r
-               //              System.setProperty("jobengine.octopus.stories.name", "test_stories");\r
-               //              System.setProperty("jobengine.octopus.storyfolders.name", "test_storyfolders");\r
-               System.setProperty("jobengine.octopus.rundowns.name", "rundowns180620");\r
-               System.setProperty("jobengine.octopus.stories.name", "stories180620");\r
-               System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180620");\r
-\r
-               System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
-               System.setProperty("jobengine.nosql.db.user", "db2admin");\r
-               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.DBUSERNAME, "db2admin");\r
-               System.setProperty(ItemManager.DBPASSWORD, "password");\r
-               System.setProperty(LogUtils.LOGLEVEL, "INFO");\r
-               // System.setProperty(ItemManager.DBURL,\r
-\r
-               manager = new ItemManager();\r
-               manager.connect();\r
-       }\r
-\r
-       @AfterClass\r
-       static public void tearDownConnection() {\r
-               manager.disconnect();\r
-       }\r
-\r
-       @Test\r
-       public void process() {\r
-\r
-               IMetadataProviderFactory factory = ComponentBinder.getMetadataProviderFactory();\r
-               IMetadataProvider provider = factory.getProvider(MetadataProviderType.PLANAIR);\r
-               manager.executeQuery(\r
-                               "select itemid, itemhouseid, itemtitle, mediaid, mediafilehouseid, mediacreated from vw_items where mediatype = 'Műsor' order by mediacreated desc",\r
-                               rs -> {\r
-                                       String itemHouseId = rs.getString("itemHouseId");\r
-                                       String itemTitle = rs.getString("itemTitle");\r
-                                       String mediaFileHouseId = rs.getString("mediaFileHouseId");\r
-                                       Timestamp mediaCreated = rs.getTimestamp("mediaCreated");\r
-                                       System.out.println(mediaCreated + ", " + itemHouseId + ", " + itemTitle);\r
-                                       return false;\r
-                               }, null);\r
-       }\r
-\r
-}\r