git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C33132
]\r
},\r
{\r
- "template": "prores-archive.xml",\r
- "name" : "ProRes archiválás",\r
+ "template": "PRORES-archive-checker.xml",\r
+ "name" : "PRORES archiválás előkészítés",\r
"active": false,\r
"executeimmediate": false,\r
"parameters": \r
[ \r
- { "name": "sourceStoreFolder", "value": "c:\\data", "type": "java.lang.String" },\r
- { "name": "sourceStoreName", "value": "AMC_LOCAL", "type": "java.lang.String" },\r
+ { "name": "sourceStoreName", "value": "PRORES", "type": "java.lang.String" },\r
{ "name": "filter", "value": {"fileName": ".*\\.(mov)$"}, "type": "java.lang.String" },\r
- { "name": "targetStoreName", "value": "AMC_LOCAL", "type": "java.lang.String" },\r
- { "name": "escortStoreFolder", "value": "AMC_LOCAL", "type": "java.lang.String" }\r
+ { "name": "escortStoreName", "value": "TEST_DOWNLOADS", "type": "java.lang.String" }\r
]\r
}\r
]\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE xml>\r
+\r
+<jobtemplate multiInstance="true" useSessionLog="false">\r
+ <declarations>\r
+ <parameters>\r
+ <parameter name="sourceStoreUri" type="user.commons.StoreUri"/>\r
+ <parameter name="fileName" type="java.lang.String"/>\r
+ <parameter name="tempStoreUri" type="user.commons.StoreUri"/>\r
+ <parameter name="targetStoreUri" type="user.commons.StoreUri"/>\r
+ <parameter name="escortFile" type="java.lang.String"/>\r
+ </parameters>\r
+ <variables>\r
+ <variable name="proresFileName" type="java.lang.String"/>\r
+ </variables>\r
+ </declarations>\r
+ <commands>\r
+ <calljobstep type="PRORESTransferFromStep.java" weight="5">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="sourceStoreUri" />\r
+ </input>\r
+ <input>\r
+ <parameter name="fileName" />\r
+ </input>\r
+ <input>\r
+ <parameter name="tempStoreUri" />\r
+ </input>\r
+ <input>\r
+ <parameter name="fileName" />\r
+ </input>\r
+ </inputs>\r
+ <outputs>\r
+ <output>\r
+ <variable name="proresFileName" />\r
+ </output>\r
+ </outputs>\r
+ </calljobstep>\r
+ <calljobstep type="TSMTransferToStep.java" weight="5">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="tempStoreUri" />\r
+ </input>\r
+ <input>\r
+ <parameter name="fileName" />\r
+ </input>\r
+ <input>\r
+ <parameter name="targetStoreUri" />\r
+ </input>\r
+ <input>\r
+ <variable name="proresFileName" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
+ <calljobstep type="MetadataPersisterStep.java" weight="5">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="targetStoreUri" />\r
+ </input>\r
+ <input>\r
+ <parameter name="escortFile" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
+ <calljobstep type="FileCleanupStep.java" weight="5">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="tempStoreUri" />\r
+ </input>\r
+ <input>\r
+ <parameter name="proresFileName" />\r
+ </input>\r
+ <input>\r
+ <parameter name="escortFile" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
+ </commands>\r
+</jobtemplate>
\ No newline at end of file
<jobtemplate multiInstance="false" useSessionLog="false">\r
<declarations>\r
<parameters>\r
- <parameter name="sourceStoreFolder" type="java.lang.String" />\r
<parameter name="sourceStoreName" type="java.lang.String" />\r
- <parameter name="targetStoreName" type="java.lang.String" />\r
- <parameter name="escortStoreFolder" type="java.lang.String" />\r
+ <parameter name="escortStoreName" type="java.lang.String" />\r
<parameter name="filter" type="com.ibm.nosql.json.api.BasicDBObject" />\r
</parameters>\r
<variables>\r
<parameter name="sourceStoreName" />\r
</input>\r
<input>\r
- <parameter name="targetStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="escortStoreFolder" />\r
+ <parameter name="escortStoreName" />\r
</input>\r
</inputs>\r
</calljobstep>\r
import java.util.TreeSet;\r
import java.util.concurrent.TimeUnit;\r
import java.util.regex.Pattern;\r
+import java.util.stream.Collector;\r
+import java.util.stream.Collectors;\r
\r
import org.apache.commons.io.FileUtils;\r
import org.apache.commons.io.FilenameUtils;\r
// }\r
}\r
\r
+ @Test\r
+ public void test9999991() throws Exception {\r
+ Map<String, Integer> sut = new HashMap<String, Integer>();\r
+\r
+ sut.put("E1", 1);\r
+ sut.put("E2", 2);\r
+ sut.put("E3", 3);\r
+\r
+ Collector<Entry<String, Integer>, ?, Map<String, Integer>> collector = Collectors.toMap(x -> {\r
+ Map.Entry<String, Integer> entry = x;\r
+ return entry.getKey();\r
+ }, y -> {\r
+ Map.Entry<String, Integer> entry = y;\r
+ return entry.getValue();\r
+ });\r
+\r
+ Map<String, Integer> collected = sut.entrySet().stream().collect(collector);\r
+\r
+ }\r
}\r
@StepEntry\r
public Object[] execute(List<String> inputFiles) {\r
Map<String, MediaArea> result = new HashMap<String, MediaArea>();\r
+\r
+ int progress = 0;\r
+\r
for (int i = 0; i < inputFiles.size(); i++) {\r
String inputFileLocation = inputFiles.get(i);\r
MediaArea mediaArea = new MediaArea(Paths.get(inputFileLocation));\r
try {\r
mediaArea.process();\r
result.put(inputFileLocation, mediaArea);\r
+ progress = i * 100 / inputFiles.size();\r
+ setProgress(progress);\r
} catch (Exception e) {\r
logger.error(getSessionMarker(), "Can't analyze input {}, skipping. System message is: {}",\r
e.getMessage());\r
}\r
}\r
+\r
+ setProgress(100);\r
return new Object[] { result };\r
}\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 (result != null) {\r
+ if (result != null)\r
result.setMediaFile(filePath.toString());\r
- // 210617 proxy keszites tiltasa\r
- result.setDisableProxy(disableProxy);\r
- }\r
\r
- logger.info(getSessionMarker(), "PlanAir query done for {}", filePath);\r
} catch (Exception e) {\r
logger.error(getSessionMarker(), "PlanAir metadata error", e);\r
- // nem latja a drivert pl.\r
- throw e;\r
}\r
\r
-//210616 Ha nincs metaadat, nem archivalunk\r
-// if (result == null) {\r
-// result = new ArchiveItem();\r
-// BasicFileAttributes attr = Files.readAttributes(filePath, BasicFileAttributes.class);\r
-// result.setItemHouseId(df.format(attr.lastModifiedTime().toMillis()));\r
-// result.setItemTitle(filePath.getParent().toString());\r
-// result.setMediaHouseId(mediaHouseId);\r
-// result.setMediaTitle(fileName);\r
-// // TODO kesobb kivenni\r
-// // result.setMediaDescription("/OMARCHIVE");\r
-// result.setMediaType("Generic");\r
-// result.setMediaFile(filePath.toString());\r
-// }\r
-\r
return result;\r
}\r
\r
public class FileCleanupStep extends JobStep {\r
private static final Logger logger = LogManager.getLogger();\r
\r
+ /***\r
+ * Torli a sourceStoreUri + fileName fajlt, az escortFile-t es az\r
+ * escortFile.CATCHED file-t.\r
+ * \r
+ * @param sourceStoreUri\r
+ * @param fileName\r
+ * @param escortFile\r
+ * @return\r
+ * @throws Exception\r
+ */\r
+\r
@StepEntry\r
public Object[] execute(StoreUri sourceStoreUri, String fileName, String escortFile) throws Exception {\r
try {\r
\r
Path filePath = Paths.get(sourceStoreUri.toString(true), fileName);\r
EscortFiles.remove(filePath);\r
- EscortFiles.remove(Paths.get(escortFile));\r
- EscortFiles.remove(Paths.get(escortFile + EscortFiles.DOT_CATCHED));\r
+\r
+ Path escortFilePath = Paths.get(escortFile);\r
+ if (escortFilePath.toFile().exists())\r
+ EscortFiles.remove(escortFilePath);\r
+\r
+ Path escortCatchedFilePath = Paths.get(escortFile + EscortFiles.DOT_CATCHED);\r
+ if (escortCatchedFilePath.toFile().exists())\r
+ EscortFiles.remove(escortCatchedFilePath);\r
} catch (Exception e) {\r
logger.error(e.getMessage());\r
throw e;\r
if (targetExists(tempStoreUri, sourceFileName))\r
priority = 51;\r
\r
- //parameterek: IJobRuntime parent, String template, String name, int priority, Map<String, Object> parameters\r
+ // parameterek: IJobRuntime parent, String template, String name, int priority,\r
+ // Map<String, Object> parameters\r
IJobRuntime child = getEngine().submit(null, e -> {\r
IJobRuntime r = (IJobRuntime) e.getSource();\r
- if (r.isDisableRetry())\r
- return;\r
-\r
- if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED))\r
- EscortFiles.removeCatchedFile(escortFile);\r
-\r
- if (e.getStatus().equals(JobStatus.FINISHED) && "PBARCHIVE".equals(sourceStoreName)) {\r
- try {\r
- FtpDirectoryLister lister = (FtpDirectoryLister) sourceStoreUri.getLister();\r
- RemoteFile remoteFile = lister.get(sourceFileName);\r
- if (remoteFile == null)\r
- logger.info(getMarker(), "Remote file for {} is not available", sourceFileName);\r
- else {\r
- logger.info(getMarker(), "Remote file {} successfully archived, deleting...",\r
- sourceFileName);\r
- lister.delete(remoteFile);\r
- }\r
- } catch (Exception ex) {\r
- logger.error(getMarker(), ex.getMessage());\r
- } finally {\r
- if (sourceStoreUri != null)\r
- sourceStoreUri.cleanUp();\r
- }\r
+ if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED)) {\r
+ if (r.isDisableRetry())\r
+ EscortFiles.removeCatchedFile(escortFile);\r
+ }\r
+\r
+ if (e.getStatus().equals(JobStatus.FINISHED)) {\r
+ if ("PBARCHIVE".equals(sourceStoreName))\r
+ successPBARCHIVEPostProcess(sourceStoreUri, sourceFileName, r);\r
+ if ("PRORES".equals(sourceStoreName))\r
+ successPRORESPostProcess(sourceStoreUri, sourceFileName, r);\r
}\r
\r
}, template, "Archiválás", priority, IJobEngine.DEFAULT_OWNER, parameters);\r
return true;\r
}\r
\r
+ private void successPBARCHIVEPostProcess(StoreUri sourceStoreUri, String sourceFileName, IJobRuntime runtime) {\r
+ try {\r
+ FtpDirectoryLister lister = (FtpDirectoryLister) sourceStoreUri.getLister();\r
+ RemoteFile remoteFile = lister.get(sourceFileName);\r
+ if (remoteFile == null)\r
+ logger.info(getMarker(), "Remote file for {} is not available", sourceFileName);\r
+ else {\r
+ logger.info(getMarker(), "Remote file {} successfully archived, deleting...", sourceFileName);\r
+ lister.delete(remoteFile);\r
+ }\r
+ } catch (Exception ex) {\r
+ logger.error(getMarker(), ex.getMessage());\r
+ } finally {\r
+ if (sourceStoreUri != null)\r
+ sourceStoreUri.cleanUp();\r
+ }\r
+ }\r
+\r
+ private void successPRORESPostProcess(StoreUri sourceStoreUri, String sourceFileName, IJobRuntime runtime) {\r
+ try {\r
+ Path filePath = Paths.get(sourceStoreUri.toString(true), sourceFileName);\r
+ EscortFiles.remove(filePath);\r
+\r
+ if (EscortFiles.isMediaCatched(filePath))\r
+ EscortFiles.remove(EscortFiles.createMediaCatchFilePath(filePath));\r
+\r
+ } catch (Exception ex) {\r
+ logger.error(getMarker(), ex.getMessage());\r
+ } finally {\r
+ if (sourceStoreUri != null)\r
+ sourceStoreUri.cleanUp();\r
+ }\r
+ }\r
+\r
private boolean targetExists(StoreUri storeUri, String fileName) {\r
try {\r
Path targetFile = Paths.get(storeUri.toString(true), fileName);\r
package user.jobengine.server.steps;\r
\r
import java.io.IOException;\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.nio.file.attribute.FileTime;\r
import java.sql.Timestamp;\r
+import java.util.Date;\r
import java.util.Map;\r
import java.util.Set;\r
\r
private static final Logger logger = LogManager.getLogger();\r
\r
@StepEntry\r
- public Object[] execute(Map<String, MediaArea> files, String sourceStoreName, String targetStoreName,\r
- String escortStoreFolder) {\r
+ public Object[] execute(Map<String, MediaArea> files, String sourceStoreName, String escortStoreName)\r
+ throws Exception {\r
+\r
+ int progress = 0;\r
+ int i = 0;\r
if (files != null && !files.isEmpty()) {\r
+\r
+ StoreUri sourceStoreUri = getManager().getStoreUri(sourceStoreName, RemoteStoreProtocol.LOCAL);\r
+ StoreUri targetStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM);\r
+ StoreUri escortStoreUri = getManager().getStoreUri(escortStoreName, RemoteStoreProtocol.LOCAL);\r
+ String outputPath = Paths.get(escortStoreUri.toString(true)).toString();\r
+\r
Set<String> keys = files.keySet();\r
for (String inputFileLocation : keys) {\r
MediaArea mediaArea = files.get(inputFileLocation);\r
try {\r
- processItem(sourceStoreName, targetStoreName, escortStoreFolder, inputFileLocation, mediaArea);\r
+ processItem(inputFileLocation, sourceStoreName, sourceStoreUri, targetStoreUri, outputPath,\r
+ mediaArea);\r
+ progress = i * 100 / files.size();\r
+ setProgress(progress);\r
+ i++;\r
} catch (Exception e) {\r
logger.error(getSessionMarker(), e.getMessage());\r
logger.catching(e);\r
}\r
}\r
- } else {\r
- logger.info("files is empty!");\r
}\r
+\r
+ setProgress(100);\r
+\r
return null;\r
}\r
\r
- private void processItem(String sourceStoreName, String targetStoreName, String escortStoreFolder,\r
- String inputFileLocation, MediaArea mediaArea) throws Exception {\r
- Path inputPath = Paths.get(inputFileLocation);\r
-\r
- String fileName = inputPath.getFileName().toString();\r
+ private void processItem(String inputFileLocation, String sourceStoreName, StoreUri sourceStoreUri,\r
+ StoreUri targetStoreUri, String outputPath, MediaArea mediaArea) throws Exception {\r
+ Path inputFilePath = Paths.get(inputFileLocation);\r
+ String fileName = inputFilePath.getFileName().toString();\r
String title = FilenameUtils.removeExtension(fileName);\r
- Timestamp created = null;\r
- Timestamp modified = null;\r
- long frameCount = mediaArea.getFrameCount();\r
- StoreUri sourceStoreUri = getManager().getStoreUri(sourceStoreName, RemoteStoreProtocol.LOCAL);\r
- StoreUri targetStoreUri = getManager().getStoreUri(targetStoreName, RemoteStoreProtocol.LOCAL);\r
- StoreUri escortStoreUri = getManager().getStoreUri(escortStoreFolder, RemoteStoreProtocol.LOCAL);\r
- String outputPath = Paths.get(escortStoreUri.toString(true)).toString();\r
+ BasicFileAttributes attr = Files.readAttributes(inputFilePath, BasicFileAttributes.class);\r
+ FileTime creationTime = attr.creationTime();\r
+ FileTime lastModifiedTime = attr.lastModifiedTime();\r
\r
- DownloadableMedia downloadable = DownloadableMedia.create(title, fileName, modified, created, frameCount, 0,\r
+ Timestamp created = Timestamp.from(new Date(creationTime.toMillis()).toInstant());\r
+ Timestamp modified = Timestamp.from(new Date(lastModifiedTime.toMillis()).toInstant());\r
+ long frameCount = mediaArea.getFrameCount();\r
+ long size = inputFilePath.toFile().length();\r
+ DownloadableMedia downloadable = DownloadableMedia.create(title, fileName, modified, created, frameCount, size,\r
sourceStoreUri.getId(), targetStoreUri.getId(), 0);\r
- String escortFileName = targetStoreName + "." + downloadable.getString("fileName"); // needed without\r
- // extension\r
+ downloadable.append("addStoreNameAsFilePrefix", true);\r
+\r
+ String escortFileName = sourceStoreName + "." + downloadable.getString("fileName");\r
+\r
try {\r
if (EscortFiles.createMetadataIfNotExists(outputPath, escortFileName, downloadable.toPrettyString(""))) {\r
logger.info(getMarker(), "Archive status file created for {}", inputFileLocation);\r
} else {\r
logger.info(getMarker(), "Archive status file already exists for {}", inputFileLocation);\r
}\r
+ EscortFiles.createMediaCatch(inputFilePath);\r
} catch (IOException e) {\r
logger.error("{}", e.getCause());\r
e.printStackTrace();\r
try {\r
\r
Path escortFilePath = Paths.get(escortFile);\r
- //ha nem ment at a letoltott file az ellenorzesen, akkor már torolve lett\r
+ // ha nem ment at a letoltott file az ellenorzesen, akkor már torolve lett\r
if (escortFilePath.toFile().exists()) {\r
String escortFileName = escortFilePath.getFileName().toString();\r
String sourceStoreName = escortFileName.substring(0, escortFileName.indexOf("."));\r
String fileName = downloadable.getString("fileName");\r
long mediaId = downloadable.containsKey("mediaId") ? downloadable.getLong("mediaId") : 0;\r
String fileTypeName = fileName.substring(fileName.lastIndexOf(".") + 1).toUpperCase();\r
+ boolean addStoreNameAsFilePrefix = downloadable.getBoolean("addStoreNameAsFilePrefix");\r
\r
IItemManager manager = getManager();\r
\r
mediaId = tryGetMediaId(title, mediaId);\r
}\r
\r
- //TODO ha van mediaId, akkor update!!!!!!!!!\r
+ // TODO ha van mediaId, akkor update!!!!!!!!!\r
\r
Timestamp modified = downloadable.getTimestamp("modified");\r
Timestamp created = downloadable.getTimestamp("created");\r
\r
String targetStoreName = getManager().getStore(targetStoreUri.getStoreId()).getName();\r
if (mediaId == 0) {\r
- //ez elszallhat, mert nincs filetype vagy store\r
- MediaFile mediaFile = manager.createMediaFile(fileName, fileTypeName, targetStoreName);\r
- //ez elszallhat, mert nincs itemtype\r
+ // ez elszallhat, mert nincs filetype vagy store\r
+ String mediaFileName = fileName;\r
+ if (addStoreNameAsFilePrefix)\r
+ mediaFileName = sourceStoreName + "_" + fileName;\r
+ MediaFile mediaFile = manager.createMediaFile(mediaFileName, fileTypeName, targetStoreName);\r
+ // ez elszallhat, mert nincs itemtype\r
Item item = manager.createItem(GENERIC, title, sourceStoreName, null);\r
- //ez elszallhat, mert nincs itemtype\r
+ // ez elszallhat, mert nincs itemtype\r
Media media = manager.createMedia(GENERIC, title, sourceStoreName, null);\r
\r
- //TODO megoldani egy tranzakcioban\r
+ // TODO megoldani egy tranzakcioban\r
item.add();\r
media.setItemId(item.getId());\r
media.setLength(frames);\r
media.setArchived(Timestamp.from(Instant.now()));\r
media.add();\r
\r
- //TODO\r
- //mediaFile.setFileSize(fileSize);\r
+ // TODO\r
+ // mediaFile.setFileSize(fileSize);\r
mediaFile.setMediaId(media.getId());\r
mediaFile.setLastModified(modified);\r
mediaFile.add();\r
media.setArchived(Timestamp.from(Instant.now()));\r
manager.modify(media);\r
\r
- //TODO\r
- //mediaFile.setFileSize(fileSize);\r
+ // TODO\r
+ // mediaFile.setFileSize(fileSize);\r
MediaFile mediaFile = manager.getSystemMediaFile(media);\r
if (mediaFile == null) {\r
mediaFile = manager.createMediaFile(fileName, fileTypeName, targetStoreName);\r
\r
private long tryGetMediaId(String title, long mediaId) {\r
Media media = null;\r
- //duplikatum miatt\r
+ // duplikatum miatt\r
try {\r
media = getManager().getMedia(title);\r
if (media != null)\r
mediaId = media.getId();\r
} catch (Exception e) {\r
- logger.error(getMarker(), "Media with title {} is not available. System message is: {}", title, e.getMessage());\r
+ logger.error(getMarker(), "Media with title {} is not available. System message is: {}", title,\r
+ e.getMessage());\r
}\r
return mediaId;\r
}\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import user.commons.StoreUri;\r
+\r
+public class PRORESTransferFromStep extends TransferStep {\r
+ private static final Logger logger = LogManager.getLogger();\r
+\r
+ @Override\r
+ @StepEntry\r
+ public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri,\r
+ String targetFileName) throws Exception {\r
+ String proresFileName = "PRORES_" + targetFileName;\r
+ logger.info("Saving {}", proresFileName);\r
+ super.execute(sourceStoreUri, sourceFileName, targetStoreUri, proresFileName);\r
+ return new Object[] { proresFileName };\r
+ }\r
+}\r
\r
import java.nio.file.Path;\r
\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
import com.ibm.nosql.json.api.BasicDBObject;\r
\r
import user.commons.StoreUri;\r
public class ProResArchiveCheckerStep extends PathItemsCollectorStep {\r
public static final String DOT_CATCHED = ".catched";\r
public static final String STATUSFOLDER = ".STATUS";\r
+ public static final Logger logger = LogManager.getLogger();\r
\r
@Override\r
protected FileSearchFilterOptions createFileFilter(BasicDBObject filter) {\r
@Override\r
@StepEntry\r
public Object[] execute(String sourceStoreName, BasicDBObject filter) throws Exception {\r
+\r
StoreUri sourceStoreUri = getManager().getStoreUri(sourceStoreName, RemoteStoreProtocol.LOCAL);\r
- String sourceStoreFolder = sourceStoreUri.toString(false);\r
+ String sourceStoreFolder = sourceStoreUri.toString(true);\r
+\r
+ logger.info(getMarker(), "Source path is {}", sourceStoreFolder);\r
return super.execute(sourceStoreFolder, filter);\r
}\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
}\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
+ // logger.info(getSessionMarker(), json.toString());\r
+ result = ArchiveItem.fromJSONObject(json);\r
+ }\r
+\r
+ if (result == null) {\r
+ logger.info(getSessionMarker(), "Metadata not available for {}", mediaHouseId);\r
+\r
+ if (mediaHouseId.charAt(mediaHouseId.length() - 2) == '-') {\r
+ mediaHouseId = mediaHouseId.substring(0, mediaHouseId.length() - 2);\r
+ logger.info(getSessionMarker(), "Checking metadata for {}", mediaHouseId);\r
+ ArchiveItem metadata = getPlanAirMetadata(mediaHouseId);\r
+ if (metadata == null)\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
+ result = metadata;\r
+ }\r
+ }\r
+ }\r
+\r
}\r
+\r
return result;\r
}\r
\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
+// if (canDelete)\r
+// removeFiles(mediaPath, killDateFiles);\r
\r
return true;\r
}\r
package user.jobengine.server.steps;\r
\r
-import user.commons.RemoteFile;\r
import user.commons.StoreUri;\r
-import user.commons.remotestore.IDirectoryLister;\r
\r
public class TSMTransferToStep extends TransferStep {\r
@Override\r
@StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
+ public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri,\r
+ String targetFileName) throws Exception {\r
Object[] result = super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
-\r
- IDirectoryLister lister = targetStoreUri.getLister();\r
- RemoteFile remoteFile = lister.get(targetFileName);\r
-\r
return result;\r
}\r
}\r
\r
@StepEntry\r
public Object[] execute(Map<String, MediaArea> inputFiles) {\r
+ int[] progress = new int[] { 0 };\r
+ int[] i = new int[] { 0 };\r
+\r
+ logger.info(getMarker(), "Starting ValidateProResStep");\r
\r
Map<String, MediaArea> result = inputFiles.entrySet().stream().filter(fileEntry -> {\r
String fileLocation = fileEntry.getKey();\r
MediaArea mediaArea = inputFiles.get(fileLocation);\r
String videoFormat = mediaArea.getFormat();\r
- boolean isProRes = mediaArea.getFrameRate() == FRAMERATE && videoFormat.equals(PRORES);\r
- logger.info(getSessionMarker(), "{} is PRORES {}", fileLocation, isProRes);\r
+ boolean isProRes = mediaArea.getFrameRate() == FRAMERATE && videoFormat != null\r
+ && videoFormat.toUpperCase().equals(PRORES);\r
+ logger.info(getMarker(), "{} is PRORES {}", fileLocation, isProRes);\r
+ i[0]++;\r
+ progress[0] = i[0] * 100 / inputFiles.size();\r
+ int p = progress[0];\r
+ setProgress(p);\r
return isProRes;\r
- }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));\r
+ }).collect(Collectors.toMap(t -> t.getKey(), t -> t.getValue()));\r
+\r
+ setProgress(100);\r
\r
return new Object[] { result };\r
}\r
}\r
\r
public static void createCatchedFile(Path escortFile) throws IOException {\r
- Path catchedFilePath = Paths.get(escortFile.toString() + DOT_CATCHED);\r
+ String catchedFileName = escortFile.toString() + DOT_CATCHED;\r
+ Path catchedFilePath = Paths.get(catchedFileName);\r
Files.createFile(catchedFilePath);\r
}\r
\r
}\r
\r
public static Path createMediaCatchFilePath(Path mediaFile) {\r
- return Paths.get(mediaFile.getParent().toString(), STATUSFOLDER, mediaFile.getFileName() + DOT_CATCHED);\r
+ String catchFileName = mediaFile.getFileName().toString() + DOT_CATCHED;\r
+ return Paths.get(mediaFile.getParent().toString(), STATUSFOLDER, catchFileName);\r
}\r
\r
public static void createMetadata(String filePath, String fileName, String metadata) throws IOException {\r
}\r
\r
public static boolean isCatchedFileExists(Path escortFile) {\r
- Path catchedFilePath = Paths.get(escortFile.toString() + DOT_CATCHED);\r
+ String catchedFileName = escortFile.toString() + DOT_CATCHED;\r
+ Path catchedFilePath = Paths.get(catchedFileName);\r
return Files.exists(catchedFilePath);\r
}\r
\r
@\r
\r
INSERT INTO STOREURI(STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER) VALUES\r
-((SELECT ID FROM STORE WHERE NAME='PRORES'),'LOCAL',null,'/mediacube/data','N','Y','Y',null,null,null,null)\r
+((SELECT ID FROM STORE WHERE NAME='PRORES'),'LOCAL',null,'s:/','N','Y','Y',null,null,null,null)\r
@\r
\r
-- //@UNDO\r
-- SQL to undo the change goes here.\r
-DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='AMC_LOCAL')\r
+DELETE FROM STOREURI WHERE STOREID=(SELECT ID FROM STORE WHERE NAME='PRORES')\r
@\r
-DELETE FROM STORE WHERE NAME='AMC_LOCAL'\r
+DELETE FROM STORE WHERE NAME='PRORES'\r
@\r