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