--- /dev/null
+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
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
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
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
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
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
<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
}\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
\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
// 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
}\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
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
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
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
+++ /dev/null
-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