<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>\r
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>\r
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Dlog4j.configurationFile=settings/log4j2.xml -Djetty.home=settings -Djetty.etc.config.urls=jetty.xml -Dgosh.home=configuration -Djava.io.tmpdir=tmp"/>\r
- <stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="C:\_workspace\USER\MediaCube\server\-product\production\MEDIAVIVANTIS"/>\r
+ <stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc}\-product\production\MEDIAVIVANTIS"/>\r
<stringAttribute key="pde.version" value="3.3"/>\r
<setAttribute key="selected_target_bundles">\r
<setEntry value="cglib@default:default"/>\r
}\r
]\r
},\r
+ {\r
+ "active": false,\r
+ "cronexpression": "0/2 * * * * ?",\r
+ "template": "cancelable.xml",\r
+ "parameters": [\r
+ {\r
+ "name": "param",\r
+ "value": 200,\r
+ "type": "java.lang.Integer"\r
+ }\r
+ ]\r
+ },\r
{\r
"active": false,\r
"template": "test-fork-cancelable.xml",\r
<?xml version="1.0" encoding="UTF-8"?>\r
<executors>\r
+ <executor className="MetadataUpdater.java" maxConcurrent="1" isRemote="false" />\r
<executor className="SafeDeleteRecursive.java" maxConcurrent="1" isRemote="false" />\r
<executor className="SaveMediaProxy.java" maxConcurrent="1" isRemote="false" />\r
<executor className="DeleteFile.java" maxConcurrent="1" isRemote="false" />\r
{"joblist":[\r
{\r
+ "template": "metadata-updater.xml"\r
+ },\r
+ {\r
"active": false,\r
"executeimmediate": false,\r
"name" : "Rekurzív törlés /mnt/POLC/FINISHED_SHOWS (DEMO)",\r
"template": "safe-delete-recursive.xml",\r
"cronexpression": "0 */1 * * * ?",\r
"parameters": [ \r
- {"name": "sourcePath", "value": "/mnt/POLC/FINISHED_SHOWS", "type": "java.lang.String"},\r
+ {"name": "sourcePath", "value": "/mnt/POLC/FINISHED_SHOWS", "type": "java.lang.String"}\r
]\r
},\r
{\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import java.io.IOException;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+import java.sql.ResultSet;\r
+import java.text.SimpleDateFormat;\r
+import java.util.Date;\r
+import java.util.LinkedHashSet;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import org.apache.commons.io.FileUtils;\r
+import org.apache.ibatis.jdbc.SQL;\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\r
+import org.apache.logging.log4j.MarkerManager;\r
+\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.server.steps.shared.MetadataTypeDetector;\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+import user.mediacube.metadata.interfaces.IMetadataProvider;\r
+import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
+import user.mediacube.metadata.interfaces.MetadataProviderType;\r
+import user.mediacube.metadata.interfaces.MetadataType;\r
+import user.mediacube.metadata.interfaces.PlanAirMetadataListOptions;\r
+\r
+public class MetadataUpdater extends JobStep {\r
+ private static final String EMPTY = "";\r
+ private static final String DOT = ".";\r
+ private static final Logger logger = LogManager.getLogger(MetadataUpdater.class);\r
+ private Marker csvMarker = MarkerManager.getMarker("METADATA-UPDATER-CSV");\r
+\r
+ private static final String ITEM_TITLE = "itemTitle";\r
+ private static final String ITEM_HOUSEID = "itemHouseId";\r
+ private static final String MEDIA_HOUSEID = "mediaHouseId";\r
+ private static final String MEDIA_TITLE = "mediaTitle";\r
+ private static final String MEDIA_DESCRIPTION = "mediaDescription";\r
+ private static final String MEDIA_TYPE = "mediaType";\r
+ private static final String MEDIAFILE_HOUSEID = "mediaFileHouseId";\r
+\r
+ private SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");\r
+ private Set<String> includeList;\r
+\r
+ public String createQuery() {\r
+ SQL isql = new SQL();\r
+ isql.SELECT("id");\r
+ isql.FROM("STORE");\r
+ isql.WHERE("name = 'TSM'");\r
+\r
+ SQL sql = new SQL();\r
+ sql.SELECT("i.id AS itemId");\r
+ sql.SELECT("i.houseid AS itemHouseId");\r
+ sql.SELECT("i.title AS itemTitle");\r
+ //sql.SELECT("i.description AS itemdescription");\r
+ sql.SELECT("m.id AS mediaId");\r
+ sql.SELECT("m.houseid AS mediaHouseId");\r
+ sql.SELECT("m.title AS mediaTitle");\r
+ sql.SELECT("m.description AS mediaDescription");\r
+ sql.SELECT("mf.houseid AS mediaFileHouseId");\r
+ sql.FROM("MEDIAFILE mf");\r
+ sql.LEFT_OUTER_JOIN("MEDIA m ON (m.id = mf.mediaid)");\r
+ sql.LEFT_OUTER_JOIN("ITEM i ON (i.id = m.itemid)");\r
+ sql.WHERE(String.format("mf.storeid = (%s)", isql.toString()));\r
+ return sql.toString();\r
+ }\r
+\r
+ public String createCountQuery() {\r
+ SQL sql = new SQL();\r
+ sql.SELECT("COUNT(*) as count");\r
+ sql.FROM("MEDIA");\r
+ return sql.toString();\r
+ }\r
+\r
+ @StepEntry\r
+ public Object[] execute() throws Exception {\r
+ try {\r
+\r
+ String location = "/opt/test-mediacube/file_list_original.txt";\r
+ includeList = loadIncludeList(location);\r
+\r
+ IItemManager manager = getManager();\r
+ String sql = createCountQuery();\r
+ long[] count = new long[1];\r
+ count[0] = 0;\r
+ manager.executeQuery(sql, rs -> {\r
+ try {\r
+ count[0] = rs.getLong("count");\r
+ logger.info(getSessionMarker(), "Processing rs");\r
+ } catch (Exception e) {\r
+ logger.error(getMarker(), e.getMessage());\r
+ }\r
+ return true;\r
+ }, null);\r
+\r
+ logger.info(getSessionMarker(), "Count {}", count[0]);\r
+\r
+ long[] current = new long[1];\r
+ current[0] = 0;\r
+\r
+ logger.info(csvMarker, "Date;Name;isProgramById;includeContains;isMetadataEquals;itemHouseId;P itemHouseId;itemHouseIdEquals;itemTitle;P itemTitle;itemTitleEquals;mediaHouseId;"\r
+ + "P mediaHouseId;mediaHouseIdEquals;mediaTitle;P mediaTitle;mediaTitleEquals;"\r
+ + "mediaDescription;P mediaDescription;mediaDescriptionEquals;");\r
+ \r
+ \r
+ sql = createQuery();\r
+ manager.executeQuery(sql, rs -> {\r
+\r
+ if (getJobRuntime().isWaitingCancel())\r
+ return false;\r
+\r
+ current[0]++;\r
+ processRecord(rs);\r
+ int p = (int) current[0] * 100 / (int) count[0];\r
+ setProgress(p);\r
+ return true;\r
+ }, null);\r
+\r
+ } catch (Exception e) {\r
+ logger.error(getSessionMarker(), e.getMessage());\r
+ }\r
+ return null;\r
+ }\r
+\r
+ private String set(String value) {\r
+ return value == null ? EMPTY : value;\r
+ }\r
+\r
+ private void processRecord(ResultSet rs) {\r
+ try {\r
+ String itemHouseId = set(rs.getString(ITEM_TITLE));\r
+ String itemTitle = set(rs.getString(ITEM_TITLE));\r
+ String mediaHouseId = set(rs.getString(MEDIA_HOUSEID));\r
+ String mediaTitle = set(rs.getString(MEDIA_TITLE));\r
+ String mediaDescription = set(rs.getString(MEDIA_DESCRIPTION));\r
+ String pitemHouseId = EMPTY;\r
+ String pitemTitle = EMPTY;\r
+ String pmediaHouseId = EMPTY;\r
+ String pmediaTitle = EMPTY;\r
+ String pmediaDescription = EMPTY;\r
+\r
+ String fileName = rs.getString(MEDIAFILE_HOUSEID);\r
+ String mediaFileHouseId = fileName;\r
+ if (mediaFileHouseId.contains(DOT))\r
+ mediaFileHouseId = mediaFileHouseId.substring(0, mediaFileHouseId.lastIndexOf(DOT));\r
+\r
+ user.jobengine.server.steps.shared.MetadataType metadataType = MetadataTypeDetector\r
+ .GuessMetadataType(mediaFileHouseId);\r
+\r
+ boolean isProgramById = false;\r
+ boolean includeContains = includeList.contains(fileName);\r
+ boolean itemHouseIdEquals = false;\r
+ boolean itemTitleEquals = false;\r
+ boolean mediaHouseIdEquals = false;\r
+ boolean mediaTitleEquals = false;\r
+ boolean mediaDescriptionEquals = false;\r
+\r
+ logger.info(getMarker(), "{} {}", mediaFileHouseId, metadataType);\r
+ ArchiveItem archiveItem = getPlanAirMetadata(mediaFileHouseId);\r
+ if (archiveItem != null) {\r
+ isProgramById = true;\r
+\r
+ if (isProgramById) {\r
+\r
+ pitemHouseId = set(archiveItem.getItemHouseId());\r
+ itemHouseIdEquals = pitemHouseId.equals(itemHouseId);\r
+\r
+ pitemTitle = set(archiveItem.getItemTitle());\r
+ itemTitleEquals = pitemTitle.equals(itemTitle);\r
+\r
+ pmediaHouseId = set(archiveItem.getMediaHouseId());\r
+ mediaHouseIdEquals = pmediaHouseId.equals(mediaHouseId);\r
+\r
+ pmediaTitle = set(archiveItem.getMediaTitle());\r
+ mediaTitleEquals = pmediaTitle.equals(mediaTitle);\r
+\r
+ pmediaDescription = set(archiveItem.getMediaDescription());\r
+ mediaDescriptionEquals = pmediaDescription.equals(mediaDescription);\r
+\r
+ boolean isMetadataEquals = itemHouseIdEquals && itemTitleEquals && mediaHouseIdEquals\r
+ && mediaTitleEquals && mediaDescriptionEquals;\r
+\r
+ Date now = new Date(System.currentTimeMillis());\r
+ logger.info(csvMarker, "{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};", D(now),\r
+ fileName, YN(isProgramById), YN(includeContains), YN(isMetadataEquals), itemHouseId,\r
+ pitemHouseId, itemHouseIdEquals, itemTitle, pitemTitle, itemTitleEquals, mediaHouseId,\r
+ pmediaHouseId, mediaHouseIdEquals, mediaTitle, pmediaTitle, mediaTitleEquals,\r
+ mediaDescription, pmediaDescription, mediaDescriptionEquals);\r
+\r
+ logger.info(getSessionMarker(), "Processed {} {}{}{}", fileName, YN(isProgramById),\r
+ YN(includeContains), YN(isMetadataEquals));\r
+ }\r
+ }\r
+\r
+ } catch (\r
+\r
+ Exception e) {\r
+ logger.error(getSessionMarker(), e.getMessage());\r
+ }\r
+\r
+ }\r
+\r
+ private ArchiveItem getPlanAirMetadata(String mediaHouseId) throws Exception {\r
+ PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();\r
+ opt.setSearch(mediaHouseId);\r
+ opt.setType(MetadataType.Material);\r
+\r
+ BasicDBObject json = null;\r
+ List<IMetadata> data = null;\r
+\r
+ IMetadataProviderFactory factory = getService(IMetadataProviderFactory.class);\r
+ if (factory == null)\r
+ logger.info(getSessionMarker(), "IMetadataProviderFactory is null");\r
+\r
+ IMetadataProvider planairProvider = factory.getProvider(MetadataProviderType.PLANAIR);\r
+ if (planairProvider == null)\r
+ logger.info(getSessionMarker(), "IMetadataProvider is null");\r
+\r
+ ArchiveItem result = null;\r
+ data = planairProvider.list(opt);\r
+ if (data.size() != 0)\r
+ json = data.get(0).asJSON();\r
+ else {\r
+ opt.setType(MetadataType.Promo);\r
+ data = planairProvider.list(opt);\r
+ if (data.size() != 0)\r
+ json = data.get(0).asJSON();\r
+ else {\r
+ opt.setType(MetadataType.AD);\r
+ data = planairProvider.list(opt);\r
+ if (data.size() != 0)\r
+ json = data.get(0).asJSON();\r
+ }\r
+ }\r
+ if (json != null) {\r
+ result = new ArchiveItem();\r
+ result.setItemHouseId(json.getString(ITEM_HOUSEID));\r
+ result.setItemTitle(json.getString(ITEM_TITLE));\r
+ result.setMediaHouseId(json.getString(MEDIA_HOUSEID));\r
+ result.setMediaTitle(json.getString(MEDIA_TITLE));\r
+ result.setMediaDescription(json.getString(MEDIA_DESCRIPTION));\r
+ result.setMediaType(json.getString(MEDIA_TYPE));\r
+ }\r
+ return result;\r
+ }\r
+\r
+ private char YN(boolean value) {\r
+ return value ? 'Y' : 'N';\r
+ }\r
+\r
+ private String D(Date value) {\r
+ return value == null ? EMPTY : df.format(value);\r
+ }\r
+\r
+ private Set<String> loadIncludeList(String location) throws IOException {\r
+ logger.info(getSessionMarker(), "Loading include list {}", location);\r
+ Set<String> result = new LinkedHashSet<>();\r
+\r
+ Path path = Paths.get(location);\r
+ List<String> lines = FileUtils.readLines(path.toFile());\r
+\r
+ String lastDir = null;\r
+ for (String line : lines) {\r
+ line = line.trim();\r
+ if (line.startsWith("Directory of")) {\r
+ lastDir = line;\r
+ lastDir = lastDir.replace("Directory of", EMPTY);\r
+ lastDir = lastDir.replace("X:", EMPTY);\r
+ lastDir = lastDir.replace("\\", "/");\r
+ lastDir = lastDir.trim();\r
+ }\r
+\r
+ if (lastDir != null && lastDir.endsWith(".STATUS"))\r
+ continue;\r
+\r
+ if (line.startsWith("2") && line.length() > 39) {\r
+ String file = line.substring(39).trim();\r
+\r
+ if (file.equals(DOT) || file.equals(".."))\r
+ continue;\r
+\r
+ String len = line.substring(21, 39).trim();\r
+ if (len.length() != 0) {\r
+ String fullpath = "/mnt/POLC/FINISHED_SHOWS" + lastDir + "/" + file;\r
+ result.add(Paths.get(fullpath).getFileName().toString());\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+ return result;\r
+ }\r
+\r
+}\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate name="Metaadat szinkronizálás">\r
+ <commands>\r
+ <calljobstep type="MetadataUpdater.java" />\r
+ </commands>\r
+</jobtemplate>
\ No newline at end of file
datasource:\r
mediacube:\r
- url: jdbc:db2://10.10.1.27:50000/mc\r
+ url: jdbc:db2://10.11.1.90:50000/mc\r
user: db2admin\r
password: password\r
external-indexer: false\r
login-timeout: 3\r
pool-size: 10\r
mediacube-nosql:\r
- url: jdbc:db2://10.10.1.27:50000/mc\r
+ url: jdbc:db2://10.11.1.90:50000/mc\r
user: db2admin\r
password: password\r
schema: test\r
--- /dev/null
+package hu.user.mediacube.executors.tests;\r
+\r
+import org.apache.ibatis.jdbc.SQL;\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.junit.AfterClass;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.ItemManager;\r
+\r
+/***\r
+ * MediaVivantis delete-materials.log-bol kepzett file vizsgalata\r
+ * pl. cat delete-materials-12-30-2020-1.log delete-materials-04-16-2021-1.log | grep 'killdate bejegyzés alapján sikeresen' > deleted_finished_shows.txt\r
+ * @author elgekko\r
+ */\r
+public class SupportSelectAll {\r
+ Logger logger = LogManager.getLogger();\r
+\r
+ protected static IItemManager manager = null;\r
+\r
+ @BeforeClass\r
+ static public void setUpConnection() throws Exception {\r
+ manager = new ItemManager();\r
+ manager.connect();\r
+ }\r
+\r
+ @AfterClass\r
+ static public void tearDownConnection() throws Exception {\r
+ manager.disconnect();\r
+ }\r
+\r
+ public String createQuery() {\r
+ SQL isql = new SQL();\r
+ isql.SELECT("id");\r
+ isql.FROM("STORE");\r
+ isql.WHERE("name = 'TSM'");\r
+\r
+ SQL sql = new SQL();\r
+ sql.SELECT("i.id AS itemid");\r
+ sql.SELECT("i.houseid AS itemhouseid");\r
+ sql.SELECT("i.title AS itemtitle");\r
+ sql.SELECT("i.description AS itemdescription");\r
+ sql.SELECT("m.id AS mediaid");\r
+ sql.SELECT("m.houseid AS mediahouseid");\r
+ sql.SELECT("m.title AS mediatitle");\r
+ sql.SELECT("m.description AS mediadescription");\r
+ sql.SELECT("mf.houseid AS mediafilehouseid");\r
+ sql.FROM("MEDIAFILE mf");\r
+ sql.LEFT_OUTER_JOIN("MEDIA m ON (m.id = mf.mediaid)");\r
+ sql.LEFT_OUTER_JOIN("ITEM i ON (i.id = m.itemid)");\r
+ sql.WHERE(String.format("mf.storeid = (%s)", isql.toString()));\r
+ sql.FETCH_FIRST_ROWS_ONLY(10);\r
+ return sql.toString();\r
+ }\r
+\r
+ @Test\r
+ public void checkDeletedFinishedShows() throws Exception {\r
+ String sql = createQuery();\r
+ manager.executeQuery(sql, rs -> {\r
+ logger.info("ID {}", rs.getLong("itemid"));\r
+ return true;\r
+ }, null);\r
+\r
+ }\r
+}\r
org.apache.http.message,
org.apache.http.params,
org.apache.http.protocol,
+ org.apache.ibatis.jdbc;version="3.5.2",
org.apache.logging.log4j;version="2.8.2",
org.apache.logging.log4j.message;version="2.8.2",
org.joda.time;version="2.2.0",
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import java.io.IOException;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+import java.sql.ResultSet;\r
+import java.text.SimpleDateFormat;\r
+import java.util.Date;\r
+import java.util.LinkedHashSet;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import org.apache.commons.io.FileUtils;\r
+import org.apache.ibatis.jdbc.SQL;\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\r
+import org.apache.logging.log4j.MarkerManager;\r
+\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.server.steps.shared.MetadataTypeDetector;\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+import user.mediacube.metadata.interfaces.IMetadataProvider;\r
+import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
+import user.mediacube.metadata.interfaces.MetadataProviderType;\r
+import user.mediacube.metadata.interfaces.MetadataType;\r
+import user.mediacube.metadata.interfaces.PlanAirMetadataListOptions;\r
+\r
+public class MetadataUpdater extends JobStep {\r
+ private static final String EMPTY = "";\r
+ private static final String DOT = ".";\r
+ private static final Logger logger = LogManager.getLogger(MetadataUpdater.class);\r
+ private Marker csvMarker = MarkerManager.getMarker("METADATA-UPDATER-CSV");\r
+\r
+ private static final String ITEM_TITLE = "itemTitle";\r
+ private static final String ITEM_HOUSEID = "itemHouseId";\r
+ private static final String MEDIA_HOUSEID = "mediaHouseId";\r
+ private static final String MEDIA_TITLE = "mediaTitle";\r
+ private static final String MEDIA_DESCRIPTION = "mediaDescription";\r
+ private static final String MEDIA_TYPE = "mediaType";\r
+ private static final String MEDIAFILE_HOUSEID = "mediaFileHouseId";\r
+\r
+ private SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");\r
+ private Set<String> includeList;\r
+\r
+ public String createQuery() {\r
+ SQL isql = new SQL();\r
+ isql.SELECT("id");\r
+ isql.FROM("STORE");\r
+ isql.WHERE("name = 'TSM'");\r
+\r
+ SQL sql = new SQL();\r
+ sql.SELECT("i.id AS itemId");\r
+ sql.SELECT("i.houseid AS itemHouseId");\r
+ sql.SELECT("i.title AS itemTitle");\r
+ //sql.SELECT("i.description AS itemdescription");\r
+ sql.SELECT("m.id AS mediaId");\r
+ sql.SELECT("m.houseid AS mediaHouseId");\r
+ sql.SELECT("m.title AS mediaTitle");\r
+ sql.SELECT("m.description AS mediaDescription");\r
+ sql.SELECT("mf.houseid AS mediaFileHouseId");\r
+ sql.FROM("MEDIAFILE mf");\r
+ sql.LEFT_OUTER_JOIN("MEDIA m ON (m.id = mf.mediaid)");\r
+ sql.LEFT_OUTER_JOIN("ITEM i ON (i.id = m.itemid)");\r
+ sql.WHERE(String.format("mf.storeid = (%s)", isql.toString()));\r
+ return sql.toString();\r
+ }\r
+\r
+ public String createCountQuery() {\r
+ SQL sql = new SQL();\r
+ sql.SELECT("COUNT(*) as count");\r
+ sql.FROM("MEDIA");\r
+ return sql.toString();\r
+ }\r
+\r
+ @StepEntry\r
+ public Object[] execute() throws Exception {\r
+ try {\r
+\r
+ String location = "/opt/test-mediacube/file_list_original.txt";\r
+ includeList = loadIncludeList(location);\r
+\r
+ IItemManager manager = getManager();\r
+ String sql = createCountQuery();\r
+ long[] count = new long[1];\r
+ count[0] = 0;\r
+ manager.executeQuery(sql, rs -> {\r
+ try {\r
+ count[0] = rs.getLong("count");\r
+ logger.info(getSessionMarker(), "Processing rs");\r
+ } catch (Exception e) {\r
+ logger.error(getMarker(), e.getMessage());\r
+ }\r
+ return true;\r
+ }, null);\r
+\r
+ logger.info(getSessionMarker(), "Count {}", count[0]);\r
+\r
+ long[] current = new long[1];\r
+ current[0] = 0;\r
+\r
+ logger.info(csvMarker, "Date;Name;isProgramById;includeContains;isMetadataEquals;itemHouseId;P itemHouseId;itemHouseIdEquals;itemTitle;P itemTitle;itemTitleEquals;mediaHouseId;"\r
+ + "P mediaHouseId;mediaHouseIdEquals;mediaTitle;P mediaTitle;mediaTitleEquals;"\r
+ + "mediaDescription;P mediaDescription;mediaDescriptionEquals;");\r
+ \r
+ \r
+ sql = createQuery();\r
+ manager.executeQuery(sql, rs -> {\r
+\r
+ if (getJobRuntime().isWaitingCancel())\r
+ return false;\r
+\r
+ current[0]++;\r
+ processRecord(rs);\r
+ int p = (int) current[0] * 100 / (int) count[0];\r
+ setProgress(p);\r
+ return true;\r
+ }, null);\r
+\r
+ } catch (Exception e) {\r
+ logger.error(getSessionMarker(), e.getMessage());\r
+ }\r
+ return null;\r
+ }\r
+\r
+ private String set(String value) {\r
+ return value == null ? EMPTY : value;\r
+ }\r
+\r
+ private void processRecord(ResultSet rs) {\r
+ try {\r
+ String itemHouseId = set(rs.getString(ITEM_TITLE));\r
+ String itemTitle = set(rs.getString(ITEM_TITLE));\r
+ String mediaHouseId = set(rs.getString(MEDIA_HOUSEID));\r
+ String mediaTitle = set(rs.getString(MEDIA_TITLE));\r
+ String mediaDescription = set(rs.getString(MEDIA_DESCRIPTION));\r
+ String pitemHouseId = EMPTY;\r
+ String pitemTitle = EMPTY;\r
+ String pmediaHouseId = EMPTY;\r
+ String pmediaTitle = EMPTY;\r
+ String pmediaDescription = EMPTY;\r
+\r
+ String fileName = rs.getString(MEDIAFILE_HOUSEID);\r
+ String mediaFileHouseId = fileName;\r
+ if (mediaFileHouseId.contains(DOT))\r
+ mediaFileHouseId = mediaFileHouseId.substring(0, mediaFileHouseId.lastIndexOf(DOT));\r
+\r
+ user.jobengine.server.steps.shared.MetadataType metadataType = MetadataTypeDetector\r
+ .GuessMetadataType(mediaFileHouseId);\r
+\r
+ boolean isProgramById = false;\r
+ boolean includeContains = includeList.contains(fileName);\r
+ boolean itemHouseIdEquals = false;\r
+ boolean itemTitleEquals = false;\r
+ boolean mediaHouseIdEquals = false;\r
+ boolean mediaTitleEquals = false;\r
+ boolean mediaDescriptionEquals = false;\r
+\r
+ logger.info(getMarker(), "{} {}", mediaFileHouseId, metadataType);\r
+ ArchiveItem archiveItem = getPlanAirMetadata(mediaFileHouseId);\r
+ if (archiveItem != null) {\r
+ isProgramById = true;\r
+\r
+ if (isProgramById) {\r
+\r
+ pitemHouseId = set(archiveItem.getItemHouseId());\r
+ itemHouseIdEquals = pitemHouseId.equals(itemHouseId);\r
+\r
+ pitemTitle = set(archiveItem.getItemTitle());\r
+ itemTitleEquals = pitemTitle.equals(itemTitle);\r
+\r
+ pmediaHouseId = set(archiveItem.getMediaHouseId());\r
+ mediaHouseIdEquals = pmediaHouseId.equals(mediaHouseId);\r
+\r
+ pmediaTitle = set(archiveItem.getMediaTitle());\r
+ mediaTitleEquals = pmediaTitle.equals(mediaTitle);\r
+\r
+ pmediaDescription = set(archiveItem.getMediaDescription());\r
+ mediaDescriptionEquals = pmediaDescription.equals(mediaDescription);\r
+\r
+ boolean isMetadataEquals = itemHouseIdEquals && itemTitleEquals && mediaHouseIdEquals\r
+ && mediaTitleEquals && mediaDescriptionEquals;\r
+\r
+ Date now = new Date(System.currentTimeMillis());\r
+ logger.info(csvMarker, "{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};", D(now),\r
+ fileName, YN(isProgramById), YN(includeContains), YN(isMetadataEquals), itemHouseId,\r
+ pitemHouseId, itemHouseIdEquals, itemTitle, pitemTitle, itemTitleEquals, mediaHouseId,\r
+ pmediaHouseId, mediaHouseIdEquals, mediaTitle, pmediaTitle, mediaTitleEquals,\r
+ mediaDescription, pmediaDescription, mediaDescriptionEquals);\r
+\r
+ logger.info(getSessionMarker(), "Processed {} {}{}{}", fileName, YN(isProgramById),\r
+ YN(includeContains), YN(isMetadataEquals));\r
+ }\r
+ }\r
+\r
+ } catch (\r
+\r
+ Exception e) {\r
+ logger.error(getSessionMarker(), e.getMessage());\r
+ }\r
+\r
+ }\r
+\r
+ private ArchiveItem getPlanAirMetadata(String mediaHouseId) throws Exception {\r
+ PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();\r
+ opt.setSearch(mediaHouseId);\r
+ opt.setType(MetadataType.Material);\r
+\r
+ BasicDBObject json = null;\r
+ List<IMetadata> data = null;\r
+\r
+ IMetadataProviderFactory factory = getService(IMetadataProviderFactory.class);\r
+ if (factory == null)\r
+ logger.info(getSessionMarker(), "IMetadataProviderFactory is null");\r
+\r
+ IMetadataProvider planairProvider = factory.getProvider(MetadataProviderType.PLANAIR);\r
+ if (planairProvider == null)\r
+ logger.info(getSessionMarker(), "IMetadataProvider is null");\r
+\r
+ ArchiveItem result = null;\r
+ data = planairProvider.list(opt);\r
+ if (data.size() != 0)\r
+ json = data.get(0).asJSON();\r
+ else {\r
+ opt.setType(MetadataType.Promo);\r
+ data = planairProvider.list(opt);\r
+ if (data.size() != 0)\r
+ json = data.get(0).asJSON();\r
+ else {\r
+ opt.setType(MetadataType.AD);\r
+ data = planairProvider.list(opt);\r
+ if (data.size() != 0)\r
+ json = data.get(0).asJSON();\r
+ }\r
+ }\r
+ if (json != null) {\r
+ result = new ArchiveItem();\r
+ result.setItemHouseId(json.getString(ITEM_HOUSEID));\r
+ result.setItemTitle(json.getString(ITEM_TITLE));\r
+ result.setMediaHouseId(json.getString(MEDIA_HOUSEID));\r
+ result.setMediaTitle(json.getString(MEDIA_TITLE));\r
+ result.setMediaDescription(json.getString(MEDIA_DESCRIPTION));\r
+ result.setMediaType(json.getString(MEDIA_TYPE));\r
+ }\r
+ return result;\r
+ }\r
+\r
+ private char YN(boolean value) {\r
+ return value ? 'Y' : 'N';\r
+ }\r
+\r
+ private String D(Date value) {\r
+ return value == null ? EMPTY : df.format(value);\r
+ }\r
+\r
+ private Set<String> loadIncludeList(String location) throws IOException {\r
+ logger.info(getSessionMarker(), "Loading include list {}", location);\r
+ Set<String> result = new LinkedHashSet<>();\r
+\r
+ Path path = Paths.get(location);\r
+ List<String> lines = FileUtils.readLines(path.toFile());\r
+\r
+ String lastDir = null;\r
+ for (String line : lines) {\r
+ line = line.trim();\r
+ if (line.startsWith("Directory of")) {\r
+ lastDir = line;\r
+ lastDir = lastDir.replace("Directory of", EMPTY);\r
+ lastDir = lastDir.replace("X:", EMPTY);\r
+ lastDir = lastDir.replace("\\", "/");\r
+ lastDir = lastDir.trim();\r
+ }\r
+\r
+ if (lastDir != null && lastDir.endsWith(".STATUS"))\r
+ continue;\r
+\r
+ if (line.startsWith("2") && line.length() > 39) {\r
+ String file = line.substring(39).trim();\r
+\r
+ if (file.equals(DOT) || file.equals(".."))\r
+ continue;\r
+\r
+ String len = line.substring(21, 39).trim();\r
+ if (len.length() != 0) {\r
+ String fullpath = "/mnt/POLC/FINISHED_SHOWS" + lastDir + "/" + file;\r
+ result.add(Paths.get(fullpath).getFileName().toString());\r
+ }\r
+ }\r
+\r
+ }\r
+\r
+ return result;\r
+ }\r
+\r
+}\r
\r
@Override\r
public void loadSchedules() throws Exception {\r
+\r
+ //a kulcs nem lehet a template, mert kulonbozo parameterekkel is benne lehet!\r
schedules.clear();\r
String configFilePath = systemConfig.getConfig(JobEngineConfiguration.CONF_SCHEDULES);\r
logger.info("Loading scheduler configuration file {}", configFilePath);\r
&& file.getFileName().toString().endsWith(".java");\r
try (Stream<Path> stream = Files.list(path)) {\r
stream.filter(filter).forEach(p -> {\r
- if (excludeFileName != null && !excludeFileName.equals(p.getFileName().toString()))\r
+ if (excludeFileName == null)\r
+ result.add(p.toFile());\r
+ else if (!excludeFileName.equals(p.getFileName().toString()))\r
result.add(p.toFile());\r
\r
});\r
if (selectedJob == null)\r
return;\r
String template = selectedJob.getString("template");\r
+\r
+ //ez bugos, az azonos template mas parameterekkel elnyelodik\r
ScheduledJob scheduledJob = jobEngine.getScheduledJob(template);\r
+\r
+ //ScheduledJob scheduledJob = jobEngine.getJobEngineConfiguration().createScheduledJob(selectedJob, jobEngine);\r
try {\r
scheduledJob.doManualJob();\r
} catch (Exception e) {\r
}\r
\r
private void initJobList() {\r
- List<BasicDBObject> jobsCollection = new ArrayList<>(jobEngine.getJobEngineConfiguration().getSchedules().values());\r
+ List<BasicDBObject> jobsCollection = new ArrayList<>(\r
+ jobEngine.getJobEngineConfiguration().getSchedules().values());\r
Collections.sort(jobsCollection, (a, b) -> {\r
String aName = a.getString("name");\r
if (aName == null)\r