+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<executors>\r
- <executor className="RundownFilesCollectorStep.java" maxConcurrent="1" isRemote="false" />\r
- <executor className="ServerStatusReportStep.java" maxConcurrent="1" isRemote="false" />\r
- <executor className="TransferStep.java" maxConcurrent="1" isRemote="false" />\r
- <executor className="TSMTransferToStep.java" maxConcurrent="4" isRemote="false" />\r
- <executor className="TSMTransferFromStep.java" maxConcurrent="8" isRemote="false" />\r
- <executor className="NEXIO1TransferToStep.java" maxConcurrent="4" isRemote="false" />\r
- <executor className="NEXIO2TransferToStep.java" maxConcurrent="4" isRemote="false" />\r
- <executor className="PASAPOOLTransferToStep.java" maxConcurrent="4" isRemote="false" />\r
- <executor className="FILEZILLA_PASARESTORETransferToStep.java" maxConcurrent="4" isRemote="false" />\r
- <executor className="FILEZILLA_AVIDTransferToStep.java" maxConcurrent="4" isRemote="false" />\r
- <executor className="NEXIO1TransferFromStep.java" maxConcurrent="2" isRemote="false" />\r
- <executor className="NEXIO2TransferFromStep.java" maxConcurrent="2" isRemote="false" />\r
- <executor className="VODTransferToStep.java" maxConcurrent="3" isRemote="false" />\r
- <executor className="RegisterVODRestoreStep.java" maxConcurrent="1" isRemote="false" />\r
-\r
- <executor className="RegisterUserRestoreStep.java" maxConcurrent="3" isRemote="false" />\r
- <executor className="FileValidatorStep.java" maxConcurrent="10" isRemote="false" />\r
- <executor className="MetadataPersisterStep.java" maxConcurrent="10" isRemote="false" />\r
- <executor className="FileCleanupStep.java" maxConcurrent="10" isRemote="false" />\r
- <executor className="ForkUploadStep.java" maxConcurrent="1" isRemote="false" />\r
- <executor className="ForkDownloadStep.java" maxConcurrent="1" isRemote="false" />\r
- <executor className="NEXIOArchiveCheckerStep.java" maxConcurrent="2" isRemote="false" />\r
- <executor className="NEXIOMetadataPersisterStep.java" maxConcurrent="5" isRemote="false" />\r
- <executor className="HarrisMissingMaterialCheckerStep.java" maxConcurrent="2" isRemote="false" />\r
- <executor className="PeableBeachMissingMaterialCheckerStep.java" maxConcurrent="1" isRemote="false" />\r
-\r
- <executor className="CancelableStep.java" maxConcurrent="2" isRemote="false" />\r
- <executor className="TestForkCancelableStep.java" maxConcurrent="3" isRemote="false" />\r
- <executor className="DirMXFValidatorStep.java" maxConcurrent="1" isRemote="false" />\r
-</executors>
\ No newline at end of file
+++ /dev/null
-{"joblist":[\r
- {\r
- "template": "sync-subtitles.xml",\r
- "name" : "Feliratok szinkronizálása",\r
- "parameters": [ \r
- {"name": "sourceFolder", "value": "y:\\IBMS_Rundowns", "type": "java.lang.String"}, \r
- { \r
- "name": "filter", \r
- "value": {\r
- "fileName": ".*\\.(txt)$"\r
- }, \r
- "type": "com.ibm.nosql.json.api.BasicDBObject"\r
- } \r
- ]\r
- },\r
- {\r
- "template": "server-status-report.xml",\r
- "name" : "MediaCube státusz",\r
- "active": true,\r
- "executeimmediate": false,\r
- "cronexpression": "0 */30 * * * ?"\r
- },\r
- {\r
- "template": "nexio1-archive-checker.xml",\r
- "name" : "NEXIO1 archiválás előkészítése",\r
- "active": true,\r
- "executeimmediate": false,\r
- "cronexpression": "0 0 */1 * * ?",\r
- "parameters": \r
- [ \r
- {"name": "sourceStoreName", "value": "NEXIO1", "type": "java.lang.String"},\r
- {"name": "escortStoreName", "value": "MEDIACUBE_DOWNLOADS", "type": "java.lang.String"},\r
- {"name": "lastModifiedHours", "value": 3, "type": "java.lang.Integer"}\r
- ]\r
- }, \r
- {\r
- "template": "nexio2-archive-checker.xml",\r
- "name" : "NEXIO2 archiválás előkészítése",\r
- "active": true,\r
- "executeimmediate": false,\r
- "cronexpression": "0 0 */1 * * ?",\r
- "parameters": \r
- [ \r
- {"name": "sourceStoreName", "value": "NEXIO2", "type": "java.lang.String"},\r
- {"name": "escortStoreName", "value": "MEDIACUBE_DOWNLOADS", "type": "java.lang.String"},\r
- {"name": "lastModifiedHours", "value": 3, "type": "java.lang.Integer"}\r
- ]\r
- },\r
- {\r
- "template": "fork-validate-and-archive.xml",\r
- "name" : "Kötegelt validálás és archiválás",\r
- "active": true,\r
- "executeimmediate": false,\r
- "cronexpression": "0 */30 * * * ?",\r
- "parameters": \r
- [ \r
- {"name": "sourceStoreName", "value": "MEDIACUBE_DOWNLOADS", "type": "java.lang.String"},\r
- {"name": "template", "value": "validate-and-archive.xml", "type": "java.lang.String"},\r
- {"name": "expectedColorSpace", "value": "", "type": "java.lang.String"},\r
- {"name": "limit", "value": 100, "type": "java.lang.Integer"}\r
- ]\r
- },\r
- {\r
- "template": "harris1-missingmaterial-checker.xml",\r
- "name" : "HARRIS1 missing material lekérdezés",\r
- "active": true,\r
- "executeimmediate": false,\r
- "cronexpression": "0 */5 * * * ?",\r
- "parameters": \r
- [ \r
- {"name": "vicFiles", "value": ["z:\\NEXIO.VIC", "z:\\EDIT 9.VIC", "z:\\TRIM2.VIC"], "type": "com.ibm.nosql.json.api.BasicDBList"},\r
- {"name": "escortStoreName", "value": "MEDIACUBE_UPLOADS", "type": "java.lang.String"},\r
- {"name": "targetStoreName", "value": "NEXIO1", "type": "java.lang.String"},\r
- {"name": "targetProtocol", "value": "FTP", "type": "java.lang.String"}\r
- ]\r
- },\r
- {\r
- "template": "harris2-missingmaterial-checker.xml",\r
- "name" : "HARRIS2 missing material lekérdezés",\r
- "active": true,\r
- "executeimmediate": false,\r
- "cronexpression": "0 */5 * * * ?",\r
- "parameters": \r
- [ \r
- {"name": "vicFiles", "value": ["z:\\NEXIO2.VIC", "z:\\EDIT-4.VIC", "z:\\EDIT 10.VIC"], "type": "com.ibm.nosql.json.api.BasicDBList"},\r
- {"name": "escortStoreName", "value": "MEDIACUBE_UPLOADS", "type": "java.lang.String"},\r
- {"name": "targetStoreName", "value": "NEXIO2", "type": "java.lang.String"},\r
- {"name": "targetProtocol", "value": "FTP", "type": "java.lang.String"}\r
- ]\r
- },\r
- {\r
- "template": "peablebeach-missingmaterial-checker.xml",\r
- "name" : "PEABLEBEACH missing material lekérdezés",\r
- "active": true,\r
- "executeimmediate": false,\r
- "cronexpression": "0 */5 * * * ?",\r
- "parameters": \r
- [ \r
- {"name": "escortStoreName", "value": "MEDIACUBE_UPLOADS", "type": "java.lang.String"},\r
- {"name": "lookupStoreNames", "value": ["PEABLEBEACH", "PASAPOOL", "SELENIOPOOL", "SELENIOPOOL_16_9", "SELENIOPOOL_16_9_PROCESSING", "SELENIOPOOL_4_3", "SELENIOPOOL_4_3_PROCESSING"], "type": "com.ibm.nosql.json.api.BasicDBList"},\r
- {"name": "targetStoreName", "value": "PASAPOOL", "type": "java.lang.String"},\r
- {"name": "targetProtocol", "value": "FTP", "type": "java.lang.String"},\r
- {"name": "primaryEndPoint", "value": "http://10.170.100.61:18083", "type": "java.lang.String"},\r
- {"name": "primaryUserName", "value": "pbs", "type": "java.lang.String"},\r
- {"name": "primaryPassword", "value": "pbs", "type": "java.lang.String"},\r
- {"name": "secondaryEndPoint", "value": "http://10.170.100.62:18083", "type": "java.lang.String"},\r
- {"name": "secondaryUserName", "value": "pbs", "type": "java.lang.String"},\r
- {"name": "secondaryPassword", "value": "pbs", "type": "java.lang.String"},\r
- {"name": "rangeForwardHours", "value": 168, "type": "java.lang.Integer"}\r
- ]\r
- },\r
- {\r
- "template": "fork-validate-and-restore.xml",\r
- "name" : "Kötegelt validálás és visszatöltés",\r
- "active": true,\r
- "executeimmediate": false,\r
- "cronexpression": "0 */1 * * * ?",\r
- "parameters": \r
- [ \r
- {"name": "sourceStoreName", "value": "MEDIACUBE_UPLOADS", "type": "java.lang.String"},\r
- {"name": "template", "value": "validate-and-restore.xml", "type": "java.lang.String"},\r
- {"name": "expectedColorSpace", "value": "", "type": "java.lang.String"},\r
- {"name": "limit", "value": 0, "type": "java.lang.Integer"}\r
- ]\r
- },\r
- {\r
- "template": "register-user-restore.xml",\r
- "name" : "Felhasználói visszatöltés regisztráció",\r
- "active": false,\r
- "executeimmediate": false,\r
- "parameters": \r
- [ \r
- {"name": "escortStoreName", "value": "MEDIACUBE_UPLOADS", "type": "java.lang.String"}\r
- ]\r
- } \r
-]}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import org.apache.commons.net.ftp.FTPClient;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.FtpDirectoryLister;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-\r
-public class CancelableStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- int count = 10;\r
-\r
- @StepEntry\r
- public Object[] execute(int param) throws Exception {\r
- try {\r
- // ftpTest();\r
-\r
- for (int i = 0; i < count; i++) {\r
- if (getJobRuntime().isWaitingCancel())\r
- break;\r
- Thread.sleep(500);\r
- int progress = (i + 1) * 100 / count;\r
- setProgress(progress);\r
- \r
- }\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- throw e;\r
- }\r
- return null;\r
- }\r
-\r
- void ftpTest() throws Exception {\r
- StoreUri source = null;\r
- StoreUri target = null;\r
- try {\r
- source = getManager().getStoreUri("MEDIACUBE_UPLOADS", RemoteStoreProtocol.LOCAL);\r
- target = getManager().getStoreUri("NEXIO1", RemoteStoreProtocol.FTP);\r
- source.addProgressListener(e -> setProgress(e.getProgress()));\r
- logger.info("Uploading file PART_TEST.mxf");\r
- source.transferFrom(target, "PART_TEST.mxf", "PART_TEST.mxf");\r
- FTPClient client = ((FtpDirectoryLister) target.getLister()).connect();\r
- logger.info("Renaming file PART_TEST.mxf to RENAME_TEST.mxf");\r
- client.rename("PART_TEST.mxf", "RENAME_TEST.mxf");\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- } finally {\r
- if (target != null)\r
- target.cleanUp();\r
- if (source != null)\r
- source.cleanUp();\r
- }\r
-\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.DirectoryStream;\r
-import java.nio.file.Files;\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.mediatool.MediaInfo;\r
-import user.jobengine.db.Media;\r
-\r
-public class DirMXFValidatorStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(String source) throws Exception {\r
- Path path = Paths.get(source);\r
- DirectoryStream<Path> directoryStream = Files.newDirectoryStream(path);\r
- for (Path file : directoryStream) {\r
- if (getJobRuntime().isWaitingCancel()) {\r
- cancel();\r
- return null;\r
- }\r
-\r
- if (file.toFile().isDirectory())\r
- continue;\r
-\r
- String fileName = file.getFileName().toString();\r
- if (fileName.contains("."))\r
- fileName = fileName.substring(0, fileName.lastIndexOf("."));\r
-\r
- if (file.toFile().length() == 0) {\r
- logger.error("Zero: {}", fileName);\r
- continue;\r
- }\r
-\r
- Media media = getManager().getMedia(fileName);\r
- long frames = 0;\r
- if (media == null) {\r
- logger.warn("Unchecked yet: {}", fileName);\r
- } else\r
- frames = media.getLength();\r
-\r
- MediaInfo mi = null;\r
-\r
- try {\r
- mi = new MediaInfo(file);\r
- mi.process();\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- logger.error("Unreadable: {}", fileName);\r
- }\r
-\r
- logger.info("Valid: {} MC farmes {} FF frames {}", fileName, frames, mi.getFrames());\r
- }\r
-\r
- return null;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import user.commons.StoreUri;\r
-\r
-public class FILEZILLA_AVIDTransferToStep extends TransferStep {\r
- @Override\r
- @StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
- return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import user.commons.StoreUri;\r
-\r
-public class FILEZILLA_PASARESTORETransferToStep extends TransferStep {\r
- @Override\r
- @StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
- return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-import org.apache.logging.log4j.message.Message;\r
-import org.apache.logging.log4j.message.ParameterizedMessage;\r
-\r
-import user.commons.StoreUri;\r
-\r
-public class FileCleanupStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String fileName, String escortFile) throws Exception {\r
- try {\r
-\r
- Message msg = new ParameterizedMessage("A {} fájl visszatöltése befejeződött.", fileName);\r
- EscortFiles.notifyRecipient(Paths.get(escortFile), logger, msg);\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
- } catch (Exception e) {\r
- logger.error(e.getMessage());\r
- throw e;\r
- }\r
- return null;\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.util.regex.Matcher;\r
-import java.util.regex.Pattern;\r
-\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-\r
-public class FileSearchFilterOptions {\r
-\r
- private BasicDBObject filter;\r
-\r
- public FileSearchFilterOptions(BasicDBObject filter) {\r
- this.filter = filter;\r
- }\r
-\r
- public boolean acceptFile(Path file) {\r
- if (filter == null)\r
- return true;\r
-\r
- if (filter.containsKey("fileName")) {\r
- //.*\.(sh|ini|conf|vhost|xml|php)$\r
- String fileNamePattern = filter.getString("fileName");\r
- if (fileNamePattern == null || fileNamePattern.trim().length() == 0)\r
- return true;\r
-\r
- Pattern pattern = Pattern.compile(fileNamePattern, Pattern.CASE_INSENSITIVE);\r
-\r
- Matcher matcher = pattern.matcher(file.getFileName().toString());\r
- if (matcher.find())\r
- return true;\r
-\r
- }\r
-\r
- return false;\r
- }\r
-\r
- public boolean preAcceptDirectory(Path file) {\r
- return true;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.FileNotFoundException;\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-\r
-import org.apache.commons.lang.StringUtils;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-import org.apache.logging.log4j.message.Message;\r
-import org.apache.logging.log4j.message.ParameterizedMessage;\r
-\r
-import user.commons.DownloadableMedia;\r
-import user.commons.StoreUri;\r
-import user.commons.mediatool.MediaInfo;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Media;\r
-\r
-public class FileValidatorStep extends JobStep {\r
- private static final String COLORSPACE = "COLORSPACE";\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final String testSimulate = System.getProperty("test.simulate");\r
-\r
- @StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String fileName, long expectedFrameNumber, long expectedSize, String exceptedColorSpace, String escortFile)\r
- throws Exception {\r
- if (!RemoteStoreProtocol.LOCAL.equals(sourceStoreUri.getProtocol()))\r
- throw new Exception("Store URI protocol must be local.");\r
- Path filePath = Paths.get(sourceStoreUri.toString(true), fileName);\r
- if (!filePath.toFile().exists())\r
- throw new FileNotFoundException("File not exists: " + filePath.toString());\r
-\r
- Path escortFilePath = Paths.get(escortFile);\r
-\r
- if (getJobRuntime().isWaitingCancel()) {\r
- EscortFiles.remove(filePath);\r
- //EscortFiles.remove(escortFilePath);\r
- EscortFiles.remove(Paths.get(escortFile + EscortFiles.DOT_CATCHED));\r
-\r
- Message msg = new ParameterizedMessage("A {} fájl visszatöltése kezelői beavatkozás miatt megszakadt.", fileName);\r
- EscortFiles.notifyRecipient(escortFilePath, logger, msg);\r
-\r
- cancel();\r
- return null;\r
- }\r
-\r
- DownloadableMedia downloadable = null;\r
- try {\r
- downloadable = EscortFiles.decode(escortFilePath);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- }\r
-\r
- if (downloadable != null && expectedFrameNumber == 0)\r
- storeCurrentFrames(filePath, downloadable);\r
-\r
- if (downloadable != null && downloadable.containsKey("skipValidation") && downloadable.getBoolean("skipValidation"))\r
- return null;\r
-\r
- if (expectedFrameNumber > 0 || StringUtils.isNotBlank(exceptedColorSpace))\r
- validateMedia(filePath, expectedFrameNumber, exceptedColorSpace, escortFile);\r
-\r
- if (expectedSize > 0)\r
- validateSize(filePath, expectedSize, escortFile);\r
-\r
- //A metadata persister miatt torlunk mindet teszt modban\r
- /*\r
- if (StringUtils.isNotBlank(testSimulate)) {\r
- EscortFiles.remove(escortFilePath);\r
- EscortFiles.remove(Paths.get(escortFile + EscortFiles.DOT_CATCHED));\r
- logger.info(getMarker(), "{} deleted to prevent real processing", escortFile);\r
- }\r
- */\r
- logger.info(getMarker(), "{} passed validation", fileName);\r
- return null;\r
- }\r
-\r
- private void storeCurrentFrames(Path filePath, DownloadableMedia downloadable) {\r
- MediaInfo mi = null;\r
- try {\r
- mi = new MediaInfo(filePath);\r
- mi.process();\r
- long frames = mi.getFrames();\r
-\r
- if (downloadable.containsKey("mediaId")) {\r
- Media media = getManager().getMedia(downloadable.getLong("mediaId"));\r
- if (media != null) {\r
- media.setLength(frames);\r
- getManager().modify(media);\r
- }\r
-\r
- }\r
-\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- }\r
- }\r
-\r
- private void validateMedia(Path filePath, long expectedFrameNumber, String exceptedColorSpace, String escortFile) throws Exception {\r
- MediaInfo mi = null;\r
- try {\r
- mi = new MediaInfo(filePath);\r
- mi.process();\r
-\r
- if (expectedFrameNumber > 0) {\r
- long frames = mi.getFrames();\r
- if (Math.abs(frames - expectedFrameNumber) > 3) {\r
- Message msg = new ParameterizedMessage("Validációs hiba miatt a {} fájl másolása nem lehetséges.", filePath.getFileName());\r
- EscortFiles.notifyRecipient(Paths.get(escortFile), logger, msg);\r
-\r
- //200924 komment, mert a mar TSM-bol letoltott mozikat hagyjuk ott, a download irany ugyis felulir\r
- //EscortFiles.remove(filePath);\r
- //EscortFiles.remove(Paths.get(escortFile));\r
-\r
- //200911 a kommentet kivettem, mert ezeket is torolni kell\r
- EscortFiles.remove(Paths.get(escortFile + EscortFiles.DOT_CATCHED));\r
- throw new Exception("Length mismatch in " + filePath + ". Expected: " + expectedFrameNumber + ", found: " + frames);\r
- }\r
- if (frames != expectedFrameNumber)\r
- logger.warn(getSessionMarker(), "A {} fájl másolása lehetséges, de a képkockaszám nem egyezik. Várt: {}, aktuális: {}",\r
- expectedFrameNumber, frames);\r
- }\r
-\r
- if (StringUtils.isNotBlank(exceptedColorSpace)) {\r
- String colorSpace = mi.getColorSpace();\r
- if (colorSpace == null) {\r
- EscortFiles.createFellow(escortFile, COLORSPACE);\r
- throw new Exception("Can not determine color space in " + filePath);\r
- }\r
-\r
- if (!colorSpace.equals(exceptedColorSpace)) {\r
- EscortFiles.createFellow(escortFile, COLORSPACE);\r
- throw new Exception("Expected color space is " + exceptedColorSpace + ", but found " + colorSpace);\r
- }\r
- }\r
-\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- throw e;\r
- }\r
- }\r
-\r
- private void validateSize(Path filePath, long expectedSize, String escortFile) throws Exception {\r
- try {\r
- long length = filePath.toFile().length();\r
- if (length != expectedSize)\r
- throw new Exception("Size mismatch. Expected: " + expectedSize + ", found: " + length);\r
-\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- throw e;\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.IOException;\r
-import java.nio.file.DirectoryStream;\r
-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.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Set;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.DownloadableMedia;\r
-import user.commons.JobStatus;\r
-import user.commons.MediaCubeMarker;\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Store;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class ForkDownloadStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(String tempStoreName, String template, String expectedColorSpace, int limit) throws Exception {\r
-\r
-// sendStatusReport();\r
- //return null;\r
- DirectoryStream<Path> directoryStream = null;\r
- int count = limit;\r
- int allCount = 0;\r
- int currentCount = 0;\r
-\r
- try {\r
- StoreUri tempStoreUri = getManager().getStoreUri(tempStoreName, RemoteStoreProtocol.LOCAL);\r
- Path path = Paths.get(tempStoreUri.toString(true), ".STATUS");\r
-\r
- List<Path> escortFiles = new ArrayList<>();\r
- directoryStream = Files.newDirectoryStream(path);\r
- for (Path escortFile : directoryStream) {\r
- if (getJobRuntime().isWaitingCancel()) {\r
- cancel();\r
- return null;\r
- }\r
- escortFiles.add(escortFile);\r
- }\r
- allCount = escortFiles.size();\r
- escortFiles.sort((p1, p2) -> {\r
- return Long.valueOf(p1.toFile().lastModified()).compareTo(p2.toFile().lastModified());\r
- });\r
-\r
- if (allCount > 0) {\r
- for (Path escortFile : escortFiles) {\r
- if (getJobRuntime().isWaitingCancel()) {\r
- cancel();\r
- break;\r
- }\r
-\r
- if (processPathItem(tempStoreUri, template, escortFile)) {\r
- count--;\r
- if (count == 0)\r
- break;\r
- }\r
- currentCount++;\r
- int progress = currentCount * 100 / allCount;\r
- setProgress(progress);\r
- }\r
- }\r
-\r
- setProgress(100);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- throw e;\r
- } finally {\r
- if (directoryStream != null) {\r
- try {\r
- directoryStream.close();\r
- } catch (IOException e) {\r
- }\r
- }\r
- }\r
-\r
- return null;\r
- }\r
-\r
- private boolean processPathItem(StoreUri tempStoreUri, String template, Path escortFile) throws IOException {\r
- if (escortFile.toFile().isDirectory())\r
- return false;\r
-\r
- //ami nem JSON azt nem kezeljuk\r
- if (!escortFile.getFileName().toString().toLowerCase().endsWith(EscortFiles.DOT_JSON))\r
- return false;\r
-\r
- //aminek van COLORSPACE kiterjesztesu valtozata azt nem kezeljuk\r
- // Path colorspaceFile = Paths.get(escortFile.toString() + ".colorspace");\r
- // if (colorspaceFile.toFile().exists())\r
- // return false;\r
-\r
- if (EscortFiles.isCatchedFileExists(escortFile))\r
- return false;\r
-\r
- String escortFileName = escortFile.getFileName().toString();\r
- //minimum 3 karakter: STORENAME.FILENAME.MXF.JSON\r
- long dotCount = escortFileName.chars().filter(ch -> ch == '.').count();\r
- if (dotCount < 3)\r
- return false;\r
-\r
- try {\r
- DownloadableMedia downloadable = EscortFiles.decode(escortFile);\r
- if (downloadable == null) {\r
- logger.error(getSessionMarker(), "Can't encode {}", escortFile);\r
- return false;\r
- }\r
-\r
- StoreUri sourceStoreUri = getManager().getStoreUri(downloadable.getLong("sourceStoreUriId"));\r
- StoreUri targetStoreUri = getManager().getStoreUri(downloadable.getLong("targetStoreUriId"));\r
-\r
- Store sourceStore = getManager().getStore(sourceStoreUri.getStoreId());\r
- String sourceStoreName = sourceStore.getName();\r
- template = sourceStoreName + "-" + template;\r
- logger.info(getMarker(), "Starting {} for {}", template, escortFileName);\r
-\r
- String sourceFileName = downloadable.getString("fileName");\r
- Map<String, Object> parameters = new HashMap<>();\r
- parameters.put("sourceStoreUri", sourceStoreUri);\r
- parameters.put("fileName", sourceFileName);\r
- parameters.put("tempStoreUri", tempStoreUri);\r
- parameters.put("targetStoreUri", targetStoreUri);\r
- parameters.put("expectedFrameNumber", downloadable.getLong("frames"));\r
- parameters.put("expectedSize", downloadable.getLong("size"));\r
- parameters.put("expectedColorSpace", downloadable.getString("colorSpace"));\r
- parameters.put("escortFile", escortFile.toAbsolutePath().toString());\r
-\r
- int priority = 50;\r
-\r
- //megszakitasok miatt a mar lejott mozikat vegyuk elore 20.09.09\r
- if (targetExists(tempStoreUri, sourceFileName))\r
- priority = 51;\r
-\r
- //parameterek: IJobRuntime parent, String template, String name, int priority, Map<String, Object> parameters\r
- IJobRuntime child = getEngine().submit(null, e -> {\r
- if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED))\r
- EscortFiles.removeCatchedFile(escortFile);\r
- }, template, "Archiválás", priority, IJobEngine.DEFAULT_OWNER, parameters);\r
- if (child == null)\r
- throw new Exception("Submit error.");\r
-\r
- child.setDescription(sourceFileName);\r
-\r
- child.setRelated(downloadable.getString("title") + " / " + sourceStoreName);\r
-\r
- EscortFiles.createCatchedFile(escortFile);\r
-\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- return false;\r
- }\r
-\r
- return true;\r
- }\r
-\r
- private void sendStatusReport() {\r
- IJobEngine engine = getEngine();\r
- int jobCount = 0;\r
- StringBuilder sb = new StringBuilder();\r
- Map<Long, IJobRuntime> jobs = engine.getJobs();\r
- if (jobs != null) {\r
- Set<Long> keys = jobs.keySet();\r
- jobCount = keys.size();\r
- for (Long key : keys) {\r
- IJobRuntime runtime = jobs.get(key);\r
- if (JobStatus.SUSPENDED.equals(runtime.getStatus()))\r
- sb.append(runtime.getRelated() + " SUSPENDED: " + runtime.getDescription() + "</br>");\r
- }\r
- }\r
- MediaCubeMarker marker = new MediaCubeMarker();\r
- marker.setSubject("AMC MediaCube feldolgozási sor " + jobCount);\r
- logger.info(marker, sb.toString());\r
- }\r
-\r
- private boolean targetExists(StoreUri storeUri, String fileName) {\r
- try {\r
- Path targetFile = Paths.get(storeUri.toString(true), fileName);\r
- if (targetFile.toFile().exists()) {\r
- logger.info(getMarker(), "Retrieved file {} exists", fileName);\r
- return true;\r
- }\r
- } catch (Exception e) {\r
- logger.error(getMarker(), e.getMessage());\r
- }\r
- logger.info(getMarker(), "Retrieved file {} not exists yet", fileName);\r
- return false;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.IOException;\r
-import java.nio.file.DirectoryStream;\r
-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.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.apache.commons.lang.StringUtils;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.DownloadableMedia;\r
-import user.commons.JobStatus;\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.Store;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class ForkUploadStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(String tempStoreName, String template, String expectedColorSpace, int limit) throws Exception {\r
- DirectoryStream<Path> directoryStream = null;\r
- int count = limit;\r
- int allCount = 0;\r
- int currentCount = 0;\r
-\r
- try {\r
- StoreUri tempStoreUri = getManager().getStoreUri(tempStoreName, RemoteStoreProtocol.LOCAL);\r
- Path path = Paths.get(tempStoreUri.toString(true), ".STATUS");\r
-\r
- List<Path> escortFiles = new ArrayList<>();\r
- directoryStream = Files.newDirectoryStream(path);\r
- for (Path escortFile : directoryStream) {\r
- if (getJobRuntime().isWaitingCancel()) {\r
- cancel();\r
- return null;\r
- }\r
- escortFiles.add(escortFile);\r
- }\r
- allCount = escortFiles.size();\r
- //a file neve az adasbakerules idopontjaval kezdodik\r
- // escortFiles.sort((p1, p2) -> {\r
- // return p1.compareTo(p2);\r
- // });\r
-\r
- //200911 megis inkabb a letrehozas idopontja legyen\r
- escortFiles.sort((p1, p2) -> {\r
- return Long.valueOf(p1.toFile().lastModified()).compareTo(p2.toFile().lastModified());\r
- });\r
-\r
- if (allCount > 0) {\r
- for (Path escortFile : escortFiles) {\r
- if (getJobRuntime().isWaitingCancel()) {\r
- cancel();\r
- break;\r
- }\r
-\r
- if (processPathItem(tempStoreUri, template, escortFile)) {\r
- count--;\r
- if (count == 0)\r
- break;\r
- }\r
- currentCount++;\r
- int progress = currentCount * 100 / allCount;\r
- setProgress(progress);\r
- }\r
- }\r
-\r
- setProgress(100);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- throw e;\r
- } finally {\r
- if (directoryStream != null) {\r
- try {\r
- directoryStream.close();\r
- } catch (IOException e) {\r
- }\r
- }\r
- }\r
-\r
- return null;\r
- }\r
-\r
- private String getTSMFileName(long mediaId, StoreUri sourceStoreUri) {\r
- String result = null;\r
- Media media = getManager().getMedia(mediaId);\r
-\r
- if (media != null) {\r
- List<MediaFile> mediaFiles = media.getMediaFiles();\r
- for (MediaFile mediaFile : mediaFiles) {\r
- if (mediaFile.getStoreId() == sourceStoreUri.getStoreId()) {\r
- result = mediaFile.getRelativePath();\r
- break;\r
- }\r
- }\r
- }\r
-\r
- return result;\r
- }\r
-\r
- private boolean processPathItem(StoreUri tempStoreUri, String template, Path escortFile) throws IOException {\r
- if (escortFile.toFile().isDirectory())\r
- return false;\r
-\r
- //ami nem JSON azt nem kezeljuk\r
- if (!escortFile.getFileName().toString().toLowerCase().endsWith(EscortFiles.DOT_JSON))\r
- return false;\r
-\r
- //aminek van COLORSPACE kiterjesztésű\r
- // Path colorspaceFile = Paths.get(escortFile.toString() + ".colorspace");\r
- // if (colorspaceFile.toFile().exists())\r
- // return false;\r
-\r
- if (EscortFiles.isCatchedFileExists(escortFile))\r
- return false;\r
-\r
- String escortFileName = escortFile.getFileName().toString();\r
- //minimum 3 karakter: STORENAME.FILENAME.MXF.JSON\r
- long dotCount = escortFileName.chars().filter(ch -> ch == '.').count();\r
- if (dotCount < 3)\r
- return false;\r
-\r
- try {\r
- DownloadableMedia downloadable = EscortFiles.decode(escortFile);\r
-\r
- if (downloadable == null) {\r
- logger.error(getSessionMarker(), "Can't decode {}", escortFile);\r
- return false;\r
- }\r
-\r
- StoreUri sourceStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM);\r
-\r
- long mediaId = downloadable.getLong("mediaId");\r
- String tsmFileName = getTSMFileName(mediaId, sourceStoreUri);\r
- if (StringUtils.isBlank(tsmFileName)) {\r
- logger.error(getMarker(), "Media ID not exists anymore {}", mediaId);\r
- return false;\r
- }\r
-\r
- StoreUri targetStoreUri = getManager().getStoreUri(downloadable.getLong("targetStoreUriId"));\r
-\r
- Store targetStore = getManager().getStore(targetStoreUri.getStoreId());\r
- template = targetStore.getName() + "-" + template;\r
- logger.info(getMarker(), "Starting {} for {}", template, escortFileName);\r
-\r
- String targetFileName = downloadable.getString("fileName");\r
-\r
- Map<String, Object> parameters = new HashMap<>();\r
- parameters.put("sourceStoreUri", sourceStoreUri);\r
- parameters.put("tsmFileName", tsmFileName);\r
- parameters.put("fileName", targetFileName);\r
- parameters.put("tempStoreUri", tempStoreUri);\r
- parameters.put("targetStoreUri", targetStoreUri);\r
- parameters.put("relativeTargetPath", downloadable.getString("relativeTargetPath"));\r
- parameters.put("expectedFrameNumber", downloadable.getLong("frames"));\r
- parameters.put("expectedSize", downloadable.getLong("size"));\r
- parameters.put("expectedColorSpace", downloadable.getString("colorSpace"));\r
- parameters.put("escortFile", escortFile.toAbsolutePath().toString());\r
-\r
- //int priority = downloadable.containsKey("priority") ? downloadable.getInt("priority") : 0;\r
- //mindenki egyforman induljon 20.09.07\r
- //a NEXIO egy kicsit fontosabb 20.09.08. megsem 20.09.09\r
- //int priority = escortFile.toString().contains("NEXIO") ? 51 : 50;\r
- //megszakitasok miatt a mar lejott mozikat vegyuk elore 20.09.09\r
-\r
- int priority = 50;\r
- if (targetExists(tempStoreUri, targetFileName))\r
- priority = 51;\r
-\r
- //parameterek: IJobRuntime parent, String template, String name, int priority, Map<String, Object> parameters\r
- IJobRuntime child = getEngine().submit(null, e -> {\r
- if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED))\r
- EscortFiles.removeCatchedFile(escortFile);\r
- }, template, "Visszatöltés", priority, IJobEngine.DEFAULT_OWNER, parameters);\r
- if (child == null)\r
- throw new Exception("Submit error.");\r
-\r
- child.setDescription(escortFileName);\r
-\r
- child.setRelated(downloadable.getString("title") + " / " + targetStore.getName());\r
- EscortFiles.createCatchedFile(escortFile);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- return false;\r
- }\r
-\r
- return true;\r
- }\r
-\r
- private boolean targetExists(StoreUri storeUri, String fileName) {\r
- try {\r
- Path targetFile = Paths.get(storeUri.toString(true), fileName);\r
- if (targetFile.toFile().exists()) {\r
- logger.info(getMarker(), "Retrieved file {} exists", fileName);\r
- return true;\r
- }\r
- } catch (Exception e) {\r
- logger.error(getMarker(), e.getMessage());\r
- }\r
- logger.info(getMarker(), "Retrieved file {} not exists yet", fileName);\r
- return false;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.IOException;\r
-import java.nio.file.Paths;\r
-import java.sql.Timestamp;\r
-import java.util.List;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.DownloadableMedia;\r
-import user.commons.RemoteFile;\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Media;\r
-\r
-public class GenericArchiveCheckerStep extends JobStep {\r
- private static final String DOT_MXF = ".MXF";\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- private boolean check(Timestamp modified, Timestamp created, Media media) {\r
- boolean create = media == null;\r
- create |= create || !media.getModified().equals(modified);\r
- create |= create || !media.getCreated().equals(created);\r
- return create;\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(String sourceStoreName, String protocol, String wildCard, String escortStoreName, int limit) throws Exception {\r
- StoreUri sourceStoreUri = null;\r
- int count = limit;\r
-\r
- try {\r
- sourceStoreUri = getManager().getStoreUri(sourceStoreName, Enum.valueOf(RemoteStoreProtocol.class, protocol));\r
- StoreUri escortSoreUri = getManager().getStoreUri(escortStoreName, RemoteStoreProtocol.LOCAL);\r
- StoreUri targetStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM);\r
-\r
- String outputPath = Paths.get(escortSoreUri.toString(true)).toString();\r
-\r
- //az FTP store nem tamogatja az asszinkron listazast\r
- List<RemoteFile> remoteFiles = sourceStoreUri.getRemoteFiles(wildCard);\r
- for (RemoteFile remoteFile : remoteFiles) {\r
- if (processClip(sourceStoreName, remoteFile, sourceStoreUri, targetStoreUri, outputPath))\r
- count--;\r
-\r
- if (count == 0) {\r
- logger.info("Limit reached: {}", limit);\r
- break;\r
- }\r
-\r
- }\r
- } catch (Exception e) {\r
- throw e;\r
- } finally {\r
- if (sourceStoreUri != null)\r
- sourceStoreUri.cleanUp();\r
- }\r
-\r
- return null;\r
- }\r
-\r
- private boolean processClip(String storeName, RemoteFile remoteFile, StoreUri sourceStoreUri, StoreUri targetStoreUri, String outputPath) {\r
- boolean result = false;\r
- String title = remoteFile.getName();\r
- Timestamp modified = Timestamp.from(remoteFile.getModify().toInstant());\r
- Timestamp created = Timestamp.from(remoteFile.getCreated().toInstant());\r
-\r
- //TODO a masolas alatt allo klippeket kiszurni\r
- if (title.contains("."))\r
- title = title.substring(0, title.indexOf("."));\r
- long size = remoteFile.getSize();\r
-\r
- Media media = getManager().getMedia(title);\r
-\r
- boolean createEscort = check(modified, created, media);\r
-\r
- if (createEscort) {\r
- long mediaId = media == null ? 0 : media.getId();\r
- String fileName = title + DOT_MXF;\r
- DownloadableMedia archive = DownloadableMedia.create(title, fileName, modified, created, 0, size, sourceStoreUri.getId(), targetStoreUri.getId(),\r
- mediaId);\r
- String escortFileName = storeName + "." + remoteFile.getName();\r
- try {\r
- result = EscortFiles.createMetadataIfNotExists(outputPath, escortFileName, archive.toPrettyString(""));\r
- } catch (IOException e) {\r
- logger.error("Escort file creation error.", e);\r
- }\r
- }\r
-\r
- return result;\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.util.Arrays;\r
-import java.util.List;\r
-\r
-import org.apache.commons.lang.StringUtils;\r
-import org.apache.commons.net.ftp.FTPClient;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import com.ibm.nosql.json.api.BasicDBList;\r
-\r
-import user.commons.DownloadableMedia;\r
-import user.commons.StoreUri;\r
-import user.commons.harris.HarrisRecord;\r
-import user.commons.harris.VICFileParser;\r
-import user.commons.remotestore.FtpDirectoryLister;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Media;\r
-\r
-public class HarrisMissingMaterialCheckerStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger(HarrisMissingMaterialCheckerStep.class);\r
- private static final String lineFormat = System.getProperty("harris.vic.lineformat",\r
- "A TTTTTTTT LLLLLLLLLLL MMMMMMMMMMMMMMMMMMMMMMM X DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD");\r
- private static final String validTypeCodes = System.getProperty("harris.vic.validtypecodes", "SPACE,E");\r
- private static final String appendExtension = System.getProperty("missingmaterial.appendextension", ".mxf");\r
-\r
- @StepEntry\r
- public Object[] execute(BasicDBList vicFiles, String escortStoreName, String targetStoreName, String targetProtocol) throws Exception {\r
- StoreUri escortStoreUri = null;\r
- StoreUri targetStoreUri = null;\r
- try {\r
- getJobRuntime().setRelated(targetStoreName + " restore");\r
-\r
- escortStoreUri = getManager().getStoreUri(escortStoreName, RemoteStoreProtocol.LOCAL);\r
- targetStoreUri = getManager().getStoreUri(targetStoreName, Enum.valueOf(RemoteStoreProtocol.class, targetProtocol));\r
- StoreUri sourceStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM);\r
- List<HarrisRecord> records = null;\r
- for (Object vicFile : vicFiles) {\r
- if (getJobRuntime().isWaitingCancel()) {\r
- cancel();\r
- break;\r
- }\r
-\r
- Path vicFilePath = Paths.get(String.valueOf(vicFile));\r
-\r
- if (!vicFilePath.toFile().exists()) {\r
- logger.warn("File not exists: {}", vicFilePath);\r
- continue;\r
- }\r
-\r
- logger.info(getMarker(), "Processing {}", vicFilePath);\r
- records = processVICFile(records, vicFilePath);\r
- }\r
-\r
- if (records != null && !getJobRuntime().isWaitingCancel()) {\r
- FTPClient client = ((FtpDirectoryLister) targetStoreUri.getLister()).connect();\r
- logger.info(getMarker(), "Reading target file list");\r
- List<String> fileNames = Arrays.asList(client.listNames());\r
- logger.info(getMarker(), "Target file list reading completed, mediabase size is {}", fileNames.size());\r
- int i = 0;\r
- for (HarrisRecord record : records) {\r
-\r
- if (getJobRuntime().isWaitingCancel()) {\r
- cancel();\r
- break;\r
- }\r
-\r
- boolean contains = fileNames.contains(record.getFileName() + ".lxf");\r
- if (contains)\r
- logger.info(getMarker(), "File {} already exists on {}", record.getFileName(), targetStoreName);\r
- else\r
- processRecord(record, targetStoreName, sourceStoreUri, targetStoreUri, escortStoreUri);\r
- i++;\r
- int progress = i * 100 / records.size();\r
- setProgress(progress);\r
- }\r
- }\r
-\r
- if (records == null || records.size() == 0)\r
- logger.info(getMarker(), "Nothing to do");\r
- else\r
- logger.info(getMarker(), "Completed");\r
-\r
- setProgress(100);\r
- } catch (Exception e) {\r
- logger.error(e.getMessage());\r
- throw e;\r
- } finally {\r
- if (escortStoreUri != null)\r
- escortStoreUri.cleanUp();\r
- if (targetStoreUri != null)\r
- targetStoreUri.cleanUp();\r
- }\r
-\r
- return null;\r
- }\r
-\r
- private boolean processRecord(HarrisRecord record, String targetStoreName, StoreUri sourceStoreUri, StoreUri targetStoreUri, StoreUri escortStoreUri)\r
- throws Exception {\r
-\r
- String fileName = record.getFileName();\r
- String outputPath = Paths.get(escortStoreUri.toString(true)).toString();\r
-\r
- if (StringUtils.isNotBlank(appendExtension))\r
- fileName += appendExtension;\r
-\r
- String escortFileName = targetStoreName + "." + fileName;\r
-\r
- //ha mar letezik, nem toltjuk fel ujra (a vic fajlbol kezzel torlik valamikor...)\r
- try {\r
- if (EscortFiles.isMetadataExists(outputPath, escortFileName)) {\r
- logger.debug(getMarker(), "Status file already exists {}", escortFileName);\r
- return true;\r
- }\r
- } catch (IOException e1) {\r
- logger.info(getMarker(), "Status file check error for {}", fileName);\r
- return true;\r
- }\r
-\r
- //nincs bent MC-ben\r
- Media media = getManager().getMedia(record.getFileName());\r
- if (media == null) {\r
- logger.error(getSessionMarker(), "File is not available in archive {}", record.getFileName());\r
- return true;\r
- }\r
-\r
- // if (existsOnNexio(record, targetStoreName, targetStoreUri)) {\r
- // logger.info(getMarker(), "File {} already exists on {}", record.getFileName(), targetStoreName);\r
- // return false;\r
- // }\r
-\r
- DownloadableMedia downloadable = DownloadableMedia.create(media.getTitle(), fileName, media.getModified(), media.getCreated(), media.getLength(), 0L,\r
- sourceStoreUri.getId(), targetStoreUri.getId(), media.getId());\r
-\r
- //alapbol magasabb (1-99)\r
- downloadable.put("priority", 50);\r
- downloadable.put("isNexio", true);\r
-\r
- try {\r
- EscortFiles.createMetadata(outputPath, escortFileName, downloadable.toPrettyString(""));\r
- logger.info(getMarker(), "Status file created {}", escortFileName);\r
- } catch (Exception e) {\r
- logger.error("Can't create escort file {}. System message is: {}", escortFileName, e.getMessage());\r
- }\r
- return true;\r
- }\r
-\r
- private List<HarrisRecord> processVICFile(List<HarrisRecord> records, Path vicFilePath) {\r
- VICFileParser parser = null;\r
- try {\r
- parser = new VICFileParser(vicFilePath, lineFormat, validTypeCodes);\r
-\r
- List<HarrisRecord> currentRecords = parser.getRecords();\r
- if (records == null)\r
- records = currentRecords;\r
- else {\r
- if (currentRecords != null)\r
- records.addAll(currentRecords);\r
- }\r
-\r
- } catch (Exception e) {\r
- logger.error(e.getMessage());\r
- }\r
- return records;\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-import java.sql.Timestamp;\r
-import java.time.Instant;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.DownloadableMedia;\r
-import user.commons.StoreUri;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.Item;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.MediaFile;\r
-\r
-public class MetadataPersisterStep extends JobStep {\r
- private static final String GENERIC = "Generic";\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(StoreUri targetStoreUri, String escortFile) throws Exception {\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
- if (escortFilePath.toFile().exists()) {\r
- String escortFileName = escortFilePath.getFileName().toString();\r
- String sourceStoreName = escortFileName.substring(0, escortFileName.indexOf("."));\r
- DownloadableMedia downloadable = EscortFiles.decode(escortFilePath);\r
- String title = downloadable.getString("title");\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
-\r
- IItemManager manager = getManager();\r
-\r
- if (mediaId == 0) {\r
- mediaId = tryGetMediaId(title, mediaId);\r
- }\r
-\r
- //TODO ha van mediaId, akkor update!!!!!!!!!\r
-\r
- Timestamp modified = downloadable.getTimestamp("modified");\r
- Timestamp created = downloadable.getTimestamp("created");\r
- long frames = downloadable.getLong("frames");\r
- \r
- if (mediaId == 0) {\r
- String targetStoreName = getManager().getStore(targetStoreUri.getStoreId()).getName();\r
- //ez elszallhat, mert nincs filetype vagy store\r
- MediaFile mediaFile = manager.createMediaFile(fileName, fileTypeName, targetStoreName);\r
- //ez elszallhat, mert nincs itemtype\r
- Item item = manager.createItem(GENERIC, title, sourceStoreName, null);\r
- //ez elszallhat, mert nincs itemtype\r
- Media media = manager.createMedia(GENERIC, title, sourceStoreName, null);\r
-\r
- //TODO megoldani egy tranzakcioban\r
- item.add();\r
- media.setItemId(item.getId());\r
- media.setLength(frames);\r
- media.setCreated(created);\r
- media.setModified(modified);\r
- media.setArchived(Timestamp.from(Instant.now()));\r
- media.add();\r
-\r
- //TODO\r
- //mediaFile.setFileSize(fileSize);\r
- mediaFile.setMediaId(media.getId());\r
- mediaFile.setLastModified(modified);\r
- mediaFile.add();\r
- } else {\r
- Media media = manager.getMedia(mediaId);\r
- media.setLength(frames);\r
- media.setCreated(created);\r
- media.setModified(modified);\r
- media.setArchived(Timestamp.from(Instant.now()));\r
- manager.modify(media);\r
-\r
- //TODO\r
- //mediaFile.setFileSize(fileSize);\r
- MediaFile mediaFile = manager.getSystemMediaFile(media);\r
- mediaFile.setRelativePath(fileName);\r
- mediaFile.setLastModified(modified);\r
- manager.modify(mediaFile);\r
- }\r
-\r
- } else\r
- logger.error(getMarker(), "Status file does not exists {}", escortFilePath);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- throw e;\r
- }\r
- return null;\r
- }\r
-\r
- private long tryGetMediaId(String title, long mediaId) {\r
- Media media = null;\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
- }\r
- return mediaId;\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\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 NEXIO1TransferFromStep 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, String targetFileName) throws Exception {\r
- Object[] result = null;\r
- try {\r
- Path targetFile = Paths.get(targetStoreUri.toString(true), targetFileName);\r
- if (targetFile.toFile().exists()) {\r
- logger.info(getMarker(), "Using previously retrived file {}", targetFile);\r
- } else {\r
- result = super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- }\r
- } catch (Exception e) {\r
- logger.error(getMarker(), e.getMessage());\r
- }\r
- return result;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.util.Arrays;\r
-import java.util.List;\r
-\r
-import org.apache.commons.net.ftp.FTPClient;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.FtpDirectoryLister;\r
-\r
-public class NEXIO1TransferToStep 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, String targetFileName) throws Exception {\r
- //\r
- // try {\r
- // String title = targetFileName;\r
- // if (title.contains("."))\r
- // title = title.substring(0, title.lastIndexOf("."));\r
- // RemoteFile remoteFile = targetStoreUri.getFileWithContent(title + ".xml");\r
- // if (remoteFile != null && remoteFile.getContent() != null) {\r
- // logger.info("File already exists on NEXIO1 {}", targetFileName);\r
- // return null;\r
- // }\r
- // } catch (Exception e) {\r
- // logger.error(e.getMessage());\r
- // } finally {\r
- // targetStoreUri.cleanUp();\r
- // }\r
-/*\r
- try {\r
- FTPClient client = ((FtpDirectoryLister) targetStoreUri.getLister()).connect();\r
- logger.info(getMarker(), "Reading target file list");\r
- List<String> fileNames = Arrays.asList(client.listNames());\r
- logger.info(getMarker(), "Target file list reading completed, mediabase size is {}", fileNames.size());\r
- String title = targetFileName.replace(".mxf", ".lxf");\r
- boolean contains = fileNames.contains(title);\r
- if (contains) {\r
- logger.info(getMarker(), "File already exists {} on {}", title, getManager().getStore(targetStoreUri.getStoreId()).getName());\r
- return null;\r
- }\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- } finally {\r
- targetStoreUri.cleanUp();\r
- }\r
-*/\r
- return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\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 NEXIO2TransferFromStep 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, String targetFileName) throws Exception {\r
- Object[] result = null;\r
- try {\r
- Path targetFile = Paths.get(targetStoreUri.toString(true), targetFileName);\r
- if (targetFile.toFile().exists()) {\r
- logger.info(getMarker(), "Using previously retrived file {}", targetFile);\r
- } else {\r
- result = super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- }\r
- } catch (Exception e) {\r
- logger.error(getMarker(), e.getMessage());\r
- }\r
- return result;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.util.Arrays;\r
-import java.util.List;\r
-\r
-import org.apache.commons.net.ftp.FTPClient;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.FtpDirectoryLister;\r
-\r
-public class NEXIO2TransferToStep 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, String targetFileName) throws Exception {\r
- // try {\r
- // String title = targetFileName;\r
- // if (title.contains("."))\r
- // title = title.substring(0, title.lastIndexOf("."));\r
- // RemoteFile remoteFile = targetStoreUri.getFileWithContent(title + ".xml");\r
- // if (remoteFile != null && remoteFile.getContent() != null) {\r
- // logger.info("File already exists on NEXIO2 {}", targetFileName);\r
- // return null;\r
- // }\r
- // } catch (Exception e) {\r
- // logger.error(e.getMessage());\r
- // } finally {\r
- // targetStoreUri.cleanUp();\r
- // }\r
-/*\r
- try {\r
- FTPClient client = ((FtpDirectoryLister) targetStoreUri.getLister()).connect();\r
- logger.info(getMarker(), "Reading target file list");\r
- List<String> fileNames = Arrays.asList(client.listNames());\r
- logger.info(getMarker(), "Target file list reading completed, mediabase size is {}", fileNames.size());\r
- String title = targetFileName.replace(".mxf", ".lxf");\r
- boolean contains = fileNames.contains(title);\r
- if (contains) {\r
- logger.info(getMarker(), "File already exists {} on {}", title, getManager().getStore(targetStoreUri.getStoreId()).getName());\r
- return null;\r
- }\r
- } catch (Exception e) {\r
- logger.catching(e);\r
- } finally {\r
- targetStoreUri.cleanUp();\r
- }\r
-*/\r
- return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.IOException;\r
-import java.nio.file.Paths;\r
-import java.sql.Timestamp;\r
-import java.text.SimpleDateFormat;\r
-import java.time.Duration;\r
-import java.time.Instant;\r
-import java.util.Iterator;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.DownloadableMedia;\r
-import user.commons.StoreUri;\r
-import user.commons.nexio.api.Clip;\r
-import user.commons.nexio.api.ClipNotFoundException;\r
-import user.commons.nexio.api.Controller;\r
-import user.commons.nexio.api.Mediabase;\r
-import user.commons.nexio.server.protocol.ProtocolException;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.MediaFile;\r
-\r
-public class NEXIOArchiveCheckerStep extends JobStep {\r
- private static final String DOT_MXF = ".mxf";\r
- private static final Logger logger = LogManager.getLogger();\r
- private SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd-HHmmss");\r
-\r
- private boolean check(Timestamp modified, Timestamp created, int duration, Media media, int videoFormat, int lastModifiedHours) {\r
- String title = media.getTitle();\r
-\r
- //formatum\r
- if (!(videoFormat == 3 || videoFormat == 19)) {\r
- logger.debug(getMarker(), "{} unsupported video format", videoFormat);\r
- return false;\r
- }\r
-\r
- if (!checkModifiedByTime(title, modified, lastModifiedHours))\r
- return false;\r
-\r
- //utolso modositas\r
- MediaFile mediaFile = getManager().getSystemMediaFile(media);\r
- boolean isModified = true;\r
- if (mediaFile == null) {\r
- logger.info(getMarker(), "{} system media file not available", title);\r
- return false;\r
- }\r
-\r
- String mcMod = df.format(mediaFile.getLastModified());\r
- String nexioMod = df.format(modified);\r
- isModified = mcMod.compareTo(nexioMod) < 0;\r
- if (isModified) {\r
- logger.info(getMarker(), "{} modification time: MC {} < NEXIO {}", title, mcMod, nexioMod);\r
- return true;\r
- }\r
-\r
- boolean isLengthChanged = media.getLength() > 0 && Math.abs(media.getLength() - duration) > 3;\r
- if (isLengthChanged) {\r
- logger.info(getMarker(), "{} length: MC {} != NEXIO {}", title, media.getLength(), duration);\r
- return true;\r
- }\r
-\r
- return false;\r
- }\r
-\r
- private boolean checkModifiedByTime(String title, Timestamp modified, int lastModifiedHours) {\r
- //utolso modositas a mosthoz kepest\r
- //The result of this method can be a negative period if the end is before the start.\r
- long modifiedHours = Duration.between(modified.toInstant(), Instant.now()).toHours();\r
- if (modifiedHours < 0) {\r
- logger.info(getMarker(), "{} modification time greather than now", title);\r
- return false;\r
- }\r
- if (modifiedHours < lastModifiedHours) {\r
- logger.debug(getMarker(), "{} modification time is too cloose for now", title);\r
- return false;\r
- }\r
-\r
- return true;\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(String sourceStoreName, String escortStoreName, int lastModifiedHours) throws Exception {\r
- Controller controller = null;\r
-\r
- try {\r
- getJobRuntime().setRelated(sourceStoreName + " archive");\r
-\r
- StoreUri nexioStoreUri = getManager().getStoreUri(sourceStoreName, RemoteStoreProtocol.NEXIO);\r
- StoreUri sourceStoreUri = getManager().getStoreUri(sourceStoreName, RemoteStoreProtocol.FTP);\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
- logger.info(getMarker(), "Connecting mediabase {}", nexioStoreUri.toString());\r
- if (nexioStoreUri.getPortNumber() == 0)\r
- controller = new Controller(nexioStoreUri.getUri(), nexioStoreUri.getPortNumber());\r
- else\r
- controller = new Controller(nexioStoreUri.getUri());\r
- controller.connect();\r
- Mediabase mediabase = controller.getMediabase();\r
-\r
- Iterator<Clip> clips = mediabase.getClips();\r
- logger.info(getMarker(), "Processing clips");\r
-\r
- processClips(sourceStoreName, sourceStoreUri, targetStoreUri, outputPath, clips, lastModifiedHours);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage() == null ? "Unknown error" : e.getMessage());\r
- throw e;\r
- } finally {\r
- setProgress(100);\r
- if (controller != null)\r
- controller.disconnect();\r
- }\r
-\r
- return null;\r
- }\r
-\r
- private void processClips(String storeName, StoreUri sourceStoreUri, StoreUri targetStoreUri, String outputPath, Iterator<Clip> clips,\r
- int lastModifiedHours) throws ClipNotFoundException, IOException, ProtocolException {\r
- int processed = 0;\r
- while (clips.hasNext()) {\r
-\r
- if (getJobRuntime().isWaitingCancel()) {\r
- cancel();\r
- break;\r
- }\r
-\r
- Clip clip = clips.next();\r
-\r
- try {\r
- String title = null;\r
- Timestamp created = null;\r
- Timestamp modified = null;\r
- int frames = 0;\r
- int videoFormat = 0;\r
- frames = clip.getDuration();\r
-\r
- //ures clip\r
- if (frames == 1)\r
- continue;\r
-\r
- title = clip.getXid().get();\r
- created = Timestamp.from(clip.getRecordDateTimestamp().toInstant());\r
- modified = Timestamp.from(clip.getModifiedTimestamp().toInstant());\r
- videoFormat = clip.getVideoFormat();\r
-\r
- Media media = getManager().getMedia(title);\r
- logger.debug(getMarker(), "Checking {}", title);\r
- boolean createEscort = false;\r
-\r
- long mediaId = 0;\r
- if (media == null) {\r
- if (checkModifiedByTime(title, modified, lastModifiedHours)) {\r
- createEscort = true;\r
- logger.info(getMarker(), "{} not archived yet", title);\r
- }\r
- } else {\r
- mediaId = media.getId();\r
- createEscort = check(modified, created, frames, media, videoFormat, lastModifiedHours);\r
- }\r
-\r
- if (createEscort && !title.contains("*")) {\r
- String fileName = title + DOT_MXF;\r
- DownloadableMedia downloadable = DownloadableMedia.create(title, fileName, modified, created, frames, 0, sourceStoreUri.getId(),\r
- targetStoreUri.getId(), mediaId);\r
- String escortFileName = storeName + "." + downloadable.getString("fileName");\r
- if (EscortFiles.createMetadataIfNotExists(outputPath, escortFileName, downloadable.toPrettyString(""))) {\r
- logger.info(getMarker(), "Archive status file created for {}", fileName);\r
- } else {\r
- logger.info(getMarker(), "Archive status file already exists for {}", fileName);\r
- }\r
-\r
- }\r
-\r
- processed++;\r
- if (processed % 100 == 0)\r
- logger.info(getMarker(), "Processed {} records", processed);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- continue;\r
- }\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-import java.sql.Timestamp;\r
-import java.text.SimpleDateFormat;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-import org.w3c.dom.Document;\r
-import org.w3c.dom.Node;\r
-import org.w3c.dom.NodeList;\r
-\r
-import user.commons.DownloadableMedia;\r
-import user.commons.RemoteFile;\r
-import user.commons.StoreUri;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.MediaFile;\r
-\r
-public class NEXIOMetadataPersisterStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final String DOT_XML = ".xml";\r
-\r
- @StepEntry\r
- public Object[] execute(StoreUri targetStoreUri, String escortFile) throws Exception {\r
- try {\r
- Path escortFilePath = Paths.get(escortFile);\r
- if (!escortFilePath.toFile().exists()) {\r
- logger.error(getMarker(), "Status file does not exists {}", escortFilePath);\r
- return null;\r
- }\r
-\r
- DownloadableMedia downloadable = EscortFiles.decode(escortFilePath);\r
- if (!downloadable.containsKey("isNexio") || !downloadable.getBoolean("isNexio"))\r
- return null;\r
-\r
- if (!downloadable.containsKey("mediaId"))\r
- throw new NullPointerException("No media ID found for " + downloadable.getString("title"));\r
-\r
- Media media = getManager().getMedia(downloadable.getLong("mediaId"));\r
- MediaFile mediaFile = getManager().getSystemMediaFile(media);\r
- if (mediaFile == null)\r
- throw new NullPointerException("No TSM media file found for " + downloadable.getString("title"));\r
-\r
- RemoteFile remoteFile = targetStoreUri.getFileWithContent(downloadable.getString("title") + ".xml");\r
-\r
- //TODO mediafile lastmodified = feltoltott file nexio xml lastmodified\r
- Timestamp lastModified = getLastModified(remoteFile);\r
- logger.info("Setting last modification time on {} to {}", downloadable.getString("title"), lastModified);\r
- mediaFile.setLastModified(lastModified);\r
- getManager().modify(mediaFile);\r
-\r
- // if (!RemoteStoreProtocol.FTP.equals(targetStoreUri.getProtocol()))\r
- // return null;\r
-\r
- //\r
- // String title = downloadable.getString("title");\r
- // String fileName = downloadable.getString("fileName");\r
- // Date created = downloadable.getDate("created");\r
- // Date modified = downloadable.getDate("modified");\r
- // byte[] metadata = EscortFiles.createNEXIODatesMeta(title, created, modified);\r
- // uploadMeta(targetStoreUri, fileName, metadata);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- throw e;\r
- } finally {\r
- if (targetStoreUri != null)\r
- targetStoreUri.cleanUp();\r
- }\r
- return null;\r
- }\r
-\r
- private Timestamp getLastModified(RemoteFile remoteFile) throws Exception {\r
- Timestamp result = null;\r
- Document document = EscortFiles.createNEXIOMeta(remoteFile.getContent());\r
- Node firstChild = document.getFirstChild();\r
- NodeList list = firstChild.getChildNodes();\r
- for (int i = 0; i < list.getLength(); i++) {\r
- Node item = list.item(i);\r
- if (item.getNodeName().equals("ModifiedTimeStamp")) {\r
- SimpleDateFormat df = new SimpleDateFormat("MM-dd-yyyy (HH:mm:ss)");\r
- result = Timestamp.from(df.parse(item.getTextContent()).toInstant());\r
- break;\r
- }\r
- }\r
- return result;\r
- }\r
-\r
- // private void uploadMeta(StoreUri storeUri, String fileName, byte[] metadata) throws Exception {\r
- // logger.info(getMarker(), "Uploading metadata for {}", fileName);\r
- // OutputStream outStream = null;\r
- // try {\r
- // FTPClient sourceFtp = ((FtpDirectoryLister) storeUri.getLister()).connect();\r
- // outStream = sourceFtp.storeFileStream(fileName + DOT_XML);\r
- // if (outStream == null)\r
- // throw new NullPointerException("Can not create: " + fileName + DOT_XML + " on FTP. Reply is:" + sourceFtp.getReplyString());\r
- // outStream.write(metadata);\r
- // outStream.flush();\r
- // } catch (Exception e) {\r
- // logger.catching(e);\r
- // throw e;\r
- // } finally {\r
- // if (outStream != null)\r
- // outStream.close();\r
- // storeUri.cleanUp();\r
- // }\r
- // }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-\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 user.commons.RemoteFile;\r
-import user.commons.StoreUri;\r
-import user.commons.mediaarea.MediaArea;\r
-import user.commons.strings.FileSizeUtils;\r
-\r
-public class PASAPOOLTransferToStep extends TransferStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final String CODEC_PROFILE_HIGH = "HIGH";\r
- private static final String CODEC_PROFILE_MAIN = "MAIN";\r
- private static final String CODEC_PROFILE_422 = "4:2:2";\r
- private static final String DISPLAY_ASPECT_16_9 = "16:9";\r
- private static final String DISPLAY_ASPECT_4_3 = "4:3";\r
- private StoreUri sourceStoreUri;\r
- private String sourceFileName;\r
- private Marker marker = MarkerManager.getMarker("MEDIAPROFILE");\r
-\r
- @Override\r
- @StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
- this.sourceStoreUri = sourceStoreUri;\r
- this.sourceFileName = sourceFileName;\r
- long start = System.currentTimeMillis();\r
- Object[] result = super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- RemoteFile remoteFile = sourceStoreUri.getRemoteFile(targetFileName);\r
- if (remoteFile != null && remoteFile.getSize() > 0) {\r
- long diff = (System.currentTimeMillis() - start) / 1000;\r
- if (diff > 0) {\r
- long bytesSpeed = remoteFile.getSize() / diff;\r
- String speed = FileSizeUtils.sizeAsString(bytesSpeed);\r
- logger.info(getMarker(), "{} size is {}, upload speed was {}/sec", targetFileName, FileSizeUtils.sizeAsString(remoteFile.getSize()), speed);\r
- }\r
- }\r
- return result;\r
- }\r
-\r
- @Override\r
- protected StoreUri getTargetStoreUri(StoreUri targetStoreUri) {\r
- StoreUri result = targetStoreUri;\r
- try {\r
- Path filePath = Paths.get(sourceStoreUri.toString(true), sourceFileName);\r
- MediaArea mi = new MediaArea(filePath);\r
- mi.process();\r
-\r
- if (isHD(mi)) {\r
- logger.info(marker, "{} is MOVED_HD", sourceFileName);\r
- result = getManager().getStoreUri("PEABLEBEACH", targetStoreUri.getProtocol());\r
- return result;\r
- }\r
-\r
- if (isSD_HIGH_16_9(mi)) {\r
- logger.info(marker, "{} is CONVSD16_9", sourceFileName);\r
- result = getManager().getStoreUri("SELENIOPOOL_16_9", targetStoreUri.getProtocol());\r
- return result;\r
- }\r
-\r
- if (isSD_HIGH_4_3(mi)) {\r
- logger.info(marker, "{} is CONVSD4_3", sourceFileName);\r
- result = getManager().getStoreUri("SELENIOPOOL_4_3", targetStoreUri.getProtocol());\r
- return result;\r
- }\r
-\r
- if (isSD_MAIN_422(mi)) {\r
- logger.info(marker, "{} is MOVED_SD", sourceFileName);\r
- result = getManager().getStoreUri("PEABLEBEACH", targetStoreUri.getProtocol());\r
- return result;\r
- }\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- }\r
- return result;\r
- }\r
-\r
- private boolean isHD(MediaArea mi) {\r
- return mi.getHeight() == 1080;\r
- }\r
-\r
- private boolean isSD_HIGH_16_9(MediaArea mi) {\r
- String formatProfileName = mi.getFormatProfileName();\r
- return mi.getHeight() < 650 && formatProfileName.contains(CODEC_PROFILE_HIGH) && DISPLAY_ASPECT_16_9.equals(mi.getDisplayAspect());\r
- }\r
-\r
- private boolean isSD_HIGH_4_3(MediaArea mi) {\r
- String formatProfileName = mi.getFormatProfileName();\r
- return mi.getHeight() < 650 && formatProfileName.contains(CODEC_PROFILE_HIGH) && DISPLAY_ASPECT_4_3.equals(mi.getDisplayAspect());\r
- }\r
-\r
- private boolean isSD_MAIN_422(MediaArea mi) {\r
- String formatProfileName = mi.getFormatProfileName();\r
- return mi.getHeight() < 650 && (formatProfileName.contains(CODEC_PROFILE_MAIN) || formatProfileName.contains(CODEC_PROFILE_422));\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\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 PBARCHIVETransferFromStep 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, String targetFileName) throws Exception {\r
- Object[] result = null;\r
- result = super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- return result;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.IOException;\r
-import java.nio.file.Paths;\r
-import java.sql.Timestamp;\r
-import java.text.SimpleDateFormat;\r
-import java.time.Duration;\r
-import java.time.Instant;\r
-import java.util.Iterator;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.DownloadableMedia;\r
-import user.commons.StoreUri;\r
-import user.commons.nexio.api.Clip;\r
-import user.commons.nexio.api.ClipNotFoundException;\r
-import user.commons.nexio.api.Controller;\r
-import user.commons.nexio.api.Mediabase;\r
-import user.commons.nexio.server.protocol.ProtocolException;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.MediaFile;\r
-\r
-public class NEXIOArchiveCheckerStep extends JobStep {\r
- private static final String DOT_MXF = ".mxf";\r
- private static final Logger logger = LogManager.getLogger();\r
- private SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd-HHmmss");\r
-\r
- private boolean check(Timestamp modified, Timestamp created, int duration, Media media, int videoFormat, int lastModifiedHours) {\r
- String title = media.getTitle();\r
-\r
- //formatum\r
- if (!(videoFormat == 3 || videoFormat == 19)) {\r
- logger.debug(getMarker(), "{} unsupported video format", videoFormat);\r
- return false;\r
- }\r
-\r
- if (!checkModifiedByTime(title, modified, lastModifiedHours))\r
- return false;\r
-\r
- //utolso modositas\r
- MediaFile mediaFile = getManager().getSystemMediaFile(media);\r
- boolean isModified = true;\r
- if (mediaFile == null) {\r
- logger.info(getMarker(), "{} system media file not available", title);\r
- return false;\r
- }\r
-\r
- String mcMod = df.format(mediaFile.getLastModified());\r
- String nexioMod = df.format(modified);\r
- isModified = mcMod.compareTo(nexioMod) < 0;\r
- if (isModified) {\r
- logger.info(getMarker(), "{} modification time: MC {} < NEXIO {}", title, mcMod, nexioMod);\r
- return true;\r
- }\r
-\r
- boolean isLengthChanged = media.getLength() > 0 && Math.abs(media.getLength() - duration) > 3;\r
- if (isLengthChanged) {\r
- logger.info(getMarker(), "{} length: MC {} != NEXIO {}", title, media.getLength(), duration);\r
- return true;\r
- }\r
-\r
- return false;\r
- }\r
-\r
- private boolean checkModifiedByTime(String title, Timestamp modified, int lastModifiedHours) {\r
- //utolso modositas a mosthoz kepest\r
- //The result of this method can be a negative period if the end is before the start.\r
- long modifiedHours = Duration.between(modified.toInstant(), Instant.now()).toHours();\r
- if (modifiedHours < 0) {\r
- logger.info(getMarker(), "{} modification time greather than now", title);\r
- return false;\r
- }\r
- if (modifiedHours < lastModifiedHours) {\r
- logger.debug(getMarker(), "{} modification time is too cloose for now", title);\r
- return false;\r
- }\r
-\r
- return true;\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(String sourceStoreName, String escortStoreName, int lastModifiedHours) throws Exception {\r
- Controller controller = null;\r
-\r
- try {\r
- getJobRuntime().setRelated(sourceStoreName + " archive");\r
-\r
- StoreUri nexioStoreUri = getManager().getStoreUri(sourceStoreName, RemoteStoreProtocol.NEXIO);\r
- StoreUri sourceStoreUri = getManager().getStoreUri(sourceStoreName, RemoteStoreProtocol.FTP);\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
- logger.info(getMarker(), "Connecting mediabase {}", nexioStoreUri.toString());\r
- if (nexioStoreUri.getPortNumber() == 0)\r
- controller = new Controller(nexioStoreUri.getUri(), nexioStoreUri.getPortNumber());\r
- else\r
- controller = new Controller(nexioStoreUri.getUri());\r
- controller.connect();\r
- Mediabase mediabase = controller.getMediabase();\r
-\r
- Iterator<Clip> clips = mediabase.getClips();\r
- logger.info(getMarker(), "Processing clips");\r
-\r
- processClips(sourceStoreName, sourceStoreUri, targetStoreUri, outputPath, clips, lastModifiedHours);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage() == null ? "Unknown error" : e.getMessage());\r
- throw e;\r
- } finally {\r
- setProgress(100);\r
- if (controller != null)\r
- controller.disconnect();\r
- }\r
-\r
- return null;\r
- }\r
-\r
- private void processClips(String storeName, StoreUri sourceStoreUri, StoreUri targetStoreUri, String outputPath, Iterator<Clip> clips,\r
- int lastModifiedHours) throws ClipNotFoundException, IOException, ProtocolException {\r
- int processed = 0;\r
- while (clips.hasNext()) {\r
-\r
- if (getJobRuntime().isWaitingCancel()) {\r
- cancel();\r
- break;\r
- }\r
-\r
- Clip clip = clips.next();\r
-\r
- try {\r
- String title = null;\r
- Timestamp created = null;\r
- Timestamp modified = null;\r
- int frames = 0;\r
- int videoFormat = 0;\r
- frames = clip.getDuration();\r
-\r
- //ures clip\r
- if (frames == 1)\r
- continue;\r
-\r
- title = clip.getXid().get();\r
- created = Timestamp.from(clip.getRecordDateTimestamp().toInstant());\r
- modified = Timestamp.from(clip.getModifiedTimestamp().toInstant());\r
- videoFormat = clip.getVideoFormat();\r
-\r
- Media media = getManager().getMedia(title);\r
- logger.debug(getMarker(), "Checking {}", title);\r
- boolean createEscort = false;\r
-\r
- long mediaId = 0;\r
- if (media == null) {\r
- if (checkModifiedByTime(title, modified, lastModifiedHours)) {\r
- createEscort = true;\r
- logger.info(getMarker(), "{} not archived yet", title);\r
- }\r
- } else {\r
- mediaId = media.getId();\r
- createEscort = check(modified, created, frames, media, videoFormat, lastModifiedHours);\r
- }\r
-\r
- if (createEscort && !title.contains("*")) {\r
- String fileName = title + DOT_MXF;\r
- DownloadableMedia downloadable = DownloadableMedia.create(title, fileName, modified, created, frames, 0, sourceStoreUri.getId(),\r
- targetStoreUri.getId(), mediaId);\r
- String escortFileName = storeName + "." + downloadable.getString("fileName");\r
- if (EscortFiles.createMetadataIfNotExists(outputPath, escortFileName, downloadable.toPrettyString(""))) {\r
- logger.info(getMarker(), "Archive status file created for {}", fileName);\r
- } else {\r
- logger.info(getMarker(), "Archive status file already exists for {}", fileName);\r
- }\r
-\r
- }\r
-\r
- processed++;\r
- if (processed % 100 == 0)\r
- logger.info(getMarker(), "Processed {} records", processed);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- continue;\r
- }\r
- }\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.DataInputStream;\r
-import java.io.FileNotFoundException;\r
-import java.io.IOException;\r
-import java.io.StringReader;\r
-import java.net.URL;\r
-import java.nio.file.Files;\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-import java.text.SimpleDateFormat;\r
-import java.util.Calendar;\r
-import java.util.Collection;\r
-import java.util.Date;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.TreeMap;\r
-\r
-import javax.xml.parsers.DocumentBuilder;\r
-import javax.xml.parsers.DocumentBuilderFactory;\r
-\r
-import org.apache.commons.lang.StringUtils;\r
-import org.apache.http.HttpEntity;\r
-import org.apache.http.HttpResponse;\r
-import org.apache.http.auth.AuthScope;\r
-import org.apache.http.auth.UsernamePasswordCredentials;\r
-import org.apache.http.client.methods.HttpPost;\r
-import org.apache.http.entity.StringEntity;\r
-import org.apache.http.impl.client.DefaultHttpClient;\r
-import org.apache.http.params.BasicHttpParams;\r
-import org.apache.http.params.HttpConnectionParams;\r
-import org.apache.http.params.HttpParams;\r
-import org.apache.http.protocol.HTTP;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-import org.w3c.dom.Document;\r
-import org.w3c.dom.NamedNodeMap;\r
-import org.w3c.dom.Node;\r
-import org.w3c.dom.NodeList;\r
-import org.xml.sax.InputSource;\r
-\r
-public class PBQuery {\r
- public class MMMedia {\r
- private final String name;\r
- private final String usage;\r
-\r
- MMMedia(String name, String usage) {\r
- this.name = name;\r
- this.usage = usage;\r
-\r
- }\r
-\r
- public String getName() {\r
- return name;\r
- }\r
-\r
- public String getUsage() {\r
- return usage;\r
- }\r
- }\r
-\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final int CONNECTION_TIMEOUT = 5000;\r
- private static final int SOCKET_TIMEOUT = 5000;\r
- public static final String GETMEDIAUSAGEBYUTRANGE = "/getMediaUsageByUTRange";\r
- public static final String GETCUSTOMVIEW = "/getCustomView";\r
-\r
- public static final String SOAP_TEMPLATE_ROOT = System.getProperty("jobengine.soap.template.root", "/opt/mediacube/configuration/soap");\r
-\r
- private static Document toDocument(String xml) {\r
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();\r
- DocumentBuilder builder = null;\r
- try {\r
- builder = factory.newDocumentBuilder();\r
- Document doc = builder.parse(new InputSource(new StringReader(xml)));\r
- return doc;\r
- } catch (Exception e) {\r
- logger.error(e.getMessage());\r
- }\r
- return null;\r
- }\r
-\r
- private SimpleDateFormat sdf_range = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss:'00'");\r
- private String primaryEndPoint;\r
- private String primaryUserName;\r
- private String primaryPassword;\r
- private String secondaryEndPoint;\r
- private String secondaryUserName;\r
-\r
- private String secondaryPassword;\r
-\r
- private int rangeForwardHours;\r
-\r
- private String getAttribute(Node node, String name) {\r
- String result = null;\r
- if (node != null && node.hasAttributes()) {\r
- NamedNodeMap attributes = node.getAttributes();\r
- if (attributes != null) {\r
- Node mediaNameNode = attributes.getNamedItem(name);\r
- if (mediaNameNode != null)\r
- result = mediaNameNode.getNodeValue();\r
- }\r
- }\r
- return result;\r
- }\r
-\r
- public Collection<MMMedia> getPossibelMissingMaterialNames(List<String> poolContent) throws Exception {\r
- Map<String, MMMedia> result = querySortableMedias(poolContent);\r
- queryOtherMedias(poolContent, result);\r
-\r
- TreeMap<String, MMMedia> sortedUsages = new TreeMap<>();\r
- for (MMMedia m : result.values()) {\r
- //a TreeMap lehetove teszi: nincs duplikatum + a korabbi musorok elore kerulnek\r
- sortedUsages.put(m.getUsage() + "." + m.getName(), m);\r
- }\r
-\r
- return sortedUsages.values();\r
-\r
- }\r
-\r
- public void init(String primaryEndPoint, String primaryUserName, String primaryPassword, String secondaryEndPoint, String secondaryUserName,\r
- String secondaryPassword, int rangeForwardHours) throws Exception {\r
- this.primaryEndPoint = primaryEndPoint;\r
- this.primaryUserName = primaryUserName;\r
- this.primaryPassword = primaryPassword;\r
- this.secondaryEndPoint = secondaryEndPoint;\r
- this.secondaryUserName = secondaryUserName;\r
- this.secondaryPassword = secondaryPassword;\r
- this.rangeForwardHours = rangeForwardHours;\r
- }\r
-\r
- private void putEarliest(Map<String, MMMedia> result, String mediaName, String usageTime) {\r
- if (result.containsKey(mediaName)) {\r
- MMMedia m = result.get(mediaName);\r
- //az aktualis a korabbi idopont\r
- if (usageTime.compareTo(m.getUsage()) < 0)\r
- result.put(mediaName, new MMMedia(mediaName, usageTime));\r
- } else\r
- result.put(mediaName, new MMMedia(mediaName, usageTime));\r
- }\r
-\r
- public String query(String endPoint, String action, String soap, String user, String pwd) throws Exception {\r
-\r
- HttpParams httpParameters = new BasicHttpParams();\r
- HttpConnectionParams.setConnectionTimeout(httpParameters, CONNECTION_TIMEOUT);\r
- HttpConnectionParams.setSoTimeout(httpParameters, SOCKET_TIMEOUT);\r
- DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters);\r
- //http://10.170.100.61:18083\r
-\r
- String result = null;\r
- DataInputStream is = null;\r
- try {\r
- URL url = new URL(endPoint);\r
- httpclient.getCredentialsProvider().setCredentials(new AuthScope(url.getHost(), url.getPort(), null, "Digest"),\r
- new UsernamePasswordCredentials(user, pwd));\r
-\r
- HttpPost httppost = new HttpPost(url.toURI());\r
- httppost.setHeader("soapaction", action);\r
- //Content-Type application/soap+xml; charset=utf-8; action="/getMediaUsageByUTRange"\r
- httppost.setHeader("Content-Type", "text/xml; charset=utf-8");\r
- HttpEntity entity = new StringEntity(soap.toString(), HTTP.UTF_8);\r
- httppost.setEntity(entity);\r
- logger.info("Executing call {}", action);\r
- HttpResponse response = httpclient.execute(httppost);// calling server\r
- HttpEntity r_entity = response.getEntity(); //get response\r
- // Header[] headers = response.getAllHeaders();\r
- // for (Header h : headers) {\r
- // logger.info("Reponse Header", h.getName() + ": " + h.getValue());\r
- // }\r
- if (r_entity != null) {\r
- byte[] bytes = new byte[(int) r_entity.getContentLength()];\r
- if (r_entity.isStreaming()) {\r
- is = new DataInputStream(r_entity.getContent());\r
- is.readFully(bytes);\r
- }\r
- result = new String(bytes);\r
- }\r
- } catch (Exception e) {\r
- logger.error("Exception while connecting to endpoint {}. System message is: {}", e.getMessage());\r
- throw e;\r
- } finally {\r
- if (is != null) {\r
- try {\r
- is.close();\r
- } catch (IOException e) {\r
- }\r
- }\r
- if (httpclient != null) {\r
- httpclient.getConnectionManager().shutdown();\r
- }\r
- }\r
-\r
- return result;\r
- }\r
-\r
- public void queryOtherMedias(List<String> poolContent, Map<String, MMMedia> result) throws Exception {\r
- String xml = null;\r
- String soap = null;\r
- Path template = Paths.get(SOAP_TEMPLATE_ROOT, GETCUSTOMVIEW);\r
-\r
- if (!template.toFile().exists())\r
- throw new FileNotFoundException(template.toString());\r
- try {\r
- soap = new String(Files.readAllBytes(template));\r
- xml = query(primaryEndPoint, GETCUSTOMVIEW, soap, primaryUserName, primaryPassword);\r
- } catch (Exception e1) {\r
- try {\r
- xml = query(secondaryEndPoint, GETCUSTOMVIEW, soap, secondaryUserName, secondaryPassword);\r
- } catch (Exception e2) {\r
- }\r
- }\r
-\r
- if (StringUtils.isBlank(xml)) {\r
- logger.info("Query result is empty");\r
- return;\r
- }\r
-\r
- Document document = toDocument(xml);\r
- NodeList mediaNodes = document.getElementsByTagName("media");\r
-\r
- if (mediaNodes == null || mediaNodes.getLength() == 0)\r
- return;\r
-\r
- for (int i = 0; i < mediaNodes.getLength(); i++) {\r
- Node mediaNode = mediaNodes.item(i);\r
- String mediaName = getAttribute(mediaNode, "mediaName");\r
- if (StringUtils.isBlank(mediaName)) {\r
- logger.info("Missing mediaName");\r
- continue;\r
- }\r
-\r
- if (poolContent.contains(mediaName))\r
- continue;\r
-\r
- String usageTime = getAttribute(mediaNode, "earliestUsageTime");\r
- putEarliest(result, mediaName, usageTime);\r
- }\r
-\r
- logger.info("Document done, items {}", mediaNodes.getLength());\r
-\r
- }\r
-\r
- public Map<String, MMMedia> querySortableMedias(List<String> poolContent) throws Exception {\r
- Map<String, MMMedia> result = new HashMap<>();\r
-\r
- String xml = null;\r
- String soap = null;\r
-\r
- Path template = Paths.get(SOAP_TEMPLATE_ROOT, GETMEDIAUSAGEBYUTRANGE);\r
- if (!template.toFile().exists())\r
- throw new FileNotFoundException(template.toString());\r
-\r
- try {\r
- long now = System.currentTimeMillis();\r
- Calendar cal = Calendar.getInstance();\r
- cal.setTimeInMillis(now);\r
- cal.add(Calendar.HOUR_OF_DAY, rangeForwardHours);\r
-\r
- String fromDateStr = sdf_range.format(new Date(now));\r
- String toDateStr = sdf_range.format(cal.getTime());\r
-\r
- soap = new String(Files.readAllBytes(template));\r
- soap = soap.replace("{start}", fromDateStr);\r
- soap = soap.replace("{end}", toDateStr);\r
-\r
- xml = query(primaryEndPoint, GETMEDIAUSAGEBYUTRANGE, soap, primaryUserName, primaryPassword);\r
- } catch (Exception e1) {\r
- try {\r
- xml = query(secondaryEndPoint, GETMEDIAUSAGEBYUTRANGE, soap, secondaryUserName, secondaryPassword);\r
- } catch (Exception e2) {\r
- }\r
- }\r
-\r
- if (StringUtils.isBlank(xml)) {\r
- logger.info("Query result is empty");\r
- return result;\r
- }\r
-\r
- Document document = toDocument(xml);\r
- NodeList mediaNodes = document.getElementsByTagName("mediaUsage");\r
-\r
- if (mediaNodes == null || mediaNodes.getLength() == 0)\r
- return result;\r
-\r
- for (int i = 0; i < mediaNodes.getLength(); i++) {\r
- Node mediaNode = mediaNodes.item(i);\r
- String mediaName = getAttribute(mediaNode, "mediaName");\r
- String mediaType = getAttribute(mediaNode, "mediaType");\r
- if (StringUtils.isBlank(mediaName)) {\r
- logger.info("Missing mediaName");\r
- continue;\r
- }\r
-\r
- if (!StringUtils.equals("Video", mediaType)) {\r
- continue;\r
- }\r
-\r
- if (poolContent.contains(mediaName))\r
- continue;\r
-\r
- Node usageChild = mediaNode.getFirstChild();\r
- if (usageChild == null) {\r
- logger.info("Skipping {}, no media usage defined", mediaName);\r
- continue;\r
- }\r
-\r
- NodeList usageNodes = usageChild.getChildNodes();\r
- if (usageNodes == null || usageNodes.getLength() == 0) {\r
- logger.info("Skipping {}, no media usage defined", mediaName);\r
- continue;\r
- }\r
-\r
- for (int j = 0; j < usageNodes.getLength(); j++) {\r
- Node mediaUsageNode = usageNodes.item(j);\r
- String usageTime = getAttribute(mediaUsageNode, "earliestUsageTime");\r
- logger.info("{}, {}", mediaName, usageTime);\r
- putEarliest(result, mediaName, usageTime);\r
- }\r
-\r
- }\r
-\r
- return result;\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.io.IOException;\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.SimpleFileVisitor;\r
-import java.nio.file.attribute.BasicFileAttributes;\r
-import java.util.ArrayList;\r
-import java.util.List;\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
-/* DO NOT REMOVE!\r
-import user.jobengine.server.steps.FileSearchFilterOptions;\r
-*/\r
-public class PathItemsCollectorStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- protected FileSearchFilterOptions createFileFilter(BasicDBObject filter) {\r
- return new FileSearchFilterOptions(filter);\r
- }\r
-\r
- @StepEntry\r
- public Object[] execute(String sourceFolder, BasicDBObject filter) throws Exception {\r
- Path sourcePath = Paths.get(sourceFolder);\r
-\r
- List<String> files = new ArrayList<>();\r
-\r
- //teljes rekurzivitas szuressel\r
- FileSearchFilterOptions filterOptions = createFileFilter(filter);\r
- FileVisitor<Path> visitor = new SimpleFileVisitor<Path>() {\r
- @Override\r
- public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {\r
- if (!filterOptions.preAcceptDirectory(dir))\r
- return FileVisitResult.SKIP_SUBTREE;\r
- return FileVisitResult.CONTINUE;\r
- }\r
-\r
- @Override\r
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {\r
- if (filterOptions.acceptFile(file))\r
- files.add(file.toString());\r
- logger.info(file);\r
- return FileVisitResult.CONTINUE;\r
- }\r
-\r
- @Override\r
- public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {\r
- return FileVisitResult.CONTINUE;\r
- }\r
-\r
- };\r
-\r
- try {\r
- Files.walkFileTree(sourcePath, visitor);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), "Hiba a '{}' mappa feldolgozásában. A rendszer hibaüzenete: {}", sourcePath, e.getMessage());\r
- logger.catching(e);\r
- throw e;\r
- } finally {\r
- }\r
-\r
- logger.info("Found {} files", files.size());\r
-\r
- return new Object[] { files };\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.DirectoryStream;\r
-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.Arrays;\r
-import java.util.Collection;\r
-import java.util.LinkedHashSet;\r
-import java.util.List;\r
-\r
-import org.apache.commons.lang.StringUtils;\r
-import org.apache.commons.net.ftp.FTPClient;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import com.ibm.nosql.json.api.BasicDBList;\r
-\r
-import user.commons.DownloadableMedia;\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.FtpDirectoryLister;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.server.steps.PBQuery.MMMedia;\r
-\r
-public class PeableBeachMissingMaterialCheckerStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final String appendExtension = System.getProperty("missingmaterial.appendextension", ".mxf");\r
-\r
- @StepEntry\r
- public Object[] execute(String escortStoreName, BasicDBList lookupStoreNames, String targetStoreName, String targetProtocol, String primaryEndPoint,\r
- String primaryUserName, String primaryPassword, String secondaryEndPoint, String secondaryUserName, String secondaryPassword, int rangeForwardHours)\r
- throws Exception {\r
- StoreUri escortStoreUri = null;\r
- try {\r
- getJobRuntime().setRelated(targetStoreName + " restore");\r
-\r
- escortStoreUri = getManager().getStoreUri(escortStoreName, RemoteStoreProtocol.LOCAL);\r
- StoreUri sourceStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM);\r
- StoreUri targetStoreUri = getManager().getStoreUri(targetStoreName, Enum.valueOf(RemoteStoreProtocol.class, targetProtocol));\r
-\r
- LinkedHashSet<String> poolContent = new LinkedHashSet<>();\r
-\r
- int progress = 0;\r
- int count = lookupStoreNames.size();\r
- int processed = 0;\r
-\r
- for (Object lookup : lookupStoreNames) {\r
- if (getJobRuntime().isWaitingCancel()) {\r
- cancel();\r
- return null;\r
- }\r
- String lookupStoreName = String.valueOf(lookup);\r
-\r
- StoreUri lookupStoreUri = getManager().getStoreUri(lookupStoreName, Enum.valueOf(RemoteStoreProtocol.class, targetProtocol));\r
- logger.info(getMarker(), "Checking pool {}", lookupStoreName);\r
- List<String> lookupContent = getPoolContent(lookupStoreName, lookupStoreUri);\r
- poolContent.addAll(lookupContent);\r
- processed++;\r
- progress = processed * 50 / count;\r
- setProgress(progress);\r
- }\r
- /*\r
- if (1 == 1) {\r
-\r
- logger.info(getMarker(), "Kikapcsolva");\r
- return null;\r
- }\r
- */\r
-\r
- PBQuery query = new PBQuery();\r
- query.init(primaryEndPoint, primaryUserName, primaryPassword, secondaryEndPoint, secondaryUserName, secondaryPassword, rangeForwardHours);\r
- Collection<MMMedia> medias = query.getPossibelMissingMaterialNames(new ArrayList<>(poolContent));\r
- logger.info(getMarker(), "API returned {} items", medias == null ? 0 : medias.size());\r
-\r
- if (medias != null && medias.size() > 0) {\r
- count = medias.size();\r
- for (MMMedia media : medias) {\r
- logger.info(getMarker(), "API response contains {}", media.getName());\r
- }\r
-\r
- for (MMMedia media : medias) {\r
- if (getJobRuntime().isWaitingCancel()) {\r
- cancel();\r
- break;\r
- }\r
- processRecord(media, sourceStoreUri, targetStoreName, targetStoreUri, escortStoreUri);\r
- processed++;\r
- progress = 50 + (processed * 50 / count);\r
- setProgress(progress);\r
- }\r
-\r
- }\r
- setProgress(100);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- throw e;\r
- } finally {\r
- if (escortStoreUri != null)\r
- escortStoreUri.cleanUp();\r
- }\r
-\r
- return null;\r
- }\r
-\r
- private List<String> getPoolContent(String storeName, StoreUri targetStoreUri) throws Exception {\r
- List<String> poolContent = new ArrayList<>();\r
-\r
- FtpDirectoryLister lister = (FtpDirectoryLister) targetStoreUri.getLister();\r
- FTPClient client = lister.connect();\r
- logger.info(getMarker(), "Working dir is {}", client.printWorkingDirectory());\r
- String[] listNames = client.listNames();\r
- targetStoreUri.cleanUp();\r
-\r
- if (listNames != null) {\r
- List<String> remoteFileNames = Arrays.asList(listNames);\r
- logger.info(getMarker(), "Remote file list size :{}", remoteFileNames.size());\r
- for (String name : remoteFileNames) {\r
- try {\r
- if (name.toLowerCase().endsWith(".mxf")) {\r
- int pos = name.lastIndexOf(".");\r
- if (pos > -1) {\r
- name = name.substring(0, pos);\r
- //logger.info(getMarker(), "Adding {}", name);\r
- poolContent.add(name);\r
- }\r
- }\r
- } catch (Exception e) {\r
- logger.error(e.getMessage());\r
- }\r
-\r
- }\r
- }\r
-\r
- // List<RemoteFile> remoteFiles = targetStoreUri.getRemoteFiles();\r
- // if (remoteFiles != null) {\r
- // logger.info(getMarker(), "Remote file list size :{}", remoteFiles.size());\r
- // for (RemoteFile rf : remoteFiles) {\r
- // try {\r
- // String name = rf.getName();\r
- // if (name.toLowerCase().endsWith(".mxf")) {\r
- // int pos = name.lastIndexOf(".");\r
- // if (pos > -1) {\r
- // name = name.substring(0, pos);\r
- // //logger.info(getMarker(), "Adding {}", name);\r
- // poolContent.add(name);\r
- // }\r
- // }\r
- // } catch (Exception e) {\r
- // logger.error(e.getMessage());\r
- // }\r
- //\r
- // }\r
- // }\r
- logger.info(getMarker(), "Pool {} contains {} items", storeName, poolContent == null ? 0 : poolContent.size());\r
- return poolContent;\r
- }\r
-\r
- //csak visszaterunk\r
- private String normalizeName(String mediaName) {\r
- String result = mediaName;\r
- if (StringUtils.isNotBlank(appendExtension))\r
- result += appendExtension;\r
- // if (StringUtils.isNotBlank(mediaName)) {\r
- // result = mediaName.trim().toLowerCase();\r
- // }\r
- return result;\r
- }\r
-\r
- private void processRecord(MMMedia mmedia, StoreUri sourceStoreUri, String targetStoreName, StoreUri targetStoreUri, StoreUri escortStoreUri) {\r
- //TODO kisbetu/nagybetu problema kezelese\r
-\r
- Media media = null;\r
- //duplikatum miatt\r
- try {\r
- media = getManager().getMedia(mmedia.getName());\r
- } catch (Exception e) {\r
- logger.error(getMarker(), "Can't identify missing material {}. System message is: {}", mmedia.getName(), e.getMessage());\r
- return;\r
- }\r
-\r
- String fileName = normalizeName(mmedia.getName());\r
-\r
- if (media == null) {\r
- logger.warn(getMarker(), "File {} not archived yet", mmedia.getName());\r
- return;\r
- }\r
-\r
- DownloadableMedia downloadable = DownloadableMedia.create(mmedia.getName(), fileName, media.getModified(), media.getCreated(), media.getLength(), 0L,\r
- sourceStoreUri.getId(), targetStoreUri.getId(), media.getId());\r
- downloadable.put("priority", 50);\r
- String usage = mmedia.getUsage();\r
- usage = usage.replace("-", "").replace(":", "");\r
- String escortFileName = usage + "." + targetStoreName + "." + fileName;\r
- Path outputPath = null;\r
- try {\r
- outputPath = Paths.get(escortStoreUri.toString(true));\r
- boolean exsists = statusFileExists(outputPath, fileName);\r
- if (exsists)\r
- return;\r
- EscortFiles.createMetadata(outputPath.toString(), escortFileName, downloadable.toPrettyString(""));\r
- logger.info(getMarker(), "Status file created {}", escortFileName);\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), "Can't create status file {}", Paths.get(outputPath.toString(), escortFileName));\r
- }\r
-\r
- }\r
-\r
- private boolean statusFileExists(Path outputPath, String fileName) {\r
- boolean exsists = false;\r
- Path statusPath = Paths.get(outputPath.toString(), EscortFiles.STATUSFOLDER);\r
- try (DirectoryStream<Path> p = Files.newDirectoryStream(statusPath, "*" + fileName + EscortFiles.DOT_JSON)) {\r
- if (p.iterator().hasNext()) {\r
- logger.info(getMarker(), "Status file for {} already exists", fileName);\r
- exsists = true;\r
- }\r
-\r
- } catch (Exception e1) {\r
- logger.error(getSessionMarker(), e1.getMessage());\r
- }\r
- return exsists;\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Paths;\r
-import java.util.List;\r
-\r
-import org.apache.commons.lang.StringUtils;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.DownloadableMedia;\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.ArchivedMedia;\r
-import user.jobengine.db.Media;\r
-\r
-public class RegisterUserRestoreStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final String appendExtension = System.getProperty("missingmaterial.appendextension", ".mxf");\r
-\r
- @StepEntry\r
- public Object[] execute(String escortStoreName, String targetStoreName, List<ArchivedMedia> basket, String recipient) throws Exception {\r
- StoreUri escortStoreUri = null;\r
- try {\r
- escortStoreUri = getManager().getStoreUri(escortStoreName, RemoteStoreProtocol.LOCAL);\r
- StoreUri targetStoreUri = getManager().getStore(targetStoreName).getTargetStoreUri();\r
- StoreUri sourceStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM);\r
- int processed = 0;\r
- for (ArchivedMedia media : basket) {\r
- processRecord(media, targetStoreName, sourceStoreUri, targetStoreUri, escortStoreUri, recipient);\r
- processed++;\r
- int progress = processed * 100 / basket.size();\r
- setProgress(progress);\r
- }\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- throw e;\r
- } finally {\r
- if (escortStoreUri != null)\r
- escortStoreUri.cleanUp();\r
- }\r
-\r
- return null;\r
- }\r
-\r
- private void processRecord(ArchivedMedia archivedMedia, String targetStoreName, StoreUri sourceStoreUri, StoreUri targetStoreUri, StoreUri escortStoreUri,\r
- String recipient) {\r
- Media media = archivedMedia.getMedia();\r
-\r
- String fileName = media.getTitle();\r
- if (StringUtils.isNotBlank(appendExtension))\r
- fileName += appendExtension;\r
-\r
- DownloadableMedia downloadable = DownloadableMedia.create(media.getTitle(), fileName, media.getModified(), media.getCreated(), media.getLength(), 0L,\r
- sourceStoreUri.getId(), targetStoreUri.getId(), media.getId());\r
- downloadable.put("recipient", recipient);\r
- downloadable.put("skipValidation", true);\r
- String escortFileName = targetStoreName + "." + downloadable.getString("fileName");\r
- String outputPath = null;\r
- try {\r
- outputPath = Paths.get(escortStoreUri.toString(true)).toString();\r
- if (EscortFiles.createMetadataIfNotExists(outputPath, escortFileName, downloadable.toPrettyString("")))\r
- logger.info(getSessionMarker(), "Status file created {}", escortFileName);\r
- else\r
- logger.info(getSessionMarker(), "Status file already exists {}", escortFileName);\r
- } catch (Exception e) {\r
- logger.error("Can't create escort file {}", Paths.get(outputPath.toString(), escortFileName));\r
- }\r
-\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Paths;\r
-\r
-import org.apache.commons.lang.StringUtils;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import com.ibm.nosql.json.api.BasicDBList;\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-\r
-import user.commons.DownloadableMedia;\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Media;\r
-\r
-public class RegisterVODRestoreStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final String appendExtension = System.getProperty("missingmaterial.appendextension", ".mxf");\r
-\r
- @StepEntry\r
- public Object[] execute(String targetStoreName, BasicDBList basket) throws Exception {\r
- try {\r
- StoreUri sourceStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM);\r
-\r
- StoreUri targetStoreUri = getManager().getStore(targetStoreName).getTargetStoreUri();\r
- StoreUri escortStoreUri = getManager().getStoreUri("MEDIACUBE_UPLOADS", RemoteStoreProtocol.LOCAL);\r
- int processed = 0;\r
- for (int i = 0; i < basket.size(); i++) {\r
- BasicDBObject item = (BasicDBObject) basket.get(i);\r
- //logger.info(item.toPrettyString());\r
- processRecord(targetStoreName, sourceStoreUri, targetStoreUri, escortStoreUri, item);\r
- processed++;\r
- int progress = processed * 100 / basket.size();\r
- setProgress(progress);\r
- }\r
- } catch (Exception e) {\r
- logger.error(getSessionMarker(), e.getMessage());\r
- throw e;\r
- } finally {\r
- }\r
-\r
- return null;\r
- }\r
-\r
- private void processRecord(String targetStoreName, StoreUri sourceStoreUri, StoreUri targetStoreUri, StoreUri escortStoreUri, BasicDBObject item) {\r
- String mediaTitle = item.getString("title");\r
- String relativeTargetPath = item.getString("path");\r
-\r
- Media media = getManager().getMedia(mediaTitle);\r
- \r
- if (media == null) {\r
- logger.error("Media {} is not available", mediaTitle);\r
- return;\r
- }\r
- \r
- String fileName = media.getTitle();\r
- if (StringUtils.isNotBlank(appendExtension))\r
- fileName += appendExtension;\r
-\r
- DownloadableMedia downloadable = DownloadableMedia.create(media.getTitle(), fileName, media.getModified(), media.getCreated(), media.getLength(), 0L,\r
- sourceStoreUri.getId(), targetStoreUri.getId(), media.getId());\r
- //downloadable.put("skipValidation", true);\r
- downloadable.put("relativeTargetPath", relativeTargetPath);\r
- String escortFileName = targetStoreName + "." + downloadable.getString("fileName");\r
- String outputPath = null;\r
- try {\r
- outputPath = Paths.get(escortStoreUri.toString(true)).toString();\r
- if (EscortFiles.createMetadataIfNotExists(outputPath, escortFileName, downloadable.toPrettyString("")))\r
- logger.info(getSessionMarker(), "Status file created {}", escortFileName);\r
- else\r
- logger.info(getSessionMarker(), "Status file already exists {}", escortFileName);\r
- } catch (Exception e) {\r
- logger.error("Can't create escort file {}", Paths.get(outputPath.toString(), escortFileName));\r
- }\r
-\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.text.SimpleDateFormat;\r
-import java.util.Calendar;\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
-/* DO NOT REMOVE!\r
-import user.jobengine.server.steps.FileSearchFilterOptions;\r
-*/\r
-public class RundownFilesCollectorStep extends PathItemsCollectorStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @Override\r
- protected FileSearchFilterOptions createFileFilter(BasicDBObject filter) {\r
- SimpleDateFormat df = new SimpleDateFormat("yyyy/MM");\r
- Calendar thisMonthCal = Calendar.getInstance();\r
- Calendar nextMonthCal = Calendar.getInstance();\r
- nextMonthCal.add(Calendar.MONTH, 1);\r
-\r
- FileSearchFilterOptions result = new FileSearchFilterOptions(filter) {\r
- @Override\r
- public boolean acceptFile(Path file) {\r
- if (file.toString().contains(df.format(thisMonthCal.getTime())) || file.toString().contains(df.format(nextMonthCal.getTime())))\r
- return super.acceptFile(file);\r
-\r
- return false;\r
- }\r
- };\r
- return result;\r
- }\r
-\r
- @Override\r
- @StepEntry\r
- public Object[] execute(String sourceFolder, BasicDBObject filter) throws Exception {\r
- return super.execute(sourceFolder, filter);\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.time.Instant;\r
-import java.util.Map;\r
-import java.util.Set;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.JobStatus;\r
-import user.commons.MediaCubeMarker;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class ServerStatusReportStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute() throws Exception {\r
- IJobEngine engine = getEngine();\r
- int jobCount = 0;\r
- StringBuilder sb = new StringBuilder();\r
- Map<Long, IJobRuntime> jobs = engine.getJobs();\r
- if (jobs != null) {\r
- Set<Long> keys = jobs.keySet();\r
- jobCount = keys.size();\r
- for (Long key : keys) {\r
- IJobRuntime runtime = jobs.get(key);\r
- if (JobStatus.SUSPENDED.equals(runtime.getStatus()))\r
- sb.append(runtime.getRelated() + " felfüggesztve: " + runtime.getDescription() + "</br>");\r
- }\r
- }\r
- MediaCubeMarker marker = new MediaCubeMarker();\r
-\r
- marker.setSubject(String.format("%s [%d db] AMC MediaCube feldolgozás", Instant.now(), jobCount));\r
- logger.info(marker, sb.toString());\r
- return null;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Store;\r
-\r
-public class TransferStep extends JobStep {\r
- private static final String DOT_PART = ".part";\r
- private static final Logger logger = LogManager.getLogger();\r
- private static final boolean simulateTransferToTSM = Boolean.parseBoolean(System.getProperty("test.simulate.transfer.tsm", "false"));\r
- protected StoreUri targetStoreUri;\r
-\r
- @StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
- try {\r
- this.targetStoreUri = targetStoreUri;\r
- getJobRuntime().setCancelable(false);\r
-\r
- Store sourceStore = getManager().getStore(sourceStoreUri.getStoreId());\r
- Store targetStore = getManager().getStore(targetStoreUri.getStoreId());\r
-\r
- String description = String.format("%s -> %s : %s", sourceStore.getName(), targetStore.getName(), sourceFileName);\r
- getJobRuntime().setDescription(description);\r
-\r
- //logger.info(getSessionMarker(), String.valueOf(isSimulateTSMWrite(sourceStoreUri, targetStoreUri)));\r
- if (isSimulateTSMWrite(sourceStoreUri, targetStoreUri)) {\r
- logger.info(getMarker(), "Skipping real TSM write of {} from {} to {}", sourceFileName, sourceStoreUri, targetStoreUri);\r
- return null;\r
- }\r
-\r
- sourceStoreUri.addProgressListener(e -> setProgress(e.getProgress()));\r
-\r
- this.targetStoreUri = getTargetStoreUri();\r
- tryCopy(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- } catch (Exception e) {\r
- logger.error(getMarker(), "Error in transfer of {} when copying from {} to {}.", sourceFileName, sourceStoreUri, targetStoreUri);\r
- throw e;\r
- // logger.error(getMarker(), "Error in transfer of {} when copying from {} to {}. Retrying after 3 seconds.", sourceFileName, sourceStoreUri,\r
- // targetStoreUri);\r
-\r
- // try {\r
- // Thread.sleep(3000);\r
- // tryCopy(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- // } catch (Exception e1) {\r
- // logger.error(getSessionMarker(), "Error in transfer of {} when copying from {} to {}. System message is: {}", sourceFileName, sourceStoreUri,\r
- // targetStoreUri, e1.getMessage());\r
- // throw e1;\r
- // }\r
- } finally {\r
- if (sourceStoreUri != null)\r
- sourceStoreUri.cleanUp();\r
- if (targetStoreUri != null)\r
- targetStoreUri.cleanUp();\r
- }\r
- return null;\r
- }\r
-\r
- protected StoreUri getTargetStoreUri() {\r
- return targetStoreUri;\r
- }\r
-\r
- protected String getTmpExtension() {\r
- return DOT_PART;\r
- }\r
-\r
- private boolean isSimulateTSMWrite(StoreUri sourceStoreUri, StoreUri targetStoreUri) {\r
- return simulateTransferToTSM && (RemoteStoreProtocol.TSM.equals(targetStoreUri.getProtocol()));\r
- }\r
-\r
- private void tryCopy(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
- String currentTargetFileName = targetFileName;\r
-\r
- boolean renameAfterCopy = false;\r
- if (getTmpExtension() != null && RemoteStoreProtocol.LOCAL.equals(targetStoreUri.getProtocol())) {\r
- currentTargetFileName += getTmpExtension();\r
- renameAfterCopy = true;\r
- }\r
-\r
- sourceStoreUri.transferFrom(targetStoreUri, sourceFileName, currentTargetFileName);\r
- logger.info(getMarker(), "Transfer of {} completed from {} to {}", sourceFileName, sourceStoreUri, targetStoreUri);\r
-\r
- if (renameAfterCopy) {\r
- Path tmpTargetFile = Paths.get(targetStoreUri.toString(true), currentTargetFileName);\r
- Path targetFile = Paths.get(targetStoreUri.toString(true), targetFileName);\r
- tmpTargetFile.toFile().renameTo(targetFile.toFile());\r
- }\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\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 TSMTransferFromStep 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, String targetFileName) throws Exception {\r
- Object[] result = null;\r
- Path targetFile = Paths.get(targetStoreUri.toString(true), targetFileName);\r
- if (targetFile.toFile().exists()) {\r
- logger.info(getMarker(), "Using previously retrived file {}", targetFile);\r
- } else {\r
- result = super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- }\r
- return result;\r
- }\r
-\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import user.commons.StoreUri;\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
- return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- }\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.IJob;\r
-import user.commons.JobStatus;\r
-import user.commons.ListUtils;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class TestForkCancelableStep extends JobStep {\r
- private static final String CHILD_TITLE = "Párhuzamosított alfolyamat";\r
- // private static final String CHILD_TEMPLATE = "fake-concurrent.xml";\r
- private static final String CHILD_TEMPLATE = "cancelable.xml";\r
- private static final Logger logger = LogManager.getLogger();\r
- int count = 1;\r
-\r
- @StepEntry\r
- public Object[] execute(IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- //jobRuntime.forkPrepare();\r
- for (int i = 0; i < count; i++) {\r
- //jobEngine.submit(jobRuntime, null, CHILD_TEMPLATE, CHILD_TITLE, ListUtils.asMap("itemID", i));\r
- // IJobRuntime runtime = jobEngine.submit(jobRuntime, null, CHILD_TEMPLATE, "JOB " + i, ListUtils.asMap("param", i));\r
- IJobRuntime runtime = getEngine().submit(null, e -> {\r
- if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED))\r
- logger.info("Cleanup occured because status is {} {}", e.getStatus(), ((IJob) e.getSource()).getId());\r
- }, CHILD_TEMPLATE, "JOB " + i, 0, IJobEngine.DEFAULT_OWNER, ListUtils.asMap("param", i));\r
-\r
- runtime.setRelated("TEST" + runtime.getId());\r
- }\r
-\r
- // jobRuntime.forkWaitComplete();\r
- logger.info("Done");\r
- return null;\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import java.nio.file.Path;\r
-import java.nio.file.Paths;\r
-\r
-import org.apache.commons.net.ftp.FTPClient;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.FtpDirectoryLister;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.jobengine.db.Store;\r
-\r
-public class TransferStep extends JobStep {\r
- private static final String DOT_PART = ".part";\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
- try {\r
- getJobRuntime().setCancelable(false);\r
-\r
- Store sourceStore = getManager().getStore(sourceStoreUri.getStoreId());\r
- Store targetStore = getManager().getStore(targetStoreUri.getStoreId());\r
-\r
- String description = String.format("%s -> %s : %s", sourceStore.getName(), targetStore.getName(), sourceFileName);\r
- getJobRuntime().setDescription(description);\r
-\r
- sourceStoreUri.addProgressListener(e -> setProgress(e.getProgress()));\r
-\r
- StoreUri currentTargetStoreUri = getTargetStoreUri(targetStoreUri);\r
- tryCopy(sourceStoreUri, sourceFileName, currentTargetStoreUri, targetFileName);\r
- } catch (Exception e) {\r
- logger.error(getMarker(), "Error in transfer of {} when copying from {} to {}.", sourceFileName, sourceStoreUri, targetStoreUri);\r
- throw e;\r
- } finally {\r
- if (sourceStoreUri != null)\r
- sourceStoreUri.cleanUp();\r
- if (targetStoreUri != null)\r
- targetStoreUri.cleanUp();\r
- }\r
- return null;\r
- }\r
-\r
- protected StoreUri getTargetStoreUri(StoreUri targetStoreUri) {\r
- return targetStoreUri;\r
- }\r
-\r
- protected String getTmpExtension() {\r
- return DOT_PART;\r
- }\r
-\r
- private void tryCopy(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
- String currentTargetFileName = targetFileName;\r
-\r
- boolean renameAfterCopy = false;\r
- boolean renameAfterFTP = false;\r
- if (getTmpExtension() != null) {\r
- if (RemoteStoreProtocol.LOCAL.equals(targetStoreUri.getProtocol())) {\r
- currentTargetFileName += getTmpExtension();\r
- renameAfterCopy = true;\r
- }\r
- Store targetStore = getManager().getStore(targetStoreUri.getStoreId());\r
-\r
- if (RemoteStoreProtocol.FTP.equals(targetStoreUri.getProtocol()) && !"NEXIO1".equals(targetStore.getName())\r
- && !"NEXIO2".equals(targetStore.getName())) {\r
- currentTargetFileName += getTmpExtension();\r
- renameAfterFTP = true;\r
- }\r
- }\r
-\r
- sourceStoreUri.transferFrom(targetStoreUri, sourceFileName, currentTargetFileName);\r
-\r
- logger.info(getMarker(), "Transfer of {} completed from {} to {}", sourceFileName, sourceStoreUri, currentTargetFileName);\r
-\r
- if (renameAfterCopy) {\r
- Path tmpTargetFile = Paths.get(targetStoreUri.toString(true), currentTargetFileName);\r
- Path targetFile = Paths.get(targetStoreUri.toString(true), targetFileName);\r
- try {\r
- logger.info(getMarker(), "Renaming LOCAL file from {} to {} on {}", currentTargetFileName, targetFileName, sourceStoreUri);\r
- tmpTargetFile.toFile().renameTo(targetFile.toFile());\r
- } catch (Exception e) {\r
- logger.error(getMarker(), e.getMessage());\r
- }\r
- }\r
- if (renameAfterFTP) {\r
- try {\r
- FtpDirectoryLister lister = (FtpDirectoryLister) targetStoreUri.getLister();\r
- FTPClient client = lister.connect();\r
- logger.info(getMarker(), "Renaming FTP file from {} to {} on {}", currentTargetFileName, targetFileName, sourceStoreUri);\r
- client.rename(currentTargetFileName, targetFileName);\r
- } catch (Exception e) {\r
- logger.error(getMarker(), e.getMessage());\r
- } finally {\r
- targetStoreUri.cleanUp();\r
- }\r
- }\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import user.commons.StoreUri;\r
-\r
-public class TransferToFTPStep extends TransferStep {\r
- @Override\r
- @StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
- return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- }\r
-}\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import user.commons.StoreUri;\r
-\r
-public class VODTransferToStep extends TransferStep {\r
- private String relativeTargetPath;\r
-\r
- @StepEntry\r
- public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String relativeTargetPath, String targetFileName)\r
- throws Exception {\r
- this.relativeTargetPath = relativeTargetPath;\r
- return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- }\r
-\r
- @Override\r
- protected StoreUri getTargetStoreUri(StoreUri targetStoreUri) {\r
- StoreUri result = getManager().getStoreUri(targetStoreUri.getId());\r
- result.setRootPath(relativeTargetPath);\r
- return result;\r
- }\r
-\r
-}\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate multiInstance="true" useSessionLog="false">\r
- <declarations>\r
- <parameters>\r
- <parameter name="sourceStoreUri" type="user.commons.StoreUri"/>\r
- <parameter name="tsmFileName" type="java.lang.String"/>\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="expectedFrameNumber" type="java.lang.Long"/>\r
- <parameter name="expectedSize" type="java.lang.Long"/>\r
- <parameter name="expectedColorSpace" type="java.lang.String"/>\r
- <parameter name="escortFile" type="java.lang.String"/>\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="TSMTransferFromStep.java" weight="5">\r
- <inputs>\r
- <input>\r
- <parameter name="sourceStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="tsmFileName" />\r
- </input>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="FileValidatorStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="expectedFrameNumber" />\r
- </input>\r
- <input>\r
- <parameter name="expectedSize" />\r
- </input>\r
- <input>\r
- <parameter name="expectedColorSpace" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="FILEZILLA_AVIDTransferToStep.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
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="NEXIOMetadataPersisterStep.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="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\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="expectedFrameNumber" type="java.lang.Long"/>\r
- <parameter name="expectedSize" type="java.lang.Long"/>\r
- <parameter name="expectedColorSpace" type="java.lang.String"/>\r
- <parameter name="escortFile" type="java.lang.String"/>\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="TransferStep.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
- </calljobstep>\r
- <calljobstep type="FileValidatorStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="expectedFrameNumber" />\r
- </input>\r
- <input>\r
- <parameter name="expectedSize" />\r
- </input>\r
- <input>\r
- <parameter name="expectedColorSpace" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\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
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="MetadataPersisterStep.java" weight="1">\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="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate multiInstance="true" useSessionLog="false">\r
- <declarations>\r
- <parameters>\r
- <parameter name="sourceStoreUri" type="user.commons.StoreUri"/>\r
- <parameter name="tsmFileName" type="java.lang.String"/>\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="expectedFrameNumber" type="java.lang.Long"/>\r
- <parameter name="expectedSize" type="java.lang.Long"/>\r
- <parameter name="expectedColorSpace" type="java.lang.String"/>\r
- <parameter name="escortFile" type="java.lang.String"/>\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="TSMTransferFromStep.java" weight="5">\r
- <inputs>\r
- <input>\r
- <parameter name="sourceStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="tsmFileName" />\r
- </input>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="FileValidatorStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="expectedFrameNumber" />\r
- </input>\r
- <input>\r
- <parameter name="expectedSize" />\r
- </input>\r
- <input>\r
- <parameter name="expectedColorSpace" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="FILEZILLA_PASARESTORETransferToStep.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
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="NEXIOMetadataPersisterStep.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="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\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="expectedFrameNumber" type="java.lang.Long"/>\r
- <parameter name="expectedSize" type="java.lang.Long"/>\r
- <parameter name="expectedColorSpace" type="java.lang.String"/>\r
- <parameter name="escortFile" type="java.lang.String"/>\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="NEXIO1TransferFromStep.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
- </calljobstep>\r
- <calljobstep type="FileValidatorStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="expectedFrameNumber" />\r
- </input>\r
- <input>\r
- <parameter name="expectedSize" />\r
- </input>\r
- <input>\r
- <parameter name="expectedColorSpace" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\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
- <parameter name="fileName" />\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="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate multiInstance="true" useSessionLog="false">\r
- <declarations>\r
- <parameters>\r
- <parameter name="sourceStoreUri" type="user.commons.StoreUri"/>\r
- <parameter name="tsmFileName" type="java.lang.String"/>\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="expectedFrameNumber" type="java.lang.Long"/>\r
- <parameter name="expectedSize" type="java.lang.Long"/>\r
- <parameter name="expectedColorSpace" type="java.lang.String"/>\r
- <parameter name="escortFile" type="java.lang.String"/>\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="TSMTransferFromStep.java" weight="5">\r
- <inputs>\r
- <input>\r
- <parameter name="sourceStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="tsmFileName" />\r
- </input>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="FileValidatorStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="expectedFrameNumber" />\r
- </input>\r
- <input>\r
- <parameter name="expectedSize" />\r
- </input>\r
- <input>\r
- <parameter name="expectedColorSpace" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="NEXIO1TransferToStep.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
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="NEXIOMetadataPersisterStep.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="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\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="expectedFrameNumber" type="java.lang.Long"/>\r
- <parameter name="expectedSize" type="java.lang.Long"/>\r
- <parameter name="expectedColorSpace" type="java.lang.String"/>\r
- <parameter name="escortFile" type="java.lang.String"/>\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="NEXIO2TransferFromStep.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
- </calljobstep>\r
- <calljobstep type="FileValidatorStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="expectedFrameNumber" />\r
- </input>\r
- <input>\r
- <parameter name="expectedSize" />\r
- </input>\r
- <input>\r
- <parameter name="expectedColorSpace" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\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
- <parameter name="fileName" />\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="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate multiInstance="true" useSessionLog="false">\r
- <declarations>\r
- <parameters>\r
- <parameter name="sourceStoreUri" type="user.commons.StoreUri"/>\r
- <parameter name="tsmFileName" type="java.lang.String"/>\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="expectedFrameNumber" type="java.lang.Long"/>\r
- <parameter name="expectedSize" type="java.lang.Long"/>\r
- <parameter name="expectedColorSpace" type="java.lang.String"/>\r
- <parameter name="escortFile" type="java.lang.String"/>\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="TSMTransferFromStep.java" weight="5">\r
- <inputs>\r
- <input>\r
- <parameter name="sourceStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="tsmFileName" />\r
- </input>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="FileValidatorStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="expectedFrameNumber" />\r
- </input>\r
- <input>\r
- <parameter name="expectedSize" />\r
- </input>\r
- <input>\r
- <parameter name="expectedColorSpace" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="NEXIO2TransferToStep.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
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="NEXIOMetadataPersisterStep.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="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate multiInstance="true" useSessionLog="false">\r
- <declarations>\r
- <parameters>\r
- <parameter name="sourceStoreUri" type="user.commons.StoreUri"/>\r
- <parameter name="tsmFileName" type="java.lang.String"/>\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="expectedFrameNumber" type="java.lang.Long"/>\r
- <parameter name="expectedSize" type="java.lang.Long"/>\r
- <parameter name="expectedColorSpace" type="java.lang.String"/>\r
- <parameter name="escortFile" type="java.lang.String"/>\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="TSMTransferFromStep.java" weight="5">\r
- <inputs>\r
- <input>\r
- <parameter name="sourceStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="tsmFileName" />\r
- </input>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="FileValidatorStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="expectedFrameNumber" />\r
- </input>\r
- <input>\r
- <parameter name="expectedSize" />\r
- </input>\r
- <input>\r
- <parameter name="expectedColorSpace" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="PASAPOOLTransferToStep.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
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="NEXIOMetadataPersisterStep.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="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!-- A PB ARCHIVE mappat vizsgalva, megkeresi azokat a fajlokat, amik archivalhatoak. Ezekre archivalasi bejegyzest keszit. -->\r
-<jobtemplate useSessionLog="false">\r
-<declarations>\r
- <parameters>\r
- <parameter name="sourceStoreName" type="java.lang.String"/>\r
- <parameter name="escortStoreName" type="java.lang.String"/>\r
- <parameter name="lastModifiedHours" type="java.lang.Integer"/>\r
- </parameters>\r
-</declarations>\r
-<commands>\r
- <calljobstep type="PBArchiveCheckerStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="sourceStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="escortStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="lastModifiedHours" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
-</commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\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="expectedFrameNumber" type="java.lang.Long"/>\r
- <parameter name="expectedSize" type="java.lang.Long"/>\r
- <parameter name="expectedColorSpace" type="java.lang.String"/>\r
- <parameter name="escortFile" type="java.lang.String"/>\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="PBARCHIVETransferFromStep.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
- </calljobstep>\r
- <calljobstep type="FileValidatorStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="expectedFrameNumber" />\r
- </input>\r
- <input>\r
- <parameter name="expectedSize" />\r
- </input>\r
- <input>\r
- <parameter name="expectedColorSpace" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\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
- <parameter name="fileName" />\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="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate multiInstance="true" useSessionLog="false">\r
- <declarations>\r
- <parameters>\r
- <parameter name="sourceStoreUri" type="user.commons.StoreUri"/>\r
- <parameter name="tsmFileName" type="java.lang.String"/>\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="relativeTargetPath" type="java.lang.String"/>\r
- <parameter name="expectedFrameNumber" type="java.lang.Long"/>\r
- <parameter name="expectedSize" type="java.lang.Long"/>\r
- <parameter name="expectedColorSpace" type="java.lang.String"/>\r
- <parameter name="escortFile" type="java.lang.String"/>\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="TSMTransferFromStep.java" weight="5">\r
- <inputs>\r
- <input>\r
- <parameter name="sourceStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="tsmFileName" />\r
- </input>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="FileValidatorStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="expectedFrameNumber" />\r
- </input>\r
- <input>\r
- <parameter name="expectedSize" />\r
- </input>\r
- <input>\r
- <parameter name="expectedColorSpace" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="VODTransferToStep.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
- <parameter name="relativeTargetPath" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="FileCleanupStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="tempStoreUri" />\r
- </input>\r
- <input>\r
- <parameter name="fileName" />\r
- </input>\r
- <input>\r
- <parameter name="escortFile" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate multiInstance="true" useSessionLog="false">\r
- <declarations>\r
- <parameters>\r
- <parameter name="param" type="java.lang.Integer" />\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep remote="true" type="CancelableStep.java" weight="1" >\r
- <inputs>\r
- <input>\r
- <parameter name="param" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate useSessionLog="false">\r
- <declarations>\r
- <parameters>\r
- <parameter name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
- <parameter name="deleteSource" type="java.lang.Boolean"/>\r
- <parameter name="killDateDays" type="java.lang.Integer"/>\r
- <parameter name="successRecipient" type="java.lang.String" />\r
- <parameter name="localHiresPath" type="java.lang.String" />\r
- <parameter name="globalHiresPath" type="java.lang.String" />\r
- <parameter name="localLowresPath" type="java.lang.String" />\r
- <parameter name="transcoderAddress" type="java.lang.String" />\r
- <parameter name="transcoderTemplateName" type="java.lang.String" />\r
- <parameter name="localRetrievePath" type="java.lang.String" />\r
- <parameter name="globalRetrievePath" type="java.lang.String" />\r
- <parameter name="targetNamePattern" type="java.lang.String" />\r
- </parameters>\r
- <variables>\r
- <variable name="archiveItem" type="user.jobengine.server.steps.ArchiveItem" />\r
- </variables>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="user.jobengine.server.steps.CreateArchiveItemStep" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="mediaCubeMedia" />\r
- </input>\r
- <input>\r
- <parameter name="localHiresPath" />\r
- </input>\r
- </inputs>\r
- <outputs>\r
- <output>\r
- <variable name="archiveItem" />\r
- </output>\r
- </outputs>\r
- </calljobstep>\r
- <calljobstep type="user.jobengine.server.steps.TSMRestoreStep" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="mediaCubeMedia" />\r
- </input>\r
- <input>\r
- <parameter name="localHiresPath" />\r
- </input>\r
- <input>\r
- <parameter name="targetNamePattern" />\r
- </input>\r
- <input>\r
- <parameter name="successRecipient" />\r
- </input>\r
- <input>\r
- <parameter name="killDateDays" />\r
- </input>\r
- <input>\r
- <parameter name="localRetrievePath" />\r
- </input>\r
- <input>\r
- <parameter name="globalRetrievePath" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="user.jobengine.server.steps.MediaToolStep" weight="1">\r
- <inputs>\r
- <input>\r
- <variable name="archiveItem" />\r
- </input>\r
- <input>\r
- <parameter name="mediaCubeMedia" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="user.jobengine.server.steps.TranscodeFFAStranStep" weight="1">\r
- <inputs>\r
- <input>\r
- <variable name="archiveItem" />\r
- </input>\r
- <input>\r
- <parameter name="mediaCubeMedia" />\r
- </input>\r
- <input>\r
- <parameter name="transcoderAddress" />\r
- </input>\r
- <input>\r
- <parameter name="transcoderTemplateName" />\r
- </input>\r
- <input>\r
- <parameter name="globalHiresPath" />\r
- </input>\r
- <input>\r
- <parameter name="localLowresPath" />\r
- </input>\r
- <input>\r
- <parameter name="deleteSource" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- <calljobstep type="user.jobengine.server.steps.UpdateGhostMediaData" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="mediaCubeMedia" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate useSessionLog="false">\r
- <declarations>\r
- <parameters>\r
- <parameter name="sourceStoreName" type="java.lang.String" />\r
- <parameter name="template" type="java.lang.String"/>\r
- <parameter name="expectedColorSpace" type="java.lang.String"/>\r
- <parameter name="limit" type="java.lang.Integer" />\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="ForkDownloadStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="sourceStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="template" />\r
- </input>\r
- <input>\r
- <parameter name="expectedColorSpace"/>\r
- </input>\r
- <input>\r
- <parameter name="limit" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate useSessionLog="false">\r
- <declarations>\r
- <parameters>\r
- <parameter name="sourceStoreName" type="java.lang.String" />\r
- <parameter name="template" type="java.lang.String"/>\r
- <parameter name="expectedColorSpace" type="java.lang.String"/>\r
- <parameter name="limit" type="java.lang.Integer" />\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="ForkUploadStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="sourceStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="template" />\r
- </input>\r
- <input>\r
- <parameter name="expectedColorSpace" />\r
- </input>\r
- <input>\r
- <parameter name="limit" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!-- Egy server egy mappajat vegigolvasva, megkeresi azokat a fajlokat amik valtoztak, es a tarolo valamint a fajl nevebol kepez egy statusz fajlt. -->\r
-<jobtemplate multiInstance="true" useSessionLog="false">\r
-<declarations>\r
- <parameters>\r
- <parameter name="sourceStoreName" type="java.lang.String"/>\r
- <parameter name="protocol" type="java.lang.String"/>\r
- <parameter name="wildCard" type="java.lang.String"/>\r
- <parameter name="escortStoreName" type="java.lang.String"/>\r
- <parameter name="limit" type="java.lang.Integer"/>\r
- </parameters>\r
-</declarations>\r
-<commands>\r
- <calljobstep type="GenericArchiveCheckerStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="sourceStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="protocol" />\r
- </input>\r
- <input>\r
- <parameter name="wildCard" />\r
- </input>\r
- <input>\r
- <parameter name="escortStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="limit" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
-</commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!-- A VIC fajlok tartalma alapjan a hianyzo media fajlok nevebol kepez statusz fajlokat. -->\r
-<jobtemplate useSessionLog="false">\r
-<declarations>\r
- <parameters>\r
- <parameter name="vicFiles" type="com.ibm.nosql.json.api.BasicDBList"/>\r
- <parameter name="escortStoreName" type="java.lang.String"/>\r
- <parameter name="targetStoreName" type="java.lang.String"/>\r
- <parameter name="targetProtocol" type="java.lang.String"/>\r
- </parameters>\r
-</declarations>\r
-<commands>\r
- <calljobstep type="HarrisMissingMaterialCheckerStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="vicFiles" />\r
- </input>\r
- <input>\r
- <parameter name="escortStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="targetStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="targetProtocol" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
-</commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!-- A VIC fajlok tartalma alapjan a hianyzo media fajlok nevebol kepez statusz fajlokat. -->\r
-<jobtemplate useSessionLog="false">\r
-<declarations>\r
- <parameters>\r
- <parameter name="vicFiles" type="com.ibm.nosql.json.api.BasicDBList"/>\r
- <parameter name="escortStoreName" type="java.lang.String"/>\r
- <parameter name="targetStoreName" type="java.lang.String"/>\r
- <parameter name="targetProtocol" type="java.lang.String"/>\r
- </parameters>\r
-</declarations>\r
-<commands>\r
- <calljobstep type="HarrisMissingMaterialCheckerStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="vicFiles" />\r
- </input>\r
- <input>\r
- <parameter name="escortStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="targetStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="targetProtocol" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
-</commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!-- A NEXIO server-t lekerdezve, megkeresi azokat a fajlokat amik valtoztak, es a tarolo valamint a fajl nevebol kepez egy statusz fajlt. -->\r
-<jobtemplate useSessionLog="false">\r
-<declarations>\r
- <parameters>\r
- <parameter name="sourceStoreName" type="java.lang.String"/>\r
- <parameter name="escortStoreName" type="java.lang.String"/>\r
- <parameter name="lastModifiedHours" type="java.lang.Integer"/>\r
- </parameters>\r
-</declarations>\r
-<commands>\r
- <calljobstep type="NEXIOArchiveCheckerStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="sourceStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="escortStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="lastModifiedHours" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
-</commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!-- A NEXIO server-t lekerdezve, megkeresi azokat a fajlokat amik valtoztak, es a tarolo valamint a fajl nevebol kepez egy statusz fajlt. -->\r
-<jobtemplate useSessionLog="false">\r
-<declarations>\r
- <parameters>\r
- <parameter name="sourceStoreName" type="java.lang.String"/>\r
- <parameter name="escortStoreName" type="java.lang.String"/>\r
- <parameter name="lastModifiedHours" type="java.lang.Integer"/>\r
- </parameters>\r
-</declarations>\r
-<commands>\r
- <calljobstep type="NEXIOArchiveCheckerStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="sourceStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="escortStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="lastModifiedHours" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
-</commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!-- A PB API hivasok alapjan a hianyzo media fajlok nevebol kepez statusz fajlokat. -->\r
-<jobtemplate useSessionLog="false">\r
-<declarations>\r
- <parameters>\r
- <parameter name="escortStoreName" type="java.lang.String"/>\r
- <parameter name="lookupStoreNames" type="com.ibm.nosql.json.api.BasicDBList"/>\r
- <parameter name="targetStoreName" type="java.lang.String"/>\r
- <parameter name="targetProtocol" type="java.lang.String"/>\r
- <parameter name="primaryEndPoint" type="java.lang.String"/>\r
- <parameter name="primaryUserName" type="java.lang.String"/>\r
- <parameter name="primaryPassword" type="java.lang.String"/>\r
- <parameter name="secondaryEndPoint" type="java.lang.String"/>\r
- <parameter name="secondaryUserName" type="java.lang.String"/>\r
- <parameter name="secondaryPassword" type="java.lang.String"/>\r
- <parameter name="rangeForwardHours" type="java.lang.Integer"/>\r
- </parameters>\r
-</declarations>\r
-<commands>\r
- <calljobstep type="PeableBeachMissingMaterialCheckerStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="escortStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="lookupStoreNames" />\r
- </input>\r
- <input>\r
- <parameter name="targetStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="targetProtocol" />\r
- </input>\r
- <input>\r
- <parameter name="primaryEndPoint" />\r
- </input>\r
- <input>\r
- <parameter name="primaryUserName" />\r
- </input>\r
- <input>\r
- <parameter name="primaryPassword" />\r
- </input>\r
- <input>\r
- <parameter name="secondaryEndPoint" />\r
- </input>\r
- <input>\r
- <parameter name="secondaryUserName" />\r
- </input>\r
- <input>\r
- <parameter name="secondaryPassword" />\r
- </input>\r
- <input>\r
- <parameter name="rangeForwardHours" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
-</commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate multiInstance="true" useSessionLog="false">\r
- <declarations>\r
- <parameters>\r
- <parameter name="escortStoreName" type="java.lang.String" />\r
- <parameter name="targetStoreName" type="java.lang.String"/>\r
- <parameter name="basket" type="java.util.ArrayList" />\r
- <parameter name="recipient" type="java.lang.String" />\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="RegisterUserRestoreStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="escortStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="targetStoreName" />\r
- </input>\r
- <input>\r
- <parameter name="basket"/>\r
- </input>\r
- <input>\r
- <parameter name="recipient" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate useSessionLog="false">\r
- <declarations>\r
- <parameters>\r
- <parameter name="targetStoreName" type="java.lang.String" />\r
- <parameter name="basket" type="com.ibm.nosql.json.api.BasicDBList" />\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="RegisterVODRestoreStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="targetStoreName"/>\r
- </input>\r
- <input>\r
- <parameter name="basket"/>\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate useSessionLog="false">\r
- <commands>\r
- <calljobstep type="ServerStatusReportStep.java" weight="1" />\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate>\r
- <declarations>\r
- <parameters>\r
- <parameter name="sourceFolder" type="java.lang.String" />\r
- <parameter name="filter" type="com.ibm.nosql.json.api.BasicDBObject" />\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep remote="true" type="RundownFilesCollectorStep.java" weight="1" >\r
- <inputs>\r
- <input>\r
- <parameter name="sourceFolder" />\r
- </input>\r
- <input>\r
- <parameter name="filter" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate multiInstance="true" useSessionLog="false">\r
-<commands>\r
- <calljobstep type="TestForkCancelableStep.java" weight="1" />\r
-</commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate>\r
- <declarations>\r
- <parameters>\r
- <parameter name="source" type="java.lang.String"/>\r
- </parameters>\r
- </declarations>\r
- <commands>\r
- <calljobstep type="DirMXFValidatorStep.java" weight="1">\r
- <inputs>\r
- <input>\r
- <parameter name="source" />\r
- </input>\r
- </inputs>\r
- </calljobstep>\r
- </commands>\r
-</jobtemplate>
\ No newline at end of file
+++ /dev/null
-datasource:\r
- mediacube:\r
- url: jdbc:db2://192.168.0.16:50000/mc\r
- user: db2admin\r
- password: password\r
- external-indexer: false\r
- simple-search: true\r
- login-timeout: 3\r
- pool-size: 10\r
- mediacube-nosql:\r
- url: jdbc:db2://192.168.0.16:50000/mc\r
- user: db2admin\r
- password: password\r
- schema: test\r
- login-timeout: 3\r
-services:\r
- ffmpeg:\r
- execurable-location: /opt/ffmpeg/ffmpeg \r
- mediacube:\r
- proxy-root: /opt\r
- nexio:\r
- disabled: true\r
-jobs:\r
- validate-transfers: false\r
- copy-buffer-size: 32768\r
- scheduled-execution-disabled: true\r
-tsm:\r
- randomize-archives: false \r
- delimiter: \\r
- node-name: PASANODE\r
- fs-name: NEXIO\r
- alternate-fs-name: PASA\r
- hl-name: \\r
-
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0"?>
-<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
-
-<Configure id="Server" class="org.eclipse.jetty.server.Server">
- <Call name="addConnector">
- <Arg>
- <New class="org.eclipse.jetty.server.ServerConnector">
- <Arg name="server">
- <Ref refid="Server" />
- </Arg>
- <Set name="port">
- <Property name="jetty.http.port" default="9080" />
- </Set>
- </New>
- </Arg>
- </Call>
-
-<!-- <Set name="sessionIdManager"> -->
-<!-- <New id="idMgr" -->
-<!-- class="org.eclipse.jetty.server.session.DefaultSessionIdManager"> -->
-<!-- <Arg> -->
-<!-- <Ref refid="Server" /> -->
-<!-- </Arg> -->
-<!-- <Set name="workerName">node1</Set> -->
-<!-- </New> -->
-<!-- </Set> -->
-
- <Set name="handler">
- <New id="Handlers"
- class="org.eclipse.jetty.server.handler.HandlerCollection">
- <Set name="handlers">
- <Array type="org.eclipse.jetty.server.Handler">
- <Item>
- <New id="Contexts"
- class="org.eclipse.jetty.server.handler.ContextHandlerCollection" />
- </Item>
- <Item>
- <New id="DefaultHandler"
- class="org.eclipse.jetty.server.handler.DefaultHandler" />
- </Item>
- </Array>
- </Set>
- </New>
- </Set>
-</Configure>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>\r
-<Configuration status="ERROR" monitorInterval="10" packages="user.commons.log4j2.appender">\r
- <Properties>\r
- <Property name="logPath">log</Property>\r
- <Property name="fileName">${logPath}/mediacube.log</Property>\r
- <Property name="filePattern">${logPath}/$${date:yyyy-MM}/mediacube-%d{MM-dd-yyyy}-%i.log.gz</Property>\r
- <Property name="markeredFileName">${logPath}/markered-mediacube.log</Property>\r
- <Property name="markeredFilePattern">${logPath}/$${date:yyyy-MM}/markered-mediacube-%d{MM-dd-yyyy}-%i.log.gz</Property>\r
- <Property name="fileName.err">${logPath}/mediacube-err.log</Property>\r
- <Property name="filePattern.err">${logPath}/$${date:yyyy-MM}/mediacube-err-%d{MM-dd-yyyy}-%i.log.gz</Property>\r
- </Properties>\r
- <Appenders>\r
- <File name="MediaProfile" fileName="${logPath}/mediaprofile.log">\r
- <Filters>\r
- <MarkerFilter marker="MEDIAPROFILE" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %msg%n" />\r
- </File>\r
- \r
- <Console name="Console" target="SYSTEM_OUT">\r
- <Filters>\r
- <MarkerFilter marker="MEDIACUBE" onMatch="DENY" onMismatch="NEUTRAL" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %msg (%F:%L) %n" />\r
- </Console>\r
- <Console name="MarkeredConsole" target="SYSTEM_ERR">\r
- <Filters>\r
- <MarkerFilter marker="MEDIACUBE" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %markerSimpleName - %msg (%F:%L)%n" />\r
- </Console>\r
- <HTMLMailAppender name="MarkeredMail" subject="MediaCube rendszerüzenet" to="vasary@elgekko.net" from="broadcast.service-ce@amcnetworks.com" smtpHost="10.160.60.165"\r
- smtpPort="125" smtpProtocol="smtp" smtpDebug="false" ignoreExceptions="false" bufferSize="1">\r
- <Filters>\r
- <MarkerFilter marker="MEDIACUBE" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss} %-5level - %msg %n" />\r
- </HTMLMailAppender>\r
- <RollingFile name="MarkeredRollingFile" fileName="${markeredFileName}" filePattern="${markeredFilePattern}">\r
- <Filters>\r
- <MarkerFilter marker="MEDIACUBE FILELOG" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %msg (%F:%L)%n %throwable" />\r
- <Policies>\r
- <TimeBasedTriggeringPolicy />\r
- </Policies>\r
- </RollingFile>\r
- <RollingFile name="MarkeredRollingFile1" fileName="${logPath}/nexio1-archive-checker.log" filePattern="${markeredFilePattern}">\r
- <Filters>\r
- <MarkerFilter marker="NEXIO1 archiválás előkészítése" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %msg %n %throwable" />\r
- <Policies>\r
- <TimeBasedTriggeringPolicy />\r
- </Policies>\r
- </RollingFile>\r
- <RollingFile name="MarkeredRollingFile2" fileName="${logPath}/nexio2-archive-checker.log" filePattern="${markeredFilePattern}">\r
- <Filters>\r
- <MarkerFilter marker="NEXIO2 archiválás előkészítése" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %msg %n %throwable" />\r
- <Policies>\r
- <TimeBasedTriggeringPolicy />\r
- </Policies>\r
- </RollingFile>\r
- <RollingFile name="MarkeredRollingFile3" fileName="${logPath}/fork-validate-and-archive.log" filePattern="${markeredFilePattern}">\r
- <Filters>\r
- <MarkerFilter marker="Kötegelt validálás és archiválás" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %msg (%F:%L)%n %throwable" />\r
- <Policies>\r
- <TimeBasedTriggeringPolicy />\r
- </Policies>\r
- </RollingFile>\r
- <RollingFile name="MarkeredRollingFile4" fileName="${logPath}/harris1-missingmaterial-checker.log" filePattern="${markeredFilePattern}">\r
- <Filters>\r
- <MarkerFilter marker="HARRIS1 missing material lekérdezés" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %msg %n %throwable" />\r
- <Policies>\r
- <TimeBasedTriggeringPolicy />\r
- </Policies>\r
- </RollingFile>\r
- <RollingFile name="MarkeredRollingFile5" fileName="${logPath}/harris2-missingmaterial-checker.log" filePattern="${markeredFilePattern}">\r
- <Filters>\r
- <MarkerFilter marker="HARRIS2 missing material lekérdezés" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %msg %n %throwable" />\r
- <Policies>\r
- <TimeBasedTriggeringPolicy />\r
- </Policies>\r
- </RollingFile>\r
- <RollingFile name="MarkeredRollingFile6" fileName="${logPath}/peablebeach-missingmaterial-checker.log" filePattern="${markeredFilePattern}">\r
- <Filters>\r
- <MarkerFilter marker="PEABLEBEACH missing material lekérdezés" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %msg (%F:%L)%n %throwable" />\r
- <Policies>\r
- <TimeBasedTriggeringPolicy />\r
- </Policies>\r
- </RollingFile>\r
- <RollingFile name="MarkeredRollingFile7" fileName="${logPath}/fork-validate-and-restore.log" filePattern="${markeredFilePattern}">\r
- <Filters>\r
- <MarkerFilter marker="Kötegelt validálás és visszatöltés" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %msg (%F:%L)%n %throwable" />\r
- <Policies>\r
- <TimeBasedTriggeringPolicy />\r
- </Policies>\r
- </RollingFile>\r
- <RollingFile name="MarkeredRollingFile8" fileName="${logPath}/validate-and-archive.log" filePattern="${markeredFilePattern}">\r
- <Filters>\r
- <MarkerFilter marker="Archiválás" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %msg (%F:%L)%n %throwable" />\r
- <Policies>\r
- <TimeBasedTriggeringPolicy />\r
- </Policies>\r
- </RollingFile>\r
- <RollingFile name="MarkeredRollingFile9" fileName="${logPath}/validate-and-restore.log" filePattern="${markeredFilePattern}">\r
- <Filters>\r
- <MarkerFilter marker="Visszatöltés" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %msg (%F:%L)%n %throwable" />\r
- <Policies>\r
- <TimeBasedTriggeringPolicy />\r
- </Policies>\r
- </RollingFile>\r
- <RollingFile name="RollingFile" fileName="${fileName}" filePattern="${filePattern}">\r
- <Filters>\r
- <!-- <MarkerFilter marker="MEDIACUBE" onMatch="DENY" onMismatch="NEUTRAL" /> -->\r
- <MarkerFilter marker="MEDIACUBE FILELOG" onMatch="DENY" onMismatch="NEUTRAL" />\r
- </Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %level %logger{1}.%M %msg (%F:%L)%n %throwable" />\r
- <Policies>\r
- <TimeBasedTriggeringPolicy />\r
- </Policies>\r
- </RollingFile>\r
- <RollingFile name="RollingFileExceptions" fileName="${fileName.err}" filePattern="${filePattern.err}">\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %logger{1}.%M %msg (%F:%L)%n %throwable" />\r
- <Filters>\r
- <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY" />\r
- </Filters>\r
- <Policies>\r
- <TimeBasedTriggeringPolicy />\r
- </Policies>\r
- </RollingFile>\r
- \r
- </Appenders>\r
- <Loggers>\r
- <Root level="INFO">\r
- <AppenderRef ref="MediaProfile" />\r
- <AppenderRef ref="Console" />\r
- <AppenderRef ref="MarkeredConsole" />\r
- <AppenderRef ref="RollingFile" />\r
- <AppenderRef ref="RollingFileExceptions" />\r
- <AppenderRef ref="MarkeredRollingFile" />\r
- <AppenderRef ref="MarkeredRollingFile1" />\r
- <AppenderRef ref="MarkeredRollingFile2" />\r
- <AppenderRef ref="MarkeredRollingFile3" />\r
- <AppenderRef ref="MarkeredRollingFile4" />\r
- <AppenderRef ref="MarkeredRollingFile5" />\r
- <AppenderRef ref="MarkeredRollingFile6" />\r
- <AppenderRef ref="MarkeredRollingFile7" />\r
- <AppenderRef ref="MarkeredRollingFile8" />\r
- <AppenderRef ref="MarkeredRollingFile9" />\r
- <AppenderRef ref="MarkeredMail" />\r
- </Root>\r
- <Logger name="org.zkoss" level="ERROR" additivity="false" />\r
- <Logger name="org.quartz" level="ERROR" additivity="false" />\r
- <Logger name="org.eclipse.jetty.osgi.boot" level="ERROR" additivity="false" />\r
- <Logger name="user.commons.pool" level="DEBUG" additivity="false" />\r
- </Loggers>\r
-</Configuration>\r
+++ /dev/null
-sourceStoreUri:
- name: Default
- protocol: LOCAL
- uri: "/mnt/NLE"
- fileFilter: "*.mxf"
- showDirectories: true
-alternateSourceStoreUris:
-- name: NLE1
- protocol: LOCAL
- uri: "/mnt/NLE/NLE1"
- fileFilter: "*.mxf"
- showDirectories: true
-- name: NLE2
- protocol: LOCAL
- uri: "/mnt/NLE/NLE2"
- fileFilter: "*.mxf"
- showDirectories: true
-- name: NLE3
- protocol: LOCAL
- uri: "/mnt/NLE/NLE3"
- fileFilter: "*.mxf"
- showDirectories: true
-- name: NLE4
- protocol: LOCAL
- uri: "/mnt/NLE/NLE4"
- fileFilter: "*.mxf"
- showDirectories: true
-- name: POLC
- protocol: LOCAL
- uri: "/mnt/POLC"
- fileFilter: "*.mxf"
- showDirectories: true
-targets:
-- name: FINISHED_SHOWS
- killDateDays: 7
- storeUri:
- protocol: LOCAL
- uri: "/mnt/PROMISE/FINISHED_SHOWS"
+++ /dev/null
-jobQueuePollInterval: 1000\r
-disableHelp: true\r
-maestroDisabled: false\r
-alternateRetrieveSelector: false\r
-disableStatistics: true\r
-disableEditor: false\r
-targetRestoreFilters:\r
-- FILEZILLA_AVID\r
-- FILEZILLA_PASARESTORE\r
-topTypeFilters:\r
-- name: Hír bejátszó\r
-- name: Hír nyers\r
-- name: Visszarögzített\r
-- name: Egyéb\r
-bottomTypeFilters:\r
-- name: Műsor\r
-- name: Műsor nyers\r
-- name: Promo\r
-- name: Promo nyers\r
-- name: Reklám\r
-- name: Reklám nyers\r
-authentication:\r
- authEnabled: true\r
- defaultUser: root\r
- defaultPassword: password\r
- adHost: intra.amc.hu\r
- adNonSecurePort: 3268\r
- adBaseDn: DC=intra,DC=amc,DC=hu\r
- adAdminMap:\r
- - INFORMATIKUSOK\r
- - MUSZAKVEZETOK\r
- adSubmitterMap:\r
- - INFORMATIKUSOK\r
- - MUSZAKVEZETOK\r
- adEditorMap:\r
- - INFORMATIKUSOK\r
- - MUSZAKVEZETOK\r
- localAccounts:\r
- - user: user\r
- password: 5F4DCC3B5AA765D61D8327DEB882CF99\r
- email:\r
- - user: user1\r
- password: 5F4DCC3B5AA765D61D8327DEB882CF99\r
- email:\r
- - user: lebony\r
- password: 4E25B117B14D86D7DCECB4E433CF932C\r
- email:\r
- - user: root\r
- password: 5F4DCC3B5AA765D61D8327DEB882CF99\r
- email: vasary@elgekko.net\r
- localAdmins:\r
- - root\r
- - admin\r
- localSubmitters:\r
- - lebony\r
- localEditors:\r
- - editor\r