From d2ad0b702deeeb51f890ff379555588d39ec99e0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Wed, 27 Sep 2017 14:41:07 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C30475 --- .../jobtemplates/archive-item.xml | 46 ++ .../jobtemplates/archive-ondemand.xml | 34 ++ .../jobtemplates}/attach.xml | 0 .../jobtemplates}/attachlocal.xml | 0 .../jobtemplates}/export.xml | 0 .../jobtemplates}/fake-concurrent.xml | 0 .../jobtemplates}/fake.xml | 0 .../jobtemplates}/import.xml | 0 .../jobtemplates}/lowrestranscodemedia.xml | 0 .../jobtemplates}/nexio-sync.xml | 0 .../jobtemplates}/program1.xml | 0 .../jobtemplates}/template.xml | 0 .../jobtemplates}/teszt.xml | 0 .../jobtemplates}/tsmbackup.xml | 0 .../jobtemplates}/tsmrestore.xml | 0 .../run-mediacube-server-localhost.launch | 2 +- server/-configuration/scheduledjobs.json | 8 +- server/-product/pom.xml | 2 +- server/user.jobengine.executors/.classpath | 2 +- .../.settings/org.eclipse.jdt.core.prefs | 7 +- .../META-INF/MANIFEST.MF | 1 + .../steps/ArchiveItemJobCreatorStep.java | 43 -- .../server/steps/ArchiveItemSubmitStep.java | 51 +++ .../server/steps/ArchiveListBuilderStep.java | 204 +++++---- .../server/steps/ItemCreatorStep.java | 59 --- .../server/steps/MetadataTransformStep.java | 48 +++ .../steps/SelenioLowresTranscodeStep.java | 241 +++++------ .../steps/TSMBackupMediaWrapperStep.java | 97 ----- .../jobengine/server/steps/TSMBackupStep.java | 186 +++------ .../server/steps/TSMBackupStep_orig.java | 158 +++++++ .../src/user/jobengine/db/ItemManager.java | 361 ++++++++-------- .../test/user/jobengine/db/TestItem.java | 393 +++++++++--------- .../resources/templates/archivemedia.xml | 48 --- .../templates/tsmbackupmediawrapper.xml | 32 -- .../jobengine/server/steps/ArchiveItem.java | 92 ++++ .../server/steps/MediaFileWrapper.java | 87 ---- 36 files changed, 1110 insertions(+), 1092 deletions(-) create mode 100644 server/-configuration/jobtemplates/archive-item.xml create mode 100644 server/-configuration/jobtemplates/archive-ondemand.xml rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/attach.xml (100%) rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/attachlocal.xml (100%) rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/export.xml (100%) rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/fake-concurrent.xml (100%) rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/fake.xml (100%) rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/import.xml (100%) rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/lowrestranscodemedia.xml (100%) rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/nexio-sync.xml (100%) rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/program1.xml (100%) rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/template.xml (100%) rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/teszt.xml (100%) rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/tsmbackup.xml (100%) rename server/{user.jobengine.osgi.server/resources/templates => -configuration/jobtemplates}/tsmrestore.xml (100%) delete mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveItemJobCreatorStep.java create mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveItemSubmitStep.java delete mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/ItemCreatorStep.java create mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java delete mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupMediaWrapperStep.java create mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep_orig.java delete mode 100644 server/user.jobengine.osgi.server/resources/templates/archivemedia.xml delete mode 100644 server/user.jobengine.osgi.server/resources/templates/tsmbackupmediawrapper.xml create mode 100644 server/user.jobengine.osgi.server/src/user/jobengine/server/steps/ArchiveItem.java delete mode 100644 server/user.jobengine.osgi.server/src/user/jobengine/server/steps/MediaFileWrapper.java diff --git a/server/-configuration/jobtemplates/archive-item.xml b/server/-configuration/jobtemplates/archive-item.xml new file mode 100644 index 00000000..70d22926 --- /dev/null +++ b/server/-configuration/jobtemplates/archive-item.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/-configuration/jobtemplates/archive-ondemand.xml b/server/-configuration/jobtemplates/archive-ondemand.xml new file mode 100644 index 00000000..4265ba2a --- /dev/null +++ b/server/-configuration/jobtemplates/archive-ondemand.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/server/user.jobengine.osgi.server/resources/templates/attach.xml b/server/-configuration/jobtemplates/attach.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/attach.xml rename to server/-configuration/jobtemplates/attach.xml diff --git a/server/user.jobengine.osgi.server/resources/templates/attachlocal.xml b/server/-configuration/jobtemplates/attachlocal.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/attachlocal.xml rename to server/-configuration/jobtemplates/attachlocal.xml diff --git a/server/user.jobengine.osgi.server/resources/templates/export.xml b/server/-configuration/jobtemplates/export.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/export.xml rename to server/-configuration/jobtemplates/export.xml diff --git a/server/user.jobengine.osgi.server/resources/templates/fake-concurrent.xml b/server/-configuration/jobtemplates/fake-concurrent.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/fake-concurrent.xml rename to server/-configuration/jobtemplates/fake-concurrent.xml diff --git a/server/user.jobengine.osgi.server/resources/templates/fake.xml b/server/-configuration/jobtemplates/fake.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/fake.xml rename to server/-configuration/jobtemplates/fake.xml diff --git a/server/user.jobengine.osgi.server/resources/templates/import.xml b/server/-configuration/jobtemplates/import.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/import.xml rename to server/-configuration/jobtemplates/import.xml diff --git a/server/user.jobengine.osgi.server/resources/templates/lowrestranscodemedia.xml b/server/-configuration/jobtemplates/lowrestranscodemedia.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/lowrestranscodemedia.xml rename to server/-configuration/jobtemplates/lowrestranscodemedia.xml diff --git a/server/user.jobengine.osgi.server/resources/templates/nexio-sync.xml b/server/-configuration/jobtemplates/nexio-sync.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/nexio-sync.xml rename to server/-configuration/jobtemplates/nexio-sync.xml diff --git a/server/user.jobengine.osgi.server/resources/templates/program1.xml b/server/-configuration/jobtemplates/program1.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/program1.xml rename to server/-configuration/jobtemplates/program1.xml diff --git a/server/user.jobengine.osgi.server/resources/templates/template.xml b/server/-configuration/jobtemplates/template.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/template.xml rename to server/-configuration/jobtemplates/template.xml diff --git a/server/user.jobengine.osgi.server/resources/templates/teszt.xml b/server/-configuration/jobtemplates/teszt.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/teszt.xml rename to server/-configuration/jobtemplates/teszt.xml diff --git a/server/user.jobengine.osgi.server/resources/templates/tsmbackup.xml b/server/-configuration/jobtemplates/tsmbackup.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/tsmbackup.xml rename to server/-configuration/jobtemplates/tsmbackup.xml diff --git a/server/user.jobengine.osgi.server/resources/templates/tsmrestore.xml b/server/-configuration/jobtemplates/tsmrestore.xml similarity index 100% rename from server/user.jobengine.osgi.server/resources/templates/tsmrestore.xml rename to server/-configuration/jobtemplates/tsmrestore.xml diff --git a/server/-configuration/run-mediacube-server-localhost.launch b/server/-configuration/run-mediacube-server-localhost.launch index a848df86..8053e4d0 100644 --- a/server/-configuration/run-mediacube-server-localhost.launch +++ b/server/-configuration/run-mediacube-server-localhost.launch @@ -19,7 +19,7 @@ - + diff --git a/server/-configuration/scheduledjobs.json b/server/-configuration/scheduledjobs.json index 9790b653..86fb8243 100644 --- a/server/-configuration/scheduledjobs.json +++ b/server/-configuration/scheduledjobs.json @@ -1,11 +1,13 @@ {"joblist":[ { "active": false, - "name" : "Anyagok archiválása", - "template": "archivemedia.xml", + "name" : "On-demand archiválás", + "template": "archive-ondemand.xml", "executeimmediate": true, "cronexpression": "0 0 0/1 1/1 * ? *", - "parameters": [ {"name": "mediaFolder", "value": "/tmp", "type": "java.lang.String"} ] + "parameters": [ + {"name": "inputFolder", "value": "/mnt/ISILON/ARCHIVE", "type": "java.lang.String"} + ] }, { "active": false, diff --git a/server/-product/pom.xml b/server/-product/pom.xml index 5473cf67..b2912cf3 100644 --- a/server/-product/pom.xml +++ b/server/-product/pom.xml @@ -105,7 +105,7 @@ ${project.build.directory}/products/MediaCube/win32/win32/x86_64/configuration/templates - ${basedir}/../user.jobengine.osgi.server/resources/templates + ${basedir}/../-configuration/jobtemplates diff --git a/server/user.jobengine.executors/.classpath b/server/user.jobengine.executors/.classpath index 3d1f8e3a..1f733c48 100644 --- a/server/user.jobengine.executors/.classpath +++ b/server/user.jobengine.executors/.classpath @@ -1,7 +1,7 @@ - + diff --git a/server/user.jobengine.executors/.settings/org.eclipse.jdt.core.prefs b/server/user.jobengine.executors/.settings/org.eclipse.jdt.core.prefs index 838bd9d6..ace45cee 100644 --- a/server/user.jobengine.executors/.settings/org.eclipse.jdt.core.prefs +++ b/server/user.jobengine.executors/.settings/org.eclipse.jdt.core.prefs @@ -1,11 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/server/user.jobengine.executors/META-INF/MANIFEST.MF b/server/user.jobengine.executors/META-INF/MANIFEST.MF index e8590cca..0cb3cc3a 100644 --- a/server/user.jobengine.executors/META-INF/MANIFEST.MF +++ b/server/user.jobengine.executors/META-INF/MANIFEST.MF @@ -12,3 +12,4 @@ Require-Bundle: user.jobengine.osgi.commons;bundle-version="1.0.0", com.ibm.nosql;bundle-version="4.19.26", org.apache.logging.log4j.api;bundle-version="2.8.2" Bundle-ClassPath: . +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveItemJobCreatorStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveItemJobCreatorStep.java deleted file mode 100644 index ad1aa2d4..00000000 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveItemJobCreatorStep.java +++ /dev/null @@ -1,43 +0,0 @@ -package user.jobengine.server.steps; - -import java.util.ArrayList; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import user.commons.ListUtils; -import user.jobengine.server.IJobEngine; -import user.jobengine.server.IJobRuntime; - -/** - * Elinditja minden mediara az archivalo es lowres tanszkodolo jobokat. - * @author robi - */ -public class ArchiveItemJobCreatorStep extends JobStep { - private static final Logger logger = LogManager.getLogger(); - - @StepEntry - public Object[] execute(ArrayList wrapperList, IJobEngine jobEngine, IJobRuntime jobRuntime) { - try { - for (MediaFileWrapper wr : wrapperList) { - try { - //START ARCHIVEMEDIA JOB - IJobRuntime runtime1 = jobEngine.submit("tsmbackupmediawrapper.xml", "TSMBackupMedia", - ListUtils.asMap("mediaWrapper", wr)); - - //START LOWRES TRANSCODER JOB - IJobRuntime runtime2 = jobEngine.submit("lowrestranscodemedia.xml", "LowresTranscodeMedia", - ListUtils.asMap("mediaWrapper", wr)); - } catch (Exception e1) { - wr.getCatchedFile().delete(); - throw e1; - } - } - - } catch (Exception e) { - logger.error("", e); - } - return new Object[] {}; - } - -} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveItemSubmitStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveItemSubmitStep.java new file mode 100644 index 00000000..83e58aa8 --- /dev/null +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveItemSubmitStep.java @@ -0,0 +1,51 @@ +package user.jobengine.server.steps; + +import java.io.File; +import java.nio.file.Path; +import java.util.ArrayList; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import user.commons.ListUtils; +import user.jobengine.server.IJobEngine; +import user.jobengine.server.IJobRuntime; + +/** + * Elinditja minden mediara az archivalo folyamatot. + * + * @author robi + */ +public class ArchiveItemSubmitStep extends JobStep { + private static final Logger logger = LogManager.getLogger(); + private static final String JOBTEMPLATE = "archive-item.xml"; + private static final String ARCHIVE_ITEM = "archiveItem"; + + @StepEntry + public Object[] execute(ArrayList archiveList, IJobEngine jobEngine, IJobRuntime jobRuntime) { + try { + for (ArchiveItem archiveItem : archiveList) { + String title = "Archiválás: " + archiveItem.getMediaFile(); + try { + jobEngine.submit(JOBTEMPLATE, title, ListUtils.asMap(ARCHIVE_ITEM, archiveItem)); + } catch (Exception e) { + if (archiveItem != null) + removeCatchedFile(archiveItem.getCatchedFile()); + throw e; + } + } + } catch (Exception e) { + logger.catching(e); + } + return new Object[] {}; + } + + private void removeCatchedFile(Path catchedFilePath) { + if (catchedFilePath != null) { + File catchedFile = catchedFilePath.toFile(); + if (catchedFile.exists()) + catchedFile.delete(); + } + } + +} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveListBuilderStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveListBuilderStep.java index f9a76c11..f47ab859 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveListBuilderStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveListBuilderStep.java @@ -8,7 +8,9 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.ArrayList; +import java.util.List; +import org.apache.commons.lang.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -19,100 +21,138 @@ import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; /** - * Az archivalhato mediak listazasa MediaFileWrapper objektumokban. - * A listazott media allomanyokat megjeloli .catched signal allomannyal, - * hogy a legkozelebbi listazas figyelmen kivul hagyja. + * Az archivalhato mediak listazasa MediaFileWrapper objektumokban. A listazott media allomanyokat megjeloli .catched signal allomannyal, hogy a legkozelebbi + * listazas figyelmen kivul hagyja. + * * @author robi */ public class ArchiveListBuilderStep extends JobStep { private static final Logger logger = LogManager.getLogger(); + private static final String UTF8 = "utf-8"; + private static final String CATCHED = "catched"; + private static final String STOREFOLDER = ".STORE"; + private static final String MEDIAEXT = ".mxf"; + private static final String JSONEXT = ".json"; + private static final String CATCHEDEXT = ".catched"; + + public static final String ITEM_TITLE = "itemTitle"; + public static final String ITEM_HOUSEID = "itemHouseID"; + public static final String ITEM_DESCRIPTION = "itemDescription"; + public static final String MEDIA_HOUSEID = "mediaHouseID"; + public static final String MEDIA_TITLE = "mediaTitle"; + public static final String MEDIA_DESCRIPTION = "mediaDescription"; + + private ArchiveItem createArchiveItem(Path jsonFilePath, Path mediaFilePath, Path catchedFilePath) { + ArchiveItem result = null; + byte[] readAllBytes = null; + try { + readAllBytes = Files.readAllBytes(jsonFilePath); + BasicDBObject dbObject = (BasicDBObject) JSONUtil.jsonToDbObject(new String(readAllBytes)); + if (dbObject == null) + throw new NullPointerException("Can not parse JSON file: " + jsonFilePath); + result = new ArchiveItem(); + fillMetadata(result, dbObject, ITEM_HOUSEID); + fillMetadata(result, dbObject, ITEM_TITLE); + fillMetadata(result, dbObject, ITEM_DESCRIPTION); + fillMetadata(result, dbObject, MEDIA_HOUSEID); + fillMetadata(result, dbObject, MEDIA_TITLE); + fillMetadata(result, dbObject, MEDIA_DESCRIPTION); + + result.setMediaFile(mediaFilePath); + result.setCatchedFile(catchedFilePath); + + } catch (IOException e) { + logger.catching(e); + return null; + } + return result; + } - @StepEntry - public Object[] execute(String mediaFolder, IJobEngine jobEngine, IJobRuntime jobRuntime) { - final ArrayList wrapperList = new ArrayList(); + private void createCatchedFile(Path catchedFilePath) { + try { + Files.write(catchedFilePath, CATCHED.getBytes(UTF8), StandardOpenOption.CREATE); + } catch (Exception e) { + logger.catching(e); + } + } + @StepEntry + public Object[] execute(String inputFolder, IJobEngine jobEngine, IJobRuntime jobRuntime) { + List archiveList = new ArrayList(); + DirectoryStream directoryStream = null; try { - //final String mediaFolder = "/tmp"; - final String storeFolder = ".STORE"; - final String mediaExt = ".mxf"; - final String jsonExt = ".json"; - final String catchedExt = ".catched"; - final File storeFolderFile = new File(mediaFolder + File.separator + storeFolder); - - //filename filter - DirectoryStream.Filter filter = new DirectoryStream.Filter() { - @Override - public boolean accept(Path path) throws IOException { - boolean ret = false; - File file = path.toFile(); - - //check extension and dir attrib - if (!file.isDirectory() && file.getName().toLowerCase().endsWith(mediaExt.toLowerCase())) { - File jsonFile = new File( - storeFolderFile.getAbsolutePath() + File.separator + file.getName() + jsonExt); - File catchedFile = new File( - storeFolderFile.getAbsolutePath() + File.separator + file.getName() + catchedExt); - //check json - if (jsonFile.exists()) { - - //check json content - String jsonContent = new String(Files.readAllBytes(Paths.get(jsonFile.getAbsolutePath()))); - BasicDBObject dbo = (BasicDBObject) JSONUtil.jsonToDbObject(jsonContent); - String itemHouseID = dbo.getString("itemHouseID"); - if (itemHouseID != null && !"".equals(itemHouseID)) { - //check catched file existence - if (!catchedFile.exists()) { - //write catchedfile - Files.write(Paths.get(catchedFile.getAbsolutePath()), "catched".getBytes("utf-8"), - StandardOpenOption.CREATE); - - MediaFileWrapper mfw = new MediaFileWrapper(); - mfw.setMediaFile(file); - mfw.setJsonFile(jsonFile); - mfw.setCatchedFile(catchedFile); - mfw.setJsonContent(jsonContent); - wrapperList.add(mfw); - - ret = true; - } else { - //file has been already catched - logger.warn(file.getName() + " file is already catched."); - } - } else { - //there is no houseID in json file - logger.warn("There is houseID member in json meta file: " + jsonFile.getName()); - } - } else { - //there is no json file - logger.warn("There is no json meta for this file: " + file.getName()); - } - } - return ret; - } - }; - - //list files - DirectoryStream directoryStream = null; - try { - directoryStream = Files.newDirectoryStream(Paths.get(mediaFolder), filter); - for (Path validMediaFile : directoryStream) { - //filter does everything - logger.info("Media file listed: " + validMediaFile.toString()); - } - }catch(Exception e){ - logger.error("", e); - throw e; - } finally { - if(directoryStream != null){ - directoryStream.close(); + Files.newDirectoryStream(Paths.get(inputFolder)).forEach(p -> processPathItem(p, archiveList)); + } catch (Exception e) { + logger.error("", e); + } finally { + if (directoryStream != null) { + try { + directoryStream.close(); + } catch (IOException e) { } } + } + return new Object[] { archiveList }; + } - } catch (Exception e) { - logger.error("", e); + private void fillMetadata(ArchiveItem archiveItem, BasicDBObject dbObject, String fieldName) { + if (dbObject.containsKey(fieldName)) + archiveItem.setItemTitle(dbObject.getString(fieldName)); + } + + private void processPathItem(Path mediaFilePath, final List archiveList) { + File mediaFile = mediaFilePath.toFile(); + + if (mediaFile.isDirectory() || !mediaFile.getName().toLowerCase().endsWith(MEDIAEXT.toLowerCase())) { + return; + } + + Path dotStorePath = Paths.get(mediaFilePath.getParent().toString(), STOREFOLDER); + Path catchedFilePath = Paths.get(dotStorePath.toString(), mediaFile.getName(), CATCHEDEXT); + File catchedFile = catchedFilePath.toFile(); + if (catchedFile.exists()) { + logger.warn("{} file is already catched.", mediaFile.getName()); + return; + } + + Path jsonFilePath = Paths.get(dotStorePath.toString(), mediaFile.getName(), JSONEXT); + File jsonFile = jsonFilePath.toFile(); + if (!jsonFile.exists()) { + logger.warn("{} has no json metadata.", mediaFile.getName()); + return; + } + + ArchiveItem archiveItem = createArchiveItem(jsonFilePath, mediaFilePath, catchedFilePath); + + if (archiveItem == null) { + logger.warn("{} has no metadata specified.", mediaFile.getName()); + return; } - return new Object[] { wrapperList }; + if (StringUtils.isBlank(archiveItem.getItemHouseId())) { + logger.warn("{} has no Item HouseID specified in metadata.", mediaFile.getName()); + return; + } + + if (StringUtils.isBlank(archiveItem.getItemTitle())) { + logger.warn("{} has no Item Title specified in metadata.", mediaFile.getName()); + return; + } + + if (StringUtils.isBlank(archiveItem.getMediaHouseId())) { + logger.warn("{} has no Media HouseID specified in metadata.", mediaFile.getName()); + return; + } + + if (StringUtils.isBlank(archiveItem.getMediaTitle())) { + logger.warn("{} has no Media Title specified in metadata.", mediaFile.getName()); + return; + } + storeArchiveItem(archiveList, archiveItem, mediaFile, catchedFile); + createCatchedFile(catchedFilePath); } + private void storeArchiveItem(final List archiveList, ArchiveItem archiveItem, File mediaFile, File catchedFile) { + archiveList.add(archiveItem); + } } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ItemCreatorStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ItemCreatorStep.java deleted file mode 100644 index e6db120a..00000000 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/ItemCreatorStep.java +++ /dev/null @@ -1,59 +0,0 @@ -package user.jobengine.server.steps; - -import java.util.ArrayList; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import user.jobengine.db.IItemManager; -import user.jobengine.db.Item; -import user.jobengine.db.Media; -import user.jobengine.server.IJobEngine; -import user.jobengine.server.IJobRuntime; -import user.jobengine.server.JobEngineException; - -/** - * Itemek es mediak krealasa a MediaFileWrapper objektumok alapjan. - * @author robi - */ -public class ItemCreatorStep extends JobStep { - private static final Logger logger = LogManager.getLogger(); - private static final String ITEM_MANAGER_IS_NULL = "ItemManager is null"; - - @StepEntry - public Object[] execute(ArrayList wrapperList, IJobEngine jobEngine, IJobRuntime jobRuntime) { - - try { - for (MediaFileWrapper wr : wrapperList) { - try { - IItemManager itemManager = jobEngine.getItemManager(); - if (itemManager == null) - throw new JobEngineException(ITEM_MANAGER_IS_NULL); - Item item = itemManager.getItemByHouseID(wr.getJSONString(MediaFileWrapper.ITEM_HOUSEID)); - if (item == null) { - //add item - item = itemManager.createItem(MediaFileWrapper.ITEMTYPENAME, - wr.getJSONString(MediaFileWrapper.ITEM_TITLE), - wr.getJSONString(MediaFileWrapper.ITEM_DESCRIPTION), - wr.getJSONString(MediaFileWrapper.ITEM_HOUSEID)); - } - //add media - Media media = itemManager.createMedia(MediaFileWrapper.ITEMTYPENAME, - wr.getJSONString(MediaFileWrapper.MEDIA_TITLE), - wr.getJSONString(MediaFileWrapper.MEDIA_DESCRIPTION), - wr.getJSONString(MediaFileWrapper.MEDIA_HOUSE_ID)); - item.appendMedia(media); - wr.setItem(item); - wr.setMedia(media); - } catch (Exception e1) { - wr.getCatchedFile().delete(); - throw e1; - } - } - } catch (Exception e) { - logger.error("", e); - } - return new Object[] { wrapperList }; - } - -} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java new file mode 100644 index 00000000..77c30ea1 --- /dev/null +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java @@ -0,0 +1,48 @@ +package user.jobengine.server.steps; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import user.jobengine.db.IItemManager; +import user.jobengine.db.Item; +import user.jobengine.db.Media; +import user.jobengine.server.IJobEngine; +import user.jobengine.server.IJobRuntime; + +/** + * Itemek es mediak krealasa a ArchiveItem objektum alapjan. + * + * @author robi + */ +public class MetadataTransformStep extends JobStep { + private static final Logger logger = LogManager.getLogger(); + private static final String ITEM_MANAGER_IS_NULL = "ItemManager is null"; + public static final String ITEMTYPENAME = "Generic"; + + @StepEntry + public Object[] execute(ArchiveItem archiveItem, IJobEngine jobEngine, IJobRuntime jobRuntime) { + Media mediaCubeMedia = null; + try { + IItemManager itemManager = jobEngine.getItemManager(); + if (itemManager == null) + throw new NullPointerException(ITEM_MANAGER_IS_NULL); + Item mediaCubeItem = itemManager.getItemByHouseID(archiveItem.getItemHouseId()); + jobRuntime.incrementProgress(50); + if (mediaCubeItem == null) + mediaCubeItem = itemManager.createItem(ITEMTYPENAME, archiveItem.getItemTitle(), archiveItem.getItemDescription(), + archiveItem.getItemHouseId()); + mediaCubeMedia = itemManager.createMedia(ITEMTYPENAME, archiveItem.getMediaTitle(), archiveItem.getMediaDescription(), + archiveItem.getMediaHouseId()); + mediaCubeItem.appendMedia(mediaCubeMedia); + + itemManager.mergeItemStructure(mediaCubeItem); + } catch (Exception e) { + logger.catching(e); + throw e; + } finally { + jobRuntime.incrementProgress(100); + } + return new Object[] { mediaCubeMedia }; + } + +} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/SelenioLowresTranscodeStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/SelenioLowresTranscodeStep.java index 4b3d4d1e..49b3eb8e 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/SelenioLowresTranscodeStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/SelenioLowresTranscodeStep.java @@ -1,15 +1,22 @@ package user.jobengine.server.steps; +import java.io.File; import java.net.URL; +import java.util.Arrays; +import java.util.List; import javax.xml.namespace.QName; +import org.apache.commons.lang.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import user.commons.StoreUri; +import user.commons.remotestore.RemoteStoreProtocol; import user.commons.selenio.wsclient.AudioSource; import user.commons.selenio.wsclient.Clip; import user.commons.selenio.wsclient.ClipList; +import user.commons.selenio.wsclient.Exception_Exception; import user.commons.selenio.wsclient.FileSnapshot; import user.commons.selenio.wsclient.MediaFile; import user.commons.selenio.wsclient.State; @@ -19,175 +26,149 @@ import user.commons.selenio.wsclient.TranscodeMgrWSService; import user.commons.selenio.wsclient.TranscodeRequest; import user.commons.selenio.wsclient.TranscodeSource; import user.commons.selenio.wsclient.TranscodeTask; +import user.commons.selenio.wsclient.TranscodeTask.OutputFiles; import user.commons.selenio.wsclient.VideoSource; +import user.jobengine.db.FileType; +import user.jobengine.db.IItemManager; +import user.jobengine.db.Media; +import user.jobengine.db.Store; import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; public class SelenioLowresTranscodeStep extends JobStep { + private static final String LOWRES_FILETYPE = "Low-res"; private static final Logger logger = LogManager.getLogger(); - - private TranscodeMgrWS port = null; + private final List showStoppers = Arrays.asList(State.CANCELLED, State.COMPLETE, State.FAILED); + private TranscodeMgrWS transcoder = null; private String address = null; //"http://10.10.1.71:44000/TranscodeMgrWS?wsdl"; private String projectFilePath = null; //"\\\\10.10.1.71\\Data\\Blueprints\\MP4_H264_AAC_v4.zenium"; - //private String sourceFilePath = "\\\\10.10.1.71\\Data\\Input\\test1.mxf"; + private IItemManager manager; + private Store store; + private FileType fileType; + private String outputPath; public SelenioLowresTranscodeStep() { try { address = System.getProperty("jobengine.selenio.address"); + if (StringUtils.isBlank(address)) + throw new NullPointerException("System is not configured properly, 'jobengine.selenio.address' startup parameter missing."); + projectFilePath = System.getProperty("jobengine.selenio.projectfilepath"); + if (StringUtils.isBlank(projectFilePath)) + throw new NullPointerException("System is not configured properly, 'jobengine.selenio.projectfilepath' startup parameter missing."); TranscodeMgrWSService service = new TranscodeMgrWSService(new URL(address), new QName("http://ws.server.mediamanager.digitalrapids.ca/", "TranscodeMgrWSService")); - port = service.getTranscodeMgrWSPort(); + transcoder = service.getTranscodeMgrWSPort(); } catch (Exception e) { - e.printStackTrace(); + logger.catching(e); } } - @StepEntry - public Object[] execute(MediaFileWrapper wrapper, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { - //UNC FILEPATH KELL!!!! - TranscodeRequest transcodeRequest = buildTranscodeRequest(projectFilePath, - //wrapper.getMediaFile().getAbsolutePath() - "\\\\10.10.1.71\\Data\\Input\\test1.mxf"); - TranscodeTask tt = port.submitTranscodeTask(transcodeRequest); - if (tt != null) { - - TranscodeTask ttq = port.getTranscodeTask(tt.getId()); - - //logger.info("Selenio progress is {}", ttq.getProgress()); - - // QUEUED, IN_PROGRESS, COMPLETE, FAILED, CANCELLED, POST_PROCESS, PRE_PROCESS, RESERVED; - while (ttq == null || State.QUEUED.equals(ttq.getState()) || State.IN_PROGRESS.equals(ttq.getState()) - || State.POST_PROCESS.equals(ttq.getState()) || State.PRE_PROCESS.equals(ttq.getState())) { - if (ttq == null) { - logger.error( - "Error in SelenioLowresTranscoderStep: The selenio returns with null for querying task: {}", - tt.getId()); - break; - } - - Double progress = ttq.getProgress(); - if (progress != null) { - logger.info("Selenio progress is {}", progress); - jobRuntime.incrementProgress((int) Math.round(ttq.getProgress() * 100)); - } - Thread.sleep(2000); - ttq = port.getTranscodeTask(tt.getId()); - - } - - if (State.COMPLETE.equals(ttq.getState())) { - - jobRuntime.incrementProgress(100); - - // IItemManager manager = jobEngine.getItemManager(); - // Store lowresSystemStore = manager.getStore("Lowres"); - // FileType ft = manager.getFileType("Lowres video"); - // - // OutputFiles of = ttq.getOutputFiles(); - // List mfList = of.getOutputFiles(); - // if (mfList.size() != 1) { - // throw new Exception( - // "Error in SelenioLowresTranscoderStep! There are more than 1 file in the response: " - // + tt.getId()); - // } - // user.commons.selenio.wsclient.MediaFile selenioMediaFile = mfList.get(0); - // File outFile = new File(selenioMediaFile.getFile()); - // user.jobengine.db.MediaFile mediaFile = manager.createMediaFile(outFile.getName(), ft, - // lowresSystemStore, wrapper.getMedia()); - // mediaFile.add(); - logger.info("SelenioLowresTranscoderStep: The transcoding has been completed for tash: " + tt.getId()); - - } else if (State.FAILED.equals(ttq.getState())) { - logger.error("Error in SelenioLowresTranscoderStep: The selenio failed for task: {} , {}, {}", - tt.getId(), tt.getEncodeDescription(), tt.getStatusDetail()); - } else if (State.CANCELLED.equals(ttq.getState())) { - logger.info("SelenioLowresTranscoderStep: The step has been cancelled for task: {}", tt.getId()); - } - - } else { - logger.error("Error in SelenioLowresTranscoderStep: The selenio returns with null for transcoding request: " - + wrapper.getMediaFile().getAbsolutePath()); - } + private TranscodeRequest buildTranscodeRequest(String projectFilePath, String sourceFilePath) throws java.lang.Exception { + Clip clip = new Clip(); + MediaFile mediaFile = new MediaFile(); + mediaFile.setFile(sourceFilePath); + AudioSource audioSource = new AudioSource(); + audioSource.setMediaFile(mediaFile); + clip.getAudioSource().add(audioSource); - return new Object[] {}; - } + VideoSource videoSource = new VideoSource(); + videoSource.setMediaFile(mediaFile); + clip.setVideoSource(videoSource); - /** - * Build a TranscodeRequest. Use the values provided by the user. - */ - private TranscodeRequest buildTranscodeRequest(String projectFilePath, String sourceFilePath) - throws java.lang.Exception { + ClipList clipList = new ClipList(); + clipList.getClip().add(clip); - // Use the TranscodeRequest Transcode Manager class to create a new, empty request. - TranscodeRequest transcodeRequest = new TranscodeRequest(); + TranscodeSource transcodeSource = new TranscodeSource(); + transcodeSource.setClipList(clipList); - // Get the Stream project or Kayak Transcode Blueprint specified - // by the user. Store the file in a Transcode Manager FileSnapshot object. - // The FileSnapshot can store the path to a file as well as the file's contents. + TranscodeRequest transcodeRequest = new TranscodeRequest(); FileSnapshot project = new FileSnapshot(); project.setFullPath(projectFilePath); - - // Add the project or blueprint to the transcode request. This file will - // be used to process the media file input source. transcodeRequest.setProject(project); + transcodeRequest.setTranscodeSource(transcodeSource); - // Create a clip list with the input source files provided by the end user. - // The TranscodeManager ClipList is encapsulated within a TranscodeSource object - // that is added to the TranscodeRequest. + TranscodeDestination transcodeDestination = new TranscodeDestination(); - // Create an empty TranscodeSource object. - TranscodeSource transcodeSource = new TranscodeSource(); + transcodeDestination.setOutputWriteDirectory(outputPath); + transcodeRequest.setTranscodeDestination(transcodeDestination); + return transcodeRequest; + } - // Store the input file provided by the end user in a TranscodeManager - // MediaFile object. - MediaFile mediaFile = new MediaFile(); - mediaFile.setFile(sourceFilePath); + @StepEntry + public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + manager = jobEngine.getItemManager(); + store = manager.getSystemStore(true); + if (store == null) + throw new NullPointerException("System is not configured properly, low-res system store definition missing."); - /* - * Though this client only accepts one input file, only clip lists are - * processed by blueprints and projects. The file must - * be encapsulated within a ClipList before it is added to the - * TranscodeRequest. - */ + StoreUri sourceStoreUri = store.getSourceStoreUri(RemoteStoreProtocol.SMB); + if (sourceStoreUri == null) + throw new NullPointerException("System is not configured properly, low-res system store SMB store URI definition missing."); + outputPath = sourceStoreUri.getRootPath(); - // Create an empty Transcode Manager ClipList object. - ClipList clipList = new ClipList(); + fileType = manager.getFileType(LOWRES_FILETYPE); + if (fileType == null) + throw new NullPointerException("System is not configured properly, low-res file type definition missing."); - // Create Clip object for each input source file. - Clip clip = new Clip(); + String sourceFile = archiveItem.getMediaFile().toString(); + TranscodeRequest transcodeRequest = buildTranscodeRequest(projectFilePath, sourceFile); + TranscodeTask transcodeTask = transcoder.submitTranscodeTask(transcodeRequest); - // A Clip always consists of one video file and at least one - // audio file. Store the source files in AudioSource and VideoSource - // Transcode Manager API objects. - AudioSource audioSource = new AudioSource(); - VideoSource videoSource = new VideoSource(); + if (transcodeTask == null) + throw new NullPointerException("Unable to submit transcode task, server response is empty for transcode input: " + sourceFile); - // In this case the client only accepts one file -- a video file. - // Video files can be used as the audio source of a clip as long - // as the file contains both elementary video and audio streams. - // - // Add the file to the AudioSource and VideoSource objects. - audioSource.setMediaFile(mediaFile); - videoSource.setMediaFile(mediaFile); + transcodeTask = monitor(jobRuntime, sourceFile, transcodeTask); - // Add the AudioSource and VideoSource objects to the Clip. - // Add the Clip to the ClipList - clip.getAudioSource().add(audioSource); - clip.setVideoSource(videoSource); - clipList.getClip().add(clip); + jobRuntime.incrementProgress(100); - // Add the ClipList to the TranscodeSource - transcodeSource.setClipList(clipList); + //jobRuntime.setDescription(String.valueOf(jobRuntime.getDescription()) + transcodeTask.getStatusDetail()); + processState(transcodeTask, jobEngine, mediaCubeMedia); + return null; + } - // Add the TranscodeSource to the Transcoderequest - transcodeRequest.setTranscodeSource(transcodeSource); + private TranscodeTask monitor(IJobRuntime jobRuntime, String sourceFile, TranscodeTask transcodeTask) throws Exception_Exception, InterruptedException { + while (true) { + transcodeTask = transcoder.getTranscodeTask(transcodeTask.getId()); + if (transcodeTask == null) + throw new NullPointerException("Unable to query transcode task, server response is empty for transcode input: " + sourceFile); - TranscodeDestination transcodeDestination = new TranscodeDestination(); - transcodeDestination.setOutputWriteDirectory("\\\\10.10.1.26\\mclowres\\www\\video"); - transcodeRequest.setTranscodeDestination(transcodeDestination); - return transcodeRequest; + Double progress = transcodeTask.getProgress(); + if (progress != null) + jobRuntime.incrementProgress((int) Math.round(progress * 100)); + + if (showStoppers.contains(transcodeTask.getState())) + break; + + Thread.sleep(2000); + } + return transcodeTask; + } + + private void onTranscodeComplete(TranscodeTask transcodeTask, IJobEngine jobEngine, Media mediaCubeMedia) { + OutputFiles of = transcodeTask.getOutputFiles(); + List outputs = of.getOutputFiles(); + if (outputs.size() != 1) + throw new IndexOutOfBoundsException("There are more than 1 file in the response: " + transcodeTask.getId()); + + user.commons.selenio.wsclient.MediaFile selenioMediaFile = outputs.get(0); + File outFile = new File(selenioMediaFile.getFile()); + user.jobengine.db.MediaFile mediaFile = manager.createMediaFile(outFile.getName(), fileType, store, mediaCubeMedia); + mediaFile.add(); + } + + @SuppressWarnings("incomplete-switch") + private void processState(TranscodeTask transcodeTask, IJobEngine jobEngine, Media mediaCubeMedia) throws Exception { + switch (transcodeTask.getState()) { + case CANCELLED: + throw new IllegalStateException("Transcode task was CANCELLED."); + case FAILED: + throw new IllegalStateException("Transcode task has FAILED."); + case COMPLETE: + onTranscodeComplete(transcodeTask, jobEngine, mediaCubeMedia); + break; + } } } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupMediaWrapperStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupMediaWrapperStep.java deleted file mode 100644 index e50bbeaa..00000000 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupMediaWrapperStep.java +++ /dev/null @@ -1,97 +0,0 @@ -package user.jobengine.server.steps; - -import java.io.File; -import java.io.IOException; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import user.commons.RemoteFile; -import user.commons.StoreUri; -import user.commons.remotestore.IProgressEventListener; -import user.commons.remotestore.IStatusEventListener; -import user.commons.remotestore.ProgressEvent; -import user.commons.remotestore.RemoteStoreProtocol; -import user.commons.remotestore.StatusEvent; -import user.jobengine.db.FileType; -import user.jobengine.db.IItemManager; -import user.jobengine.db.Media; -import user.jobengine.db.MediaFile; -import user.jobengine.db.Store; -import user.jobengine.server.IJobEngine; -import user.jobengine.server.IJobRuntime; -import user.jobengine.server.JobEngineException; - -public class TSMBackupMediaWrapperStep extends JobStep { - private static final Logger logger = LogManager.getLogger(); - private Media media; - private IItemManager manager; - private File file; - private String sourceFile; - private String sourceFileName; - private Store targetStore; - private StoreUri targetStoreUri; - private FileType fileType; - - private void setAndCheck(MediaFileWrapper wrapper, IJobEngine jobEngine) throws JobEngineException, IOException { - media = wrapper.getMedia(); - if (media == null) - throw new JobEngineException("Missing Media in MediaFileWrapper parameter."); - manager = jobEngine.getItemManager(); - if (manager == null) - throw new JobEngineException("Missing ItemManager."); - file = wrapper.getMediaFile(); - if (file == null) - throw new JobEngineException("Missing File in MediaFileWrapper parameter."); - sourceFile = file.getCanonicalPath(); - if (!file.exists()) - throw new JobEngineException("File not exists: " + sourceFile); - sourceFileName = file.getName(); - targetStore = manager.getSystemStore(false); - if (targetStore == null) - throw new JobEngineException("Missing High-res system store."); - targetStoreUri = targetStore.getSourceStoreUri(RemoteStoreProtocol.TSM); - if (targetStoreUri == null) - throw new JobEngineException("Missing TSM store uri from High-res system store."); - fileType = manager.getFileType("High-res"); - if (fileType == null) - throw new JobEngineException("Missing High-res file type."); - } - - @StepEntry - public Object[] execute(MediaFileWrapper wrapper, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { - try { - setAndCheck(wrapper, jobEngine); - - StoreUri sourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, file.getParent()); - - final IJobRuntime runtime = jobRuntime; - sourceUri.addProgressListener(new IProgressEventListener() { - @Override - public void progressChanged(ProgressEvent evt) { - runtime.incrementProgress(evt.getProgress()); - } - }); - sourceUri.addStatusListener(new IStatusEventListener() { - @Override - public void statusChanged(StatusEvent evt) { - evt.setCancel(!canContinue()); - } - }); - RemoteFile remoteFile = sourceUri.transferFrom(targetStoreUri, sourceFileName, sourceFileName); - - MediaFile mediaFile = manager.createMediaFile(sourceFileName, fileType, targetStore, media); - media.appendMediaFile(mediaFile); - - manager.mergeItemStructure(wrapper.getItem()); - } catch (Exception e) { - wrapper.getCatchedFile().delete(); - throw e; - } - return new Object[] { wrapper.getItem().getMedias().get(0) }; - } - - @Override - public void cleanup() { - } -} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep.java index 6864f48f..e5220b29 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep.java @@ -1,5 +1,8 @@ package user.jobengine.server.steps; +import java.io.IOException; +import java.nio.file.Path; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -10,149 +13,78 @@ import user.commons.remotestore.IStatusEventListener; import user.commons.remotestore.ProgressEvent; import user.commons.remotestore.RemoteStoreProtocol; import user.commons.remotestore.StatusEvent; +import user.jobengine.db.FileType; import user.jobengine.db.IItemManager; import user.jobengine.db.Media; import user.jobengine.db.MediaFile; import user.jobengine.db.Store; import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; +import user.jobengine.server.JobEngineException; public class TSMBackupStep extends JobStep { - // @StepEntry - // public Object[] execute(Media media, IJobEngine jobEngine, - // IJobRuntime jobRuntime) throws Exception { - // TSMClient tsm = null; - // tsm = new TSMClient("JobEngine"); - // tsm.connect(null, null); - // log_info("Connected to TSM"); - // try { - // log_info("Trying register filespace"); - // tsm.registerFilespace(File.separator + "JOBENGINE", "JOBENGINE", - // 'C', "JOBENGINE", 10L * 1024L * 1024L * 1024L, 0); - // } catch (Exception e) { - // log_info(e.getMessage()); - // } - // - // IItemManager manager = jobEngine.getItemManager(); - // final IJobRuntime runtime = jobRuntime; - // - // Store systemStore = manager.getSystemStore(false); - // Store mfStore = null; - // MediaFile mediaFile = null; - // for (MediaFile mf : media.getMediaFiles()) { - // mediaFile = mf; - // mfStore = mf.getStore(); - // if (mfStore.getId() == systemStore.getId()) - // break; - // } - // - // if (mediaFile == null) - // throw new Exception("Can not find HIRES media file"); - // if (mfStore == null) - // throw new Exception("Can not find HIRES store"); - // - // String path = mediaFile.getRelativePath(); - // int pos = path.lastIndexOf("/"); - // String fileName = pos > -1 ? path.substring(pos, path.length() - pos) - // : path; - // - // try { - // TSMBackupFileObject backupObject = new TSMBackupFileObject( - // File.separator + "JOBENGINE", File.separator + "JOBENGINE", - // File.separator + fileName); - // StoreUri uri = mfStore.getSourceStoreUri(RemoteStoreProtocol.LOCAL); - // // TODO RemoteFile konverzi�, MediaFile-ba be�p�teni - // - // String sourceFilePath = DirectoryUtils.combine(uri.getFullPath(), - // fileName); - // final File file = new File(sourceFilePath); - // if (!file.exists()) - // throw new Exception("File not exists: " + sourceFilePath); - // final long fileSize = file.length(); - // log_info("Saving: " + sourceFilePath + ", size:" + fileSize); - // backupObject.setLocalFilePath(sourceFilePath); - // backupObject.setListener(new TSMObjectListener() { - // private long transferredBytes; - // private int lastProgress; - // - // public void bytesWorked(long bytes) { - // transferredBytes += bytes; - // int progress = fileSize == 0 ? 100 - // : (int) (transferredBytes * 100 / fileSize); - // if (progress > lastProgress + 4) { - // log_info("incrementProgress: " + progress); - // runtime.incrementProgress(progress); - // lastProgress = progress; - // } - // } - // }); - // runtime.incrementProgress(100); - // tsm.send(backupObject); - // } catch (Exception e) { - // throw new Exception(e); - // } finally { - // tsm.disconnect(); - // log_info("Disconnected"); - // } - // return null; - // } - private static final Logger logger = LogManager.getLogger(); + private IItemManager manager; + private Path inputFilePath; + private Store targetStore; + private StoreUri targetStoreUri; + private FileType fileType; @StepEntry - public Object[] execute(Media media, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + try { + setAndCheck(jobEngine, archiveItem, mediaCubeMedia); - RemoteFile result = null; - final IJobRuntime runtime = jobRuntime; - IItemManager manager = jobEngine.getItemManager(); - Store systemStore = manager.getSystemStore(false); - Store mfStore = null; - MediaFile mediaFile = null; - for (MediaFile mf : media.getMediaFiles()) { - mediaFile = mf; - mfStore = mf.getStore(); - if (mfStore.getId() == systemStore.getId()) - break; - } + StoreUri sourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, inputFilePath.getParent().toString()); - if (mediaFile == null) - throw new Exception("Can not find HIRES media file"); - if (mfStore == null) - throw new Exception("Can not find HIRES store"); + final IJobRuntime runtime = jobRuntime; + sourceUri.addProgressListener(new IProgressEventListener() { + @Override + public void progressChanged(ProgressEvent evt) { + runtime.incrementProgress(evt.getProgress()); + } + }); + sourceUri.addStatusListener(new IStatusEventListener() { + @Override + public void statusChanged(StatusEvent evt) { + evt.setCancel(!canContinue()); + } + }); + String sourceFileName = inputFilePath.toFile().getName(); + RemoteFile remoteFile = sourceUri.transferFrom(targetStoreUri, sourceFileName, sourceFileName); - String path = mediaFile.getRelativePath(); - logger.info("Relative path is: " + path); - if (path == null) - throw new Exception("Path is null!"); - int pos = path.lastIndexOf("/"); - // String sourceFileName = pos > -1 ? path.substring(pos, path.length() - // - pos) : path; - String sourceFileName = pos > -1 ? path.substring(pos + 1, path.length()) : path; - logger.info("SourceFileName is: " + sourceFileName); - if (sourceFileName == null) - throw new NullPointerException("Source FileName is null"); + MediaFile mediaFile = manager.createMediaFile(sourceFileName, fileType, targetStore, mediaCubeMedia); + mediaCubeMedia.appendMediaFile(mediaFile); - StoreUri sourceUri = mfStore.getSourceStoreUri(RemoteStoreProtocol.LOCAL); - StoreUri target = new StoreUri(); - target.setProtocol(RemoteStoreProtocol.TSM); - logger.info("Target is: " + target.getProtocol()); - sourceUri.addProgressListener(new IProgressEventListener() { - @Override - public void progressChanged(ProgressEvent evt) { - runtime.incrementProgress(evt.getProgress()); - } - }); - sourceUri.addStatusListener(new IStatusEventListener() { - @Override - public void statusChanged(StatusEvent evt) { - evt.setCancel(!canContinue()); - } - }); - result = sourceUri.transferFrom(target, sourceFileName, sourceFileName); - return new Object[] { result }; + } catch (Exception e) { + logger.catching(e); + if (!archiveItem.removeCatchedFile()) + logger.error("Can not delete .catched file for {}", inputFilePath.toString()); + throw e; + } + return null; } - @Override - public void cleanup() { + private void setAndCheck(IJobEngine jobEngine, ArchiveItem archiveItem, Media mediaCubeMedia) throws JobEngineException, IOException { + manager = jobEngine.getItemManager(); + if (manager == null) + throw new NullPointerException("Missing ItemManager."); + inputFilePath = archiveItem.getMediaFile(); + if (inputFilePath == null) + throw new NullPointerException("Missing File in MediaFileWrapper parameter."); + if (!inputFilePath.toFile().exists()) + throw new IOException("File not exists: " + inputFilePath.toString()); + targetStore = manager.getSystemStore(false); + if (targetStore == null) + throw new NullPointerException("Missing High-res system store."); + targetStoreUri = targetStore.getSourceStoreUri(RemoteStoreProtocol.TSM); + if (targetStoreUri == null) + throw new NullPointerException("Missing TSM store uri from High-res system store."); + fileType = manager.getFileType("High-res"); + if (fileType == null) + throw new NullPointerException("Missing High-res file type."); + if (mediaCubeMedia == null) + throw new NullPointerException("Input parameter 'mediaCubeMedia' is null."); + } } diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep_orig.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep_orig.java new file mode 100644 index 00000000..8a301201 --- /dev/null +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep_orig.java @@ -0,0 +1,158 @@ +package user.jobengine.server.steps; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import user.commons.RemoteFile; +import user.commons.StoreUri; +import user.commons.remotestore.IProgressEventListener; +import user.commons.remotestore.IStatusEventListener; +import user.commons.remotestore.ProgressEvent; +import user.commons.remotestore.RemoteStoreProtocol; +import user.commons.remotestore.StatusEvent; +import user.jobengine.db.IItemManager; +import user.jobengine.db.Media; +import user.jobengine.db.MediaFile; +import user.jobengine.db.Store; +import user.jobengine.server.IJobEngine; +import user.jobengine.server.IJobRuntime; + +public class TSMBackupStep_orig extends JobStep { + // @StepEntry + // public Object[] execute(Media media, IJobEngine jobEngine, + // IJobRuntime jobRuntime) throws Exception { + // TSMClient tsm = null; + // tsm = new TSMClient("JobEngine"); + // tsm.connect(null, null); + // log_info("Connected to TSM"); + // try { + // log_info("Trying register filespace"); + // tsm.registerFilespace(File.separator + "JOBENGINE", "JOBENGINE", + // 'C', "JOBENGINE", 10L * 1024L * 1024L * 1024L, 0); + // } catch (Exception e) { + // log_info(e.getMessage()); + // } + // + // IItemManager manager = jobEngine.getItemManager(); + // final IJobRuntime runtime = jobRuntime; + // + // Store systemStore = manager.getSystemStore(false); + // Store mfStore = null; + // MediaFile mediaFile = null; + // for (MediaFile mf : media.getMediaFiles()) { + // mediaFile = mf; + // mfStore = mf.getStore(); + // if (mfStore.getId() == systemStore.getId()) + // break; + // } + // + // if (mediaFile == null) + // throw new Exception("Can not find HIRES media file"); + // if (mfStore == null) + // throw new Exception("Can not find HIRES store"); + // + // String path = mediaFile.getRelativePath(); + // int pos = path.lastIndexOf("/"); + // String fileName = pos > -1 ? path.substring(pos, path.length() - pos) + // : path; + // + // try { + // TSMBackupFileObject backupObject = new TSMBackupFileObject( + // File.separator + "JOBENGINE", File.separator + "JOBENGINE", + // File.separator + fileName); + // StoreUri uri = mfStore.getSourceStoreUri(RemoteStoreProtocol.LOCAL); + // // TODO RemoteFile konverzi�, MediaFile-ba be�p�teni + // + // String sourceFilePath = DirectoryUtils.combine(uri.getFullPath(), + // fileName); + // final File file = new File(sourceFilePath); + // if (!file.exists()) + // throw new Exception("File not exists: " + sourceFilePath); + // final long fileSize = file.length(); + // log_info("Saving: " + sourceFilePath + ", size:" + fileSize); + // backupObject.setLocalFilePath(sourceFilePath); + // backupObject.setListener(new TSMObjectListener() { + // private long transferredBytes; + // private int lastProgress; + // + // public void bytesWorked(long bytes) { + // transferredBytes += bytes; + // int progress = fileSize == 0 ? 100 + // : (int) (transferredBytes * 100 / fileSize); + // if (progress > lastProgress + 4) { + // log_info("incrementProgress: " + progress); + // runtime.incrementProgress(progress); + // lastProgress = progress; + // } + // } + // }); + // runtime.incrementProgress(100); + // tsm.send(backupObject); + // } catch (Exception e) { + // throw new Exception(e); + // } finally { + // tsm.disconnect(); + // log_info("Disconnected"); + // } + // return null; + // } + + private static final Logger logger = LogManager.getLogger(); + + @StepEntry + public Object[] execute(Media media, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + + RemoteFile result = null; + final IJobRuntime runtime = jobRuntime; + IItemManager manager = jobEngine.getItemManager(); + Store systemStore = manager.getSystemStore(false); + Store mfStore = null; + MediaFile mediaFile = null; + for (MediaFile mf : media.getMediaFiles()) { + mediaFile = mf; + mfStore = mf.getStore(); + if (mfStore.getId() == systemStore.getId()) + break; + } + + if (mediaFile == null) + throw new Exception("Can not find HIRES media file"); + if (mfStore == null) + throw new Exception("Can not find HIRES store"); + + String path = mediaFile.getRelativePath(); + logger.info("Relative path is: " + path); + if (path == null) + throw new Exception("Path is null!"); + int pos = path.lastIndexOf("/"); + // String sourceFileName = pos > -1 ? path.substring(pos, path.length() + // - pos) : path; + String sourceFileName = pos > -1 ? path.substring(pos + 1, path.length()) : path; + logger.info("SourceFileName is: " + sourceFileName); + if (sourceFileName == null) + throw new NullPointerException("Source FileName is null"); + + StoreUri sourceUri = mfStore.getSourceStoreUri(RemoteStoreProtocol.LOCAL); + StoreUri target = new StoreUri(); + target.setProtocol(RemoteStoreProtocol.TSM); + logger.info("Target is: " + target.getProtocol()); + sourceUri.addProgressListener(new IProgressEventListener() { + @Override + public void progressChanged(ProgressEvent evt) { + runtime.incrementProgress(evt.getProgress()); + } + }); + sourceUri.addStatusListener(new IStatusEventListener() { + @Override + public void statusChanged(StatusEvent evt) { + evt.setCancel(!canContinue()); + } + }); + result = sourceUri.transferFrom(target, sourceFileName, sourceFileName); + return new Object[] { result }; + } + + @Override + public void cleanup() { + } +} diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java index 49c32fb1..b144e136 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java @@ -46,23 +46,25 @@ public class ItemManager extends MemoryCache implements IItemManager { public static String DBUSERNAME = "jobengine.db.user"; public static String DBPASSWORD = "jobengine.db.password"; + static ItemManager currentInstance = null; + + static public ItemManager getInstance() { + return currentInstance; + } + private Map, IEntityBaseDAO> baseDAOs = new Hashtable, IEntityBaseDAO>(); private IChangeHandler itemTypeChangeFactory; private int connectionPoolSize = 5; + private ContextPool contextPool = null; String dbDriver = "com.ibm.db2.jcc.DB2Driver"; - String dbUrl = null; + String dbUser = null; String dbPassword = null; - static ItemManager currentInstance = null; private SignalServer signalServer; - static public ItemManager getInstance() { - return currentInstance; - } - public ItemManager() { initializeItemManager(signalServer); connect(); @@ -73,20 +75,16 @@ public class ItemManager extends MemoryCache implements IItemManager { // initializeItemManager(signalServer); // } - private void initializeItemManager(SignalServer signalServer) { - this.signalServer = signalServer; - initialize(); - dbUrl = System.getProperty(DBURL); - dbUser = System.getProperty(DBUSERNAME); - dbPassword = System.getProperty(DBPASSWORD); - } - public void activate() { //logger.info("ItemManager activated."); } - public void deactivate() { - //logger.info("ItemManager deactivated."); + @Override + public void add(IEntityBase entity) { + traceIn(); + IEntityBaseDAO dbmanager = getBaseDAO(entity.getClass()); + dbmanager.add(entity); + traceOut(); } public synchronized void bindSignalServerService(SignalServer service) { @@ -98,28 +96,10 @@ public class ItemManager extends MemoryCache implements IItemManager { } } - public synchronized void unbindSignalServerService(SignalServer service) { - try { - disconnect(); - logger.info("ItemManager service stopped."); - } catch (Exception exc) { - logger.error(exc); - } - } - - @Override - public void add(IEntityBase entity) { - traceIn(); - IEntityBaseDAO dbmanager = getBaseDAO(entity.getClass()); - dbmanager.add(entity); - traceOut(); - } - @Override public void connect() { traceIn(); - ConnectionPoolProperties properties = new ConnectionPoolProperties(dbDriver, dbUrl, dbUser, dbPassword, false, - 1000); + ConnectionPoolProperties properties = new ConnectionPoolProperties(dbDriver, dbUrl, dbUser, dbPassword, false, 1000); properties.add(ResourcePool.POOLSIZE, connectionPoolSize); contextPool = new ContextPool(properties); @@ -137,8 +117,7 @@ public class ItemManager extends MemoryCache implements IItemManager { } @Override - public FileType createFileType(String name, String description, String videoCodec, String audioCodec, - int videoTracks, int audioTracks, float frameRate) { + public FileType createFileType(String name, String description, String videoCodec, String audioCodec, int videoTracks, int audioTracks, float frameRate) { traceIn(); FileType entity = new FileType(); entity.setPersister(this); @@ -154,25 +133,8 @@ public class ItemManager extends MemoryCache implements IItemManager { } @Override - public WorkflowAction createWorkflowAction(Timestamp touched, Timestamp started, Timestamp finished, - boolean successful, String houseId, String description, String source, String destination, String tag, - long size) { - traceIn(); - - WorkflowAction entity = new WorkflowAction(); - entity.setPersister(this); - entity.setTouched(touched); - entity.setStarted(started); - entity.setFinished(finished); - entity.setSuccessful(successful); - entity.setHouseId(houseId); - entity.setDescription(description); - entity.setSource(source); - entity.setDestination(destination); - entity.setTag(tag); - entity.setSize(size); - traceOut(); - return entity; + public Item createItem(String name, String description, String houseId) { + return createItem(null, name, description, houseId); } @Override @@ -189,11 +151,6 @@ public class ItemManager extends MemoryCache implements IItemManager { return entity; } - @Override - public Item createItem(String name, String description, String houseId) { - return createItem(null, name, description, houseId); - } - @Override public ItemType createItemType(String name, String description) { traceIn(); @@ -235,11 +192,6 @@ public class ItemManager extends MemoryCache implements IItemManager { return entity; } - @Override - public Metadata createMetadata(MetadataElement mde, MdType... flags) { - return createMetadata(mde, ListType.LABEL, GuiType.TEXTBOX, null, null, null, flags); - } - @Override public Metadata createMetadata(MetadataElement mde, GuiType guiType, MdType... flags) { return createMetadata(mde, ListType.LABEL, guiType, null, null, null, flags); @@ -251,8 +203,8 @@ public class ItemManager extends MemoryCache implements IItemManager { } @Override - public Metadata createMetadata(MetadataElement mde, ListType listType, GuiType guiType, String sqlField, - StaticTables staticTable, String pojoField, MdType... flags) { + public Metadata createMetadata(MetadataElement mde, ListType listType, GuiType guiType, String sqlField, StaticTables staticTable, String pojoField, + MdType... flags) { traceIn(); Metadata entity = new Metadata(); int values = MdType.getValues(flags); @@ -274,6 +226,11 @@ public class ItemManager extends MemoryCache implements IItemManager { return entity; } + @Override + public Metadata createMetadata(MetadataElement mde, MdType... flags) { + return createMetadata(mde, ListType.LABEL, GuiType.TEXTBOX, null, null, null, flags); + } + @Override public MetadataElement createMetadataElement(String name, String description, MetadataType mdt) { return createMetadataElement(name, description, mdt, false); @@ -302,8 +259,7 @@ public class ItemManager extends MemoryCache implements IItemManager { } @Override - public MetadataType createMetadataType(String name, BaseType baseType, String javaType, String dataType, - int length) { + public MetadataType createMetadataType(String name, BaseType baseType, String javaType, String dataType, int length) { traceIn(); MetadataType entity = new MetadataType(); entity.setPersister(this); @@ -369,8 +325,8 @@ public class ItemManager extends MemoryCache implements IItemManager { } @Override - public StoreUri createStoreUri(RemoteStoreProtocol protocol, String uri, int portNumber, boolean isStream, - boolean isSource, boolean isTarget, String userName, String password, String rootPath) { + public StoreUri createStoreUri(RemoteStoreProtocol protocol, String uri, int portNumber, boolean isStream, boolean isSource, boolean isTarget, + String userName, String password, String rootPath) { traceIn(); StoreUri entity = new StoreUri(); entity.setPersister(this); @@ -400,6 +356,31 @@ public class ItemManager extends MemoryCache implements IItemManager { return entity; } + @Override + public WorkflowAction createWorkflowAction(Timestamp touched, Timestamp started, Timestamp finished, boolean successful, String houseId, String description, + String source, String destination, String tag, long size) { + traceIn(); + + WorkflowAction entity = new WorkflowAction(); + entity.setPersister(this); + entity.setTouched(touched); + entity.setStarted(started); + entity.setFinished(finished); + entity.setSuccessful(successful); + entity.setHouseId(houseId); + entity.setDescription(description); + entity.setSource(source); + entity.setDestination(destination); + entity.setTag(tag); + entity.setSize(size); + traceOut(); + return entity; + } + + public void deactivate() { + //logger.info("ItemManager deactivated."); + } + /** * Lez�rja a kapcsolatot az Adatb�zis kontextus er�forr�s kezel�. */ @@ -463,6 +444,19 @@ public class ItemManager extends MemoryCache implements IItemManager { return context; } + @Override + public List getDynamicItemTypes() { + List result = new ArrayList(); + List itemTypes = getItemTypes(); + if (itemTypes != null) { + for (ItemType it : itemTypes) { + if (!it.getIsStatic()) + result.add(it); + } + } + return result; + } + @Override public FileType getFileType(String name) { FileTypeDAO dao = (FileTypeDAO) getBaseDAO(FileType.class); @@ -509,14 +503,31 @@ public class ItemManager extends MemoryCache implements IItemManager { } @Override - public List getShots(long id) { - List result = null; - ShotDAO dao = (ShotDAO) getBaseDAO(Shot.class); - if (dao != null) - result = dao.getShots(id); + public Item getItemByHouseID(String houseID) { + traceIn(); + Item result = null; + SearchFilter filter = new SearchFilter(); + filter.setMetadata(getStaticItemType().getMetadata("Anyag house ID")); + filter.setValueLogic(FilterValueLogic.EQUALS); + filter.setValues(Arrays.asList((Object) houseID)); + QueryObject qo = new QueryObject(); + qo.setFilters(Arrays.asList(filter)); + + // Exercise + List searchResult = searchItem(qo); + + if (searchResult != null && searchResult.size() > 0 && searchResult.get(0).getItemCount() == 1) + result = searchResult.get(0).getItems().get(0); + traceOut(); return result; } + @Override + public ItemType getItemType(String itemTypeName) { + ItemTypeDAO dbmanager = (ItemTypeDAO) getBaseDAO(ItemType.class); + return dbmanager.get(itemTypeName); + } + @Override @SuppressWarnings("unchecked") public List getItemTypes() { @@ -575,6 +586,13 @@ public class ItemManager extends MemoryCache implements IItemManager { return (MetadataType) get(MetadataType.class, id); } + @SuppressWarnings("unchecked") + @Override + public List getRunningJobs(String template) { + JobDAO dbmanager = (JobDAO) getBaseDAO(Job.class); + return (List) (List) dbmanager.getAllIncomplete(template); + } + @Override public Scene getScene(long id) { return (Scene) get(Scene.class, id); @@ -594,6 +612,30 @@ public class ItemManager extends MemoryCache implements IItemManager { return (Shot) get(Shot.class, id); } + @Override + public List getShots(long id) { + List result = null; + ShotDAO dao = (ShotDAO) getBaseDAO(Shot.class); + if (dao != null) + result = dao.getShots(id); + return result; + } + + @Override + public ItemType getStaticItemType() { + ItemType result = null; + List itemTypes = getItemTypes(); + if (itemTypes != null) { + for (ItemType it : itemTypes) { + if (it.getIsStatic()) { + result = it; + break; + } + } + } + return result; + } + @Override public Store getStore(long id) { return (Store) get(Store.class, id); @@ -631,6 +673,16 @@ public class ItemManager extends MemoryCache implements IItemManager { return result; } + @SuppressWarnings("unchecked") + @Override + public List getWorkflowActions(Date date) { + Calendar begin = CalendarUtils.createZeroCalendar(date); + Calendar end = CalendarUtils.createZeroCalendar(date); + end.add(Calendar.DAY_OF_YEAR, 1); + WorkflowActionDAO dao = (WorkflowActionDAO) getBaseDAO(WorkflowAction.class); + return (List) (List) dao.getWorkflowActions(new Timestamp(begin.getTimeInMillis()), new Timestamp(end.getTimeInMillis())); + } + void initialize() { currentInstance = this; super.setItemManager(this); @@ -666,6 +718,50 @@ public class ItemManager extends MemoryCache implements IItemManager { logger.info("ItemManager initialized"); } + private void initializeItemManager(SignalServer signalServer) { + this.signalServer = signalServer; + initialize(); + dbUrl = System.getProperty(DBURL); + dbUser = System.getProperty(DBUSERNAME); + dbPassword = System.getProperty(DBPASSWORD); + } + + @Override + public void merge(IEntityBase entity) { + traceIn(); + IEntityBaseDAO dbmanager = getBaseDAO(entity.getClass()); + dbmanager.merge(entity); + traceOut(); + } + + @Override + public void mergeItemStructure(Item item) { + if (item.getId() == 0) { + item.add(); + return; + } + List mS = item.getMedias(); + if (mS == null) + return; + for (Media m : mS) { + if (m.getId() == 0) { + m.setItemId(item.getId()); + m.add(); + continue; + } + List fS = m.getMediaFiles(); + if (fS == null) + continue; + for (MediaFile f : fS) { + if (f.getId() == 0) { + f.setMediaId(m.getId()); + f.add(); + continue; + } + } + } + } + @Override public void modify(IEntityBase entity) { traceIn(); @@ -709,26 +805,6 @@ public class ItemManager extends MemoryCache implements IItemManager { return result; } - @Override - public Item getItemByHouseID(String houseID) { - traceIn(); - Item result = null; - SearchFilter filter = new SearchFilter(); - filter.setMetadata(getStaticItemType().getMetadata("Anyag house ID")); - filter.setValueLogic(FilterValueLogic.EQUALS); - filter.setValues(Arrays.asList((Object) houseID)); - QueryObject qo = new QueryObject(); - qo.setFilters(Arrays.asList(filter)); - - // Exercise - List searchResult = searchItem(qo); - - if (searchResult != null && searchResult.size() > 0 && searchResult.get(0).getItemCount() == 1) - result = searchResult.get(0).getItems().get(0); - traceOut(); - return result; - } - @Override public SearchResult searchItem(String criteria, int fromResult, int toResult) { traceIn(); @@ -829,91 +905,12 @@ public class ItemManager extends MemoryCache implements IItemManager { traceOut(); } - @Override - public ItemType getStaticItemType() { - ItemType result = null; - List itemTypes = getItemTypes(); - if (itemTypes != null) { - for (ItemType it : itemTypes) { - if (it.getIsStatic()) { - result = it; - break; - } - } - } - return result; - } - - @Override - public List getDynamicItemTypes() { - List result = new ArrayList(); - List itemTypes = getItemTypes(); - if (itemTypes != null) { - for (ItemType it : itemTypes) { - if (!it.getIsStatic()) - result.add(it); - } - } - return result; - } - - @Override - public ItemType getItemType(String itemTypeName) { - ItemTypeDAO dbmanager = (ItemTypeDAO) getBaseDAO(ItemType.class); - return dbmanager.get(itemTypeName); - } - - @SuppressWarnings("unchecked") - @Override - public List getRunningJobs(String template) { - JobDAO dbmanager = (JobDAO) getBaseDAO(Job.class); - return (List) (List) dbmanager.getAllIncomplete(template); - } - - @SuppressWarnings("unchecked") - @Override - public List getWorkflowActions(Date date) { - Calendar begin = CalendarUtils.createZeroCalendar(date); - Calendar end = CalendarUtils.createZeroCalendar(date); - end.add(Calendar.DAY_OF_YEAR, 1); - WorkflowActionDAO dao = (WorkflowActionDAO) getBaseDAO(WorkflowAction.class); - return (List) (List) dao.getWorkflowActions(new Timestamp(begin.getTimeInMillis()), - new Timestamp(end.getTimeInMillis())); - } - - @Override - public void mergeItemStructure(Item item) { - if (item.getId() == 0) { - add(item); - return; - } - List mS = item.getMedias(); - if (mS == null) - return; - for (Media m : mS) { - if (m.getId() == 0) { - m.setItemId(item.getId()); - add(m); - continue; - } - List fS = m.getMediaFiles(); - if (fS == null) - continue; - for (MediaFile f : fS) { - if (f.getId() == 0) { - f.setMediaId(m.getId()); - add(f); - continue; - } - } + public synchronized void unbindSignalServerService(SignalServer service) { + try { + disconnect(); + logger.info("ItemManager service stopped."); + } catch (Exception exc) { + logger.error(exc); } } - - @Override - public void merge(IEntityBase entity) { - traceIn(); - IEntityBaseDAO dbmanager = getBaseDAO(entity.getClass()); - dbmanager.merge(entity); - traceOut(); - } } 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 f858e915..0d18b01e 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 @@ -32,18 +32,29 @@ public class TestItem extends TestBase { manager.createItemType("Generic", "Generic").add(); if (manager.getStore("TSM") == null) { - Store tsmStore = manager.createStore("TSM", true, false); - StoreUri tsmStoreUri = manager.createStoreUri(RemoteStoreProtocol.TSM, "MEDIACUBE"); - tsmStoreUri.setSource(true); - tsmStoreUri.setTarget(true); - tsmStoreUri.setUserName("mediacube"); - tsmStoreUri.setPassword("password"); - tsmStore.appendStoreUri(tsmStoreUri); - tsmStore.add(); + Store store = manager.createStore("TSM", true, false); + StoreUri storeUri = manager.createStoreUri(RemoteStoreProtocol.TSM, "MEDIACUBE"); + storeUri.setSource(true); + storeUri.setTarget(true); + storeUri.setUserName("mediacube"); + storeUri.setPassword("password"); + store.appendStoreUri(storeUri); + store.add(); + } + if (manager.getStore("Low-res") == null) { + Store store = manager.createStore("Low-res", true, true); + StoreUri storeUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, "/mediacube/data/lowres/www/video/"); + storeUri.setSource(true); + storeUri.setTarget(true); + store.appendStoreUri(storeUri); + storeUri = manager.createStoreUri(RemoteStoreProtocol.SMB, "\\\\10.10.1.26\\mclowres\\www\\video"); + storeUri.setSource(true); + storeUri.setTarget(false); + store.appendStoreUri(storeUri); + store.add(); } if (manager.getFileType("High-res") == null) { - FileType fileType = manager.createFileType("High-res", "High resolution material", "MPEG Video", "PCM", 1, - 8, 25); + FileType fileType = manager.createFileType("High-res", "High resolution material", "MPEG Video", "PCM", 1, 8, 25); fileType.add(); } if (manager.getFileType("Low-res") == null) { @@ -66,100 +77,15 @@ public class TestItem extends TestBase { } @Test - public void testMergeItemStructure_NewItem() { - Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", ""); - Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null); - item.appendMedia(media); - MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Low-res"), manager.getStore("TSM"), - media); - media.appendMediaFile(mf); - // Exercise - manager.mergeItemStructure(item); - assertTrue(item.getId() > 0); - assertTrue(item.getMedias().get(0).getId() > 0); - assertTrue(item.getMedias().get(0).getMediaFiles().get(0).getId() > 0); - } - - @Test - public void testMergeItemStructure_NewMedia() { - Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", ""); - item.add(); - - Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null); - item.appendMedia(media); - MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Low-res"), manager.getStore("TSM"), - media); - media.appendMediaFile(mf); - // Exercise - manager.mergeItemStructure(item); - assertTrue(item.getId() > 0); - assertTrue(item.getMedias().get(0).getId() > 0); - assertTrue(item.getMedias().get(0).getMediaFiles().get(0).getId() > 0); - } - - @Test - public void testMergeItemStructure_NewMediaFile() { - Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", ""); - - Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null); - item.appendMedia(media); - item.add(); + public void testCreate() { + // Fixture + Item sut = manager.createItem("Adásanyag light", "Ötödik elem", "Scifi", null); - MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Low-res"), manager.getStore("TSM"), - media); - media.appendMediaFile(mf); // Exercise - manager.mergeItemStructure(item); - assertTrue(item.getId() > 0); - assertTrue(item.getMedias().get(0).getId() > 0); - assertTrue(item.getMedias().get(0).getMediaFiles().get(0).getId() > 0); - } - - @Test - public void testCreateWorkflowActions_and_search() { - // manager.truncate(WorkflowAction.class); - // String[] tags = { "INGEST", "ARCHIVE", "TRANSCODE" }; - // for (int i = 0; i < 1000; i++) { - // Calendar touched = Calendar.getInstance(); - // Calendar started = Calendar.getInstance(); - // Calendar finished = Calendar.getInstance(); - // finished.add(Calendar.HOUR_OF_DAY, 1); - // String houseId = "house" + i % 10; - // WorkflowAction item = manager.createWorkflowAction(new Timestamp(touched.getTimeInMillis()), - // new Timestamp(started.getTimeInMillis()), new Timestamp(finished.getTimeInMillis()), true, houseId, - // houseId, houseId, houseId, tags[i % 3], 1000); - // item.add(); - // System.out.println("Created " + i + " id: " + item.getId()); - // } - // - WorkflowActionDAO dao = (WorkflowActionDAO) manager.getBaseDAO(WorkflowAction.class); - - Calendar begin = CalendarUtils.createZeroCalendar(); - Calendar end = CalendarUtils.createZeroCalendar(); - end.add(Calendar.DAY_OF_YEAR, 1); - List workflowActions = dao.getWorkflowActions(new Timestamp(begin.getTimeInMillis()), - new Timestamp(end.getTimeInMillis())); - assertEquals(1000, workflowActions.size()); - } - - @Test - public void testCreateManyFull() { - // manager.truncate(); - - for (int i = 0; i < 1000; i++) { - Item item = manager.createItem("Generic", "Ötödik elem " + i, "Scifi", i + ""); - item.add(); - - Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null); - item.appendMedia(media); - item.add(); - - MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Lowres"), - manager.getStore("Local video"), media); - mf.add(); + sut.add(); - System.out.println("Item created: " + i); - } + // Verify + assertTrue(sut.getId() > 0); } @Test @@ -172,8 +98,7 @@ public class TestItem extends TestBase { item.appendMedia(media); item.add(); - MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Lowres"), - manager.getStore("Local video"), media); + MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Lowres"), manager.getStore("Local video"), media); mf.add(); } @@ -199,69 +124,22 @@ public class TestItem extends TestBase { } @Test - public void testSearch() { - SearchResult search = manager.searchItem("elem", 10, 20); - assertEquals(1000, search.getItemCount()); - assertEquals(10, search.getItems().size()); - - for (Item item : search.getItems()) { - System.out.println(item.getTitle()); - } - } - - @Test - public void testCreate() { - // Fixture - Item sut = manager.createItem("Adásanyag light", "Ötödik elem", "Scifi", null); - - // Exercise - sut.add(); - - // Verify - assertTrue(sut.getId() > 0); - } - - @Test - public void testRemove() { - // Fixture - Item sut = null; - sut = manager.createItem("Film", "Nyolcadik kör ami törölhető", "Scifi", null); - sut.setAttribute("Főszereplő", "Kovocs Géza"); - sut.setAttribute("Gyártás éve", 2001); - sut.setAttribute("Szinkron", "Hajda Ákos"); - sut.add(); - - // Exercise - sut.remove(); - - // Verify - Item actual = (Item) manager.get(Item.class, sut.getId()); - assertNull(actual); - } - - @Test - public void testSetAttribute() { - // Fixture - Item sut = manager.createItem("Film", "Ötödik elem", "Scifi", null); - - // Exercise - sut.setAttribute("Főszereplő", "Kalapács Miklós"); + public void testCreateManyFull() { + // manager.truncate(); - // Verify - assertEquals("Kalapács Miklós", sut.getAttribute("Főszereplő")); - } + for (int i = 0; i < 1000; i++) { + Item item = manager.createItem("Generic", "Ötödik elem " + i, "Scifi", i + ""); + item.add(); - @Test - public void testSetAttributeWithWrongType() { - // L�tez� dinamikus attrib�tum rossz adatttal val� felt�lt�se. - // Fixture - Item item = manager.createItem("Film", "Ötödik elem", "Scifi", null); + Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null); + item.appendMedia(media); + item.add(); - // Exercise - item.setAttribute("F�szerepl�", 10); + MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Lowres"), manager.getStore("Local video"), media); + mf.add(); - // Verify - assertNull(item.getAttribute("F�szerepl�")); + System.out.println("Item created: " + i); + } } @Test @@ -289,6 +167,28 @@ public class TestItem extends TestBase { assertEquals(value3, actual.getAttribute("Gyártás éve")); } + @Test + @SuppressWarnings("unchecked") + public void testCreateWithDomainAttribute() { + // Fixture + Item sut = null; + sut = manager.createItem("Domain", "Domain teszt record", "Scifi", null); + sut.setAttribute("Szereplők", Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara"))); + + // Exercise + sut.add(); + + // Verify + List domains = (List) sut.getAttribute("Szereplők"); + + assertNotNull(domains); + assertEquals(3, domains.size()); + for (Domain d : domains) { + assertTrue(d.getId() > 0); + assertTrue(d.getDomainCategoryId() > 0); + } + } + @Test(expected = ItemManagerException.class) public void testCreateWithUniqueAttribute() { // L�trehoz�s, unique dinamikus attrib�tummal. @@ -309,26 +209,76 @@ public class TestItem extends TestBase { } @Test - @SuppressWarnings("unchecked") - public void testCreateWithDomainAttribute() { - // Fixture - Item sut = null; - sut = manager.createItem("Domain", "Domain teszt record", "Scifi", null); - sut.setAttribute("Szereplők", - Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara"))); + public void testCreateWorkflowActions_and_search() { + // manager.truncate(WorkflowAction.class); + // String[] tags = { "INGEST", "ARCHIVE", "TRANSCODE" }; + // for (int i = 0; i < 1000; i++) { + // Calendar touched = Calendar.getInstance(); + // Calendar started = Calendar.getInstance(); + // Calendar finished = Calendar.getInstance(); + // finished.add(Calendar.HOUR_OF_DAY, 1); + // String houseId = "house" + i % 10; + // WorkflowAction item = manager.createWorkflowAction(new Timestamp(touched.getTimeInMillis()), + // new Timestamp(started.getTimeInMillis()), new Timestamp(finished.getTimeInMillis()), true, houseId, + // houseId, houseId, houseId, tags[i % 3], 1000); + // item.add(); + // System.out.println("Created " + i + " id: " + item.getId()); + // } + // + WorkflowActionDAO dao = (WorkflowActionDAO) manager.getBaseDAO(WorkflowAction.class); + + Calendar begin = CalendarUtils.createZeroCalendar(); + Calendar end = CalendarUtils.createZeroCalendar(); + end.add(Calendar.DAY_OF_YEAR, 1); + List workflowActions = dao.getWorkflowActions(new Timestamp(begin.getTimeInMillis()), new Timestamp(end.getTimeInMillis())); + assertEquals(1000, workflowActions.size()); + } + @Test + public void testMergeItemStructure_NewItem() { + Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", ""); + Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null); + item.appendMedia(media); + MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Low-res"), manager.getStore("TSM"), media); + media.appendMediaFile(mf); // Exercise - sut.add(); + manager.mergeItemStructure(item); + assertTrue(item.getId() > 0); + assertTrue(item.getMedias().get(0).getId() > 0); + assertTrue(item.getMedias().get(0).getMediaFiles().get(0).getId() > 0); + } - // Verify - List domains = (List) sut.getAttribute("Szereplők"); + @Test + public void testMergeItemStructure_NewMedia() { + Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", ""); + item.add(); - assertNotNull(domains); - assertEquals(3, domains.size()); - for (Domain d : domains) { - assertTrue(d.getId() > 0); - assertTrue(d.getDomainCategoryId() > 0); - } + Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null); + item.appendMedia(media); + MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Low-res"), manager.getStore("TSM"), media); + media.appendMediaFile(mf); + // Exercise + manager.mergeItemStructure(item); + assertTrue(item.getId() > 0); + assertTrue(item.getMedias().get(0).getId() > 0); + assertTrue(item.getMedias().get(0).getMediaFiles().get(0).getId() > 0); + } + + @Test + public void testMergeItemStructure_NewMediaFile() { + Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", ""); + + Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null); + item.appendMedia(media); + item.add(); + + MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Low-res"), manager.getStore("TSM"), media); + media.appendMediaFile(mf); + // Exercise + manager.mergeItemStructure(item); + assertTrue(item.getId() > 0); + assertTrue(item.getMedias().get(0).getId() > 0); + assertTrue(item.getMedias().get(0).getMediaFiles().get(0).getId() > 0); } @Test @@ -337,8 +287,7 @@ public class TestItem extends TestBase { // Fixture Item item = null; item = manager.createItem("Domain", "Domain teszt record", "Scifi", null); - item.setAttribute("Szereplők", - Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara"))); + item.setAttribute("Szereplők", Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara"))); item.add(); // Exercise @@ -351,13 +300,30 @@ public class TestItem extends TestBase { assertEquals(3, domains.size()); } + @Test + public void testRemove() { + // Fixture + Item sut = null; + sut = manager.createItem("Film", "Nyolcadik kör ami törölhető", "Scifi", null); + sut.setAttribute("Főszereplő", "Kovocs Géza"); + sut.setAttribute("Gyártás éve", 2001); + sut.setAttribute("Szinkron", "Hajda Ákos"); + sut.add(); + + // Exercise + sut.remove(); + + // Verify + Item actual = (Item) manager.get(Item.class, sut.getId()); + assertNull(actual); + } + @Test public void testRemoveWithDomainAttribute() throws Exception { // Fixture Item sut = null; sut = manager.createItem("Domain", "Domain teszt record", "Scifi", null); - sut.setAttribute("Szereplők", - Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara"))); + sut.setAttribute("Szereplők", Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara"))); sut.add(); // Exercise @@ -374,13 +340,60 @@ public class TestItem extends TestBase { assertNull(expected); } + @Test + public void testSearch() { + SearchResult search = manager.searchItem("elem", 10, 20); + assertEquals(1000, search.getItemCount()); + assertEquals(10, search.getItems().size()); + + for (Item item : search.getItems()) { + System.out.println(item.getTitle()); + } + } + + @Test + public void testSearchItem_byHouseID() { + + //TestDB.createStaticItemTypes(); + // Fixture + // Exercise + Item result = manager.getItemByHouseID("11111"); + + // Verify + assertNotNull(result); + } + + @Test + public void testSetAttribute() { + // Fixture + Item sut = manager.createItem("Film", "Ötödik elem", "Scifi", null); + + // Exercise + sut.setAttribute("Főszereplő", "Kalapács Miklós"); + + // Verify + assertEquals("Kalapács Miklós", sut.getAttribute("Főszereplő")); + } + + @Test + public void testSetAttributeWithWrongType() { + // L�tez� dinamikus attrib�tum rossz adatttal val� felt�lt�se. + // Fixture + Item item = manager.createItem("Film", "Ötödik elem", "Scifi", null); + + // Exercise + item.setAttribute("F�szerepl�", 10); + + // Verify + assertNull(item.getAttribute("F�szerepl�")); + } + @Test public void testUpdateWithDomainAttribute() throws Exception { // Fixture Item sut = null; sut = manager.createItem("Domain", "Domain teszt record", "Scifi", null); - sut.setAttribute("Szereplők", - Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara"))); + sut.setAttribute("Szereplők", Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara"))); sut.add(); // Exercise @@ -397,16 +410,4 @@ public class TestItem extends TestBase { assertNull(expected); } - @Test - public void testSearchItem_byHouseID() { - - //TestDB.createStaticItemTypes(); - // Fixture - // Exercise - Item result = manager.getItemByHouseID("11111"); - - // Verify - assertNotNull(result); - } - } diff --git a/server/user.jobengine.osgi.server/resources/templates/archivemedia.xml b/server/user.jobengine.osgi.server/resources/templates/archivemedia.xml deleted file mode 100644 index bab908da..00000000 --- a/server/user.jobengine.osgi.server/resources/templates/archivemedia.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/server/user.jobengine.osgi.server/resources/templates/tsmbackupmediawrapper.xml b/server/user.jobengine.osgi.server/resources/templates/tsmbackupmediawrapper.xml deleted file mode 100644 index 6d17c2df..00000000 --- a/server/user.jobengine.osgi.server/resources/templates/tsmbackupmediawrapper.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/ArchiveItem.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/ArchiveItem.java new file mode 100644 index 00000000..7b3ccd76 --- /dev/null +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/ArchiveItem.java @@ -0,0 +1,92 @@ +package user.jobengine.server.steps; + +import java.io.File; +import java.io.Serializable; +import java.nio.file.Path; + +public class ArchiveItem implements Serializable { + private static final long serialVersionUID = -7278747969491719357L; + private String itemTitle; + private String itemHouseId; + private String itemDescription; + private String mediaHouseId; + private String mediaTitle; + private String mediaDescription; + + private Path mediaFile = null; + private Path catchedFile = null; + + public Path getCatchedFile() { + return catchedFile; + } + + public String getItemDescription() { + return itemDescription; + } + + public String getItemHouseId() { + return itemHouseId; + } + + public String getItemTitle() { + return itemTitle; + } + + public String getMediaDescription() { + return mediaDescription; + } + + public Path getMediaFile() { + return mediaFile; + } + + public String getMediaHouseId() { + return mediaHouseId; + } + + public String getMediaTitle() { + return mediaTitle; + } + + public boolean removeCatchedFile() { + boolean result = false; + if (catchedFile != null) { + File file = catchedFile.toFile(); + if (file.exists()) + result = file.delete(); + } + return result; + } + + public void setCatchedFile(Path catchedFile) { + this.catchedFile = catchedFile; + } + + public void setItemDescription(String itemDescription) { + this.itemDescription = itemDescription; + } + + public void setItemHouseId(String itemHouseId) { + this.itemHouseId = itemHouseId; + } + + public void setItemTitle(String itemTitle) { + this.itemTitle = itemTitle; + } + + public void setMediaDescription(String mediaDescription) { + this.mediaDescription = mediaDescription; + } + + public void setMediaFile(Path mediaFile) { + this.mediaFile = mediaFile; + } + + public void setMediaHouseId(String mediaHouseId) { + this.mediaHouseId = mediaHouseId; + } + + public void setMediaTitle(String mediaTitle) { + this.mediaTitle = mediaTitle; + } +} diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/MediaFileWrapper.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/MediaFileWrapper.java deleted file mode 100644 index 294fa5fb..00000000 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/steps/MediaFileWrapper.java +++ /dev/null @@ -1,87 +0,0 @@ -package user.jobengine.server.steps; - -import java.io.File; -import java.io.Serializable; - -import com.ibm.nosql.json.JSONUtil; -import com.ibm.nosql.json.api.BasicDBObject; - -import user.jobengine.db.Item; -import user.jobengine.db.Media; - -public class MediaFileWrapper implements Serializable { - public static final String ITEM_TITLE = "itemTitle"; - public static final String ITEM_HOUSEID = "itemHouseID"; - public static final String ITEM_DESCRIPTION = "itemDescription"; - public static final String MEDIA_HOUSE_ID = "mediaHouseID"; - public static final String MEDIA_TITLE = "mediaTitle"; - public static final String MEDIA_DESCRIPTION = "mediaDescription"; - public static final String ITEMTYPENAME = "Generic"; - - private File mediaFile = null; - private File jsonFile = null; - private File catchedFile = null; - private String jsonContent = null; - private BasicDBObject jsondbo = null; - private Item item = null; - private Media media = null; - - public File getMediaFile() { - return mediaFile; - } - - public void setMediaFile(File mediaFile) { - this.mediaFile = mediaFile; - } - - public File getJsonFile() { - return jsonFile; - } - - public void setJsonFile(File jsonFile) { - this.jsonFile = jsonFile; - } - - public File getCatchedFile() { - return catchedFile; - } - - public void setCatchedFile(File catchedFile) { - this.catchedFile = catchedFile; - } - - public String getJsonContent() { - return jsonContent; - } - - public void setJsonContent(String jsonContent) { - this.jsonContent = jsonContent; - } - - public Item getItem() { - return item; - } - - public void setItem(Item item) { - this.item = item; - } - - public String getJSONString(String varName) { - String ret = null; - if (jsonContent != null) { - if (jsondbo == null) { - jsondbo = (BasicDBObject) JSONUtil.jsonToDbObject(jsonContent); - } - ret = jsondbo.getString(varName); - } - return ret; - } - - public Media getMedia() { - return media; - } - - public void setMedia(Media media) { - this.media = media; - } -} -- 2.54.0