"name" : "SYS: recreate-lowres",\r
"template": "sys-recreate-lowres.xml",\r
"parameters": [ \r
- {"name": "filePath", "value": "c:/_downloads/Silicon.Valley.S04E08.HDTV.x264.HUN-SFY/Silicon.Valley.S04E08.HDTV.x264.HUN-SFY.mkv", "type": "java.lang.String" }\r
+ {"name": "localHiresPath", "value": "", "type": "java.lang.String" },\r
+ {"name": "globalRetrievePath", "value": "", "type": "java.lang.String" }\r
]\r
},\r
{\r
"name" : "SYS: retrieve-ondemand",\r
"template": "retrieve-ondemand.xml",\r
"parameters": [ \r
- {"name": "trafficOutputPath", "value": "/mnt/ISILON/PLAYOUT_NLE", "type": "java.lang.String"},\r
- {"name": "octopusOutputPath", "value": "/mnt/ISILON/OCTOPUS", "type": "java.lang.String"},\r
- {"name": "genericOutputPath", "value": "/mnt/ISILON/ARCHIVE_RESTORE", "type": "java.lang.String"},\r
+ {"name": "globalRetrievePath", "value": "file://isilon.intra.echotv.hu", "type": "java.lang.String"},\r
+ {"name": "localRetrievePath", "value": "/mnt/ISILON", "type": "java.lang.String"},\r
+ {"name": "trafficOutputFolder", "value": "PLAYOUT_NLE", "type": "java.lang.String"},\r
+ {"name": "octopusOutputFolder", "value": "OCTOPUS", "type": "java.lang.String"},\r
+ {"name": "genericOutputFolder", "value": "ARCHIVE_RESTORE", "type": "java.lang.String"},\r
+ {"name": "retrieveToNexio", "value": false, "type": "java.lang.Boolean"},\r
{"name": "killDateDays", "value": 7, "type": "java.lang.Integer"}\r
]\r
},\r
<jobtemplate name="Archivált anyag visszatöltése" multiInstance="true">\r
<declarations>\r
<parameters>\r
- <parameter name="trafficOutputPath" type="java.lang.String" />\r
- <parameter name="octopusOutputPath" type="java.lang.String" />\r
- <parameter name="genericOutputPath" type="java.lang.String" />\r
+ <parameter name="localRetrievePath" type="java.lang.String" />\r
+ <parameter name="globalRetrievePath" type="java.lang.String" />\r
+ <parameter name="trafficOutputFolder" type="java.lang.String" />\r
+ <parameter name="octopusOutputFolder" type="java.lang.String" />\r
+ <parameter name="genericOutputFolder" type="java.lang.String" />\r
+ <parameter name="retrieveToNexio" type="java.lang.Boolean" />\r
<parameter name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
<parameter name="houseId" type="java.lang.String" />\r
<parameter name="successRecipient" type="java.lang.String" />\r
<calljobstep type="user.jobengine.server.steps.OutputPathAndNameSelectorStep" weight="1">\r
<inputs>\r
<input>\r
- <parameter name="trafficOutputPath" />\r
+ <parameter name="localRetrievePath" />\r
</input>\r
<input>\r
- <parameter name="octopusOutputPath" />\r
+ <parameter name="trafficOutputFolder" />\r
</input>\r
<input>\r
- <parameter name="genericOutputPath" />\r
+ <parameter name="octopusOutputFolder" />\r
+ </input>\r
+ <input>\r
+ <parameter name="genericOutputFolder" />\r
+ </input>\r
+ <input>\r
+ <parameter name="retrieveToNexio" />\r
</input>\r
<input>\r
<parameter name="houseId" />\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
</commands>\r
<declarations>\r
<parameters>\r
<parameter name="localHiresPath" type="java.lang.String" />\r
+ <parameter name="globalRetrievePath" type="java.lang.String" />\r
</parameters>\r
<variables>\r
<variable name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
<input>\r
<variable name="killDateDays" />\r
</input>\r
+ <input>\r
+ <parameter name="localHiresPath" />\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
<parameters>\r
<parameter name="material" type="com.ibm.nosql.json.api.BasicDBObject" />\r
<parameter name="targetPath" type="java.lang.String" />\r
+ <parameter name="globalRetrievePath" type="java.lang.String" />\r
</parameters>\r
</declarations>\r
<commands>\r
<input>\r
<parameter name="targetPath" />\r
</input>\r
+ <input>\r
+ <parameter name="globalRetrievePath" />\r
+ </input>\r
</inputs>\r
</calljobstep>\r
</commands>\r
\r
private static final Logger logger = LogManager.getLogger();\r
\r
- private void check(String trafficOutputPath, String octopusOutputPath, String genericOutputPath, String houseId) {\r
- if (StringUtils.isBlank(trafficOutputPath)) {\r
- logger.error(getMarker(), "A folyamat 'trafficOutputPath' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'trafficOutputPath' input parameter missing.");\r
+ private void check(String localRetrievePath, String trafficOutputFolder, String octopusOutputFolder, String genericOutputFolder, String houseId) {\r
+ if (StringUtils.isBlank(localRetrievePath)) {\r
+ logger.error(getMarker(), "A folyamat 'localRetrievePath' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'localRetrievePath' input parameter missing.");\r
}\r
- if (StringUtils.isBlank(octopusOutputPath)) {\r
- logger.error(getMarker(), "A folyamat 'octopusOutputPath' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'octopusOutputPath' input parameter missing.");\r
+ if (StringUtils.isBlank(trafficOutputFolder)) {\r
+ logger.error(getMarker(), "A folyamat 'trafficOutputFolder' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'trafficOutputFolder' input parameter missing.");\r
}\r
- if (StringUtils.isBlank(genericOutputPath)) {\r
- logger.error(getMarker(), "A folyamat 'genericOutputPath' bemeneti paramétere üres.");\r
- throw new NullPointerException("System is not configured properly, 'genericOutputPath' input parameter missing.");\r
+ if (StringUtils.isBlank(octopusOutputFolder)) {\r
+ logger.error(getMarker(), "A folyamat 'octopusOutputFolder' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'octopusOutputFolder' input parameter missing.");\r
+ }\r
+ if (StringUtils.isBlank(genericOutputFolder)) {\r
+ logger.error(getMarker(), "A folyamat 'genericOutputFolder' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'genericOutputFolder' input parameter missing.");\r
}\r
if (StringUtils.isBlank(houseId)) {\r
logger.error(getMarker(), "A folyamat 'houseId' bemeneti paramétere üres.");\r
}\r
\r
@StepEntry\r
- public Object[] execute(String trafficOutputPath, String octopusOutputPath, String genericOutputPath, String houseId, IJobEngine jobEngine,\r
- IJobRuntime jobRuntime) throws IOException {\r
- check(trafficOutputPath, octopusOutputPath, genericOutputPath, houseId);\r
+ public Object[] execute(String localRetrievePath, String trafficOutputFolder, String octopusOutputFolder, String genericOutputFolder,\r
+ boolean retrieveToNexio, String houseId, IJobEngine jobEngine, IJobRuntime jobRuntime) throws IOException {\r
+ check(localRetrievePath, trafficOutputFolder, octopusOutputFolder, genericOutputFolder, houseId);\r
\r
String id = houseId.toUpperCase();\r
MetadataType mdType = MetadataTypeDetector.GuessMetadataType(id);\r
String targetPath = null;\r
switch (mdType) {\r
case GENERIC:\r
- targetPath = Paths.get(genericOutputPath, id).toString();\r
+ targetPath = Paths.get(localRetrievePath, genericOutputFolder, id).toString();\r
break;\r
case OCTOPUSPLACEHOLDER:\r
case OCTOPUSSTORY:\r
- targetPath = getPossiblePath(id, Paths.get(octopusOutputPath, id)).toString();\r
+ targetPath = getPossiblePath(id, Paths.get(localRetrievePath, octopusOutputFolder, id)).toString();\r
break;\r
case TRAFFIC:\r
- targetPath = getPossiblePath(id, Paths.get(trafficOutputPath, id)).toString();\r
+ targetPath = getPossiblePath(id, Paths.get(localRetrievePath, trafficOutputFolder, id)).toString();\r
break;\r
}\r
String targetNamePattern = houseId + TARGETNAMEPATTERN;\r
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
private Marker marker;\r
\r
@StepEntry\r
- public Object[] execute(Media mediaCubeMedia, String targetPath, String targetNamePattern, String successRecipient, int killDateDays, IJobEngine jobEngine,\r
- IJobRuntime jobRuntime) throws Exception {\r
+ public Object[] execute(Media mediaCubeMedia, String targetPath, String targetNamePattern, String successRecipient, int killDateDays,\r
+ String localRetrievePath, String globalRetrievePath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
marker = jobRuntime.getMarker();\r
- setAndCheck(mediaCubeMedia, targetPath, targetNamePattern, jobEngine);\r
+ setAndCheck(mediaCubeMedia, targetPath, targetNamePattern, localRetrievePath, globalRetrievePath, jobEngine);\r
String targetFileName = null;\r
try {\r
//TODO check file existance?\r
targetFileName = String.format(targetNamePattern, sourceFileName);\r
RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, targetFileName);\r
\r
- Message msg = LogUtils.format("Az '{}' állomány visszatöltése sikeres volt az '{}' néven.", sourceFileName, targetFileName);\r
+ String globalTargetPath = Paths.get(targetPath, targetFileName).getParent().toString().replace(Paths.get(localRetrievePath).toString(),\r
+ globalRetrievePath);\r
+\r
+ Message msg = LogUtils.format(\r
+ "Az '{}' állomány visszatöltése sikeres volt '{}' néven. A célmappa a <a href='{}' target='_blank'>ide kattintva</a> nyitható meg.",\r
+ sourceFileName, targetFileName, globalTargetPath);\r
if (StringUtils.isNotBlank(successRecipient))\r
logger.info(new MediaCubeMarker(successRecipient), msg);\r
logger.info(marker, msg);\r
return null;\r
}\r
\r
- private void setAndCheck(Media mediaCubeMedia, String targetPath, String targetNamePattern, IJobEngine jobEngine) {\r
+ private void setAndCheck(Media mediaCubeMedia, String targetPath, String targetNamePattern, String localRetrievePath, String globalRetrievePath,\r
+ IJobEngine jobEngine) {\r
if (jobEngine == null) {\r
logger.error(marker, "Az folyamatkezelő réteg nem elérhető.");\r
throw new NullPointerException("Internal error, missing JobEngine reference.");\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
+ 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
+ }\r
+ if (StringUtils.isBlank(globalRetrievePath)) {\r
+ logger.error(marker, "A folyamat 'globalRetrievePath' bemeneti paramétere üres.");\r
+ throw new NullPointerException("System is not configured properly, 'globalRetrievePath' input parameter missing.");\r
+ }\r
}\r
}\r
private static final Logger logger = LogManager.getLogger();\r
\r
@StepEntry\r
- public Object[] execute(BasicDBObject material, String targetPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ public Object[] execute(BasicDBObject material, String targetPath, String globalRetrievePath, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
+ throws Exception {\r
try {\r
IItemManager itemManager = jobEngine.getItemManager();\r
Media mediaCubeMedia = itemManager.getMedia(material.getLong(MorpheusStrings.MEDIAID));\r
- super.execute(mediaCubeMedia, targetPath, TARGETNAMEPATTERN, null, 0, jobEngine, jobRuntime);\r
+ super.execute(mediaCubeMedia, targetPath, TARGETNAMEPATTERN, null, 0, targetPath, globalRetrievePath, jobEngine, jobRuntime);\r
saveMaterial(material, MorpheusStrings.STATUS_DONE);\r
} catch (Exception e) {\r
saveMaterial(material, MorpheusStrings.STATUS_ERROR);\r
text-color: black;\r
}\r
\r
+.RED100 {\r
+ border-color: #FFCDD2;\r
+}\r
+\r
.RED100 .z-toolbarbutton-content {\r
background: #FFCDD2;\r
}\r
\r
.RED200 .z-toolbarbutton-content {\r
background: #EF9A9A;\r
+ border-color: #EF9A9A;;\r
}\r
\r
.BROWN100 .z-toolbarbutton-content {\r
background: #D7CCC8;\r
+ border-color: #D7CCC8;\r
}\r
\r
.YELLOW200 .z-toolbarbutton-content {\r
background:transparent;\r
}\r
\r
+.z-toolbarbutton {\r
+ border-width: 2px;\r
+}\r
+\r
+.z-toolbarbutton-checked {\r
+ border: 2px solid #808080;\r
+}\r
+\r
+.type-inlist {\r
+ width:80px; \r
+ border-left:1px solid #008AC8; \r
+ border-bottom:1px solid #008AC8; \r
+ padding:4px;\r
+}\r
+\r
</style>\r
<div id="scdiv" width="100%" height="100%" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.SearchModel')">\r
<timer id="timer" delay="100" repeats="true" onTimer="@command('uiTick')" />\r
onClick="@command('selectMediaArchive', selectedObject=each)" />\r
<div sclass="details">\r
<hlayout>\r
- <div style="width:80px; border-left:1px solid #008AC8; border-bottom:1px solid #008AC8; padding:4px;">\r
+ <div class="RED100 type-inlist">\r
<label style="font-size: 10px;" value="@load(each.media.itemType.name)" />\r
</div>\r
<label style="font:20px Century Gothic; color:#008AC8;" value="@load(each.item.title)" />\r
import com.ibm.nosql.json.api.DBCollection;\r
import com.ibm.nosql.json.api.DBCursor;\r
\r
-import user.commons.ListUtils;\r
import user.commons.morpheus.MorpheusStrings;\r
import user.commons.nosql.NoSQLUtils;\r
import user.jobengine.db.ItemManagerData.SignalType;\r
private static final Logger logger = LogManager.getLogger();\r
private static final String TARGETPATH = "targetPath";\r
private static final String IMPORT_DISABLED = "importDisabled";\r
- private static final String IMPORT_TEMPLATE = "import-morpheus-missing-materials.xml";\r
- private static final String RETRIEVE_TEMPLATE = "retrieve-missing-material.xml";\r
+ private static final String IMPORT_TEMPLATE = "sys-import-morpheus-missing-materials.xml";\r
+ private static final String RETRIEVE_TEMPLATE = "sys-retrieve-missing-material.xml";\r
private ListModelList<BasicDBObject> jobList = new ListModelList<BasicDBObject>();\r
private Set<BasicDBObject> selectedJobs;\r
private IJobEngine jobEngine = null;\r
logger.warn("'{}' already retrieving", name);\r
} else {\r
try {\r
- //String targetPath, String targetNamePattern, String successRecipient\r
- jobEngine.submit(RETRIEVE_TEMPLATE, String.format("%s hiányzó anyag visszatöltése", name),\r
- ListUtils.asMap(MorpheusStrings.MATERIAL, material, TARGETPATH, String.valueOf(targetPath)));\r
+\r
+ ScheduledJob retriveJob = jobEngine.getScheduledJob(RETRIEVE_TEMPLATE);\r
+ Map<String, Object> parameters = retriveJob.getJobParameters();\r
+ parameters.put(MorpheusStrings.MATERIAL, material);\r
+ parameters.put(TARGETPATH, String.valueOf(targetPath));\r
+ jobEngine.submit(RETRIEVE_TEMPLATE, String.format("%s hiányzó anyag visszatöltése", name), parameters);\r
} catch (Exception e) {\r
logger.catching(e);\r
}\r
}\r
return result;\r
}\r
+\r
+ @GET\r
+ @Path("/openlocal")\r
+ @Produces({ "application/internet-shortcut" })\r
+ public Response openLocal(@QueryParam("path") String path) {\r
+ Response result = null;\r
+ try {\r
+ StringBuilder sb = new StringBuilder();\r
+ sb.append("[InternetShortcut]");\r
+ sb.append("\r\n");\r
+ sb.append("URL=");\r
+ sb.append(path);\r
+ result = Response.ok(sb.toString()).header("Content-disposition", "inline; filename=open.url").build();\r
+ } catch (Exception e) {\r
+ result = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();\r
+ }\r
+ return result;\r
+ }\r
}\r