import java.nio.file.Files;\r
import java.nio.file.Path;\r
import java.nio.file.Paths;\r
-import java.util.ArrayList;\r
+import java.util.LinkedList;\r
import java.util.List;\r
\r
import org.apache.commons.lang.StringUtils;\r
@StepEntry\r
public Object[] execute(String sourcePath, int limit, IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
marker = jobRuntime.getMarker();\r
- List<ArchiveItem> archiveList = new ArrayList<ArchiveItem>();\r
+ List<ArchiveItem> archiveList = new LinkedList<ArchiveItem>();\r
DirectoryStream<Path> directoryStream = null;\r
int counter = 0;\r
try {\r
logger.warn("{} has no Media Title specified in metadata.", mediaFile.getName());\r
return false;\r
}\r
- archiveList.add(archiveItem);\r
+\r
+ //A tenyleges archivalast vesszuk elore\r
+ if (mediaFile.length() == 0)\r
+ archiveList.add(archiveItem);\r
+ else\r
+ archiveList.add(0, archiveItem);\r
createCatchedFile(catchedFilePath);\r
return true;\r
}\r
\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.db.IResultSetConsumer;\r
+import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
\r
public class ItemManagerExtensions {\r
\r
\r
public static long getExistingRundownMedia(IItemManager manager, String houseid) {\r
final long[] result = { 0 };\r
- StringBuilder query = new StringBuilder();\r
- query.append("select mediaid, mediafilehouseid, filename");\r
- query.append(" ");\r
- query.append(String.format("from vw_rundown_items where mediafilehouseid like '%s%%'", houseid));\r
- query.append(" ");\r
- query.append("order by filename, mediaid");\r
- IResultSetConsumer consumer = rs -> {\r
- String fileName = rs.getString("filename");\r
- if (houseid.equals(fileName)) {\r
- result[0] = rs.getLong("mediaid");\r
- return false;\r
- } else\r
- return true;\r
- };\r
- manager.executeQuery(query.toString(), consumer, null);\r
+ final String idToCheck = houseid.substring(0, houseid.lastIndexOf("-"));\r
+ MetadataType metadataType = MetadataTypeDetector.GuessMetadataType(idToCheck);\r
+ if (metadataType == MetadataType.OctopusPlaceholder) {\r
+ StringBuilder query = new StringBuilder();\r
+ query.append("select mediaid, mediafilehouseid, filename");\r
+ query.append(" ");\r
+ query.append(String.format("from vw_rundown_items where mediafilehouseid like '%s%%'", idToCheck));\r
+ query.append(" ");\r
+ query.append("order by filename, mediaid");\r
+ IResultSetConsumer consumer = rs -> {\r
+ String fileName = rs.getString("filename");\r
+ if (idToCheck.equals(fileName)) {\r
+ result[0] = rs.getLong("mediaid");\r
+ return false;\r
+ } else\r
+ return true;\r
+ };\r
+ manager.executeQuery(query.toString(), consumer, null);\r
+ }\r
+\r
return result[0];\r
}\r
\r
--- /dev/null
+package user.jobengine.server.IT;\r
+\r
+import java.io.File;\r
+import java.nio.file.Paths;\r
+import java.util.Date;\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.db.MediaFile;\r
+\r
+public class SupportRemoveDuplicates {\r
+ public class BD {\r
+ Date fBD;\r
+ Date nBD;\r
+ }\r
+\r
+ protected static IItemManager manager = null;\r
+\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
+ private void processLowresDuplicateGroup(String fileName) {\r
+ //System.out.println("*** Processing: " + fileName);\r
+ String query = "select mediafileid, mediafilehouseid, relativepath from vw_items_rd_lh where filename = ?";\r
+ IStatementDecorator decorator = st -> {\r
+ st.setString(1, fileName);\r
+ };\r
+\r
+ MediaFile[] masterMediaFile = { null };\r
+\r
+ IResultSetConsumer consumer = rs -> {\r
+ long mediaFileId = rs.getLong("mediafileid");\r
+ MediaFile mediaFile = (MediaFile) manager.get(MediaFile.class, mediaFileId);\r
+ if (masterMediaFile[0] == null) {\r
+ masterMediaFile[0] = mediaFile;\r
+ return true;\r
+ }\r
+\r
+ String path = rs.getString("relativepath");\r
+ File file = Paths.get(LOWRES_ROOT, path).toFile();\r
+ duplicateLength[0] += file.length();\r
+\r
+ if (file.delete()) {\r
+ System.out.println(String.format("%d %s %s", mediaFile.getMediaId(), mediaFile.getRelativePath(), masterMediaFile[0].getRelativePath()));\r
+ mediaFile.setRelativePath(masterMediaFile[0].getRelativePath());\r
+ manager.modify(mediaFile);\r
+ }\r
+ return true;\r
+ };\r
+ manager.executeQuery(query, consumer, decorator);\r
+ }\r
+\r
+ @Test\r
+ public void processLowresDuplicates() {\r
+ long count[] = { 0, 0 };\r
+ manager.executeQuery("select count(filecount) from vw_items_rd_dup", rs -> {\r
+ count[0] = rs.getLong(1);\r
+ return false;\r
+ }, null);\r
+\r
+ int limit[] = { 1, 0 };\r
+ int progress[] = { 0, 0 };\r
+ manager.executeQuery("select filename from vw_items_rd_dup order by filecount desc", rs -> {\r
+ String fileName = rs.getString("filename");\r
+ processLowresDuplicateGroup(fileName);\r
+ count[1]++;\r
+ progress[1] = (int) ((double) count[1] * 100 / count[0]);\r
+ if (progress[1] > progress[0]) {\r
+ progress[0] = progress[1];\r
+ }\r
+ System.out.println("Completed " + progress[0] + " " + count[1] + "/" + count[0] + " available " + duplicateLength[0]);\r
+ limit[1]++;\r
+\r
+ if (limit[0] == limit[1])\r
+ return false;\r
+ else\r
+ return true;\r
+ }, null);\r
+ }\r
+\r
+}\r