import java.util.List;\r
\r
import org.apache.commons.io.FilenameUtils;\r
+import org.apache.ibatis.jdbc.SQL;\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
\r
\r
String fileName = filePath.getFileName().toString();\r
String mediaHouseId = FilenameUtils.removeExtension(fileName);\r
+\r
+ String mediaHouseIdUpper = mediaHouseId.toUpperCase();\r
+ if (mediaHouseIdUpper.endsWith("_CLEAN"))\r
+ mediaHouseId = mediaHouseIdUpper.replace("_CLEAN", "");\r
+\r
try {\r
result = getPlanAirMetadata(mediaHouseId);\r
\r
if (fileName.startsWith(".") || fileName.endsWith(".nomd"))\r
return true;\r
\r
- logger.info(getSessionMarker(), "Checking {}", mediaPath);\r
+ // logger.info(getSessionMarker(), "Checking {}", mediaPath);\r
\r
ArchiveItem archiveItem = createArchiveItem(mediaPath);\r
MediaFile mediaFile = getMediaFile(fileName);\r
tsmSize = tsmFile.getSize();\r
sizeEquals = tsmSize == size;\r
\r
- if (sizeEquals && !metadataEquals) {\r
- logger.info(getSessionMarker(), "Metadata sync required for {}", mediaPath);\r
+ if (archiveItem == null) {\r
+ // korabban mentettuk metaadat nelkul\r
+ logger.info(getSessionMarker(), "Metadata not available for {}", mediaPath);\r
+ } else {\r
+ if (sizeEquals && !metadataEquals) {\r
+ syncMetadata(mediaPath, item, media, archiveItem, mediaFile);\r
+ logger.info(getSessionMarker(), "Metadata sync applied for {}", mediaPath);\r
+ }\r
}\r
+\r
}\r
}\r
\r
return true;\r
}\r
\r
+ public String createUpdateItemQuery(long itemId, ArchiveItem archiveItem) {\r
+ SQL sql = new SQL();\r
+ sql.UPDATE("ITEM");\r
+ sql.SET(String.format("HOUSEID='%s'", archiveItem.getItemHouseId()));\r
+ sql.SET(String.format("TITLE='%s'", archiveItem.getItemTitle()));\r
+ sql.WHERE(String.format("ID = %d", itemId));\r
+ return sql.toString();\r
+ }\r
+\r
+ public String createUpdateMediaQuery(long mediaId, ArchiveItem archiveItem) {\r
+ SQL sql = new SQL();\r
+ sql.UPDATE("MEDIA");\r
+ sql.SET(String.format("HOUSEID='%s'", archiveItem.getMediaHouseId()));\r
+ sql.SET(String.format("TITLE='%s'", archiveItem.getMediaTitle()));\r
+ sql.SET(String.format("DESCRIPTION='%s'", archiveItem.getMediaDescription()));\r
+ sql.WHERE(String.format("ID = %d", mediaId));\r
+ return sql.toString();\r
+ }\r
+\r
+ private void syncMetadata(Path mediaPath, Item item, Media media, ArchiveItem archiveItem, MediaFile mediaFile) {\r
+ String sql = createUpdateItemQuery(item.getId(), archiveItem);\r
+ getManager().executeUpdate(sql, null, null);\r
+ // logger.info(getSessionMarker(), sql);\r
+ sql = createUpdateMediaQuery(media.getId(), archiveItem);\r
+ // logger.info(getSessionMarker(), sql);\r
+ getManager().executeUpdate(sql, null, null);\r
+ }\r
+\r
@Override\r
public FileVisitResult visitFile(Path filePath, BasicFileAttributes paramBasicFileAttributes) throws IOException {\r
+ FileVisitResult result = FileVisitResult.CONTINUE;\r
+\r
try {\r
if (!processPathItem(filePath))\r
- return FileVisitResult.TERMINATE;\r
+ result = FileVisitResult.TERMINATE;\r
} catch (Exception e) {\r
logger.catching(e);\r
+ result = FileVisitResult.TERMINATE;\r
}\r
- return FileVisitResult.CONTINUE;\r
+ return result;\r
}\r
\r
@Override\r
MediaFile getMediaFile(String fileName) {\r
MediaFile result = null;\r
MediaFileDAO mfDAO = (MediaFileDAO) getManager().getBaseDAO(MediaFile.class);\r
+ // a houseid az mxf kiterjesztesu file\r
List<IEntityBase> mfList = mfDAO.getByHouseId(fileName);\r
if (mfList != null && mfList.size() == 1)\r
result = (MediaFile) mfList.get(0);\r