{"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
<executor className="user.jobengine.server.steps.TranscodeFFAStranStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.TranscodeSELENIOStep" maxConcurrent="4"/>\r
<executor className="user.jobengine.server.steps.TSMBackupStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.TSMExtendedRetrieveStep" maxConcurrent="1" />\r
<executor className="user.jobengine.server.steps.TSMRestoreStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.TSMRetrieveMissingMaterialStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.UploadRecordingToNexioStep" maxConcurrent="1"/>\r
<parameter name="basket" type="java.util.ArrayList" />\r
<parameter name="houseId" type="java.lang.String" />\r
<parameter name="recipient" type="java.lang.String" />\r
+ <parameter name="targetPathType" type="java.lang.String" />\r
</parameters>\r
</declarations>\r
<commands>\r
<input>\r
<parameter name="recipient" />\r
</input>\r
+ <input>\r
+ <parameter name="targetPathType" />\r
+ </input>\r
</inputs>\r
</calljobstep>\r
</commands>\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
+ <parameter name="targetPathType" type="java.lang.String" />\r
<parameter name="killDateDays" type="java.lang.Integer"/>\r
</parameters>\r
<variables>\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
</variables>\r
</declarations>\r
<commands>\r
<parameter name="genericOutputFolder" />\r
</input>\r
<input>\r
- <parameter name="retrieveToNexio" />\r
+ <parameter name="houseId" />\r
</input>\r
<input>\r
- <parameter name="houseId" />\r
+ <parameter name="targetPathType" />\r
</input>\r
</inputs>\r
<outputs>\r
<output>\r
<variable name="targetNamePattern" />\r
</output>\r
+ <output>\r
+ <variable name="useNexioTarget" />\r
+ </output>\r
</outputs> \r
</calljobstep>\r
- <calljobstep type="user.jobengine.server.steps.TSMRestoreStep" weight="1">\r
+ <calljobstep type="user.jobengine.server.steps.TSMExtendedRetrieveStep" weight="1">\r
<inputs>\r
<input>\r
<parameter name="mediaCubeMedia" />\r
<input>\r
<parameter name="globalRetrievePath" />\r
</input>\r
+ <input>\r
+ <variable name="useNexioTarget" />\r
+ </input>\r
</inputs>\r
</calljobstep>\r
</commands>\r
import user.jobengine.server.scheduler.ScheduledJob;\r
\r
public class BatchRetrieveForkStep extends JobStep {\r
+ private static final String TARGET_PATH_TYPE = "targetPathType";\r
private static final Logger logger = LogManager.getLogger();\r
private static final String CHILD_TEMPLATE = "retrieve-ondemand.xml";\r
private static final String MEDIACUBEMEDIA = "mediaCubeMedia";\r
private MediaCubeMarker marker;\r
\r
@StepEntry\r
- public Object[] execute(List<Media> basket, String houseId, String recipient, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ public Object[] execute(List<Media> basket, String houseId, String recipient, String targetPathType, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
+ throws Exception {\r
marker = (MediaCubeMarker) jobRuntime.getMarker();\r
marker.setTo(recipient);\r
\r
setProgress(10);\r
if (jobRuntime.forkPrepare()) {\r
for (Media mediaCubeMedia : basket) {\r
- submit(mediaCubeMedia, recipient, houseId, jobEngine, jobRuntime);\r
+ submit(mediaCubeMedia, recipient, houseId, targetPathType, jobEngine, jobRuntime);\r
}\r
}\r
setProgress(50);\r
return null;\r
}\r
\r
- public void submit(Media mediaCubeMedia, String recipient, String houseId, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ public void submit(Media mediaCubeMedia, String recipient, String houseId, String targetPathType, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
+ throws Exception {\r
try {\r
ScheduledJob scheduledJob = jobEngine.getScheduledJob(CHILD_TEMPLATE);\r
Map<String, Object> parameters = scheduledJob.getJobParameters();\r
parameters.put(MEDIACUBEMEDIA, mediaCubeMedia);\r
parameters.put(HOUSEID, houseId);\r
parameters.put(RECIPIENT, recipient);\r
+ parameters.put(TARGET_PATH_TYPE, targetPathType);\r
IJobRuntime child = jobEngine.submit(jobRuntime, null, CHILD_TEMPLATE, String.format("Visszatöltés %s részére", recipient), parameters);\r
((MediaCubeMarker) child.getMarker()).setTo(recipient);\r
} catch (Exception e) {\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.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
\r
private static final Logger logger = LogManager.getLogger();\r
\r
- private void check(String localRetrievePath, String trafficOutputFolder, String octopusOutputFolder, String genericOutputFolder, String houseId) {\r
+ private Marker marker;\r
+\r
+ private void check(String localRetrievePath, String trafficOutputFolder, String octopusOutputFolder, String genericOutputFolder, String houseId,\r
+ String targetPathType) {\r
if (StringUtils.isBlank(localRetrievePath)) {\r
- logger.error(getMarker(), "A folyamat 'localRetrievePath' bemeneti paramétere üres.");\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(trafficOutputFolder)) {\r
- logger.error(getMarker(), "A folyamat 'trafficOutputFolder' bemeneti paramétere üres.");\r
+ logger.error(marker, "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(octopusOutputFolder)) {\r
- logger.error(getMarker(), "A folyamat 'octopusOutputFolder' bemeneti paramétere üres.");\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
}\r
if (StringUtils.isBlank(genericOutputFolder)) {\r
- logger.error(getMarker(), "A folyamat 'genericOutputFolder' bemeneti paramétere üres.");\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
}\r
if (StringUtils.isBlank(houseId)) {\r
- logger.error(getMarker(), "A folyamat 'houseId' bemeneti paramétere üres.");\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
+ 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
+ }\r
}\r
\r
@StepEntry\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
+ String onlineOutputFolder, boolean retrieveToNexio, String houseId, String targetPathType, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
+ throws IOException {\r
+ marker = jobRuntime.getMarker();\r
+ check(localRetrievePath, trafficOutputFolder, octopusOutputFolder, genericOutputFolder, houseId, targetPathType);\r
+ Object[] result = null;\r
+ switch (Integer.parseInt(targetPathType)) {\r
+ case 0:\r
+ String outputFolder = getFolderById(trafficOutputFolder, octopusOutputFolder, genericOutputFolder, houseId);\r
+ return localTargetInit(localRetrievePath, outputFolder, houseId, jobRuntime);\r
+ case 1:\r
+ return localTargetInit(localRetrievePath, onlineOutputFolder, houseId, jobRuntime);\r
+ case 2:\r
+ return new Object[] { null, houseId + TARGETNAMEPATTERN, true };\r
+ }\r
+ return result;\r
+ }\r
\r
+ private String getFolderById(String trafficOutputFolder, String octopusOutputFolder, String genericOutputFolder, String houseId) {\r
String id = houseId.toUpperCase();\r
MetadataType mdType = MetadataTypeDetector.GuessMetadataType(id);\r
- String targetPath = null;\r
+ String result = null;\r
switch (mdType) {\r
case Generic:\r
- targetPath = Paths.get(localRetrievePath, genericOutputFolder, id).toString();\r
+ result = genericOutputFolder;\r
break;\r
case OctopusPlaceholder:\r
case OctopusStory:\r
- targetPath = getPossiblePath(id, Paths.get(localRetrievePath, octopusOutputFolder, id)).toString();\r
+ result = octopusOutputFolder;\r
break;\r
case TrafficMaterial:\r
case TrafficPromo:\r
case TrafficAD:\r
- targetPath = getPossiblePath(id, Paths.get(localRetrievePath, trafficOutputFolder, id)).toString();\r
+ result = trafficOutputFolder;\r
break;\r
}\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
- throw e;\r
- }\r
- return new Object[] { targetPath, targetNamePattern };\r
+ return result;\r
}\r
\r
private String getPossiblePath(String id, Path targetPath) throws IOException {\r
return result[0];\r
}\r
\r
+ private Object[] localTargetInit(String localRetrievePath, String outputFolder, String houseId, 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
+ throw e;\r
+ }\r
+ return new Object[] { targetPath, targetNamePattern, false };\r
+ }\r
}\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import user.commons.StoreUri;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.Media;\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class TSMExtendedRetrieveStep extends TSMRestoreStep {\r
+ private boolean useNexioTarget;\r
+\r
+ @Override\r
+ protected StoreUri createTargetUri(IItemManager manager, String targetPath) throws NullPointerException {\r
+ StoreUri result = null;\r
+ if (useNexioTarget) {\r
+ String nexioHost = System.getProperty("nexio.host"), nexioPassword = System.getProperty("nexioPassword"),\r
+ nexioUserName = System.getProperty("nexioUserName");\r
+ Integer nexioPort = Integer.parseInt(System.getProperty("nexioPort"));\r
+ if (nexioHost == null) {\r
+ throw new NullPointerException("Missing system property on 'nexio.host' name");\r
+ }\r
+ if (nexioPassword == null) {\r
+ throw new NullPointerException("Missing system property on 'nexioPassword' name");\r
+ }\r
+ if (nexioPort == 0) {\r
+ throw new NullPointerException("Missing system property on 'nexioPort' name");\r
+ }\r
+ if (nexioUserName == null) {\r
+ throw new NullPointerException("Missing system property on 'nexioUserName' name");\r
+ }\r
+ result = manager.createStoreUri(RemoteStoreProtocol.FTP, nexioHost);\r
+ result.setPortNumber(nexioPort);\r
+ result.setUserName(nexioUserName);\r
+ result.setPassword(nexioPassword);\r
+\r
+ } else\r
+ result = super.createTargetUri(manager, targetPath);\r
+ return result;\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, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ this.useNexioTarget = useNexioTarget;\r
+ return super.execute(mediaCubeMedia, targetPath, targetNamePattern, successRecipient, killDateDays, localRetrievePath, globalRetrievePath, jobEngine,\r
+ jobRuntime);\r
+ }\r
+\r
+}\r
private String sourceFileName;\r
private Marker marker;\r
\r
+ protected StoreUri createTargetUri(IItemManager manager, String targetPath) {\r
+ return manager.createStoreUri(RemoteStoreProtocol.LOCAL, targetPath);\r
+ }\r
+\r
@StepEntry\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
setAndCheck(mediaCubeMedia, targetPath, targetNamePattern, localRetrievePath, globalRetrievePath, jobEngine);\r
String targetFileName = null;\r
try {\r
- //TODO check file existance?\r
+ // TODO check file existance?\r
final IJobRuntime runtime = jobRuntime;\r
sourceUri.addProgressListener(new IProgressEventListener() {\r
@Override\r
} catch (Exception e) {\r
Message msg = LogUtils.format("Az '{}' állomány visszatöltése sikertelen. A rendszer hibaüzenete: {}", sourceFileName, e.getMessage());\r
logger.error(marker, msg);\r
- //logger.error(jobRuntime.marker, msg);\r
+ // logger.error(jobRuntime.marker, msg);\r
logger.catching(e);\r
throw e;\r
}\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
- targetUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, targetPath);\r
+ targetUri = createTargetUri(manager, targetPath);\r
sourceFileName = getSourceFileName(mediaCubeMedia, tsmStore);\r
if (sourceFileName == null) {\r
logger.error(marker, "Adatbázis bejegyzés hiba, a visszatöltendő fájl neve nem található.");\r
encoding//pages/login.zul=UTF-8\r
encoding//resources/i3-label_hu.properties=UTF-8\r
encoding//src/user/jobengine/server/JobRuntime.java=UTF-8\r
+encoding//src/user/jobengine/zk/model/SearchModel.java=UTF-8\r
<textbox value="@load(jlm.email) @save(jlm.email,before='execute')" width="100%" tabindex="2" forward="onOK=execute.onClick"\r
constraint="/.+@.+\.[a-z]+/: Kérem adjon meg egy email címet!" />\r
</row>\r
+ <row>\r
+ <label value="Visszatöltés módja:"></label>\r
+ <selectbox model="@load(jlm.reloadTypes)"></selectbox>\r
+ </row>\r
<row>\r
<cell colspan="2">\r
- <listbox ctrlKeys="#del" onCtrlKey="@command('remove')" height="400px" id="basketList" sizedByContent="false" model="@load(jlm.basketItems)" multiple="true" checkmark="true" \r
- style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" sclass="listbox-normal-style" emptyMessage="Üres" \r
- selectedItems="@save(jlm.selectedItems)">\r
+ <listbox ctrlKeys="#del" onCtrlKey="@command('remove')" height="400px" id="basketList" sizedByContent="false" model="@load(jlm.basketItems)"\r
+ multiple="true" checkmark="true" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" sclass="listbox-normal-style"\r
+ emptyMessage="Üres" selectedItems="@save(jlm.selectedItems)">\r
<listhead>\r
<listheader label="Azonosító" hflex="min" align="left" sort="auto" />\r
<listheader label="Cím" hflex="min" align="left" sort="auto" />\r
<row>\r
<cell colspan="2">\r
<toolbar vflex="min" style="font-size:8px">\r
- <toolbarbutton id="remove" image="/img/ic_remove_shopping_cart_black_18dp.png" autodisable="self" onClick="@command('remove')"/>\r
+ <toolbarbutton id="remove" image="/img/ic_remove_shopping_cart_black_18dp.png" autodisable="self" onClick="@command('remove')" />\r
</toolbar>\r
</cell>\r
</row>\r
<column hflex="min">\r
<checkbox checked="@bind(vm.allSelected)" />\r
</column>\r
- <column label="ID" sort="auto" hflex="min" align="left" />\r
- <column label="Cím" sort="auto" align="left" />\r
- <column label="Fájlnév" sort="auto" hflex="min" align="left" />\r
- <column label="Hossz" sort="auto" hflex="min" align="right" />\r
+ <column label="ID" sort="auto" hflex="1" align="left" />\r
+ <column label="Cím" sort="auto" hflex="2" align="left" />\r
+ <column label="Fájlnév" sort="auto" hflex="5" align="left" />\r
+ <column label="Hossz" sort="auto" hflex="2" align="right" />\r
<!-- <column width="20px" align="right" style="cursor: pointer" popup="sortOther" /> -->\r
</columns>\r
<rows id="rows" style="cursor: pointer;">\r
<center border="none">\r
\r
<groupbox closable="false" mold="3d" width="100%" height="100%">\r
- \r
+ <div>\r
+ <button label="Visszaugrás a kijelölt videóhoz" onClick="@command('jumpToPosition')" autodisable="self" disabled="@load(vm.selectedObject eq null)"\r
+ width="min" id="backToVideoButton"/>\r
+ </div>\r
+ <div width="100%" sclass="menuButtons">\r
<toolbar vflex="min" style="font-size:8px">\r
<toolbarbutton image="/img/ic_compare_arrows_black_18dp.png" autodisable="self" onClick="@command('showInResults')" \r
disabled="@load(vm.selectedObject eq null)"\r
disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)"\r
label="Szerkesztés" />\r
</toolbar>\r
- \r
-<!-- <div width="100%" sclass="menuButtons"> -->\r
-<!-- <button label="Kosárba" onClick="@command('downloadMedia')" autodisable="self" disabled="@load(not vm.hasTSMMediaFile)" -->\r
-<!-- sclass="buttonBold" /> -->\r
-<!-- <button id="copyMediaIdButton" label="MédiaId vágólapra másolás" onClick="@command('copyMediaIdToClipboard')" autodisable="self" -->\r
-<!-- disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" /> -->\r
-<!-- <button id="metadataButton" label="Szerkesztés" onClick="@command('openMetaDataDialog')" autodisable="self" -->\r
-<!-- disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" /> -->\r
-<!-- </div> -->\r
+ \r
+ <button label="Kosárba" onClick="@command('downloadMedia')" autodisable="self" disabled="@load(not vm.hasTSMMediaFile)"\r
+ sclass="buttonBold" />\r
+ <button id="copyMediaIdButton" label="Email kiküldése" onClick="@command('copyMediaIdToClipboard')" autodisable="self"\r
+ disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" />\r
+ <button id="metadataButton" label="Szerkesztés" onClick="@command('openMetaDataDialog')" autodisable="self"\r
+ disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" />\r
+ </div>\r
\r
<div width="100%" height="90%" style="padding: 4px; overflow:auto; background-color: white">\r
<div>\r
</groupbox>\r
</center>\r
</borderlayout>\r
-\r
</center>\r
</borderlayout>\r
</div>\r
import org.zkoss.zk.ui.Component;\r
import org.zkoss.zk.ui.select.Selectors;\r
import org.zkoss.zk.ui.select.annotation.Wire;\r
+import org.zkoss.zul.ListModel;\r
+import org.zkoss.zul.ListModelList;\r
import org.zkoss.zul.Messagebox;\r
import org.zkoss.zul.Window;\r
\r
import user.jobengine.zk.util.SessionUtil;\r
\r
public class RetrieveBatchSelectorModel extends BaseModel {\r
+ private enum Types {\r
+ Automatikus("0"), Online("1"), Nexio("2");\r
+ private final String value;\r
+\r
+ Types(String value) {\r
+ this.value = value;\r
+ }\r
+\r
+ public String getValue() {\r
+ return value;\r
+ }\r
+\r
+ }\r
+\r
+ private static final String TARGET_PATH_TYPE = "targetPathType";\r
+\r
private static final Logger logger = LogManager.getLogger();\r
private static final String BASKET = "basket";\r
private static final String RECIPIENT = "recipient";\r
private static final String HOUSEID = "houseId";\r
private static final String RESTORE = "Visszatöltés";\r
+\r
private static final String JOBTEMPLATE = "batch-retrieve-ondemand.xml";\r
+\r
+ private ListModelList reloadTypes = new ListModelList<>(Types.values());\r
+\r
private List<ArchivedMedia> selectedItems;\r
- private boolean disabled;\r
\r
+ private boolean disabled;\r
@Wire()\r
private Window wndRetrieveBatch;\r
+\r
private String houseId;\r
private String email;\r
private MenuModel menuModel;\r
public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
menuModel = (MenuModel) SessionUtil.getAttribute(SessionUtil.MENUMODEL);\r
Selectors.wireComponents(view, this, false);\r
+ reloadTypes.addToSelection(Types.values()[0]);\r
}\r
\r
@Command\r
parameters.put(HOUSEID, houseId);\r
parameters.put(RECIPIENT, email);\r
parameters.put(BASKET, getMedias());\r
+ parameters.put(TARGET_PATH_TYPE, Types.valueOf(reloadTypes.getSelection().iterator().next().toString()).value);\r
jobEngine.submit(JOBTEMPLATE, RESTORE, parameters);\r
\r
menuModel.clearBasket();\r
return result;\r
}\r
\r
+ public ListModel<String> getReloadTypes() {\r
+ return reloadTypes;\r
+ }\r
+\r
public List<ArchivedMedia> getSelectedItems() {\r
return selectedItems;\r
}\r
this.houseId = houseId;\r
}\r
\r
- public void setSelectedItems(List<ArchivedMedia> selectedItems) {\r
- this.selectedItems = selectedItems;\r
+ public void setReloadTypes(ListModelList reloadTypes) {\r
+ this.reloadTypes = reloadTypes;\r
}\r
\r
}
\ No newline at end of file
import org.apache.commons.lang.StringUtils;\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
+import org.zkoss.bind.BindContext;\r
import org.zkoss.bind.ValidationContext;\r
import org.zkoss.bind.Validator;\r
import org.zkoss.bind.annotation.AfterCompose;\r
import org.zkoss.zk.ui.event.SortEvent;\r
import org.zkoss.zk.ui.select.Selectors;\r
import org.zkoss.zk.ui.select.annotation.Wire;\r
-import org.zkoss.zk.ui.util.Clients;\r
+import org.zkoss.zul.Button;\r
import org.zkoss.zul.Checkbox;\r
import org.zkoss.zul.Column;\r
import org.zkoss.zul.Detail;\r
Timer timer;\r
@Wire\r
Grid itemsGrid;\r
+ @Wire\r
+ Button backToVideoButton;\r
private String orderBy;\r
private boolean orderAscending;\r
\r
private Map<String, String> topColorClasses;\r
+ private int selectedRowIndex;\r
+ private int selectedPageIndex;\r
+ private String mediaID;\r
\r
public SearchModel() {\r
typeFilters = new LinkedHashMap<>();\r
column.addEventListener("onSort", evt -> doSort(evt));\r
}\r
\r
- String mediaID = SessionUtil.getQueryParameter(MEDIA_ID);\r
+ mediaID = SessionUtil.getQueryParameter(MEDIA_ID);\r
if (mediaID != null)\r
searchResult = new InitializedCachedListModel(mediaID, searchValue, new ArrayList<String>(), orderBy, orderAscending);\r
}\r
Clipboard clipboard = toolkit.getSystemClipboard();\r
StringSelection strSel = new StringSelection(url);\r
clipboard.setContents(strSel, null);\r
- Messagebox.show("A médiához szükséges URL a vágólapra másolva, az URL a következő:\n" + url, "", Messagebox.OK, Messagebox.NONE);\r
+ String email = String.format("mailto:?subject=Média címe: %s &body=A média itt tekinthető meg: %s", selectedObject.getMedia().getTitle(), url);\r
+ // Messagebox.show("A médiához szükséges URL a vágólapra másolva, az URL a következő:\n" + email, "", Messagebox.OK, Messagebox.NONE);\r
+ Executions.getCurrent().sendRedirect(email, "_blank");\r
}\r
\r
@Command\r
}\r
\r
@Command\r
- public void onAfterRenderGrid() {\r
- registerTask(() -> {\r
- logger.info("onAfterRenderGrid");\r
- List<Component> children = itemsGrid.getRows().getChildren();\r
- if (children.size() > 0) {\r
- int pos = itemsGrid.getPageSize() * itemsGrid.getActivePage();\r
- Component top = children.get(pos);\r
- Clients.scrollIntoView(top);\r
- }\r
- });\r
- timer.start();\r
+ @NotifyChange("itemsGrid")\r
+ public void jumpToPosition(@ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) {\r
+ itemsGrid.setActivePage(selectedPageIndex);\r
+ }\r
+\r
+ @Command\r
+ public void onPaging() {\r
+ if (mediaID != null) {\r
+ selectedObject = searchResult.getElementAt(0);\r
+ highlight(selectedObject, true);\r
+ notifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath");\r
+ }\r
}\r
\r
@Command\r
\r
@Command\r
@NotifyChange({ "selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath" })\r
- public void selectMediaArchive(@BindingParam("selectedObject") ArchivedMedia selectedObject) {\r
+ public void selectMediaArchive(@BindingParam("selectedObject") ArchivedMedia selectedObject, @ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) {\r
+ Event event = ctx.getTriggerEvent();\r
+ selectedRowIndex = ((Row) event.getTarget()).getIndex();\r
highlight(this.selectedObject, false);\r
this.selectedObject = selectedObject;\r
+ selectedPageIndex = itemsGrid.getActivePage();\r
highlight(this.selectedObject, true);\r
\r
logger.info(itemsGrid.getActivePage());\r