From: Vásáry Dániel Date: Thu, 10 Oct 2019 11:42:48 +0000 (+0000) Subject: git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube... X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=2a69ebb534f53a0a31cbadca57e63554d7cad77e;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31566 --- diff --git a/server/-configuration/maestro.json b/server/-configuration/maestro.json index 36f35ed0..2ad1d187 100644 --- a/server/-configuration/maestro.json +++ b/server/-configuration/maestro.json @@ -2,41 +2,35 @@ "sourceStoreUri": { "name": "Default", "protocol": "LOCAL", - "uri": "c:/temp", - "fileFilter": "*.log;*.bat", + "uri": "c:/_video", + "fileFilter": "*.mxf", "showDirectories": true }, "alternateSourceStoreUris": [ { - "name": "Alt1", + "name": "NLE1", "protocol": "LOCAL", - "uri": "c:/dev", - "fileFilter": "*.log;*.bat", + "uri": "c:/_video/nle1", + "fileFilter": "*.mxf", "showDirectories": true }, { - "name": "Alt2", + "name": "NLE2", "protocol": "LOCAL", - "uri": "c:/opt", - "fileFilter": "*.log;*.bat", + "uri": "c:/_video/nle2", + "fileFilter": "*.mxf", "showDirectories": true } ], "targets": [ { - "name": "name1", + "name": "FINISHED_SHOWS", + "killDateDays": 1, "storeUri": { "protocol": "LOCAL", - "uri": "c:/temp1" - } - }, - { - "name": "name2", - "storeUri": { - "protocol": "LOCAL", - "uri": "c:/temp2" + "uri": "c:/_video/finished" } } ] diff --git a/server/-configuration/run-mediacube-server-user.launch b/server/-configuration/run-mediacube-server-user.launch index 4ed184f0..7a9ef79e 100644 --- a/server/-configuration/run-mediacube-server-user.launch +++ b/server/-configuration/run-mediacube-server-user.launch @@ -19,10 +19,10 @@ - + - + diff --git a/server/-dependencies/jobengine.target b/server/-dependencies/jobengine.target index b986b075..667e9d4e 100644 --- a/server/-dependencies/jobengine.target +++ b/server/-dependencies/jobengine.target @@ -62,7 +62,6 @@ - diff --git a/server/-dependencies/pom.xml b/server/-dependencies/pom.xml index db9388a2..359b02b9 100644 --- a/server/-dependencies/pom.xml +++ b/server/-dependencies/pom.xml @@ -288,7 +288,6 @@ org.eclipse.jetty:jetty-servlet:${jetty.version} - true org.eclipse.jetty.websocket:websocket-api:${jetty.version} @@ -305,14 +304,18 @@ org.jboss.resteasy:resteasy-jaxrs:${resteasy-version} + true org.jboss.resteasy:resteasy-validator-provider-11:${resteasy-version} + true org.jboss.resteasy:resteasy-multipart-provider:${resteasy-version} + true + true org.jboss.resteasy:resteasy-jackson2-provider:${resteasy-version} diff --git a/server/user.jobengine.executors/META-INF/MANIFEST.MF b/server/user.jobengine.executors/META-INF/MANIFEST.MF index 5c6c38de..7da4ebb7 100644 --- a/server/user.jobengine.executors/META-INF/MANIFEST.MF +++ b/server/user.jobengine.executors/META-INF/MANIFEST.MF @@ -9,24 +9,29 @@ Require-Bundle: user.jobengine.osgi.commons;bundle-version="1.0.0", org.apache.commons.lang;bundle-version="2.6.0", user.jobengine.osgi.server;bundle-version="1.0.0", user.jobengine.osgi.db, - com.ibm.nosql;bundle-version="4.19.26" + com.ibm.nosql;bundle-version="4.19.26", + com.fasterxml.jackson.core.jackson-annotations;bundle-version="2.4.5", + com.fasterxml.jackson.core.jackson-core;bundle-version="2.4.5", + com.fasterxml.jackson.core.jackson-databind;bundle-version="2.4.5", + com.fasterxml.jackson.datatype.jackson-datatype-joda;bundle-version="2.4.5", + com.fasterxml.jackson.jaxrs.jackson-jaxrs-base;bundle-version="2.4.5", + com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider;bundle-version="2.4.5", + com.fasterxml.jackson.module.jackson-module-jaxb-annotations;bundle-version="2.4.5", + org.jboss.resteasy.client;bundle-version="3.0.11", + org.jboss.resteasy.jackson2-provider;bundle-version="3.0.11", + org.jboss.resteasy.jaxb-provider;bundle-version="3.0.11", + org.jboss.resteasy.jaxrs;bundle-version="3.0.11", + org.jboss.resteasy.jaxrs-api;bundle-version="3.0.11", + org.jboss.resteasy.multipart-provider;bundle-version="3.0.11", + org.jboss.resteasy.validator-provider-11;bundle-version="3.0.11" Bundle-ClassPath: . Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Import-Package: com.fasterxml.jackson.annotation;version="2.4.5", - com.fasterxml.jackson.core;version="2.4.5", - com.fasterxml.jackson.databind;version="2.4.5", - com.fasterxml.jackson.databind.util;version="2.4.5", - com.fasterxml.jackson.datatype.joda;version="2.4.5", - com.fasterxml.jackson.jaxrs.json;version="2.4.5", - javax.ws.rs.client, +Import-Package: javax.ws.rs.client, javax.ws.rs.core;version="2.0.1", org.apache.commons.io;version="2.2.0", org.apache.commons.net.ftp;version="3.6.0", org.apache.logging.log4j;version="2.8.2", org.apache.logging.log4j.message;version="2.8.2", - org.jboss.resteasy.client.jaxrs, - org.jboss.resteasy.plugins.providers, - org.jboss.resteasy.spi, org.joda.time;version="2.2.0", org.joda.time.base;version="2.2.0", sqlj.runtime.ref diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFiles.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFiles.java index 67536a7a..4be1b405 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFiles.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFiles.java @@ -73,8 +73,7 @@ public class EscortFiles { Files.write(xmlPath, content.getBytes()); } - public static byte[] createNEXIOKillDateFile(String fileName, Date killDate, String description, String agency) - throws Exception { + public static byte[] createNEXIOKillDateFile(String fileName, Date killDate, String description, String agency) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); DOMImplementation impl = db.getDOMImplementation(); @@ -88,8 +87,7 @@ public class EscortFiles { } if (StringUtils.isNotBlank(description)) - root.appendChild(xmlDocument.createElement(EXTENDEDDESCRIPTION)) - .appendChild(xmlDocument.createTextNode(description)); + root.appendChild(xmlDocument.createElement(EXTENDEDDESCRIPTION)).appendChild(xmlDocument.createTextNode(description)); if (StringUtils.isNotBlank(agency)) root.appendChild(xmlDocument.createElement(EXTENDEDAGENCY)).appendChild(xmlDocument.createTextNode(agency)); xmlDocument.appendChild(root); @@ -130,7 +128,7 @@ public class EscortFiles { } catch (Exception e) { // logger.catching(e); try { - Files.createDirectory(filePath); + Files.createDirectories(filePath); } catch (Exception e1) { logger.catching(e); throw e; @@ -144,8 +142,7 @@ public class EscortFiles { ensureUNCFolder(statusPath); } - public static void setNEXIOKillDate(int killDateDays, String targetFileName, String nexioAgency, StoreUri targetUri) - throws Exception { + public static void setNEXIOKillDate(int killDateDays, String targetFileName, String nexioAgency, StoreUri targetUri) throws Exception { OutputStream outStream = null; try { FTPClient targetFTP = ((FtpDirectoryLister) targetUri.getLister()).connect(); @@ -153,14 +150,12 @@ public class EscortFiles { killDate.add(Calendar.DAY_OF_YEAR, killDateDays); if (targetFileName.toLowerCase().contains(".mxf")) targetFileName = targetFileName.substring(0, targetFileName.lastIndexOf('.')); - byte[] killDateFile = EscortFiles.createNEXIOKillDateFile(targetFileName, killDate.getTime(), null, - nexioAgency); + byte[] killDateFile = EscortFiles.createNEXIOKillDateFile(targetFileName, killDate.getTime(), null, nexioAgency); String xml = targetFileName + ".xml"; outStream = targetFTP.storeFileStream(xml); if (outStream == null) { throw new NullPointerException( - "Can not open: " + targetFileName.substring(0, targetFileName.lastIndexOf('.')) + ".xml" - + " Reply:" + targetFTP.getReplyString()); + "Can not open: " + targetFileName.substring(0, targetFileName.lastIndexOf('.')) + ".xml" + " Reply:" + targetFTP.getReplyString()); } outStream.write(killDateFile); outStream.flush(); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/FileCopyStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/FileCopyStep.java index 00d5d9b5..76edb1ce 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/FileCopyStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/FileCopyStep.java @@ -76,7 +76,7 @@ public class FileCopyStep extends JobStep { source.transferFrom(target, sourceFileName, targetFileName); if (killDateDays > 0) { - EscortFiles.createUNCKillDate(targetPath, sourceFileName, killDateDays, marker); + EscortFiles.createUNCKillDate(targetPath, targetFileName, killDateDays, marker); } } catch (Exception e) { diff --git a/server/user.jobengine.osgi.commons/src/user/commons/StoreUri.java b/server/user.jobengine.osgi.commons/src/user/commons/StoreUri.java index 150e39a9..db4eb635 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/StoreUri.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/StoreUri.java @@ -380,6 +380,9 @@ public class StoreUri extends EntityBase implements Serializable { IDirectoryLister outputLister = RemoteFileHandler.createLister(targetStoreUri); if (outputLister == null) throw new Exception("OutputLister is null."); + + outputLister.ensureOutputDirectory(); + return copy(lister, outputLister, remoteFile, targetName); } diff --git a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/FtpDirectoryLister.java b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/FtpDirectoryLister.java index 0c4645d6..429deed6 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/FtpDirectoryLister.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/FtpDirectoryLister.java @@ -112,6 +112,12 @@ public class FtpDirectoryLister implements IDirectoryLister { } } + @Override + public void ensureOutputDirectory() { + // TODO Auto-generated method stub + + } + @Override public boolean exists(String fileName) throws Exception { connect(); diff --git a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/IDirectoryLister.java b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/IDirectoryLister.java index fb4a1421..dfa95641 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/IDirectoryLister.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/IDirectoryLister.java @@ -15,6 +15,8 @@ public interface IDirectoryLister { void delete(RemoteFile remoteFile) throws Exception; + void ensureOutputDirectory() throws Exception; + boolean exists(String fileName) throws Exception; RemoteFile get(String fileName) throws Exception; diff --git a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/LocalDirectoryLister.java b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/LocalDirectoryLister.java index a3d23506..4e1299dd 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/LocalDirectoryLister.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/LocalDirectoryLister.java @@ -10,11 +10,15 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.BasicFileAttributes; +import java.nio.file.attribute.FileAttribute; +import java.nio.file.attribute.PosixFilePermission; +import java.nio.file.attribute.PosixFilePermissions; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; +import java.util.Set; import org.apache.commons.lang.NotImplementedException; @@ -49,6 +53,25 @@ public class LocalDirectoryLister implements IDirectoryLister { } + @Override + public void ensureOutputDirectory() throws Exception { + File folder = new File(storeUri.toString(true)); + if (!folder.exists() || !folder.isDirectory()) { + Set perms = PosixFilePermissions.fromString("rwxrwxrwx"); + FileAttribute> attr = PosixFilePermissions.asFileAttribute(perms); + try { + Files.createDirectories(folder.toPath(), attr); + } catch (Exception e) { + // logger.catching(e); + try { + Files.createDirectories(folder.toPath()); + } catch (Exception e1) { + throw e; + } + } + } + } + @Override public boolean exists(String fileName) throws Exception { Path path = Paths.get(storeUri.toString(true), fileName); @@ -81,35 +104,38 @@ public class LocalDirectoryLister implements IDirectoryLister { List result = new ArrayList(); String path = storeUri.toString(true); File dir = new File(path); - File[] dirs = {}; + File[] dirs = null; if (storeUri.isShowDirectories()) dirs = dir.listFiles(new DirectoryFileFilter(storeUri.getDirectoryFilter(), true)); File[] files = dir.listFiles(new DirectoryFileFilter(storeUri.getFileFilter(), false)); - Arrays.sort(dirs, new Comparator() { - @Override - public int compare(File f1, File f2) { - return f1.getName().compareToIgnoreCase(f2.getName()); + if (dirs != null) { + Arrays.sort(dirs, new Comparator() { + @Override + public int compare(File f1, File f2) { + return f1.getName().compareToIgnoreCase(f2.getName()); + } + }); + for (File file : dirs) { + RemoteFile remoteFile = toRemoteFile(file); + result.add(remoteFile); } - }); + } - Arrays.sort(files, new Comparator() { - @Override - public int compare(File f1, File f2) { - return f1.getName().compareToIgnoreCase(f2.getName()); + if (files != null) { + Arrays.sort(files, new Comparator() { + @Override + public int compare(File f1, File f2) { + return f1.getName().compareToIgnoreCase(f2.getName()); + } + }); + for (File file : files) { + RemoteFile remoteFile = toRemoteFile(file); + result.add(remoteFile); } - }); - - for (File file : dirs) { - RemoteFile remoteFile = toRemoteFile(file); - result.add(remoteFile); } - for (File file : files) { - RemoteFile remoteFile = toRemoteFile(file); - result.add(remoteFile); - } return result; } diff --git a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/SambaDirectoryLister.java b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/SambaDirectoryLister.java index 73ca4045..e1461ed3 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/SambaDirectoryLister.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/SambaDirectoryLister.java @@ -48,6 +48,12 @@ public class SambaDirectoryLister implements IDirectoryLister { } } + @Override + public void ensureOutputDirectory() { + // TODO Auto-generated method stub + + } + @Override public boolean exists(String fileName) throws Exception { // TODO Auto-generated method stub diff --git a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/TSMLister.java b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/TSMLister.java index ad3331db..fca30aa1 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/TSMLister.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/TSMLister.java @@ -46,6 +46,12 @@ public class TSMLister implements IDirectoryLister { } + @Override + public void ensureOutputDirectory() throws Exception { + // TODO Auto-generated method stub + + } + @Override public boolean exists(String fileName) throws Exception { // TODO Auto-generated method stub diff --git a/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadata.java b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadata.java index 8d6178a4..d9711f75 100644 --- a/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadata.java +++ b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadata.java @@ -2,4 +2,7 @@ package user.mediacube.metadata.interfaces; public interface IMetadata { + String getId(); + + String getTitle(); } diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/search/LuceneMediaFinder.java b/server/user.jobengine.osgi.db/src/user/jobengine/search/LuceneMediaFinder.java index 1fc9dca9..a65228f4 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/search/LuceneMediaFinder.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/search/LuceneMediaFinder.java @@ -21,10 +21,6 @@ public class LuceneMediaFinder implements IMediaFinder { int toResult) { SearchResult ret = new SearchResult(); // TODO Auto-generated method stub - // ResteasyProviderFactory instance = - // ResteasyProviderFactory.getInstance(); - // RegisterBuiltin.register(instance); - // instance.registerProvider(ResteasyJackson2Provider.class); ResteasyClient client = new ResteasyClientBuilder().build(); // if (criteria == "" || criteria == null) // apiPath = apiPath + "*:*/"; diff --git a/server/user.jobengine.osgi.db/test/user/jobengine/db/TestItem.java b/server/user.jobengine.osgi.db/test/user/jobengine/db/TestItem.java index 7e561ece..89f7f558 100644 --- a/server/user.jobengine.osgi.db/test/user/jobengine/db/TestItem.java +++ b/server/user.jobengine.osgi.db/test/user/jobengine/db/TestItem.java @@ -373,7 +373,7 @@ public class TestItem extends TestBase { // TestDB.createStaticItemTypes(); // Fixture // Exercise - Item result = manager.getItemByHouseID("11111"); + Item result = manager.getItemByHouseID("11111", null); // Verify assertNotNull(result); diff --git a/server/user.jobengine.osgi.server/deploy.launch b/server/user.jobengine.osgi.server/deploy.launch index e1c38a1c..788bceaf 100644 --- a/server/user.jobengine.osgi.server/deploy.launch +++ b/server/user.jobengine.osgi.server/deploy.launch @@ -7,7 +7,7 @@ - + diff --git a/server/user.jobengine.osgi.server/resources/i3-label_hu.properties b/server/user.jobengine.osgi.server/resources/i3-label_hu.properties index 48988ce2..b700857e 100644 --- a/server/user.jobengine.osgi.server/resources/i3-label_hu.properties +++ b/server/user.jobengine.osgi.server/resources/i3-label_hu.properties @@ -1,4 +1,4 @@ -version=2.4.5 +version=2.4.6 footer=2016-2019 © Copyright User Rendszerház Kft. login_info=Információ diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/DirectoryListModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/DirectoryListModel.java index 791cd69e..7e59913b 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/DirectoryListModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/DirectoryListModel.java @@ -1,6 +1,5 @@ package user.jobengine.zk.model; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -15,6 +14,7 @@ import org.zkoss.bind.annotation.NotifyChange; import org.zkoss.zk.ui.Executions; import org.zkoss.zul.ListModelList; +import user.commons.ListUtils; import user.commons.NamedStoreUri; import user.commons.RemoteFile; import user.commons.StoreUri; @@ -80,7 +80,7 @@ public class DirectoryListModel { String param = Executions.getCurrent().getParameter("source"); if (param != null && !param.isEmpty()) { for (NamedStoreUri altSourceStoreUri : config.getAlternateSourceStoreUris()) { - if (param.equals(altSourceStoreUri.getName())) + if (param.toLowerCase().equals(altSourceStoreUri.getName().toLowerCase())) uri = altSourceStoreUri; } } @@ -150,12 +150,8 @@ public class DirectoryListModel { @NotifyChange("executeEnabled") public void selectedItemChanged() { Set selection = files.getSelection(); - // logger.info("Selected: {}", selection.size()); - - Map args = new HashMap<>(); - args.put("sourcedata", selection); - args.put("sourceUri", uri); - BindUtils.postGlobalCommand(null, null, "updateExecuteState", args); + Map args = ListUtils.asMap("sourcedata", selection, "sourceUri", uri); + BindUtils.postGlobalCommand(null, null, "updateExecuteSource", args); } public void setFileSizeConverter(FileSizeConverter fileSizeConverter) { diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroJobListModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroJobListModel.java index 34e54fe7..f0a57bf4 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroJobListModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroJobListModel.java @@ -1,8 +1,13 @@ package user.jobengine.zk.model; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.text.Normalizer; import java.util.Collection; import java.util.Map; +import java.util.regex.Pattern; +import org.apache.commons.io.FilenameUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.zkoss.bind.annotation.BindingParam; @@ -26,16 +31,40 @@ import user.jobengine.server.JobEngine; import user.jobengine.server.JobEngineException; import user.jobengine.server.scheduler.ScheduledJob; import user.jobengine.zk.util.SessionUtil; +import user.mediacube.metadata.interfaces.IMetadata; public class MaestroJobListModel extends AsyncBaseModel implements IJobChangedListener { private static final Logger logger = LogManager.getLogger(); private static final String TEMPLATE = "common-copy.xml"; + public static final Pattern DIACRITICS_AND_FRIENDS = Pattern.compile("[\\p{InCombiningDiacriticalMarks}\\p{IsLm}\\p{IsSk}]+"); + + private static String stripDiacritics(String str) { + str = Normalizer.normalize(str, Normalizer.Form.NFD); + str = DIACRITICS_AND_FRIENDS.matcher(str).replaceAll(""); + return str; + } + private ListModelList jobList = new ListModelList(); private IJobEngine jobEngine = null; private int newPriority = 1; + private Collection selectedJobs; + private String currentUser = SessionUtil.getUserPrincipal().getAccount(); + private String applyTargetFile(String sourceFileName, IMetadata targetMetadata) { + String extension = FilenameUtils.getExtension(sourceFileName); + return String.format("%s.%s", targetMetadata.getId(), extension); + } + + private String applyTargetPath(String targetPath, IMetadata targetMetadata) { + Path path = Paths.get(targetPath, String.format("%s_%s", targetMetadata.getId(), stripDiacritics(targetMetadata.getTitle()))); + String result = path.toString(); + result = result.replace(" (OK)", ""); + result = result.replace(" ", "_"); + return result.toUpperCase(); + } + public ListModelList getJobList() { return jobList; } @@ -137,7 +166,8 @@ public class MaestroJobListModel extends AsyncBaseModel implements IJobChangedLi @NotifyChange({ "jobList" }) public void submitJob(@BindingParam("sourceProtocol") String sourceProtocol, @BindingParam("sourcePath") String sourcePath, @BindingParam("sourceFileName") String sourceFileName, @BindingParam("targetProtocol") String targetProtocol, - @BindingParam("targetPath") String targetPath, @BindingParam("killDateDays") Integer killDateDays) { + @BindingParam("targetPath") String targetPath, @BindingParam("killDateDays") int killDateDays, + @BindingParam("targetMetadata") IMetadata targetMetadata) { ScheduledJob scheduledJob = jobEngine.getScheduledJob(TEMPLATE); Map parameters = scheduledJob.getJobParameters(); @@ -146,8 +176,13 @@ public class MaestroJobListModel extends AsyncBaseModel implements IJobChangedLi parameters.put("sourceFileName", sourceFileName); parameters.put("targetProtocol", targetProtocol); + + targetPath = applyTargetPath(targetPath, targetMetadata); parameters.put("targetPath", targetPath); - parameters.put("targetFileName", sourceFileName); + + String targetFileName = applyTargetFile(sourceFileName, targetMetadata); + parameters.put("targetFileName", targetFileName); + parameters.put("killDateDays", killDateDays); try { diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroTarget.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroTarget.java index 8b4786d7..d5858b90 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroTarget.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroTarget.java @@ -6,6 +6,11 @@ public class MaestroTarget { private String name; private StoreUri storeUri; private Boolean selected; + private int killDateDays; + + public int getKillDateDays() { + return killDateDays; + } public String getName() { return name; @@ -23,6 +28,10 @@ public class MaestroTarget { } } + public void setKillDateDays(int killDateDays) { + this.killDateDays = killDateDays; + } + public void setName(String name) { this.name = name; } diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/PlanAirListModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/PlanAirListModel.java index 159043ba..c153bab0 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/PlanAirListModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/PlanAirListModel.java @@ -1,7 +1,6 @@ package user.jobengine.zk.model; import java.util.Date; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -15,6 +14,7 @@ import org.zkoss.bind.annotation.Init; import org.zkoss.zul.Column; import org.zkoss.zul.ListModelList; +import user.commons.ListUtils; import user.jobengine.osgi.server.ComponentBinder; import user.jobengine.zk.util.SessionUtil; import user.mediacube.metadata.interfaces.IMetadata; @@ -140,14 +140,13 @@ public class PlanAirListModel { break; } + Map args = ListUtils.asMap("metadata", selection); + BindUtils.postGlobalCommand(null, null, "updateExecuteMetadata", args); + if (selection == null) return; logger.info("Selected: {}", selection.size()); - - Map args = new HashMap<>(); - args.put("metadata", selection); - BindUtils.postGlobalCommand(null, null, "updateExecuteState", args); } public void setProblematic(boolean problematic) { diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/TargetsListModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/TargetsListModel.java index 45062151..1f13e526 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/TargetsListModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/TargetsListModel.java @@ -28,38 +28,6 @@ public class TargetsListModel { Set metaData; private StoreUri sourceUri; - public boolean conditionsOk() { - boolean srcMetaOk = false; - boolean ret = false; - if (sourceData != null && metaData != null) { - if (!sourceData.isEmpty() && !metaData.isEmpty()) { - if (!sourceData.iterator().next().getIsFolder()) { - srcMetaOk = true; - } - } - } - - // Végén törölni !!! //////////////////////////////////////// - if (sourceData != null) { - if (!sourceData.isEmpty()) { - if (!sourceData.iterator().next().getIsFolder()) { - srcMetaOk = true; - } - } - } - // Végén törölni !!! //////////////////////////////////////// - - if (srcMetaOk) { - for (int i = 0; i < targets.size(); i++) { - if (targets.get(i).isSelected().booleanValue()) { - ret = true; - break; - } - } - } - return ret; - } - @Command public void createJob() { String fileName = sourceData.iterator().next().getName(); @@ -71,22 +39,39 @@ public class TargetsListModel { // TODO Auto-generated catch block e.printStackTrace(); } - for (int i = 0; i < targets.size(); i++) { - if (targets.get(i).isSelected()) { + for (MaestroTarget target : targets) { + if (target.isSelected()) { Map params = new HashMap<>(); params.put("sourceProtocol", sourceUri.getProtocol()); params.put("sourcePath", sourcePath); params.put("sourceFileName", fileName); - params.put("targetProtocol", targets.get(i).getStoreUri().getProtocol()); - params.put("targetPath", targets.get(i).getStoreUri().getUri()); - params.put("killDateDays", 0); - // params.put("targetFileName", fileName); + params.put("targetProtocol", target.getStoreUri().getProtocol()); + params.put("targetPath", target.getStoreUri().getUri()); + params.put("killDateDays", target.getKillDateDays()); + + params.put("targetMetadata", metaData.iterator().next()); BindUtils.postGlobalCommand(null, null, "submitJob", params); } } } + private boolean enableExecute() { + boolean targetSelected = false; + for (MaestroTarget target : targets) { + if (target.isSelected()) { + targetSelected = true; + break; + } + } + + boolean result = targetSelected && metaData != null && !metaData.isEmpty() && sourceUri != null && sourceData != null && !sourceData.isEmpty(); + if (result) + result &= !sourceData.iterator().next().getIsFolder(); + logger.info("Condition OK {}", result); + return result; + } + public ListModelList getTargets() { return targets; } @@ -96,8 +81,6 @@ public class TargetsListModel { try { config = SessionUtil.getMaestroConfig(); targets = new ListModelList<>(config.getTargets()); - for (int i = 0; i < targets.size(); i++) - targets.get(i).setSelected(false); } catch (Exception e) { logger.error("Hiba a config file beállításánál {}", e.getMessage()); } @@ -112,12 +95,15 @@ public class TargetsListModel { @Command @NotifyChange("executeEnabled") public void onCheck(@BindingParam("targetName") String targetName, @BindingParam("isChecked") Boolean isChecked) { - for (int i = 0; i < targets.size(); i++) { - if (targets.get(i).getName() == targetName) { - targets.get(i).setSelected(isChecked.booleanValue()); + + for (MaestroTarget target : targets) { + if (target.getName().equals(targetName)) { + target.setSelected(isChecked); + break; } } - setExecuteEnabled(conditionsOk()); + + setExecuteEnabled(enableExecute()); } @Command @@ -128,14 +114,17 @@ public class TargetsListModel { @GlobalCommand @NotifyChange("executeEnabled") - public void updateExecuteState(@BindingParam("sourcedata") Set sourceData, @BindingParam("sourceUri") StoreUri sourceUri, - @BindingParam("metadata") Set metaData) { - this.sourceData = sourceData; + public void updateExecuteMetadata(@BindingParam("metadata") Set metaData) { this.metaData = metaData; + setExecuteEnabled(enableExecute()); + } + + @GlobalCommand + @NotifyChange("executeEnabled") + public void updateExecuteSource(@BindingParam("sourcedata") Set sourceData, @BindingParam("sourceUri") StoreUri sourceUri) { + this.sourceData = sourceData; this.sourceUri = sourceUri; - setExecuteEnabled(conditionsOk()); - // logger.info("{}", sourceData); - // logger.info("{}", metaData); + setExecuteEnabled(enableExecute()); } } diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionUtil.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionUtil.java index d0ed1f04..8d539b9f 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionUtil.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/SessionUtil.java @@ -146,7 +146,7 @@ public class SessionUtil { public static MaestroConfig getMaestroConfig() { MaestroConfig result = null; try { - result = (MaestroConfig) getAttribute(JOBENGINE_MAESTRO_CONFIG); + //result = (MaestroConfig) getAttribute(JOBENGINE_MAESTRO_CONFIG); if (result == null) { result = JSONConfig.read(JOBENGINE_MAESTRO_CONFIG, MaestroConfig.class); setAttribute(JOBENGINE_MAESTRO_CONFIG, result); diff --git a/server/user.mediacube.metadata/deploy.launch b/server/user.mediacube.metadata/deploy.launch new file mode 100644 index 00000000..e3dba4a0 --- /dev/null +++ b/server/user.mediacube.metadata/deploy.launch @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/IPlanAirADMapper.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/IPlanAirADMapper.java index 3bb30c72..ceb680df 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/IPlanAirADMapper.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/IPlanAirADMapper.java @@ -14,7 +14,7 @@ public interface IPlanAirADMapper { // @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null, // @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null - static final String AD_SQL = "{CALL dbo.clIFsp_EC_MAM(3002, #{options, mode=IN, jdbcType=INTEGER}, Null, Null, Null, Null, #{search, mode=IN, jdbcType=VARCHAR}, Null, #{broadcastDay, mode=IN, jdbcType=DATE}, #{broadcastDay, mode=IN, jdbcType=DATE})}";//musorid + static final String AD_SQL = "{CALL dbo.clIFsp_ORI_MAM(3002, #{options, mode=IN, jdbcType=INTEGER}, Null, Null, Null, Null, #{search, mode=IN, jdbcType=VARCHAR}, Null, #{broadcastDay, mode=IN, jdbcType=DATE}, #{broadcastDay, mode=IN, jdbcType=DATE})}";//musorid // item.t_SpotID = (int)ReadInt(reader, ref f); // item.t_MediaID = ReadString(reader, ref f); // item.v_Title = ReadString(reader, ref f); diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/IPlanAirMaterialMapper.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/IPlanAirMaterialMapper.java index 791e7905..522aabfc 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/IPlanAirMaterialMapper.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/IPlanAirMaterialMapper.java @@ -14,7 +14,7 @@ public interface IPlanAirMaterialMapper { // @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null, // @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null - static final String MATERIAL_SQL = "{CALL dbo.clIFsp_EC_MAM(6002, #{options, mode=IN, jdbcType=INTEGER}, Null, Null, Null, Null, #{search, mode=IN, jdbcType=VARCHAR}, Null, #{broadcastDay, mode=IN, jdbcType=DATE}, #{broadcastDay, mode=IN, jdbcType=DATE})}";//musorid + static final String MATERIAL_SQL = "{CALL dbo.clIFsp_ORI_MAM(6002, #{options, mode=IN, jdbcType=INTEGER}, Null, Null, Null, Null, #{search, mode=IN, jdbcType=VARCHAR}, Null, #{broadcastDay, mode=IN, jdbcType=DATE}, #{broadcastDay, mode=IN, jdbcType=DATE})}";//musorid // item.v_EpisodeID = ReadString(reader, ref f); // item.v_VariantID = ReadInt(reader, ref f); // item.v_MediaID = ReadString(reader, ref f); @@ -31,7 +31,7 @@ public interface IPlanAirMaterialMapper { @Select(value = MATERIAL_SQL) @Options(statementType = StatementType.CALLABLE) @Results(value = { @Result(property = "episodeID", column = "v_EpisodeID"), @Result(property = "variantID", column = "v_VariantID"), - @Result(property = "mediaID", column = "v_VariantMediaID"), @Result(property = "progTitle", column = "v_ProgTitle"), + @Result(property = "mediaID", column = "v_MediaID"), @Result(property = "progTitle", column = "v_ProgTitle"), @Result(property = "epTitle", column = "v_EpTitle"), @Result(property = "episode", column = "v_Episode"), @Result(property = "variantNrSegments", column = "v_VariantNrSegments"), @Result(property = "firstBroadcastDate", column = "v_FirstBroadcastDate"), @Result(property = "nextBroadcastDate", column = "v_NextBroadcastDate"), @Result(property = "okForAir", column = "v_OkForAir"), diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/IPlanAirPromoMapper.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/IPlanAirPromoMapper.java index 0c6902e4..1e3a65c1 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/IPlanAirPromoMapper.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/IPlanAirPromoMapper.java @@ -15,7 +15,7 @@ public interface IPlanAirPromoMapper { // @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null, // @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null - static final String PROMO_SQL = "{CALL dbo.clIFsp_EC_MAM(2002, #{options, mode=IN, jdbcType=INTEGER}, Null, Null, Null, Null, #{search, mode=IN, jdbcType=VARCHAR}, Null, #{broadcastDay, mode=IN, jdbcType=DATE}, #{broadcastDay, mode=IN, jdbcType=DATE})}";//musorid + static final String PROMO_SQL = "{CALL dbo.clIFsp_ORI_MAM(2002, #{options, mode=IN, jdbcType=INTEGER}, Null, Null, Null, Null, #{search, mode=IN, jdbcType=VARCHAR}, Null, #{broadcastDay, mode=IN, jdbcType=DATE}, #{broadcastDay, mode=IN, jdbcType=DATE})}";//musorid // item.t_SpotID = (int)ReadInt(reader, ref f); // item.t_MediaID = ReadString(reader, ref f); // item.v_Title = ReadString(reader, ref f); diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirAD.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirAD.java index 1394ee2f..31d61dd5 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirAD.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirAD.java @@ -8,6 +8,11 @@ public class PlanAirAD implements IMetadata { private int spotID;//t_SpotID private String okForAirs; //v_OkForAirs + @Override + public String getId() { + return mediaID; + } + public String getMediaID() { return mediaID; } diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMaterial.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMaterial.java index 55980c21..b0d00605 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMaterial.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMaterial.java @@ -34,6 +34,11 @@ public class PlanAirMaterial implements IMetadata { return firstBroadcastDate; } + @Override + public String getId() { + return mediaID; + } + public String getMediaID() { return mediaID; } @@ -58,6 +63,11 @@ public class PlanAirMaterial implements IMetadata { return segNr; } + @Override + public String getTitle() { + return progTitle; + } + public int getVariantID() { return variantID; } diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataProvider.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataProvider.java index c6543841..3804a852 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataProvider.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataProvider.java @@ -26,6 +26,7 @@ public class PlanAirMetadataProvider implements IMetadataProvider { private static final String JDBC_URL = System.getProperty("jobengine.planair.db.url", "jdbc:sqlserver://10.10.1.45;databaseName=PA_Echo;"); private static final String JDBC_USER = System.getProperty("jobengine.planair.db.user", "MAM"); private static final String JDBC_PWD = System.getProperty("jobengine.planair.db.password", "Echotv.hu"); + public static final String JDBC_PROCEDURE = System.getProperty("jobengine.planair.db.procedure", "clIFsp_ORI_MAM"); private final SqlSessionFactory sqlSessionFactory; diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirPromo.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirPromo.java index fb30bfd1..195f29cf 100644 --- a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirPromo.java +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirPromo.java @@ -17,6 +17,11 @@ public class PlanAirPromo implements IMetadata { return episode; } + @Override + public String getId() { + return mediaID; + } + public String getMediaID() { return mediaID; }