{"name": "houseId", "type": "java.lang.String"},\r
{"name": "successRecipient", "type": "java.lang.String"},\r
{"name": "killDateDays", "type": "java.lang.Integer"}\r
+ ]\r
+ }, \r
+ {\r
+ "active": false,\r
+ "executeimmediate": false,\r
+ "name" : "Common file copy",\r
+ "template": "common-copy.xml",\r
+ "cronexpression": "0 0 0/1 1/1 * ? *",\r
+ "parameters": [ \r
+ {"name": "sourceStoreUri", "value": "10.10.1.100/ARCHIVE", "type": "user.commons.StoreUri"},\r
+ {"name": "targetStoreUri", "value": "10.10.1.100/TEMP", "type": "user.commons.StoreUri"},\r
+ {"name": "sourceFileName", "value": "akarmi.mp4", "type": "java.lang.String"},\r
+ {"name": "targetFileName", "value": "barmi.mp4", "type": "java.lang.String"},\r
+ {"name": "sourceRemoteProtocol", "value": "LOCAL", "type": "user.commons.remotestore.RemoteStoreProtocol"},\r
+ {"name": "targetRemoteProtocol", "value": "FTP", "type": "user.commons.remotestore.RemoteStoreProtocol"},\r
]\r
}\r
]}\r
\r
-\r
-\r
<?xml version="1.0" encoding="UTF-8"?>\r
<classpath>\r
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
+ <classpathentry exported="true" kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
<classpathentry kind="src" path="src"/>\r
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
<classpathentry kind="output" path="bin"/>\r
<executor className="user.jobengine.server.steps.UploadRecordingToNexioStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.MediaToolStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.UpdateGhostMediaData" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.FileCopyStep" maxConcurrent="1"/>\r
</executors>
\ No newline at end of file
"template": "fake-noparams.xml",\r
"cronexpression": "0 40 22 * * ?",\r
"parameters": [ {"name": "itemID", "value": 1, "type": "java.lang.Long"} ]\r
+ },\r
+ {\r
+ "name" : "Teszt Jobstep",\r
+ "template": "test_instr.xml",\r
+ "cronexpression": "0 46-50/1 * * * ?",\r
+ "parameters": [ {"name": "milisec", "value": 1000, "type": "java.lang.Integer"} ]\r
+ }, \r
+ {\r
+ "active": false,\r
+ "executeimmediate": false,\r
+ "name" : "Common file copy",\r
+ "template": "common-copy.xml",\r
+ "cronexpression": "0 0 0/1 1/1 * ? *",\r
+ "parameters": [ \r
+ {"name": "sourceStoreName", "value": "10.10.1.100/ARCHIVE", "type": "java.lang.String"},\r
+ {"name": "targetStoreName", "value": "10.10.1.100/TEMP", "type": "java.lang.String"},\r
+ {"name": "sourceFileName", "value": "akarmi.mp4", "type": "java.lang.String"},\r
+ {"name": "targetFileName", "value": "barmi.mp4", "type": "java.lang.String"},\r
+ {"name": "sourceRemoteProtocol", "value": "http://", "type": "user.commons.remotestore.RemoteStoreProtocol"},\r
+ {"name": "targetRemoteProtocol", "value": "http://", "type": "user.commons.remotestore.RemoteStoreProtocol"},\r
+ ]\r
}\r
]}\r
\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate name="Általános file másolás">\r
+ <declarations>\r
+ <parameters>\r
+\r
+ <parameter name="sourceStoreName" type="java.lang.String"/>\r
+ <parameter name="targetStoreName" type="java.lang.String"/>\r
+ <parameter name="sourceFileName" type="java.lang.String"/>\r
+ <parameter name="targetFileName" type="java.lang.String"/>\r
+ <parameter name="sourceRemoteProtocol" type="user.commons.remotestore.RemoteStoreProtocol"/>\r
+ <parameter name="targetRemoteProtocol" type="user.commons.remotestore.RemoteStoreProtocol"/>\r
+ </parameters>\r
+ </declarations>\r
+ <commands>\r
+ <calljobstep id="id1" type="user.jobengine.server.steps.FileCopyStep" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="sourceStoreName" />\r
+ </input>\r
+ <input>\r
+ <parameter name="targetStoreName" />\r
+ </input>\r
+ <input>\r
+ <parameter name="sourceFileName" />\r
+ </input>\r
+ <input>\r
+ <parameter name="targetFileName" />\r
+ </input>\r
+ <input>\r
+ <parameter name="sourceRemoteProtocol" />\r
+ </input>\r
+ <input>\r
+ <parameter name="targetRemoteProtocol" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
+ </commands>\r
+</jobtemplate>
\ No newline at end of file
<parameter name="octopusOutputFolder" type="java.lang.String" />\r
<parameter name="genericOutputFolder" type="java.lang.String" />\r
<parameter name="onlineOutputFolder" type="java.lang.String" />\r
- <parameter name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
+ <parameter name="archivedMedia" type="user.jobengine.db.ArchivedMedia" />\r
<parameter name="houseId" type="java.lang.String" />\r
<parameter name="successRecipient" type="java.lang.String" />\r
<parameter name="targetPathType" type="java.lang.String" />\r
<variable name="targetPath" type="java.lang.String" />\r
<variable name="targetNamePattern" type="java.lang.String" />\r
<variable name="useNexioTarget" type="java.lang.Boolean" />\r
+ <variable name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
</variables>\r
</declarations>\r
<commands>\r
<input>\r
<parameter name="targetPathType" />\r
</input>\r
+ <input>\r
+ <parameter name="archivedMedia" />\r
+ </input>\r
</inputs>\r
<outputs>\r
<output>\r
</input>\r
</inputs>\r
</calljobstep>\r
+ <calljobstep type="user.jobengine.server.steps.MXFCutterStep" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="archivedMedia" />\r
+ </input>\r
+ <input>\r
+ <variable name="targetPath" />\r
+ </input>\r
+ <input>\r
+ <variable 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
+ <input>\r
+ <variable name="useNexioTarget" />\r
+ </input>\r
+ <input>\r
+ <parameter name="nexioAgency" />\r
+ </input>\r
+ <input>\r
+ <parameter name="nexioPort" />\r
+ </input>\r
+ <input>\r
+ <parameter name="nexioUserName" />\r
+ </input>\r
+ <input>\r
+ <parameter name="nexioPassword" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
</commands>\r
</jobtemplate>
\ No newline at end of file
\r
import java.io.File;\r
import java.io.IOException;\r
+import java.io.OutputStream;\r
import java.io.StringWriter;\r
import java.nio.file.Files;\r
import java.nio.file.Path;\r
import javax.xml.transform.stream.StreamResult;\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
import org.apache.logging.log4j.Marker;\r
import org.w3c.dom.Element;\r
\r
import user.commons.CalendarUtils;\r
+import user.commons.StoreUri;\r
+import user.commons.remotestore.FtpDirectoryLister;\r
\r
public class EscortFiles {\r
private static final Logger logger = LogManager.getLogger();\r
return dateFormat.format(killDate.getTime());\r
}\r
/*\r
- <?xml version="1.0" encoding="UTF-16"?>\r
- <ID extendedId="aaaaaaa">\r
- <KillDate>02-02-2018</KillDate>\r
- <ExtendedDescription>TEST TEST</ExtendedDescription>\r
- <ExtendedAgency>AGENT AGENT</ExtendedAgency>\r
- </ID>\r
- */\r
+ * <?xml version="1.0" encoding="UTF-16"?> <ID extendedId="aaaaaaa">\r
+ * <KillDate>02-02-2018</KillDate> <ExtendedDescription>TEST\r
+ * TEST</ExtendedDescription> <ExtendedAgency>AGENT AGENT</ExtendedAgency>\r
+ * </ID>\r
+ */\r
\r
private static String composeKillDateFileName(String fileName, int days) {\r
return String.format(KILLDATE_FILENAME, fileName, composeKillDate(days));\r
Files.write(xmlPath, content.getBytes());\r
}\r
\r
- public static byte[] createNEXIOKillDateFile(String fileName, Date killDate, String description, String agency) throws Exception {\r
+ public static byte[] createNEXIOKillDateFile(String fileName, Date killDate, String description, String agency)\r
+ throws Exception {\r
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();\r
DocumentBuilder db = dbf.newDocumentBuilder();\r
DOMImplementation impl = db.getDOMImplementation();\r
}\r
\r
if (StringUtils.isNotBlank(description))\r
- root.appendChild(xmlDocument.createElement(EXTENDEDDESCRIPTION)).appendChild(xmlDocument.createTextNode(description));\r
+ root.appendChild(xmlDocument.createElement(EXTENDEDDESCRIPTION))\r
+ .appendChild(xmlDocument.createTextNode(description));\r
if (StringUtils.isNotBlank(agency))\r
root.appendChild(xmlDocument.createElement(EXTENDEDAGENCY)).appendChild(xmlDocument.createTextNode(agency));\r
xmlDocument.appendChild(root);\r
DOMSource domSource = new DOMSource(xmlDocument);\r
TransformerFactory tf = TransformerFactory.newInstance();\r
Transformer transformer = tf.newTransformer();\r
- //transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");\r
+ // transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,\r
+ // "yes");\r
transformer.setOutputProperty(OutputKeys.METHOD, "xml");\r
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-16");\r
transformer.setOutputProperty(OutputKeys.INDENT, "yes");\r
try {\r
Files.createDirectories(filePath, attr);\r
} catch (Exception e) {\r
- //logger.catching(e);\r
+ // logger.catching(e);\r
try {\r
Files.createDirectory(filePath);\r
} catch (Exception e1) {\r
Path statusPath = Paths.get(filePath, folderName);\r
ensureUNCFolder(statusPath);\r
}\r
+\r
+ public static void setNEXIOKillDate(int killDateDays, String targetFileName, String nexioAgency, StoreUri targetUri)\r
+ throws Exception {\r
+ OutputStream outStream = null;\r
+ try {\r
+ FTPClient targetFTP = ((FtpDirectoryLister) targetUri.getLister()).connect();\r
+ Calendar killDate = CalendarUtils.createCalendar(new Date());\r
+ killDate.add(Calendar.DAY_OF_YEAR, killDateDays);\r
+ if (targetFileName.toLowerCase().contains(".mxf"))\r
+ targetFileName = targetFileName.substring(0, targetFileName.lastIndexOf('.'));\r
+ byte[] killDateFile = EscortFiles.createNEXIOKillDateFile(targetFileName, killDate.getTime(), null,\r
+ nexioAgency);\r
+ String xml = targetFileName + ".xml";\r
+ outStream = targetFTP.storeFileStream(xml);\r
+ if (outStream == null) {\r
+ throw new NullPointerException(\r
+ "Can not open: " + targetFileName.substring(0, targetFileName.lastIndexOf('.')) + ".xml"\r
+ + " Reply:" + targetFTP.getReplyString());\r
+ }\r
+ outStream.write(killDateFile);\r
+ outStream.flush();\r
+ } catch (Exception e) {\r
+ throw e;\r
+ } finally {\r
+ if (outStream != null)\r
+ outStream.close();\r
+ targetUri.cleanUp();\r
+ }\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
+import org.apache.logging.log4j.Marker;\r
+\r
+import user.commons.RemoteFile;\r
+import user.commons.StoreUri;\r
+import user.commons.remotestore.IProgressEventListener;\r
+import user.commons.remotestore.ProgressEvent;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.Store;\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class FileCopyStep {\r
+ private static final Logger logger = LogManager.getLogger();\r
+ private IItemManager manager;\r
+ private StoreUri sourceUri;\r
+ private StoreUri targetUri;\r
+ private String sourceFileName;\r
+ private String targetFileName;\r
+ private RemoteStoreProtocol sourceRemoteStoreProtocol;\r
+ private RemoteStoreProtocol targetRemoteStoreProtocol;\r
+ private Store sourceStore;\r
+ private Store targetStore;\r
+ private RemoteFile sourceRemotefile;\r
+ private Marker marker;\r
+\r
+ @StepEntry\r
+ public Object[] execute(String sourceStoreName, String targetStoreName, String sourceFileName, String targetFileName,\r
+ RemoteStoreProtocol sourceRemoteStoreProtocol, RemoteStoreProtocol targetRemoteStoreProtocol\r
+ , IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ marker = jobRuntime.getMarker();\r
+ this.sourceFileName = sourceFileName;\r
+ this.targetFileName = targetFileName;\r
+ this.sourceRemoteStoreProtocol = sourceRemoteStoreProtocol;\r
+ this.targetRemoteStoreProtocol = targetRemoteStoreProtocol;\r
+\r
+ setAndCheck(sourceStoreName, targetStoreName, jobEngine);\r
+ \r
+ try {\r
+ sourceUri.addProgressListener(new IProgressEventListener() {\r
+ @Override\r
+ public void progressChanged(ProgressEvent evt) {\r
+ jobRuntime.incrementProgress(evt.getProgress());\r
+ }\r
+ });\r
+\r
+ RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, targetFileName);\r
+\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ throw e;\r
+ } finally {\r
+ sourceUri.cleanUp();\r
+ targetUri.cleanUp();\r
+ }\r
+ \r
+ return null;\r
+ }\r
+ \r
+ private void setAndCheck(String sourceStoreName, String targetStoreName, IJobEngine jobEngine) {\r
+ if (jobEngine == null) {\r
+ logger.error(marker, "A folyamatkezelő réteg nem elérhető.");\r
+ throw new NullPointerException("Internal error, missing JobEngine reference.");\r
+ }\r
+ manager = jobEngine.getItemManager();\r
+ if (manager == null) {\r
+ logger.error(marker, "Az adatbáziskezelő réteg nem elérhető.");\r
+ throw new NullPointerException("Internal error, missing ItemManager reference.");\r
+ }\r
+ if (sourceUri == null) {\r
+ logger.error(marker, "A sourceStoreUri bemeneti paramétere üres.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+ }\r
+ if (targetUri == null) {\r
+ logger.error(marker, "A targetStoreUri bemeneti paramétere üres.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+ }\r
+ if (sourceFileName == null) {\r
+ logger.error(marker, "A forrás fájlnév bemeneti paramétere üres.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+ }\r
+ sourceUri = sourceStore.getSourceStoreUri(sourceRemoteStoreProtocol);\r
+ if (targetFileName == null) {\r
+ logger.error(marker, "A cél fájlnév bemeneti paramétere üres.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+ }\r
+ targetUri = targetStore.getTargetStoreUri(targetRemoteStoreProtocol);\r
+ if (sourceRemoteStoreProtocol == null) {\r
+ logger.error(marker, "A forrás másolási protokol bemeneti paramétere üres.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+ }\r
+ if (targetRemoteStoreProtocol == null) {\r
+ logger.error(marker, "A cél másolási protokol bemeneti paramétere üres.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+ }\r
+ }\r
+ \r
+ private void transferFile(String sourceFileName, String targetFileName) throws Exception {\r
+ int reply = 0;\r
+ logger.info("Transfer clip {}", sourceFileName);\r
+ try {\r
+ RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, targetFileName);\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ throw e;\r
+ } finally {\r
+ sourceUri.cleanUp();\r
+ targetUri.cleanUp();\r
+ }\r
+\r
+ }\r
+}\r
+\r
--- /dev/null
+package user.jobengine.server.steps;\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.Marker;\r
+\r
+import user.commons.RemoteFile;\r
+import user.commons.StoreUri;\r
+import user.commons.remotestore.IProgressEventListener;\r
+import user.commons.remotestore.ProgressEvent;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
+//import user.jobengine.db.Media;\r
+import user.jobengine.db.ArchivedMedia;\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.Store;\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class MXFCutterStep extends JobStep {\r
+ private static final String TARGETNAMEPATTERN = "-ARCH-%s";\r
+ private static final Logger logger = LogManager.getLogger();\r
+ private IItemManager manager;\r
+ private StoreUri tempTargetUri;\r
+ private StoreUri tempSourceUri;\r
+ private String sourceFileName;\r
+ private Marker marker;\r
+ private int nexioPort;\r
+ private String nexioUserName, nexioPassword;\r
+ private String nexioHost;\r
+\r
+ protected void checkTargetPath(String targetPath) {\r
+ if (StringUtils.isBlank(targetPath)) {\r
+ logger.error(marker, "A folyamat 'targetPath' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'targetPath' input parameter missing.");\r
+ }\r
+ }\r
+\r
+ protected StoreUri createTargetUri(IItemManager manager, String targetPath) throws NullPointerException {\r
+ StoreUri result = null;\r
+ result = manager.createStoreUri(RemoteStoreProtocol.FTP, nexioHost);\r
+ result.setPortNumber(nexioPort);\r
+ result.setUserName(nexioUserName);\r
+ result.setPassword(nexioPassword);\r
+\r
+ return result;\r
+ }\r
+\r
+ @StepEntry\r
+ public Object[] execute(ArchivedMedia archivedMedia, String targetPath, String houseId, String successRecipient,\r
+ int killDateDays, boolean useNexioTarget, String nexioAgency, Integer nexioPort, String nexioUserName,\r
+ String nexioPassword, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ this.nexioPort = nexioPort;\r
+ this.nexioUserName = nexioUserName;\r
+ this.nexioPassword = nexioPassword;\r
+ nexioHost = System.getProperty("nexio.host");\r
+ marker = jobRuntime.getMarker();\r
+\r
+ if (useNexioTarget && archivedMedia.getTcIn() != null && archivedMedia.getTcOut() != null) {\r
+ setAndCheck(archivedMedia, houseId, targetPath, useNexioTarget, jobEngine);\r
+\r
+ final IJobRuntime runtime = jobRuntime;\r
+ sourceFileName = houseId + TARGETNAMEPATTERN;\r
+ tempSourceUri.addProgressListener(new IProgressEventListener() {\r
+ @Override\r
+ public void progressChanged(ProgressEvent evt) {\r
+ runtime.incrementProgress(evt.getProgress());\r
+ }\r
+ });\r
+\r
+ RemoteFile result = tempSourceUri.transferFrom(tempTargetUri, sourceFileName, sourceFileName);\r
+\r
+ EscortFiles.setNEXIOKillDate(killDateDays, houseId, nexioAgency, tempTargetUri);\r
+\r
+ logger.info("A {} videó kivágva {}s - {}s", sourceFileName, archivedMedia.getTcIn(),\r
+ archivedMedia.getTcOut());\r
+ }\r
+\r
+ return null;\r
+ }\r
+\r
+ // private String getSourceFileName(ArchivedMedia archivedMedia, Store\r
+ // store) {\r
+ // List<MediaFile> mediaFiles = archivedMedia.getMedia().getMediaFiles();\r
+ // if (mediaFiles == null)\r
+ // return null;\r
+ // for (MediaFile mediaFile : mediaFiles) {\r
+ // if (mediaFile.getStore().getId() == store.getId())\r
+ // return mediaFile.getRelativePath();\r
+ // }\r
+ // return null;\r
+ // }\r
+\r
+ private void setAndCheck(ArchivedMedia archivedMedia, String houseId, String targetPath, boolean useNexioTarget,\r
+ IJobEngine jobEngine) {\r
+ if (jobEngine == null) {\r
+ logger.error(marker, "A folyamatkezelő réteg nem elérhető.");\r
+ throw new NullPointerException("Internal error, missing JobEngine reference.");\r
+ }\r
+ manager = jobEngine.getItemManager();\r
+ if (manager == null) {\r
+ logger.error(marker, "Az adatbáziskezelő réteg nem elérhető.");\r
+ throw new NullPointerException("Internal error, missing ItemManager reference.");\r
+ }\r
+ if (archivedMedia == null) {\r
+ logger.error(marker, "A folyamat 'mediaCubeMedia' bemeneti paramétere üres.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+ }\r
+ checkTargetPath(targetPath);\r
+ if (StringUtils.isBlank(houseId)) {\r
+ logger.error(marker, "A folyamat 'houseId' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'houseId' input parameter missing.");\r
+ }\r
+ Store tsmStore = manager.getSystemStore(false);\r
+ if (tsmStore == null) {\r
+ logger.error(marker, "A TSM rendszer beállítás nem elérhető.");\r
+ throw new NullPointerException("System is not configured properly, missing TSM Store.");\r
+ }\r
+\r
+ tempSourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, targetPath);\r
+ if (tempSourceUri == null) {\r
+ logger.error(marker, "A TSM rendszer beállítás paraméterei nem elérhetőek.");\r
+ throw new NullPointerException("System is not configured properly, missing TSM StoreUri.");\r
+ }\r
+ tempTargetUri = createTargetUri(manager, targetPath);\r
+ // sourceFileName = getSourceFileName(archivedMedia, tsmStore);\r
+ if (sourceFileName == null) {\r
+ logger.error(marker, "Adatbázis bejegyzés hiba, a visszatöltendő fájl neve nem található.");\r
+ throw new NullPointerException("Database error, missing MediaFile 'relativePath'.");\r
+ }\r
+ }\r
+}\r
import org.apache.logging.log4j.Logger;\r
import org.apache.logging.log4j.Marker;\r
\r
+import user.jobengine.db.ArchivedMedia;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
import user.jobengine.server.steps.MetadataTypeDetector.MetadataType;\r
\r
private Marker marker;\r
\r
- private void check(String localRetrievePath, String materialOutputFolder, String promoOutputFolder, String advertisementOutputFolder,\r
- String octopusOutputFolder, String genericOutputFolder, String houseId, String targetPathType) {\r
+ private void check(String localRetrievePath, String materialOutputFolder, String promoOutputFolder,\r
+ String advertisementOutputFolder, String octopusOutputFolder, String genericOutputFolder, String houseId,\r
+ String targetPathType) {\r
if (StringUtils.isBlank(localRetrievePath)) {\r
logger.error(marker, "A folyamat 'localRetrievePath' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'localRetrievePath' input parameter missing.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'localRetrievePath' input parameter missing.");\r
}\r
if (StringUtils.isBlank(materialOutputFolder)) {\r
logger.error(marker, "A folyamat 'materialOutputFolder' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'materialOutputFolder' input parameter missing.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'materialOutputFolder' input parameter missing.");\r
}\r
if (StringUtils.isBlank(promoOutputFolder)) {\r
logger.error(marker, "A folyamat 'promoOutputFolder' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'promoOutputFolder' input parameter missing.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'promoOutputFolder' input parameter missing.");\r
}\r
if (StringUtils.isBlank(advertisementOutputFolder)) {\r
logger.error(marker, "A folyamat 'advertisementOutputFolder' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'advertisementOutputFolder' input parameter missing.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'advertisementOutputFolder' input parameter missing.");\r
}\r
if (StringUtils.isBlank(octopusOutputFolder)) {\r
logger.error(marker, "A folyamat 'octopusOutputFolder' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'octopusOutputFolder' input parameter missing.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'octopusOutputFolder' input parameter missing.");\r
}\r
if (StringUtils.isBlank(genericOutputFolder)) {\r
logger.error(marker, "A folyamat 'genericOutputFolder' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'genericOutputFolder' input parameter missing.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'genericOutputFolder' input parameter missing.");\r
}\r
if (StringUtils.isBlank(houseId)) {\r
logger.error(marker, "A folyamat 'houseId' bemeneti paramétere üres.");\r
}\r
if (StringUtils.isBlank(targetPathType)) {\r
logger.error(marker, "A folyamat 'targetPathType' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'targetPathType' input parameter missing.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'targetPathType' input parameter missing.");\r
}\r
}\r
\r
@StepEntry\r
- public Object[] execute(String localRetrievePath, String materialOutputFolder, String promoOutputFolder, String advertisementOutputFolder,\r
- String octopusOutputFolder, String genericOutputFolder, String onlineOutputFolder, String houseId, String targetPathType, IJobEngine jobEngine,\r
- IJobRuntime jobRuntime) throws IOException {\r
+ public Object[] execute(String localRetrievePath, String materialOutputFolder, String promoOutputFolder,\r
+ String advertisementOutputFolder, String octopusOutputFolder, String genericOutputFolder,\r
+ String onlineOutputFolder, String houseId, String targetPathType, ArchivedMedia archivedMedia,\r
+ IJobEngine jobEngine, IJobRuntime jobRuntime) throws IOException {\r
marker = jobRuntime.getMarker();\r
- check(localRetrievePath, materialOutputFolder, promoOutputFolder, advertisementOutputFolder, octopusOutputFolder, genericOutputFolder, houseId,\r
- targetPathType);\r
+ check(localRetrievePath, materialOutputFolder, promoOutputFolder, advertisementOutputFolder,\r
+ octopusOutputFolder, genericOutputFolder, houseId, targetPathType);\r
Object[] result = null;\r
switch (Integer.parseInt(targetPathType)) {\r
case 0:\r
- String outputFolder = getFolderById(materialOutputFolder, promoOutputFolder, advertisementOutputFolder, octopusOutputFolder, genericOutputFolder,\r
- houseId);\r
- return localTargetInit(localRetrievePath, outputFolder, houseId, jobRuntime);\r
+ String outputFolder = getFolderById(materialOutputFolder, promoOutputFolder, advertisementOutputFolder,\r
+ octopusOutputFolder, genericOutputFolder, houseId, archivedMedia);\r
+ result = localTargetInit(localRetrievePath, outputFolder, houseId, jobRuntime);\r
case 1:\r
- return localTargetInit(localRetrievePath, onlineOutputFolder, houseId, jobRuntime);\r
+ result = localTargetInit(localRetrievePath, onlineOutputFolder, houseId, jobRuntime);\r
case 2:\r
- return new Object[] { null, houseId, true };\r
+\r
+ if (archivedMedia.getTcIn() != null && archivedMedia.getTcOut() != null)\r
+ result = new Object[] { genericOutputFolder, houseId, true };\r
+ else\r
+ result = new Object[] { null, houseId, true };\r
}\r
return result;\r
}\r
\r
- private String getFolderById(String materialOutputFolder, String promoOutputFolder, String advertisementOutputFolder, String octopusOutputFolder,\r
- String genericOutputFolder, String houseId) {\r
+ private String getFolderById(String materialOutputFolder, String promoOutputFolder,\r
+ String advertisementOutputFolder, String octopusOutputFolder, String genericOutputFolder, String houseId,\r
+ ArchivedMedia archivedMedia) {\r
String id = houseId.toUpperCase();\r
MetadataType mdType = MetadataTypeDetector.GuessMetadataType(id);\r
String result = null;\r
+\r
switch (mdType) {\r
case Generic:\r
result = genericOutputFolder;\r
return result[0];\r
}\r
\r
- private Object[] localTargetInit(String localRetrievePath, String outputFolder, String houseId, IJobRuntime jobRuntime) throws IOException {\r
+ private Object[] localTargetInit(String localRetrievePath, String outputFolder, String houseId,\r
+ IJobRuntime jobRuntime) throws IOException {\r
String id = houseId.toUpperCase();\r
String targetPath = getPossiblePath(id, Paths.get(localRetrievePath, outputFolder, id)).toString();\r
String targetNamePattern = houseId + TARGETNAMEPATTERN;\r
try {\r
EscortFiles.ensureUNCFolder(Paths.get(targetPath));\r
} catch (Exception e) {\r
- logger.error(jobRuntime.getMarker(), "A cél mappa '{}' nem létezik és nem hozható létre. A rendszer hibaüzenete: {}", targetPath, e.getMessage());\r
+ logger.error(jobRuntime.getMarker(),\r
+ "A cél mappa '{}' nem létezik és nem hozható létre. A rendszer hibaüzenete: {}", targetPath,\r
+ e.getMessage());\r
throw e;\r
}\r
return new Object[] { targetPath, targetNamePattern, false };\r
package user.jobengine.server.steps;\r
\r
-import java.io.OutputStream;\r
-import java.util.Calendar;\r
-import java.util.Date;\r
-\r
-import org.apache.commons.net.ftp.FTPClient;\r
-\r
-import user.commons.CalendarUtils;\r
import user.commons.StoreUri;\r
-import user.commons.remotestore.FtpDirectoryLister;\r
import user.commons.remotestore.RemoteStoreProtocol;\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.db.Media;\r
private String nexioAgency;\r
\r
@Override\r
- protected void afterRestore(StoreUri targetUri, String targetPath, int killDateDays, String targetFileName) throws Exception {\r
+ protected void afterRestore(StoreUri targetUri, String targetPath, int killDateDays, String targetFileName)\r
+ throws Exception {\r
if (useNexioTarget) {\r
- OutputStream outStream = null;\r
- try {\r
- FTPClient targetFTP = ((FtpDirectoryLister) targetUri.getLister()).connect();\r
- Calendar killDate = CalendarUtils.createCalendar(new Date());\r
- killDate.add(Calendar.DAY_OF_YEAR, killDateDays);\r
- if (targetFileName.toLowerCase().contains(".mxf"))\r
- targetFileName = targetFileName.substring(0, targetFileName.lastIndexOf('.'));\r
- byte[] killDateFile = EscortFiles.createNEXIOKillDateFile(targetFileName, killDate.getTime(), null, nexioAgency);\r
- String xml = targetFileName + ".xml";\r
- outStream = targetFTP.storeFileStream(xml);\r
- if (outStream == null) {\r
- throw new NullPointerException(\r
- "Can not open: " + targetFileName.substring(0, targetFileName.lastIndexOf('.')) + ".xml" + " Reply:" + targetFTP.getReplyString());\r
- }\r
- outStream.write(killDateFile);\r
- outStream.flush();\r
- } catch (Exception e) {\r
- throw e;\r
- } finally {\r
- if (outStream != null)\r
- outStream.close();\r
- targetUri.cleanUp();\r
- }\r
+ EscortFiles.setNEXIOKillDate(killDateDays, targetFileName, nexioAgency, targetUri);\r
} else {\r
super.afterRestore(targetUri, targetPath, killDateDays, targetFileName);\r
}\r
newTargetName = targetName.substring(0, targetName.lastIndexOf('.'));\r
if (useNexioTarget)\r
if (targetURI.fileExists(newTargetName + ".mxf"))\r
- throw new Exception(String.format("%s-The newly created file name is existed.", getClass().getSimpleName()));\r
+ throw new Exception(\r
+ String.format("%s-The newly created file name is existed.", getClass().getSimpleName()));\r
}\r
\r
@Override\r
}\r
\r
@StepEntry\r
- public Object[] execute(Media mediaCubeMedia, String targetPath, String targetNamePattern, String successRecipient, int killDateDays,\r
- String localRetrievePath, String globalRetrievePath, boolean useNexioTarget, String nexioAgency, Integer nexioPort, String nexioUserName,\r
- String nexioPassword, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ public Object[] execute(Media mediaCubeMedia, String targetPath, String targetNamePattern, String successRecipient,\r
+ int killDateDays, String localRetrievePath, String globalRetrievePath, boolean useNexioTarget,\r
+ String nexioAgency, Integer nexioPort, String nexioUserName, String nexioPassword, IJobEngine jobEngine,\r
+ IJobRuntime jobRuntime) throws Exception {\r
this.useNexioTarget = useNexioTarget;\r
this.nexioAgency = nexioAgency;\r
this.nexioPort = nexioPort;\r
throw new NullPointerException("System is not configured properly, 'nexioPort' input parameter missing.");\r
}\r
if (nexioUserName == null) {\r
- throw new NullPointerException("System is not configured properly, 'nexioUserName' input parameter missing.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'nexioUserName' input parameter missing.");\r
}\r
if (nexioPassword == null) {\r
- throw new NullPointerException("System is not configured properly, 'nexioPassword' input parameter missing.");\r
+ throw new NullPointerException(\r
+ "System is not configured properly, 'nexioPassword' input parameter missing.");\r
}\r
if (nexioAgency == null) {\r
throw new NullPointerException("System is not configured properly, 'nexioAgency' input parameter missing.");\r
}\r
\r
- return super.execute(mediaCubeMedia, targetPath, targetNamePattern, successRecipient, killDateDays, localRetrievePath, globalRetrievePath, jobEngine,\r
- jobRuntime);\r
+ return super.execute(mediaCubeMedia, targetPath, targetNamePattern, successRecipient, killDateDays,\r
+ localRetrievePath, globalRetrievePath, jobEngine, jobRuntime);\r
}\r
\r
}\r
<div id="kicsidiv" height="100%" width="100%">\r
<!-- Keresés menü -->\r
<hbox width="100%">\r
- <button id="sback" onClick="@command('onSrcBack')" image="/img/baseline_arrow_back_black_18dp.png">\r
+ <button id="sback" onClick="@command('onBack')" image="/img/baseline_arrow_back_black_18dp.png">\r
<attribute w:name="onClick"><![CDATA[\r
var ss = zk.Widget.$(jq('$sourceSearch')),\r
val = "";\r
ss.smartUpdate('value', val);\r
]]></attribute>\r
</button>\r
- <textbox id="sourceSearch" value="@bind(vm.searchText)" onOK="@command('refresh')" />\r
- \r
- \r
- <!-- button hflex="min" image="/img/ic_search_black_18dp.png" onClick="@command('doSearch')" / -->\r
- <button id="resetSSearch" image="/img/baseline_close_black_18dp.png" onClick="@command('clearSrcFilter')">\r
+ <textbox id="sourceSearch" value="@bind(vm.searchText)" onOK="@command('doSearch')" />\r
+ <button hflex="min" image="/img/ic_search_black_18dp.png" onClick="@command('doSearch')" />\r
+ <button id="resetSSearch" image="/img/baseline_close_black_18dp.png" onClick="@command('clearFilter')">\r
<attribute w:name="onClick"><![CDATA[\r
var ss = zk.Widget.$(jq('$sourceSearch')),\r
val = "";\r
<button id="refreshS" image="/img/baseline_refresh_black_18dp.png" onClick="@command('refresh')"/>\r
</hbox>\r
<!-- Forrás file lista -->\r
- <listbox id="srcbox" vflex="true" model="@load(vm.srcFiles)" multiple="false" checkmark="true" \r
+ <listbox id="srcbox" vflex="true" model="@load(vm.files)" multiple="false" checkmark="true" \r
oddRowSclass="listbox-odd-style" sclass="listbox-normal-style" style="border: none; background: #e3e3e3 !important;"\r
- ctrlKeys="#bak" onCtrlKey="@command('onSrcBack')" onSelect="@command('selectedItemChanged')"\r
+ ctrlKeys="#bak" onCtrlKey="@command('onBack')" onSelect="@command('selectedItemChanged')"\r
onAfterRender="srcbox.focus()">\r
<listhead>\r
<listheader label="" sort="auto(isFolder)" width="8%" />\r
</listhead>\r
\r
<template name="model">\r
- <!-- listitem onDoubleClick="@command('onSourceDoubleClick',selectedItem=each)" -->\r
- <listitem onDoubleClick="@command('onSourceDoubleClick')">\r
+ <listitem onDoubleClick="@command('onDoubleClick',selectedItem=each)">\r
<attribute w:name="onDoubleClick"><![CDATA[\r
var ss = zk.Widget.$(jq('$sourceSearch')),\r
val = "";\r
\r
<listcell>\r
<label value="@load(each.name)" visible="${!each.isFolder}" />\r
- <a label="@load(each.name)" visible="${each.isFolder}" onClick="@command('onSourceClick',selectedItem=each)">\r
+ <a label="@load(each.name)" visible="${each.isFolder}" onClick="@command('onDoubleClick',selectedItem=each)">\r
<attribute w:name="onClick"><![CDATA[\r
var ss = zk.Widget.$(jq('$sourceSearch')),\r
val = "";\r
private String searchText;\r
\r
public void setSourceList() throws Exception {\r
+ //files = new ListModelList<>(filesCopy);\r
+ //files = new ListModelList<>(uri.getRemoteFiles());\r
+ files.clear();\r
+ files.addAll(uri.getRemoteFiles());\r
filesCopy = new ArrayList<>(files);\r
- files = new ListModelList<>(filesCopy);\r
}\r
\r
- public void changeSrcDirectory(RemoteFile selectedFolder) throws Exception {\r
+ public void changeDirectory(RemoteFile selectedFolder) throws Exception {\r
+ setSearchText(null);\r
if (uri.getCurrentPath() == null){\r
uri.setCurrentPath(selectedFolder.getName());\r
}else{\r
Set<RemoteFile> selection = files.getSelection();\r
logger.info("Selected: {}", selection.size());\r
}\r
+ \r
+ @Command\r
+ public boolean notSelected (){\r
+ return files.getSelection().size() == 0;\r
+ }\r
\r
@Init\r
public void init() {\r
config = JSONConfig.read(key, MaestroConfig.class);\r
uri = config.getSourceStoreUri();\r
\r
- files = new ListModelList<>(uri.getRemoteFiles()); \r
+ files = new ListModelList<>(); \r
setSourceList();\r
} catch (Exception e) {\r
logger.error("A forrás file -ok nem elérhetőek: {}", e.getMessage());\r
}\r
\r
@Command\r
- @NotifyChange("srcFiles")\r
- public void onSourceDoubleClick() {\r
-// if (selectedSource.getIsFolder()){\r
-// try {\r
-// \r
-// changeSrcDirectory(selectedSource);\r
-// } catch (Exception e) {\r
-// logger.error("A forrás file -ok nem elérhetőek: {}", e);\r
-// }\r
-// }\r
+ @NotifyChange({"files","searchText"})\r
+ public void onDoubleClick(@BindingParam("selectedItem") RemoteFile selectedItem) {\r
+ if (selectedItem.getIsFolder()){\r
+ try {\r
+ \r
+ changeDirectory(selectedItem);\r
+ } catch (Exception e) {\r
+ logger.error("A forrás file -ok nem elérhetőek: {}", e);\r
+ }\r
+ }\r
}\r
- \r
+\r
@Command\r
- @NotifyChange("srcFiles")\r
- public void onSourceClick(@BindingParam("selectedItem") RemoteFile selectedItem) {\r
- //selectedSource = selectedItem;\r
- onSourceDoubleClick();\r
+ @NotifyChange({"files","searchText"})\r
+ public void doSearch() throws Exception {\r
+ if (searchText == null || searchText == ""){\r
+ files.clear();\r
+ files.addAll(filesCopy);\r
+ }else{ \r
+ files.clear();\r
+ for (int i=0;i<filesCopy.size();i++){\r
+ if (filesCopy.get(i).getName().contains(searchText)){\r
+ files.add(filesCopy.get(i));\r
+ }\r
+ }\r
+ }\r
}\r
-\r
+ \r
@Command\r
- @NotifyChange("srcFiles")\r
+ @NotifyChange("files")\r
public void refresh() throws Exception {\r
if (searchText == null || searchText == ""){\r
- setSourceList();\r
+ files.clear();\r
+ files.addAll(uri.getRemoteFiles());\r
}else{ \r
files.clear();\r
- for (int i=0;i<uri.getRemoteFiles().size();i++){\r
- if (uri.getRemoteFiles().get(i).getName().contains(searchText)){\r
- files.add(uri.getRemoteFiles().get(i));\r
+ //List<RemoteFile> currList = new ArrayList<>; \r
+ List<RemoteFile> currList = uri.getRemoteFiles();\r
+ for (int i=0;i<currList.size();i++){\r
+ if (currList.get(i).getName().contains(searchText)){\r
+ files.add(currList.get(i));\r
}\r
}\r
}\r
}\r
\r
@Command\r
- @NotifyChange("srcFiles")\r
- public void clearSrcFilter() throws Exception {\r
- files = new ListModelList<>(filesCopy);\r
+ @NotifyChange("files")\r
+ public void clearFilter() throws Exception {\r
+ //files = new ListModelList<>(filesCopy);\r
+ setSearchText(null);\r
+ files.clear();\r
+ files.addAll(filesCopy);\r
}\r
\r
- public StoreUri getSourceUri() {\r
+ public StoreUri getUri() {\r
return uri;\r
}\r
\r
- public void setSourceUri(StoreUri sourceUri) {\r
- this.uri = sourceUri;\r
+ public void setUri(StoreUri uri) {\r
+ this.uri = uri;\r
}\r
\r
- public List<RemoteFile> getSrcFiles() {\r
+ public List<RemoteFile> getFiles() {\r
return files;\r
}\r
\r
- public Store getSourceStore() {\r
+ public Store getStore() {\r
return store;\r
}\r
\r
- public void setSourceStore(Store sourceStore) {\r
- this.store = sourceStore;\r
+ public void setStore(Store store) {\r
+ this.store = store;\r
}\r
\r
@Command\r
- @NotifyChange("srcFiles")\r
- public void onSrcBack() throws Exception{\r
+ @NotifyChange({"files","searchText"})\r
+ public void onBack() throws Exception{\r
+ setSearchText(null);\r
if (uri.getCurrentPath() != null){\r
if (uri.getCurrentPath().contains("/")){\r
uri.setCurrentPath(uri.getCurrentPath().substring(0, uri.getCurrentPath().lastIndexOf("/")));\r
}\r
\r
\r
- public List<RemoteFile> getsrcFilesCopy() {\r
+ public List<RemoteFile> getFilesCopy() {\r
return filesCopy;\r
}\r
\r
- public void setsrcFilesCopy(List<RemoteFile> srcFilesCopy) {\r
- this.filesCopy = srcFilesCopy;\r
+ public void setFilesCopy(List<RemoteFile> filesCopy) {\r
+ this.filesCopy = filesCopy;\r
}\r
\r
public String getSearchText() {\r
package user.jobengine.zk.model;\r
\r
-import java.util.ArrayList;\r
-import java.util.LinkedHashMap;\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
-import org.zkoss.bind.annotation.BindingParam;\r
-import org.zkoss.bind.annotation.Command;\r
import org.zkoss.bind.annotation.Init;\r
-import org.zkoss.bind.annotation.NotifyChange;\r
-import org.zkoss.zul.ListModelList;\r
\r
-import user.commons.RemoteFile;\r
import user.commons.StoreUri;\r
import user.commons.config.JSONConfig;\r
-import user.jobengine.db.Store;\r
-import user.jobengine.server.IJobEngine;\r
\r
public class MaestroModel {\r
private static final Logger logger = LogManager.getLogger();\r
- private Store sourceStore = new Store();\r
- private Store targetStore = new Store();\r
- private ListModelList<RemoteFile> srcFiles;\r
- private List<RemoteFile> srcFilesCopy;\r
- private List<RemoteFile> trgFiles;\r
- private RemoteFile selectedTarget;\r
private StoreUri sourceUri;\r
- private StoreUri targetUri0;\r
- private StoreUri targetUri1;\r
private MaestroConfig sourceConfig = null;\r
- //private MaestroConfig targetConfig = null;\r
- private List<MaestroTarget> targetList = null;\r
- private static final String PROGRAM = "Műsor";\r
- private static final String PROMO = "Promó";\r
- private static final String AD = "Reklám";\r
- private String[] topTypeFilterNames;\r
- private Map<String, TypeFilter> typeFilters;\r
- private IJobEngine jobEngine;\r
- private FileSizeConverter fileSizeConverter = new FileSizeConverter();\r
- private String[] jobs = new String[] { "Job1", "Job2", "Job3" };\r
- private String searchText;\r
-\r
- public void setSourceList() throws Exception {\r
- srcFilesCopy = new ArrayList<>(srcFiles);\r
- srcFiles = new ListModelList<>(srcFilesCopy);\r
- }\r
-\r
- public void changeSrcDirectory(RemoteFile selectedFolder) throws Exception {\r
- if (sourceUri.getCurrentPath() == null){\r
- sourceUri.setCurrentPath(selectedFolder.getName());\r
- }else{\r
- sourceUri.setCurrentPath(sourceUri.getCurrentPath() + "/" + selectedFolder.getName());\r
- }\r
-\r
- setSourceList();\r
- //srcFiles.clear();\r
- //srcFiles.addAll(sourceUri.getRemoteFiles());\r
- }\r
- \r
- public void changeTrgDirectory(RemoteFile selectedFolder) throws Exception {\r
- /* if (targetUri.getCurrentPath() == null){\r
- targetUri.setCurrentPath(selectedFolder.getName());\r
- }else{\r
- targetUri.setCurrentPath(targetUri.getCurrentPath() + "/" + selectedFolder.getName());\r
- }\r
-\r
- trgFiles.clear();\r
- getTargetList();\r
- */\r
- }\r
- \r
- public void loadTargets(RemoteFile selectedFolder) throws Exception {\r
- /* targetUri.setCurrentPath(targetUri.getUri() + "/" + selectedFolder.getName());\r
- trgFiles = targetUri.getRemoteFiles();\r
- */\r
- }\r
- \r
- public void getTargetList() throws Exception {\r
- /*trgFiles.clear();\r
- targetList = sourceConfig.getTargets();\r
- for(MaestroTarget mt : targetList){\r
- targetUri = mt.getStoreUri();\r
- trgFiles.addAll(targetUri.getRemoteFiles());\r
- }\r
- Collections.sort(trgFiles, new Comparator<RemoteFile>() {\r
- @Override\r
- public int compare(RemoteFile r1, RemoteFile r2) {\r
- return ((r1.getIsFolder() ? "0" : "1")+ r1.getName()).compareTo(((r2.getIsFolder() ? "0" : "1")+ r2.getName()));\r
- }\r
- });\r
- */\r
- }\r
- \r
- @Command\r
- public void selectedItemChanged (){\r
- Set<RemoteFile> selection = srcFiles.getSelection();\r
- logger.info("Selected: {}", selection.size());\r
- }\r
\r
@Init\r
public void init() {\r
- typeFilters = new LinkedHashMap<>();\r
- addTypeFilter(TypeFilter.as(PROGRAM, "RED200", "ic_language_black_18dp.png"));\r
- addTypeFilter(TypeFilter.as(PROMO, "RED100", "ic_perm_camera_mic_black_18dp.png"));\r
- addTypeFilter(TypeFilter.as(AD, "TEAL200", "ic_theaters_black_18dp.png"));\r
- setTopTypeFilterNames(new String[] { PROGRAM, PROMO, AD });\r
\r
String message = "A forrás file -ok nem elérhetőek: {}";\r
try {\r
String key = "jobengine.maestro.config";\r
sourceConfig = JSONConfig.read(key, MaestroConfig.class);\r
sourceUri = sourceConfig.getSourceStoreUri();\r
- //sourceConfig.getTargets().get(0).getStoreUri()\r
- srcFiles = new ListModelList<>(sourceUri.getRemoteFiles()); \r
- setSourceList();\r
- targetUri0 = sourceConfig.getTargets().get(0).getStoreUri();\r
- targetUri1 = sourceConfig.getTargets().get(1).getStoreUri();\r
-\r
- //target files\r
- //message = "A cél file -ok nem elérhetőek: {}";\r
- //trgFiles = new ArrayList<RemoteFile>();\r
- //getTargetList();\r
} catch (Exception e) {\r
logger.error(message, e.getMessage());\r
}\r
}\r
-\r
- @Command\r
- @NotifyChange("srcFiles")\r
- public void onSourceDoubleClick() {\r
-// if (selectedSource.getIsFolder()){\r
-// try {\r
-// \r
-// changeSrcDirectory(selectedSource);\r
-// } catch (Exception e) {\r
-// logger.error("A forrás file -ok nem elérhetőek: {}", e);\r
-// }\r
-// }\r
- }\r
- \r
- /*@Command\r
- @NotifyChange("trgFiles")\r
- public void onTargetDoubleClick() {\r
- if (selectedTarget.getIsFolder()){\r
- try {\r
- \r
- changeTrgDirectory(selectedTarget);\r
- } catch (Exception e) {\r
- logger.error("A cél file -ok nem elérhetőek: {}", e);\r
- }\r
- }\r
- }*/\r
- \r
- @Command\r
- @NotifyChange("srcFiles")\r
- public void onSourceClick(@BindingParam("selectedItem") RemoteFile selectedItem) {\r
- //selectedSource = selectedItem;\r
- onSourceDoubleClick();\r
- }\r
- \r
- /*@Command\r
- @NotifyChange("trgFiles")\r
- public void onTargetClick(@BindingParam("selectedItem") RemoteFile selectedItem) {\r
- selectedTarget = selectedItem;\r
- onTargetDoubleClick();\r
- }*/\r
-\r
- @Command\r
- @NotifyChange("srcFiles")\r
- public void refresh() throws Exception {\r
- if (searchText == null || searchText == ""){\r
- setSourceList();\r
- }else{ \r
- srcFiles.clear();\r
- for (int i=0;i<sourceUri.getRemoteFiles().size();i++){\r
- if (sourceUri.getRemoteFiles().get(i).getName().contains(searchText)){\r
- srcFiles.add(sourceUri.getRemoteFiles().get(i));\r
- }\r
- }\r
- }\r
- }\r
-\r
- @Command\r
- @NotifyChange("trgFiles")\r
- public void changeTrgFilter(@BindingParam("ttext") String ttext) throws Exception {\r
- /* trgFiles.clear();\r
- for (int i=0;i<targetUri.getRemoteFiles().size();i++){\r
- if (targetUri.getRemoteFiles().get(i).getName().contains(ttext)){\r
- trgFiles.add(targetUri.getRemoteFiles().get(i));\r
- //getTargetList();\r
- }\r
- }\r
- */\r
- }\r
-\r
- @Command\r
- @NotifyChange("srcFiles")\r
- public void clearSrcFilter() throws Exception {\r
- srcFiles = new ListModelList<>(srcFilesCopy);\r
- }\r
- \r
- @Command\r
- @NotifyChange("trgFiles")\r
- public void clearTrgFilter() throws Exception {\r
- /* trgFiles.clear();\r
- trgFiles.addAll(targetUri.getRemoteFiles());\r
- */\r
- }\r
- \r
- @Command\r
- @NotifyChange({ "trgFiles"})\r
- public void trg1(@BindingParam("state") boolean state ) {\r
- if (state) {\r
- //sourceConfig.getTargets().get(0).getStoreUri().setUri("c:/temp1");\r
- sourceConfig.getTargets().get(0).setStoreUri(getTargetUri1());\r
- }else {\r
- //sourceConfig.getTargets().get(0).getStoreUri().setUri("");\r
- sourceConfig.getTargets().get(0).setStoreUri(null);\r
- }\r
- }\r
- \r
- @Command\r
- @NotifyChange({ "trgFiles"})\r
- public void trg2(@BindingParam("state") boolean state ) {\r
- if (state) {\r
- //sourceConfig.getTargets().get(1).getStoreUri().setUri("c:/temp2");\r
- sourceConfig.getTargets().get(1).setStoreUri(getTargetUri1());\r
- }else {\r
- //sourceConfig.getTargets().get(1).getStoreUri().setUri("");\r
- sourceConfig.getTargets().get(1).setStoreUri(null);\r
- }\r
- }\r
-\r
\r
public StoreUri getSourceUri() {\r
return sourceUri;\r
public void setSourceUri(StoreUri sourceUri) {\r
this.sourceUri = sourceUri;\r
}\r
- \r
- public StoreUri getTargetUri0() {\r
- return targetUri0;\r
- }\r
-\r
- public void setTargetUri0(StoreUri targetUri) {\r
- this.targetUri0 = targetUri;\r
- }\r
- \r
- public StoreUri getTargetUri1() {\r
- return targetUri1;\r
- }\r
-\r
- public void setTargetUri1(StoreUri targetUri) {\r
- this.targetUri1 = targetUri;\r
- }\r
- \r
- /*public String getTargetUri() {\r
- return sourceConfig.getSourceStoreUri().getUri();\r
- }\r
- \r
- public void setTargetUri(String targetUri) {\r
- sourceConfig.getSourceStoreUri().setUri(targetUri);\r
- }*/\r
-\r
- public List<RemoteFile> getSrcFiles() {\r
- return srcFiles;\r
- }\r
-\r
- public Store getSourceStore() {\r
- return sourceStore;\r
- }\r
-\r
- public void setSourceStore(Store sourceStore) {\r
- this.sourceStore = sourceStore;\r
- }\r
-\r
- public List<RemoteFile> gettrgFiles() {\r
- return trgFiles;\r
- }\r
-\r
- public void settrgFiles(List<RemoteFile> trgFiles) {\r
- this.trgFiles = trgFiles;\r
- }\r
- \r
- public String[] getJobs() {\r
- return jobs;\r
- }\r
- \r
- public void setJobs(String[] jobs) {\r
- this.jobs = jobs;\r
- }\r
-\r
- private void addTypeFilter(TypeFilter typeFilter) {\r
- typeFilters.put(typeFilter.getName(), typeFilter);\r
- }\r
- \r
- public String[] getTopTypeFilterNames() {\r
- return topTypeFilterNames;\r
- }\r
-\r
- public void setTopTypeFilterNames(String[] topTypeFilterNames) {\r
- this.topTypeFilterNames = topTypeFilterNames;\r
- }\r
- \r
- public Map<String, TypeFilter> getTypeFilters() {\r
- return typeFilters;\r
- }\r
- \r
-
- public Store getTargetStore() {\r
- return targetStore;\r
- }\r
-\r
- public void setTargetStore(Store targetStore) {\r
- this.targetStore = targetStore;\r
- }\r
-\r
-\r
- public IJobEngine getJobEngine() {\r
- return jobEngine;\r
- }\r
-\r
- public void setJobEngine(IJobEngine jobEngine) {\r
- this.jobEngine = jobEngine;\r
- }\r
- \r
- @Command\r
- @NotifyChange("srcFiles")\r
- public void onSrcBack() throws Exception{\r
- if (sourceUri.getCurrentPath() != null){\r
- if (sourceUri.getCurrentPath().contains("/")){\r
- sourceUri.setCurrentPath(sourceUri.getCurrentPath().substring(0, sourceUri.getCurrentPath().lastIndexOf("/")));\r
- }else{\r
- sourceUri.setCurrentPath(null);\r
- }\r
- setSourceList();\r
- }\r
- }\r
- \r
- @Command\r
- @NotifyChange("trgFiles")\r
- public void onTrgBack() throws Exception{\r
- /*if (targetUri.getCurrentPath() != null){\r
- if (targetUri.getCurrentPath().contains("/")){\r
- targetUri.setCurrentPath(targetUri.getCurrentPath().substring(0, targetUri.getCurrentPath().lastIndexOf("/")));\r
- }else{\r
- targetUri.setCurrentPath(null);\r
- }\r
- trgFiles.clear();\r
- trgFiles.addAll(targetUri.getRemoteFiles());\r
- clearTrgFilter();\r
- }*/\r
- }\r
-\r
- public FileSizeConverter getFileSizeConverter() {\r
- return fileSizeConverter;\r
- }\r
- \r
- public void setFileSizeConverter(FileSizeConverter fileSizeConverter) {\r
- this.fileSizeConverter = fileSizeConverter;\r
- }\r
-\r
- public RemoteFile getSelectedTarget() {\r
- return selectedTarget;\r
- }\r
-\r
- public void setSelectedTarget(RemoteFile selectedTarget) {\r
- this.selectedTarget = selectedTarget;\r
- }\r
-\r
- public List<RemoteFile> getsrcFilesCopy() {\r
- return srcFilesCopy;\r
- }\r
-\r
- public void setsrcFilesCopy(List<RemoteFile> srcFilesCopy) {\r
- this.srcFilesCopy = srcFilesCopy;\r
- }\r
-\r
- public String getSearchText() {\r
- return searchText;\r
- }\r
-\r
- public void setSearchText(String searchText) {\r
- this.searchText = searchText;\r
- }\r
}\r