}\r
}\r
if (json != null) {\r
- logger.info(getSessionMarker(), json.toString());\r
+ // logger.info(getSessionMarker(), json.toString());\r
result = ArchiveItem.fromJSONObject(json);\r
}\r
\r
}\r
\r
private boolean processPathItem(Path mediaPath) throws Exception {\r
-\r
- boolean includeContains = includeList.contains(mediaPath.toString());\r
- if (!includeContains) {\r
- logger.info(getSessionMarker(), "Not on whitelist {}, skipping", mediaPath);\r
+ if (limit != 0 && submitted == limit) {\r
+ logger.info(getSessionMarker(), "Limit reached {}, canceling", limit);\r
return false;\r
}\r
\r
String fileName = mediaPath.getFileName().toString();\r
if (fileName.startsWith(".") || fileName.endsWith(".nomd"))\r
- return false;\r
-\r
- if (limit != 0 && submitted == limit) {\r
- logger.info(getSessionMarker(), "Limit reached {}, canceling", limit);\r
- return false;\r
- }\r
+ return true;\r
\r
File mediaFile = mediaPath.toFile();\r
if (mediaFile.isDirectory()) {\r
- return false;\r
+ return true;\r
+ }\r
+\r
+ if (EscortFiles.isMediaCatched(mediaPath)) {\r
+ // logger.info(getSessionMarker(), "Skipping already catched {}", mediaPath);\r
+ return true;\r
+ }\r
+\r
+ if (handleArchiveConflict(mediaPath)) {\r
+ logger.info(getSessionMarker(), "Skipping archive db already contains {}", mediaPath);\r
+ return true;\r
+ }\r
+\r
+ boolean includeContains = includeList.contains(mediaPath.toString());\r
+ if (!includeContains) {\r
+ logger.info(getSessionMarker(), "Not on whitelist {}, skipping", mediaPath);\r
+ return true;\r
}\r
\r
//\r
// }\r
// }\r
\r
- if (EscortFiles.isMediaCatched(mediaPath)) {\r
- // logger.info(getSessionMarker(), "Skipping already catched {}", mediaPath);\r
- return false;\r
- }\r
-\r
- if (handleArchiveConflict(mediaPath)) {\r
- logger.info(getSessionMarker(), "Skipping archive db already contains {}", mediaPath);\r
- return false;\r
- }\r
-\r
if (!canReadMediaInfo(mediaPath)) {\r
logger.info(getSessionMarker(), "Skipping cant read mediainfo {}", mediaPath);\r
- return false;\r
+ return true;\r
}\r
\r
ArchiveItem archiveItem = createArchiveItem(mediaPath);\r
\r
- Path nomdFile = Paths.get(mediaPath.toString() + ".nomd");\r
- if (archiveItem == null && !Files.exists(nomdFile)) {\r
+ if (archiveItem == null) {\r
// Message msg = new ParameterizedMessage("Nincs metaadat!");\r
// logger.info(new MediaCubeMarker("vasary@elgekko.net,muszak@mediavivantis.hu",\r
// "Értesítés problémás " + mediaPath.getFileName().toString() + " archiválásról"), msg);\r
- Files.createFile(nomdFile);\r
- return false;\r
+\r
+ Path nomdFile = Paths.get(mediaPath.toString() + ".nomd");\r
+ if (!Files.exists(nomdFile))\r
+ Files.createFile(nomdFile);\r
+ return true;\r
}\r
\r
logger.info(getSessionMarker(), "Archiving {}", mediaPath);\r
public FileVisitResult visitFile(Path filePath, BasicFileAttributes paramBasicFileAttributes) throws IOException {\r
// logger.info(getSessionMarker(), "Will checked {}", filePath);\r
try {\r
- if (!processPathItem(filePath))\r
+ if (!processPathItem(filePath)) {\r
+ logger.info(getSessionMarker(), "processPathItem returned false, terminating");\r
return FileVisitResult.TERMINATE;\r
+ }\r
} catch (Exception e) {\r
logger.catching(e);\r
}\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.nio.file.DirectoryStream;\r
+import java.nio.file.FileVisitResult;\r
+import java.nio.file.FileVisitor;\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+import java.nio.file.attribute.BasicFileAttributes;\r
+import java.text.SimpleDateFormat;\r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
+import java.util.Collections;\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.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.commons.IEntityBase;\r
+import user.commons.RemoteFile;\r
+import user.commons.StoreUri;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
+import user.jobengine.db.Media;\r
+import user.jobengine.db.MediaFile;\r
+import user.jobengine.db.MediaFileDAO;\r
+import user.jobengine.db.Store;\r
+import user.jobengine.server.steps.shared.EscortFiles;\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+import user.mediacube.metadata.interfaces.IMetadataListOptions;\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 CheckArchiveRecursiveStep extends JobStep implements FileVisitor<Path> {\r
+ private static final Logger logger = LogManager.getLogger();\r
+ private Marker csvMarker = MarkerManager.getMarker("CHECK-ARCHIVE-RECURSIVE-CSV");\r
+\r
+ private static final String KILLDATEEXT = ".killdate";\r
+ private SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");\r
+\r
+ private List<String> skipPathNames = Arrays.asList("!ARCHIVALAS_ALATT", EscortFiles.STATUSFOLDER, EscortFiles.CONFLICTFOLDER);\r
+ private Set<String> includeList;\r
+\r
+ @StepEntry\r
+ public Object[] execute(String sourcePath) throws Exception {\r
+ logger.info(getSessionMarker(), "Starting in {}", sourcePath);\r
+ logger.info(csvMarker, "{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};", "Napló időbélyeg", "Neve", "Elérése", "Mérete", "Létrehozva", "Módosítva",\r
+ "Archiválva (MC)", "Archiválva (TSM)", "Méret (TSM)", ".catched", ".killdate", ".nomd", "Archivált (MC)", "Archivált (TSM)", "Méret egyezés");\r
+\r
+ try {\r
+\r
+ String location = "/opt/test-mediacube/archive-recursive-files.txt";\r
+ includeList = loadWhiteList(location);\r
+\r
+ Files.walkFileTree(Paths.get(sourcePath), this);\r
+ } catch (Exception e) {\r
+ logger.error(getSessionMarker(), "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", sourcePath, e.getMessage());\r
+ }\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult postVisitDirectory(Path paramT, IOException paramIOException) throws IOException {\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes paramBasicFileAttributes) throws IOException {\r
+ Path dirName = dir.getFileName();\r
+\r
+ if (skipPathNames.contains(dirName.toString())) {\r
+ // logger.info(getSessionMarker(), "PreVisit skip {}", dir);\r
+ return FileVisitResult.SKIP_SUBTREE;\r
+ } // else\r
+ // logger.info(getSessionMarker(), "PreVisit {}", dir);\r
+\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+\r
+ private boolean processPathItem(Path mediaPath) throws Exception {\r
+ if (getJobRuntime().isWaitingCancel()) {\r
+ cancel();\r
+ return false;\r
+ }\r
+\r
+ BasicFileAttributes attr = Files.readAttributes(mediaPath, BasicFileAttributes.class);\r
+ File mediaFSFile = mediaPath.toFile();\r
+ String fileName = mediaPath.getFileName().toString();\r
+\r
+ if (mediaFSFile.isDirectory())\r
+ return true;\r
+\r
+ if (fileName.startsWith(".") || fileName.endsWith(".nomd"))\r
+ return true;\r
+\r
+ boolean includeContains = includeList.contains(mediaPath.toString());\r
+ if (!includeContains)\r
+ return true;\r
+\r
+ Path nomdFile = Paths.get(mediaPath.toString() + ".nomd");\r
+ List<Path> killDateFiles = getKillDateFiles(mediaPath);\r
+ MediaFile mediaFile = getMediaFile(fileName);\r
+\r
+ long size = mediaFSFile.length();\r
+ Date lastModifiedDate = new Date(attr.lastModifiedTime().toMillis());\r
+ // Date lastAccesDate = new Date(attr.lastAccessTime().toMillis());\r
+ Date createDate = new Date(attr.creationTime().toMillis());\r
+ boolean catchedExists = EscortFiles.isMediaCatched(mediaPath);\r
+ boolean noMDExists = nomdFile.toFile().exists();\r
+ boolean killdateExists = killDateFiles.size() > 0;\r
+ boolean mcArchived = mediaFile != null;\r
+ boolean tsmArchived = false;\r
+ boolean sizeEquals = false;\r
+ Date mcArchivedDate = null;\r
+ long tsmSize = 0;\r
+ Date tsmBackupDate = null;\r
+\r
+ if (mcArchived) {\r
+ // metadata\r
+ Media media = getManager().getMedia(mediaFile.getMediaId());\r
+ mcArchivedDate = media.getCreated();\r
+\r
+ // tsm\r
+ String tsmFileName = mediaFile.getRelativePath();\r
+ RemoteFile tsmFile = getTSMFile(tsmFileName);\r
+ tsmArchived = tsmFile != null;\r
+ if (tsmArchived) {\r
+ tsmSize = tsmFile.getSize();\r
+ tsmBackupDate = getTSMBackupDate(tsmFileName);\r
+ sizeEquals = tsmSize == size;\r
+ }\r
+ }\r
+\r
+ Date now = new Date(System.currentTimeMillis());\r
+ logger.info(csvMarker, "{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};", D(now), fileName, mediaPath.getParent(), size, D(createDate),\r
+ D(lastModifiedDate), D(mcArchivedDate), D(tsmBackupDate), tsmSize, YN(catchedExists), YN(killdateExists), YN(noMDExists), YN(mcArchived),\r
+ YN(tsmArchived), YN(sizeEquals));\r
+\r
+ logger.info(getSessionMarker(), "{} {}{}{}{}{}{}", mediaPath, YN(catchedExists), YN(killdateExists), YN(noMDExists), YN(mcArchived), YN(tsmArchived),\r
+ YN(sizeEquals));\r
+\r
+ return true;\r
+ }\r
+\r
+ private Date getTSMBackupDate(String tsmFileName) throws Exception {\r
+ Date result = null;\r
+ IMetadataProviderFactory factory = getService(IMetadataProviderFactory.class);\r
+ if (factory == null)\r
+ return null;\r
+ IMetadataProvider provider = factory.getProvider(MetadataProviderType.TSM);\r
+ if (provider == null)\r
+ return null;\r
+\r
+ IMetadataListOptions opt = provider.createOptions(new BasicDBObject("fileName", tsmFileName));\r
+\r
+ List<IMetadata> tsmContents = provider.list(opt);\r
+ if (tsmContents != null && tsmContents.size() > 0) {\r
+\r
+ for (IMetadata md : tsmContents) {\r
+ Date backupDate = md.asJSON().getDate("backupDate");\r
+ if (result == null)\r
+ result = backupDate;\r
+ else {\r
+ if (backupDate.after(result))\r
+ result = backupDate;\r
+ }\r
+ }\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 ? "" : df.format(value);\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult visitFile(Path filePath, BasicFileAttributes paramBasicFileAttributes) throws IOException {\r
+ // logger.info(getSessionMarker(), "Will checked {}", filePath);\r
+ try {\r
+ if (!processPathItem(filePath))\r
+ return FileVisitResult.TERMINATE;\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ }\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+\r
+ @Override\r
+ public FileVisitResult visitFileFailed(Path filePath, IOException paramIOException) throws IOException {\r
+ logger.info("Error archive {}", filePath);\r
+ return FileVisitResult.CONTINUE;\r
+ }\r
+\r
+ private List<Path> getKillDateFiles(Path filePath) {\r
+ String killDateFilePattern = String.format("%s.*%s", filePath.getFileName().toString(), KILLDATEEXT);\r
+ List<Path> result = new ArrayList<>();\r
+ Path statusPath = null;\r
+ try {\r
+ statusPath = Paths.get(filePath.getParent().toString(), EscortFiles.STATUSFOLDER);\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ return null;\r
+ }\r
+ File statusPathFile = statusPath.toFile();\r
+ if (statusPathFile.exists() && statusPathFile.isDirectory()) {\r
+ try (DirectoryStream<Path> stream = Files.newDirectoryStream(statusPath, killDateFilePattern)) {\r
+ stream.forEach(p -> result.add(p));\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ }\r
+ }\r
+ Collections.sort(result);\r
+ return result;\r
+ }\r
+\r
+ MediaFile getMediaFile(String fileName) {\r
+ MediaFile result = null;\r
+ MediaFileDAO mfDAO = (MediaFileDAO) getManager().getBaseDAO(MediaFile.class);\r
+ List<IEntityBase> mfList = mfDAO.getByHouseId(fileName);\r
+ if (mfList != null && mfList.size() == 1)\r
+ result = (MediaFile) mfList.get(0);\r
+ return result;\r
+ }\r
+\r
+ RemoteFile getTSMFile(String mcFileName) {\r
+ RemoteFile result = null;\r
+ Store tsmStore = getManager().getSystemStore(false);\r
+ StoreUri tsmStoreUri = tsmStore.getSourceStoreUri(RemoteStoreProtocol.TSM);\r
+ try {\r
+ result = tsmStoreUri.getRemoteFile(mcFileName);\r
+ } catch (Exception e) {\r
+ logger.error(e);\r
+ } finally {\r
+ tsmStoreUri.cleanUp();\r
+ }\r
+ return result;\r
+ }\r
+\r
+ private Set<String> loadWhiteList(String location) throws IOException {\r
+ Set<String> result = new LinkedHashSet<>();\r
+ Path path = Paths.get(location);\r
+ List<String> lines = FileUtils.readLines(path.toFile());\r
+\r
+ for (String line : lines) {\r
+ String[] tokens = line.trim().split("\t");\r
+ if (tokens.length == 0)\r
+ continue;\r
+ result.add(tokens[0]);\r
+ }\r
+ return result;\r
+ }\r
+\r
+}\r
import org.apache.logging.log4j.Logger;\r
import org.apache.logging.log4j.Marker;\r
\r
-import user.commons.RemoteFile;\r
import user.commons.StoreUri;\r
import user.commons.configuration.SystemConfiguration;\r
-import user.commons.remotestore.IProgressEventListener;\r
-import user.commons.remotestore.ProgressEvent;\r
import user.commons.remotestore.RemoteStoreProtocol;\r
//import user.jobengine.db.Media;\r
import user.jobengine.db.ArchivedMedia;\r
import user.jobengine.db.Store;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.steps.shared.EscortFiles;\r
\r
public class MXFCutterStep extends JobStep {\r
private static final String TARGETNAMEPATTERN = "-ARCH-%s";\r
this.nexioPassword = nexioPassword;\r
marker = jobRuntime.getSessionMarker();\r
\r
- if (useNexioTarget && archivedMedia.getTcIn() != null && archivedMedia.getTcOut() != null) {\r
- setAndCheck(archivedMedia, houseId, targetPath, useNexioTarget, jobEngine);\r
-\r
- final IJobRuntime runtime = jobRuntime;\r
- sourceFileName = houseId + TARGETNAMEPATTERN;\r
- tempSourceUri.addProgressListener(new IProgressEventListener() {\r
- @Override\r
- public void progressChanged(ProgressEvent evt) {\r
- runtime.incrementProgress(evt.getProgress());\r
- }\r
- });\r
-\r
- RemoteFile result = tempSourceUri.transferFrom(tempTargetUri, sourceFileName, sourceFileName);\r
-\r
- EscortFiles.setNEXIOKillDate(killDateDays, houseId, nexioAgency, tempTargetUri);\r
-\r
- logger.info("A {} videó kivágva {}s - {}s", sourceFileName, archivedMedia.getTcIn(), archivedMedia.getTcOut());\r
- }\r
+// if (!useNexioTarget) {\r
+// String targetFileName = String.format(targetNamePattern, sourceFileName);\r
+// MediaArea mediaArea = new MediaArea(Paths.get(targetPath));\r
+// try {\r
+// mediaArea.process();\r
+// logger.info(getSessionMarker(), mediaArea.getInform().toPrettyString(""));\r
+// } catch (Exception e) {\r
+// logger.error(getSessionMarker(), "Can't analyze input {}, skipping. System message is: {}", e.getMessage());\r
+// }\r
+// }\r
+\r
+// if (useNexioTarget && archivedMedia.getTcIn() != null && archivedMedia.getTcOut() != null) {\r
+// setAndCheck(archivedMedia, houseId, targetPath, useNexioTarget, jobEngine);\r
+//\r
+// final IJobRuntime runtime = jobRuntime;\r
+// sourceFileName = houseId + TARGETNAMEPATTERN;\r
+// tempSourceUri.addProgressListener(new IProgressEventListener() {\r
+// @Override\r
+// public void progressChanged(ProgressEvent evt) {\r
+// runtime.incrementProgress(evt.getProgress());\r
+// }\r
+// });\r
+//\r
+// RemoteFile result = tempSourceUri.transferFrom(tempTargetUri, sourceFileName, sourceFileName);\r
+//\r
+// EscortFiles.setNEXIOKillDate(killDateDays, houseId, nexioAgency, tempTargetUri);\r
+//\r
+// logger.info("A {} videó kivágva {}s - {}s", sourceFileName, archivedMedia.getTcIn(), archivedMedia.getTcOut());\r
+// }\r
\r
return null;\r
}\r
\r
private SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");\r
\r
- private List<String> skipPathNames = Arrays.asList("!ARCHIVALAS_ALATT", EscortFiles.STATUSFOLDER,\r
- EscortFiles.CONFLICTFOLDER);\r
+ private List<String> skipPathNames = Arrays.asList("!ARCHIVALAS_ALATT", EscortFiles.STATUSFOLDER, EscortFiles.CONFLICTFOLDER);\r
private Set<String> includeList;\r
\r
private boolean checkArchiveItem(Path mediaPath, ArchiveItem archiveItem, Item item, Media media) {\r
@StepEntry\r
public Object[] execute(String sourcePath) throws Exception {\r
logger.info(getSessionMarker(), "Starting in {}", sourcePath);\r
- logger.info(csvMarker, "{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};", "Napló időbélyeg", "Neve",\r
- "Elérése", "Mérete", "Létrehozva", "Módosítva", "Archiválva (MC)", "Archiválva (TSM)", "Méret (TSM)",\r
- ".catched", ".killdate", ".nomd", "Archivált (MC)", "Archivált (TSM)", "Metaadat egyezés",\r
- "Méret egyezés", "Törölhető", "Kezelendő", "Lejátszható");\r
+ logger.info(csvMarker, "{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};", "Napló időbélyeg", "Neve", "Elérése", "Mérete", "Létrehozva",\r
+ "Módosítva", "Archiválva (MC)", "Archiválva (TSM)", "Méret (TSM)", ".catched", ".killdate", ".nomd", "Archivált (MC)", "Archivált (TSM)",\r
+ "Metaadat egyezés", "Méret egyezés", "Törölhető", "Kezelendő", "Lejátszható");\r
\r
try {\r
- String location = "/opt/test-mediacube/file_list_original.txt";\r
- includeList = loadIncludeList(location);\r
+// String location = "/opt/test-mediacube/file_list_original.txt";\r
+// includeList = loadIncludeList(location);\r
+\r
+ String location = "/opt/test-mediacube/archive-recursive-files.txt";\r
+ includeList = loadWhiteList(location);\r
+\r
Files.walkFileTree(Paths.get(sourcePath), this);\r
} catch (Exception e) {\r
- logger.error(getSessionMarker(), "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", sourcePath,\r
- e.getMessage());\r
+ logger.error(getSessionMarker(), "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", sourcePath, e.getMessage());\r
}\r
return null;\r
}\r
logger.info(getSessionMarker(), "Metadata not available for {}", mediaHouseId);\r
else {\r
if (mediaHouseId.equals(metadata.getForeignMediaId())) {\r
- logger.info(getSessionMarker(), "Metadata is available for {}: {}", mediaHouseId,\r
- metadata.getMediaTitle());\r
+ logger.info(getSessionMarker(), "Metadata is available for {}: {}", mediaHouseId, metadata.getMediaTitle());\r
result = metadata;\r
}\r
}\r
}\r
\r
@Override\r
- public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes paramBasicFileAttributes)\r
- throws IOException {\r
+ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes paramBasicFileAttributes) throws IOException {\r
Path dirName = dir.getFileName();\r
\r
if (skipPathNames.contains(dirName.toString())) {\r
result = file.delete();\r
}\r
} catch (Exception e) {\r
- logger.error(getSessionMarker(), "A {} fájl nem törölhető. A rendszer hibaüzenete: {}", filePath,\r
- e.getMessage());\r
+ logger.error(getSessionMarker(), "A {} fájl nem törölhető. A rendszer hibaüzenete: {}", filePath, e.getMessage());\r
}\r
return result;\r
}\r
\r
removeFile(Paths.get(filePath.toString() + EWC2EXT));\r
removeFile(Paths.get(filePath.toString() + XMPEXT));\r
- removeFile(Paths.get(filePath.getParent().toString(), EscortFiles.STATUSFOLDER,\r
- filePath.getFileName().toString() + EscortFiles.DOT_CATCHED));\r
- removeFile(Paths.get(filePath.getParent().toString(), EscortFiles.STATUSFOLDER,\r
- filePath.getFileName().toString() + EscortFiles.DOT_JSON));\r
+ removeFile(Paths.get(filePath.getParent().toString(), EscortFiles.STATUSFOLDER, filePath.getFileName().toString() + EscortFiles.DOT_CATCHED));\r
+ removeFile(Paths.get(filePath.getParent().toString(), EscortFiles.STATUSFOLDER, filePath.getFileName().toString() + EscortFiles.DOT_JSON));\r
\r
boolean result = true;\r
for (Path killDateFile : killDateFiles) {\r
// && metadataEquals;\r
\r
boolean canDelete = mcArchived && tsmArchived && metadataEquals && sizeEquals && mediaInfoAvailable;\r
- logger.info(getSessionMarker(), canDelete);\r
+ // logger.info(getSessionMarker(), canDelete);\r
\r
Date now = new Date(System.currentTimeMillis());\r
- logger.info(csvMarker, "{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};", D(now), fileName,\r
- mediaPath.getParent(), size, D(createDate), D(lastModifiedDate), D(mcArchivedDate), D(tsmBackupDate),\r
- tsmSize, YN(catchedExists), YN(killdateExists), YN(noMDExists), YN(mcArchived), YN(tsmArchived),\r
- YN(metadataEquals), YN(sizeEquals), YN(canDelete), YN(includeContains), YN(mediaInfoAvailable));\r
+ logger.info(csvMarker, "{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};{};", D(now), fileName, mediaPath.getParent(), size, D(createDate),\r
+ D(lastModifiedDate), D(mcArchivedDate), D(tsmBackupDate), tsmSize, YN(catchedExists), YN(killdateExists), YN(noMDExists), YN(mcArchived),\r
+ YN(tsmArchived), YN(metadataEquals), YN(sizeEquals), YN(canDelete), YN(includeContains), YN(mediaInfoAvailable));\r
\r
- logger.info(getSessionMarker(), "{} {}{}{}{}{}{}{}{}{}{}", mediaPath, YN(canDelete), YN(catchedExists),\r
- YN(killdateExists), YN(noMDExists), YN(mcArchived), YN(tsmArchived), YN(metadataEquals), YN(sizeEquals),\r
- YN(includeContains), YN(mediaInfoAvailable));\r
-\r
-// if (canDelete)\r
-// removeFiles(mediaPath, killDateFiles);\r
+ logger.info(getSessionMarker(), "{} {}{}{}{}{}{}{}{}{}{}", mediaPath, YN(canDelete), YN(catchedExists), YN(killdateExists), YN(noMDExists),\r
+ YN(mcArchived), YN(tsmArchived), YN(metadataEquals), YN(sizeEquals), YN(includeContains), YN(mediaInfoAvailable));\r
\r
+ /*\r
+ * if (canDelete) removeFiles(mediaPath, killDateFiles);\r
+ */\r
return true;\r
}\r
\r
return result;\r
}\r
\r
+ private Set<String> loadWhiteList(String location) throws IOException {\r
+ Set<String> result = new LinkedHashSet<>();\r
+ Path path = Paths.get(location);\r
+ List<String> lines = FileUtils.readLines(path.toFile());\r
+\r
+ for (String line : lines) {\r
+ String[] tokens = line.trim().split("\t");\r
+ if (tokens.length == 0)\r
+ continue;\r
+ result.add(tokens[0]);\r
+ }\r
+ return result;\r
+ }\r
+\r
}\r