git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 27 Sep 2017 14:41:07 +0000 (14:41 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 27 Sep 2017 14:41:07 +0000 (14:41 +0000)
36 files changed:
server/-configuration/jobtemplates/archive-item.xml [new file with mode: 0644]
server/-configuration/jobtemplates/archive-ondemand.xml [new file with mode: 0644]
server/-configuration/jobtemplates/attach.xml [moved from server/user.jobengine.osgi.server/resources/templates/attach.xml with 100% similarity]
server/-configuration/jobtemplates/attachlocal.xml [moved from server/user.jobengine.osgi.server/resources/templates/attachlocal.xml with 100% similarity]
server/-configuration/jobtemplates/export.xml [moved from server/user.jobengine.osgi.server/resources/templates/export.xml with 100% similarity]
server/-configuration/jobtemplates/fake-concurrent.xml [moved from server/user.jobengine.osgi.server/resources/templates/fake-concurrent.xml with 100% similarity]
server/-configuration/jobtemplates/fake.xml [moved from server/user.jobengine.osgi.server/resources/templates/fake.xml with 100% similarity]
server/-configuration/jobtemplates/import.xml [moved from server/user.jobengine.osgi.server/resources/templates/import.xml with 100% similarity]
server/-configuration/jobtemplates/lowrestranscodemedia.xml [moved from server/user.jobengine.osgi.server/resources/templates/lowrestranscodemedia.xml with 100% similarity]
server/-configuration/jobtemplates/nexio-sync.xml [moved from server/user.jobengine.osgi.server/resources/templates/nexio-sync.xml with 100% similarity]
server/-configuration/jobtemplates/program1.xml [moved from server/user.jobengine.osgi.server/resources/templates/program1.xml with 100% similarity]
server/-configuration/jobtemplates/template.xml [moved from server/user.jobengine.osgi.server/resources/templates/template.xml with 100% similarity]
server/-configuration/jobtemplates/teszt.xml [moved from server/user.jobengine.osgi.server/resources/templates/teszt.xml with 100% similarity]
server/-configuration/jobtemplates/tsmbackup.xml [moved from server/user.jobengine.osgi.server/resources/templates/tsmbackup.xml with 100% similarity]
server/-configuration/jobtemplates/tsmrestore.xml [moved from server/user.jobengine.osgi.server/resources/templates/tsmrestore.xml with 100% similarity]
server/-configuration/run-mediacube-server-localhost.launch
server/-configuration/scheduledjobs.json
server/-product/pom.xml
server/user.jobengine.executors/.classpath
server/user.jobengine.executors/.settings/org.eclipse.jdt.core.prefs
server/user.jobengine.executors/META-INF/MANIFEST.MF
server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveItemJobCreatorStep.java [deleted file]
server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveItemSubmitStep.java [new file with mode: 0644]
server/user.jobengine.executors/src/user/jobengine/server/steps/ArchiveListBuilderStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/ItemCreatorStep.java [deleted file]
server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java [new file with mode: 0644]
server/user.jobengine.executors/src/user/jobengine/server/steps/SelenioLowresTranscodeStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupMediaWrapperStep.java [deleted file]
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMBackupStep_orig.java [new file with mode: 0644]
server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java
server/user.jobengine.osgi.db/test/user/jobengine/db/TestItem.java
server/user.jobengine.osgi.server/resources/templates/archivemedia.xml [deleted file]
server/user.jobengine.osgi.server/resources/templates/tsmbackupmediawrapper.xml [deleted file]
server/user.jobengine.osgi.server/src/user/jobengine/server/steps/ArchiveItem.java [new file with mode: 0644]
server/user.jobengine.osgi.server/src/user/jobengine/server/steps/MediaFileWrapper.java [deleted file]

diff --git a/server/-configuration/jobtemplates/archive-item.xml b/server/-configuration/jobtemplates/archive-item.xml
new file mode 100644 (file)
index 0000000..70d2292
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate name="Anyag archiválás" description="Kiválasztott média nagy felbontású verziójának mentése TSM archívumba.">\r
+       <declarations>\r
+               <parameters>\r
+                       <parameter name="archiveItem" type="user.jobengine.server.steps.ArchiveItem" />\r
+               </parameters>\r
+               <variables>\r
+                       <variable name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
+               </variables>\r
+       </declarations>\r
+       <commands>\r
+               <calljobstep id="id1" type="user.jobengine.server.steps.MetadataTransformStep" weight="1">\r
+                       <inputs>\r
+                               <input>\r
+                                       <parameter name="archiveItem" />\r
+                               </input>\r
+                       </inputs>\r
+                       <outputs>\r
+                               <output>\r
+                                       <variable name="mediaCubeMedia" />\r
+                               </output>\r
+                       </outputs>\r
+               </calljobstep>\r
+               <calljobstep id="id2" type="user.jobengine.server.steps.TSMBackupStep" weight="1">\r
+                       <inputs>\r
+                               <input>\r
+                                       <parameter name="archiveItem" />\r
+                               </input>\r
+                               <input>\r
+                                       <variable name="mediaCubeMedia" />\r
+                               </input>\r
+                       </inputs>\r
+                       <commands>\r
+                               <calljobstep id="id3" type="user.jobengine.server.steps.SelenioLowresTranscodeStep" weight="1">\r
+                                       <inputs>\r
+                                               <input>\r
+                                                       <variable name="mediaCubeMedia" />\r
+                                               </input>\r
+                                       </inputs>\r
+                                       <outputs>\r
+                                       </outputs>\r
+                               </calljobstep>\r
+                       </commands>\r
+               </calljobstep>\r
+       </commands>\r
+</jobtemplate>
\ 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 (file)
index 0000000..4265ba2
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate name="Kézi archiválás">\r
+<declarations>\r
+       <parameters>\r
+<!--    mount -t cifs -o username=mediacube,password=Broadca5T //10.10.1.100/BRAAVOS /mnt/ISILON -->\r
+               <parameter name="inputFolder" type="java.lang.String"/>\r
+       </parameters>\r
+       <variables>\r
+               <variable name="archiveList" type="java.util.ArrayList"/>\r
+       </variables>\r
+</declarations>\r
+<commands>\r
+       <calljobstep id="step1" type="user.jobengine.server.steps.ArchiveListBuilderStep" weight="1">\r
+               <inputs>\r
+                       <input>\r
+                               <parameter name="inputFolder" />\r
+                       </input>\r
+               </inputs>\r
+               <outputs>\r
+                       <output>\r
+                               <variable name="archiveList" />\r
+                       </output>\r
+               </outputs>\r
+       </calljobstep>\r
+       \r
+       <calljobstep id="step2" type="user.jobengine.server.steps.ArchiveItemSubmitStep" weight="1">\r
+               <inputs>\r
+                       <input>\r
+                               <variable name="archiveList" />\r
+                       </input>\r
+               </inputs>\r
+       </calljobstep>\r
+</commands>\r
+</jobtemplate>
\ No newline at end of file
index a848df86b38c4c5ec6a563f02c16291bf7a41b89..8053e4d0a95eda5921d1a1bdfcd6ead7265f2e6d 100644 (file)
@@ -19,7 +19,7 @@
 <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>\r
 <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>\r
 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dorg.eclipse.equinox.http.jetty.http.port=8080&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.osgi.server/resources/templates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://localhost:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=salabakter&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Djobengine.rcc.host=localhost&#13;&#10;-Djobengine.rcc.defaultlowresprofile=&quot;WindowsMedia - Web Streaming - DSL or Cable Modem&quot;&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps&quot;&#13;&#10;-Djobengine.transcoder.source=c:\_Movie\hires\&#13;&#10;-Djetty.home=&quot;${workspace_loc:-configuration}/jetty&quot;&#13;&#10;-Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.21/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://localhost:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=salabakter&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB;&#13;&#10;-Djobengine.nexio.db.user=sa&#13;&#10;-Djobengine.nexio.db.password=resolve&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC_v4.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dorg.eclipse.equinox.http.jetty.http.port=8080&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}//-configuration/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://localhost:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=salabakter&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Djobengine.rcc.host=localhost&#13;&#10;-Djobengine.rcc.defaultlowresprofile=&quot;WindowsMedia - Web Streaming - DSL or Cable Modem&quot;&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps&quot;&#13;&#10;-Djobengine.transcoder.source=c:\_Movie\hires\&#13;&#10;-Djetty.home=&quot;${workspace_loc:-configuration}/jetty&quot;&#13;&#10;-Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.21/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://localhost:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=salabakter&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB;&#13;&#10;-Djobengine.nexio.db.user=sa&#13;&#10;-Djobengine.nexio.db.password=resolve&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC_v4.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;"/>\r
 <stringAttribute key="pde.version" value="3.3"/>\r
 <booleanAttribute key="show_selected_only" value="false"/>\r
 <stringAttribute key="target_bundles" value="cglib@default:default,com.auth0.java-jwt@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.fasterxml.jackson.dataformat.jackson-dataformat-yaml@default:default,com.fasterxml.jackson.datatype.jackson-datatype-joda@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-base@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider@default:default,com.fasterxml.jackson.module.jackson-module-jaxb-annotations@default:default,com.google.guava@default:default,com.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,com.sun.el.javax.el@default:default,commons-logging@default:default,javassist@default:default,javax.annotation-api@default:default,javax.inject@default:default,javax.mail@default:default,javax.servlet-api@default:default,javax.servlet.jsp-api@default:default,javax.validation.api@default:default,javax.ws.rs-api@default:default,jcifs@default:default,joda-time@default:default,org.apache.aries.spifly.dynamic.bundle@default:default,org.apache.aries.util@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@default:default,org.apache.commons.lang3@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.logging.log4j.api@1:true,org.apache.logging.log4j.core@default:default,org.apache.logging.log4j.slf4j-impl@default:default,org.apache.servicemix.bundles.quartz@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.util@default:default,org.eclipse.jdt.core.compiler.batch@default:default,org.eclipse.jetty.client@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.jsp@default:default,org.eclipse.jetty.osgi.boot.jsp@default:false,org.eclipse.jetty.osgi.boot@default:true,org.eclipse.jetty.schemas@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.jboss.resteasy.client@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.jvnet.mimepull@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.reflections@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
index 9790b65364bf8c3de5400a0bc9951fbebf4d64d1..86fb8243c506344d4840bd5b43565fd1f4aba39e 100644 (file)
@@ -1,11 +1,13 @@
 {"joblist":[\r
        {\r
       "active": false,\r
-         "name" : "Anyagok archiválása",\r
-      "template": "archivemedia.xml",\r
+         "name" : "On-demand archiválás",\r
+      "template": "archive-ondemand.xml",\r
       "executeimmediate": true,\r
       "cronexpression": "0 0 0/1 1/1 * ? *",\r
-      "parameters": [ {"name": "mediaFolder", "value": "/tmp", "type": "java.lang.String"} ]\r
+      "parameters": [ \r
+       {"name": "inputFolder", "value": "/mnt/ISILON/ARCHIVE", "type": "java.lang.String"} \r
+      ]\r
        },\r
        {\r
       "active": false,\r
index 5473cf6730f97b94b42b1b5185945c191cd86ac0..b2912cf3a4bc16f88e5ea3fc2f50b8ef68225b4f 100644 (file)
                                                        <outputDirectory>${project.build.directory}/products/MediaCube/win32/win32/x86_64/configuration/templates</outputDirectory>\r
                                                        <resources>\r
                                                                <resource>\r
-                                                                       <directory>${basedir}/../user.jobengine.osgi.server/resources/templates</directory>\r
+                                                                       <directory>${basedir}/../-configuration/jobtemplates</directory>\r
                                                                </resource>\r
                                                        </resources>\r
                                                </configuration>\r
index 3d1f8e3a126820dfb7f182a2382eefcc056c11d5..1f733c4803467f986636a2f088da4b5403445cce 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <classpath>\r
        <classpathentry kind="src" path="src"/>\r
-       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>\r
        <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>\r
        <classpathentry kind="output" path="bin"/>\r
 </classpath>\r
index 838bd9d69424290f7e947b867a3b4381e756dad8..ace45ceefb456b3fa957d31f9c54df016ce54e53 100644 (file)
@@ -1,11 +1,12 @@
 eclipse.preferences.version=1\r
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7\r
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8\r
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve\r
-org.eclipse.jdt.core.compiler.compliance=1.7\r
+org.eclipse.jdt.core.compiler.compliance=1.8\r
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate\r
 org.eclipse.jdt.core.compiler.debug.localVariable=generate\r
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate\r
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
-org.eclipse.jdt.core.compiler.source=1.7\r
+org.eclipse.jdt.core.compiler.source=1.8\r
index e8590ccaa8ed9b841bd1ae0d9618b2815bc5e8ef..0cb3cc3a40c38e29ba88f810bd9b7a683284ff91 100644 (file)
@@ -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 (file)
index ad1aa2d..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-package user.jobengine.server.steps;\r
-\r
-import java.util.ArrayList;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.ListUtils;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-/**\r
- * Elinditja minden mediara az archivalo es lowres tanszkodolo jobokat.\r
- * @author robi\r
- */\r
-public class ArchiveItemJobCreatorStep extends JobStep {\r
-       private static final Logger logger = LogManager.getLogger();\r
-\r
-       @StepEntry\r
-       public Object[] execute(ArrayList<MediaFileWrapper> wrapperList, IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
-               try {\r
-                       for (MediaFileWrapper wr : wrapperList) {\r
-                               try {\r
-                                       //START ARCHIVEMEDIA JOB\r
-                                       IJobRuntime runtime1 = jobEngine.submit("tsmbackupmediawrapper.xml", "TSMBackupMedia",\r
-                                                       ListUtils.asMap("mediaWrapper", wr));\r
-\r
-                                       //START LOWRES TRANSCODER JOB\r
-                                       IJobRuntime runtime2 = jobEngine.submit("lowrestranscodemedia.xml", "LowresTranscodeMedia",\r
-                                                       ListUtils.asMap("mediaWrapper", wr));\r
-                               } catch (Exception e1) {\r
-                                       wr.getCatchedFile().delete();\r
-                                       throw e1;\r
-                               }\r
-                       }\r
-\r
-               } catch (Exception e) {\r
-                       logger.error("", e);\r
-               }\r
-               return new Object[] {};\r
-       }\r
-\r
-}\r
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 (file)
index 0000000..83e58aa
--- /dev/null
@@ -0,0 +1,51 @@
+package user.jobengine.server.steps;\r
+\r
+import java.io.File;\r
+import java.nio.file.Path;\r
+import java.util.ArrayList;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import user.commons.ListUtils;\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+/**\r
+ * Elinditja minden mediara az archivalo folyamatot.\r
+ *\r
+ * @author robi\r
+ */\r
+public class ArchiveItemSubmitStep extends JobStep {\r
+       private static final Logger logger = LogManager.getLogger();\r
+       private static final String JOBTEMPLATE = "archive-item.xml";\r
+       private static final String ARCHIVE_ITEM = "archiveItem";\r
+\r
+       @StepEntry\r
+       public Object[] execute(ArrayList<ArchiveItem> archiveList, IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
+               try {\r
+                       for (ArchiveItem archiveItem : archiveList) {\r
+                               String title = "Archiválás: " + archiveItem.getMediaFile();\r
+                               try {\r
+                                       jobEngine.submit(JOBTEMPLATE, title, ListUtils.asMap(ARCHIVE_ITEM, archiveItem));\r
+                               } catch (Exception e) {\r
+                                       if (archiveItem != null)\r
+                                               removeCatchedFile(archiveItem.getCatchedFile());\r
+                                       throw e;\r
+                               }\r
+                       }\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+               }\r
+               return new Object[] {};\r
+       }\r
+\r
+       private void removeCatchedFile(Path catchedFilePath) {\r
+               if (catchedFilePath != null) {\r
+                       File catchedFile = catchedFilePath.toFile();\r
+                       if (catchedFile.exists())\r
+                               catchedFile.delete();\r
+               }\r
+       }\r
+\r
+}\r
index f9a76c113df91e97031e1386a4a55a687622fa1d..f47ab8592e0b4f88035792048d9106d9900f17a7 100644 (file)
@@ -8,7 +8,9 @@ import java.nio.file.Path;
 import java.nio.file.Paths;\r
 import java.nio.file.StandardOpenOption;\r
 import java.util.ArrayList;\r
+import java.util.List;\r
 \r
+import org.apache.commons.lang.StringUtils;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 \r
@@ -19,100 +21,138 @@ import user.jobengine.server.IJobEngine;
 import user.jobengine.server.IJobRuntime;\r
 \r
 /**\r
- * Az archivalhato mediak listazasa MediaFileWrapper objektumokban.\r
- * A listazott media allomanyokat megjeloli .catched signal allomannyal,\r
- * hogy a legkozelebbi listazas figyelmen kivul hagyja. \r
+ * Az archivalhato mediak listazasa MediaFileWrapper objektumokban. A listazott media allomanyokat megjeloli .catched signal allomannyal, hogy a legkozelebbi\r
+ * listazas figyelmen kivul hagyja.\r
+ *\r
  * @author robi\r
  */\r
 public class ArchiveListBuilderStep extends JobStep {\r
        private static final Logger logger = LogManager.getLogger();\r
+       private static final String UTF8 = "utf-8";\r
+       private static final String CATCHED = "catched";\r
+       private static final String STOREFOLDER = ".STORE";\r
+       private static final String MEDIAEXT = ".mxf";\r
+       private static final String JSONEXT = ".json";\r
+       private static final String CATCHEDEXT = ".catched";\r
+\r
+       public static final String ITEM_TITLE = "itemTitle";\r
+       public static final String ITEM_HOUSEID = "itemHouseID";\r
+       public static final String ITEM_DESCRIPTION = "itemDescription";\r
+       public static final String MEDIA_HOUSEID = "mediaHouseID";\r
+       public static final String MEDIA_TITLE = "mediaTitle";\r
+       public static final String MEDIA_DESCRIPTION = "mediaDescription";\r
+\r
+       private ArchiveItem createArchiveItem(Path jsonFilePath, Path mediaFilePath, Path catchedFilePath) {\r
+               ArchiveItem result = null;\r
+               byte[] readAllBytes = null;\r
+               try {\r
+                       readAllBytes = Files.readAllBytes(jsonFilePath);\r
+                       BasicDBObject dbObject = (BasicDBObject) JSONUtil.jsonToDbObject(new String(readAllBytes));\r
+                       if (dbObject == null)\r
+                               throw new NullPointerException("Can not parse JSON file: " + jsonFilePath);\r
+                       result = new ArchiveItem();\r
+                       fillMetadata(result, dbObject, ITEM_HOUSEID);\r
+                       fillMetadata(result, dbObject, ITEM_TITLE);\r
+                       fillMetadata(result, dbObject, ITEM_DESCRIPTION);\r
+                       fillMetadata(result, dbObject, MEDIA_HOUSEID);\r
+                       fillMetadata(result, dbObject, MEDIA_TITLE);\r
+                       fillMetadata(result, dbObject, MEDIA_DESCRIPTION);\r
+\r
+                       result.setMediaFile(mediaFilePath);\r
+                       result.setCatchedFile(catchedFilePath);\r
+\r
+               } catch (IOException e) {\r
+                       logger.catching(e);\r
+                       return null;\r
+               }\r
+               return result;\r
+       }\r
 \r
-       @StepEntry\r
-       public Object[] execute(String mediaFolder, IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
-               final ArrayList<MediaFileWrapper> wrapperList = new ArrayList<MediaFileWrapper>();\r
+       private void createCatchedFile(Path catchedFilePath) {\r
+               try {\r
+                       Files.write(catchedFilePath, CATCHED.getBytes(UTF8), StandardOpenOption.CREATE);\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+               }\r
+       }\r
 \r
+       @StepEntry\r
+       public Object[] execute(String inputFolder, IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
+               List<ArchiveItem> archiveList = new ArrayList<ArchiveItem>();\r
+               DirectoryStream<Path> directoryStream = null;\r
                try {\r
-                       //final String mediaFolder = "/tmp";\r
-                       final String storeFolder = ".STORE";\r
-                       final String mediaExt = ".mxf";\r
-                       final String jsonExt = ".json";\r
-                       final String catchedExt = ".catched";\r
-                       final File storeFolderFile = new File(mediaFolder + File.separator + storeFolder);\r
-\r
-                       //filename filter\r
-                       DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {\r
-                               @Override\r
-                               public boolean accept(Path path) throws IOException {\r
-                                       boolean ret = false;\r
-                                       File file = path.toFile();\r
-\r
-                                       //check extension and dir attrib\r
-                                       if (!file.isDirectory() && file.getName().toLowerCase().endsWith(mediaExt.toLowerCase())) {\r
-                                               File jsonFile = new File(\r
-                                                               storeFolderFile.getAbsolutePath() + File.separator + file.getName() + jsonExt);\r
-                                               File catchedFile = new File(\r
-                                                               storeFolderFile.getAbsolutePath() + File.separator + file.getName() + catchedExt);\r
-                                               //check json\r
-                                               if (jsonFile.exists()) {\r
-\r
-                                                       //check json content\r
-                                                       String jsonContent = new String(Files.readAllBytes(Paths.get(jsonFile.getAbsolutePath())));\r
-                                                       BasicDBObject dbo = (BasicDBObject) JSONUtil.jsonToDbObject(jsonContent);\r
-                                                       String itemHouseID = dbo.getString("itemHouseID");\r
-                                                       if (itemHouseID != null && !"".equals(itemHouseID)) {\r
-                                                               //check catched file existence\r
-                                                               if (!catchedFile.exists()) {\r
-                                                                       //write catchedfile\r
-                                                                       Files.write(Paths.get(catchedFile.getAbsolutePath()), "catched".getBytes("utf-8"),\r
-                                                                                       StandardOpenOption.CREATE);\r
-\r
-                                                                       MediaFileWrapper mfw = new MediaFileWrapper();\r
-                                                                       mfw.setMediaFile(file);\r
-                                                                       mfw.setJsonFile(jsonFile);\r
-                                                                       mfw.setCatchedFile(catchedFile);\r
-                                                                       mfw.setJsonContent(jsonContent);\r
-                                                                       wrapperList.add(mfw);\r
-\r
-                                                                       ret = true;\r
-                                                               } else {\r
-                                                                       //file has been already catched\r
-                                                                       logger.warn(file.getName() + " file is already catched.");\r
-                                                               }\r
-                                                       } else {\r
-                                                               //there is no houseID in json file\r
-                                                               logger.warn("There is houseID member in json meta file: " + jsonFile.getName());\r
-                                                       }\r
-                                               } else {\r
-                                                       //there is no json file\r
-                                                       logger.warn("There is no json meta for this file: " + file.getName());\r
-                                               }\r
-                                       }\r
-                                       return ret;\r
-                               }\r
-                       };\r
-\r
-                       //list files\r
-                       DirectoryStream<Path> directoryStream = null;\r
-                       try {\r
-                               directoryStream = Files.newDirectoryStream(Paths.get(mediaFolder), filter);\r
-                               for (Path validMediaFile : directoryStream) {\r
-                                       //filter does everything\r
-                                       logger.info("Media file listed: " + validMediaFile.toString());\r
-                               }\r
-                       }catch(Exception e){\r
-                               logger.error("", e);\r
-                               throw e;\r
-                       } finally {\r
-                               if(directoryStream != null){\r
-                                       directoryStream.close();        \r
+                       Files.newDirectoryStream(Paths.get(inputFolder)).forEach(p -> processPathItem(p, archiveList));\r
+               } catch (Exception e) {\r
+                       logger.error("", e);\r
+               } finally {\r
+                       if (directoryStream != null) {\r
+                               try {\r
+                                       directoryStream.close();\r
+                               } catch (IOException e) {\r
                                }\r
                        }\r
+               }\r
+               return new Object[] { archiveList };\r
+       }\r
 \r
-               } catch (Exception e) {\r
-                       logger.error("", e);\r
+       private void fillMetadata(ArchiveItem archiveItem, BasicDBObject dbObject, String fieldName) {\r
+               if (dbObject.containsKey(fieldName))\r
+                       archiveItem.setItemTitle(dbObject.getString(fieldName));\r
+       }\r
+\r
+       private void processPathItem(Path mediaFilePath, final List<ArchiveItem> archiveList) {\r
+               File mediaFile = mediaFilePath.toFile();\r
+\r
+               if (mediaFile.isDirectory() || !mediaFile.getName().toLowerCase().endsWith(MEDIAEXT.toLowerCase())) {\r
+                       return;\r
+               }\r
+\r
+               Path dotStorePath = Paths.get(mediaFilePath.getParent().toString(), STOREFOLDER);\r
+               Path catchedFilePath = Paths.get(dotStorePath.toString(), mediaFile.getName(), CATCHEDEXT);\r
+               File catchedFile = catchedFilePath.toFile();\r
+               if (catchedFile.exists()) {\r
+                       logger.warn("{} file is already catched.", mediaFile.getName());\r
+                       return;\r
+               }\r
+\r
+               Path jsonFilePath = Paths.get(dotStorePath.toString(), mediaFile.getName(), JSONEXT);\r
+               File jsonFile = jsonFilePath.toFile();\r
+               if (!jsonFile.exists()) {\r
+                       logger.warn("{} has no json metadata.", mediaFile.getName());\r
+                       return;\r
+               }\r
+\r
+               ArchiveItem archiveItem = createArchiveItem(jsonFilePath, mediaFilePath, catchedFilePath);\r
+\r
+               if (archiveItem == null) {\r
+                       logger.warn("{} has no metadata specified.", mediaFile.getName());\r
+                       return;\r
                }\r
 \r
-               return new Object[] { wrapperList };\r
+               if (StringUtils.isBlank(archiveItem.getItemHouseId())) {\r
+                       logger.warn("{} has no Item HouseID specified in metadata.", mediaFile.getName());\r
+                       return;\r
+               }\r
+\r
+               if (StringUtils.isBlank(archiveItem.getItemTitle())) {\r
+                       logger.warn("{} has no Item Title specified in metadata.", mediaFile.getName());\r
+                       return;\r
+               }\r
+\r
+               if (StringUtils.isBlank(archiveItem.getMediaHouseId())) {\r
+                       logger.warn("{} has no Media HouseID specified in metadata.", mediaFile.getName());\r
+                       return;\r
+               }\r
+\r
+               if (StringUtils.isBlank(archiveItem.getMediaTitle())) {\r
+                       logger.warn("{} has no Media Title specified in metadata.", mediaFile.getName());\r
+                       return;\r
+               }\r
+               storeArchiveItem(archiveList, archiveItem, mediaFile, catchedFile);\r
+               createCatchedFile(catchedFilePath);\r
        }\r
 \r
+       private void storeArchiveItem(final List<ArchiveItem> archiveList, ArchiveItem archiveItem, File mediaFile, File catchedFile) {\r
+               archiveList.add(archiveItem);\r
+       }\r
 }\r
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 (file)
index e6db120..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-package user.jobengine.server.steps;\r
-\r
-import java.util.ArrayList;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.Item;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.JobEngineException;\r
-\r
-/**\r
- * Itemek es mediak krealasa a MediaFileWrapper objektumok alapjan.\r
- * @author robi\r
- */\r
-public class ItemCreatorStep extends JobStep {\r
-       private static final Logger logger = LogManager.getLogger();\r
-       private static final String ITEM_MANAGER_IS_NULL = "ItemManager is null";\r
-\r
-       @StepEntry\r
-       public Object[] execute(ArrayList<MediaFileWrapper> wrapperList, IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
-\r
-               try {\r
-                       for (MediaFileWrapper wr : wrapperList) {\r
-                               try {\r
-                                       IItemManager itemManager = jobEngine.getItemManager();\r
-                                       if (itemManager == null)\r
-                                               throw new JobEngineException(ITEM_MANAGER_IS_NULL);\r
-                                       Item item = itemManager.getItemByHouseID(wr.getJSONString(MediaFileWrapper.ITEM_HOUSEID));\r
-                                       if (item == null) {\r
-                                               //add item\r
-                                               item = itemManager.createItem(MediaFileWrapper.ITEMTYPENAME,\r
-                                                               wr.getJSONString(MediaFileWrapper.ITEM_TITLE),\r
-                                                               wr.getJSONString(MediaFileWrapper.ITEM_DESCRIPTION),\r
-                                                               wr.getJSONString(MediaFileWrapper.ITEM_HOUSEID));\r
-                                       }\r
-                                       //add media\r
-                                       Media media = itemManager.createMedia(MediaFileWrapper.ITEMTYPENAME,\r
-                                                       wr.getJSONString(MediaFileWrapper.MEDIA_TITLE),\r
-                                                       wr.getJSONString(MediaFileWrapper.MEDIA_DESCRIPTION),\r
-                                                       wr.getJSONString(MediaFileWrapper.MEDIA_HOUSE_ID));\r
-                                       item.appendMedia(media);\r
-                                       wr.setItem(item);\r
-                                       wr.setMedia(media);\r
-                               } catch (Exception e1) {\r
-                                       wr.getCatchedFile().delete();\r
-                                       throw e1;\r
-                               }\r
-                       }\r
-               } catch (Exception e) {\r
-                       logger.error("", e);\r
-               }\r
-               return new Object[] { wrapperList };\r
-       }\r
-\r
-}\r
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 (file)
index 0000000..77c30ea
--- /dev/null
@@ -0,0 +1,48 @@
+package user.jobengine.server.steps;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.Item;\r
+import user.jobengine.db.Media;\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+/**\r
+ * Itemek es mediak krealasa a ArchiveItem objektum alapjan.\r
+ *\r
+ * @author robi\r
+ */\r
+public class MetadataTransformStep extends JobStep {\r
+       private static final Logger logger = LogManager.getLogger();\r
+       private static final String ITEM_MANAGER_IS_NULL = "ItemManager is null";\r
+       public static final String ITEMTYPENAME = "Generic";\r
+\r
+       @StepEntry\r
+       public Object[] execute(ArchiveItem archiveItem, IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
+               Media mediaCubeMedia = null;\r
+               try {\r
+                       IItemManager itemManager = jobEngine.getItemManager();\r
+                       if (itemManager == null)\r
+                               throw new NullPointerException(ITEM_MANAGER_IS_NULL);\r
+                       Item mediaCubeItem = itemManager.getItemByHouseID(archiveItem.getItemHouseId());\r
+                       jobRuntime.incrementProgress(50);\r
+                       if (mediaCubeItem == null)\r
+                               mediaCubeItem = itemManager.createItem(ITEMTYPENAME, archiveItem.getItemTitle(), archiveItem.getItemDescription(),\r
+                                               archiveItem.getItemHouseId());\r
+                       mediaCubeMedia = itemManager.createMedia(ITEMTYPENAME, archiveItem.getMediaTitle(), archiveItem.getMediaDescription(),\r
+                                       archiveItem.getMediaHouseId());\r
+                       mediaCubeItem.appendMedia(mediaCubeMedia);\r
+\r
+                       itemManager.mergeItemStructure(mediaCubeItem);\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+                       throw e;\r
+               } finally {\r
+                       jobRuntime.incrementProgress(100);\r
+               }\r
+               return new Object[] { mediaCubeMedia };\r
+       }\r
+\r
+}\r
index 4b3d4d1e07059782c05c5031c20cb20b2a63fe6d..49b3eb8ee0f8acdd44d1e1dfdf84fd47cb2a3415 100644 (file)
@@ -1,15 +1,22 @@
 package user.jobengine.server.steps;\r
 \r
+import java.io.File;\r
 import java.net.URL;\r
+import java.util.Arrays;\r
+import java.util.List;\r
 \r
 import javax.xml.namespace.QName;\r
 \r
+import org.apache.commons.lang.StringUtils;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 \r
+import user.commons.StoreUri;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
 import user.commons.selenio.wsclient.AudioSource;\r
 import user.commons.selenio.wsclient.Clip;\r
 import user.commons.selenio.wsclient.ClipList;\r
+import user.commons.selenio.wsclient.Exception_Exception;\r
 import user.commons.selenio.wsclient.FileSnapshot;\r
 import user.commons.selenio.wsclient.MediaFile;\r
 import user.commons.selenio.wsclient.State;\r
@@ -19,175 +26,149 @@ import user.commons.selenio.wsclient.TranscodeMgrWSService;
 import user.commons.selenio.wsclient.TranscodeRequest;\r
 import user.commons.selenio.wsclient.TranscodeSource;\r
 import user.commons.selenio.wsclient.TranscodeTask;\r
+import user.commons.selenio.wsclient.TranscodeTask.OutputFiles;\r
 import user.commons.selenio.wsclient.VideoSource;\r
+import user.jobengine.db.FileType;\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.Media;\r
+import user.jobengine.db.Store;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
 \r
 public class SelenioLowresTranscodeStep extends JobStep {\r
 \r
+       private static final String LOWRES_FILETYPE = "Low-res";\r
        private static final Logger logger = LogManager.getLogger();\r
-\r
-       private TranscodeMgrWS port = null;\r
+       private final List<State> showStoppers = Arrays.asList(State.CANCELLED, State.COMPLETE, State.FAILED);\r
+       private TranscodeMgrWS transcoder = null;\r
        private String address = null; //"http://10.10.1.71:44000/TranscodeMgrWS?wsdl";\r
        private String projectFilePath = null; //"\\\\10.10.1.71\\Data\\Blueprints\\MP4_H264_AAC_v4.zenium";\r
-       //private String sourceFilePath = "\\\\10.10.1.71\\Data\\Input\\test1.mxf";\r
+       private IItemManager manager;\r
+       private Store store;\r
+       private FileType fileType;\r
+       private String outputPath;\r
 \r
        public SelenioLowresTranscodeStep() {\r
                try {\r
                        address = System.getProperty("jobengine.selenio.address");\r
+                       if (StringUtils.isBlank(address))\r
+                               throw new NullPointerException("System is not configured properly, 'jobengine.selenio.address' startup parameter missing.");\r
+\r
                        projectFilePath = System.getProperty("jobengine.selenio.projectfilepath");\r
+                       if (StringUtils.isBlank(projectFilePath))\r
+                               throw new NullPointerException("System is not configured properly, 'jobengine.selenio.projectfilepath' startup parameter missing.");\r
                        TranscodeMgrWSService service = new TranscodeMgrWSService(new URL(address),\r
                                        new QName("http://ws.server.mediamanager.digitalrapids.ca/", "TranscodeMgrWSService"));\r
-                       port = service.getTranscodeMgrWSPort();\r
+                       transcoder = service.getTranscodeMgrWSPort();\r
                } catch (Exception e) {\r
-                       e.printStackTrace();\r
+                       logger.catching(e);\r
                }\r
        }\r
 \r
-       @StepEntry\r
-       public Object[] execute(MediaFileWrapper wrapper, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
-               //UNC FILEPATH KELL!!!!\r
-               TranscodeRequest transcodeRequest = buildTranscodeRequest(projectFilePath,\r
-                               //wrapper.getMediaFile().getAbsolutePath()\r
-                               "\\\\10.10.1.71\\Data\\Input\\test1.mxf");\r
-               TranscodeTask tt = port.submitTranscodeTask(transcodeRequest);\r
-               if (tt != null) {\r
-\r
-                       TranscodeTask ttq = port.getTranscodeTask(tt.getId());\r
-\r
-                       //logger.info("Selenio progress is {}", ttq.getProgress());\r
-\r
-                       //                      QUEUED,    IN_PROGRESS,    COMPLETE,    FAILED,    CANCELLED,    POST_PROCESS,    PRE_PROCESS,    RESERVED;\r
-                       while (ttq == null || State.QUEUED.equals(ttq.getState()) || State.IN_PROGRESS.equals(ttq.getState())\r
-                                       || State.POST_PROCESS.equals(ttq.getState()) || State.PRE_PROCESS.equals(ttq.getState())) {\r
-                               if (ttq == null) {\r
-                                       logger.error(\r
-                                                       "Error in SelenioLowresTranscoderStep: The selenio returns with null for querying task: {}",\r
-                                                       tt.getId());\r
-                                       break;\r
-                               }\r
-\r
-                               Double progress = ttq.getProgress();\r
-                               if (progress != null) {\r
-                                       logger.info("Selenio progress is {}", progress);\r
-                                       jobRuntime.incrementProgress((int) Math.round(ttq.getProgress() * 100));\r
-                               }\r
-                               Thread.sleep(2000);\r
-                               ttq = port.getTranscodeTask(tt.getId());\r
-\r
-                       }\r
-\r
-                       if (State.COMPLETE.equals(ttq.getState())) {\r
-\r
-                               jobRuntime.incrementProgress(100);\r
-\r
-                               //                              IItemManager manager = jobEngine.getItemManager();\r
-                               //                              Store lowresSystemStore = manager.getStore("Lowres");\r
-                               //                              FileType ft = manager.getFileType("Lowres video");\r
-                               //\r
-                               //                              OutputFiles of = ttq.getOutputFiles();\r
-                               //                              List<user.commons.selenio.wsclient.MediaFile> mfList = of.getOutputFiles();\r
-                               //                              if (mfList.size() != 1) {\r
-                               //                                      throw new Exception(\r
-                               //                                                      "Error in SelenioLowresTranscoderStep! There are more than 1 file in the response: "\r
-                               //                                                                      + tt.getId());\r
-                               //                              }\r
-                               //                              user.commons.selenio.wsclient.MediaFile selenioMediaFile = mfList.get(0);\r
-                               //                              File outFile = new File(selenioMediaFile.getFile());\r
-                               //                              user.jobengine.db.MediaFile mediaFile = manager.createMediaFile(outFile.getName(), ft,\r
-                               //                                              lowresSystemStore, wrapper.getMedia());\r
-                               //                              mediaFile.add();\r
-                               logger.info("SelenioLowresTranscoderStep: The transcoding has been completed for tash: " + tt.getId());\r
-\r
-                       } else if (State.FAILED.equals(ttq.getState())) {\r
-                               logger.error("Error in SelenioLowresTranscoderStep: The selenio failed for task: {} , {}, {}",\r
-                                               tt.getId(), tt.getEncodeDescription(), tt.getStatusDetail());\r
-                       } else if (State.CANCELLED.equals(ttq.getState())) {\r
-                               logger.info("SelenioLowresTranscoderStep: The step has been cancelled for task: {}", tt.getId());\r
-                       }\r
-\r
-               } else {\r
-                       logger.error("Error in SelenioLowresTranscoderStep: The selenio returns with null for transcoding request: "\r
-                                       + wrapper.getMediaFile().getAbsolutePath());\r
-               }\r
+       private TranscodeRequest buildTranscodeRequest(String projectFilePath, String sourceFilePath) throws java.lang.Exception {\r
+               Clip clip = new Clip();\r
+               MediaFile mediaFile = new MediaFile();\r
+               mediaFile.setFile(sourceFilePath);\r
+               AudioSource audioSource = new AudioSource();\r
+               audioSource.setMediaFile(mediaFile);\r
+               clip.getAudioSource().add(audioSource);\r
 \r
-               return new Object[] {};\r
-       }\r
+               VideoSource videoSource = new VideoSource();\r
+               videoSource.setMediaFile(mediaFile);\r
+               clip.setVideoSource(videoSource);\r
 \r
-       /**\r
-        * Build a TranscodeRequest. Use the values provided by the user.\r
-        */\r
-       private TranscodeRequest buildTranscodeRequest(String projectFilePath, String sourceFilePath)\r
-                       throws java.lang.Exception {\r
+               ClipList clipList = new ClipList();\r
+               clipList.getClip().add(clip);\r
 \r
-               // Use the TranscodeRequest Transcode Manager class to create a new, empty request.\r
-               TranscodeRequest transcodeRequest = new TranscodeRequest();\r
+               TranscodeSource transcodeSource = new TranscodeSource();\r
+               transcodeSource.setClipList(clipList);\r
 \r
-               // Get the Stream project or Kayak Transcode Blueprint specified\r
-               // by the user. Store the file in a Transcode Manager FileSnapshot object.\r
-               // The FileSnapshot can store the path to a file as well as the file's contents.\r
+               TranscodeRequest transcodeRequest = new TranscodeRequest();\r
                FileSnapshot project = new FileSnapshot();\r
                project.setFullPath(projectFilePath);\r
-\r
-               // Add the project or blueprint to the transcode request. This file will\r
-               // be used to process the media file input source.\r
                transcodeRequest.setProject(project);\r
+               transcodeRequest.setTranscodeSource(transcodeSource);\r
 \r
-               // Create a clip list with the input source files provided by the end user.\r
-               // The TranscodeManager ClipList is encapsulated within a TranscodeSource object\r
-               // that is added to the TranscodeRequest.\r
+               TranscodeDestination transcodeDestination = new TranscodeDestination();\r
 \r
-               // Create an empty TranscodeSource object.\r
-               TranscodeSource transcodeSource = new TranscodeSource();\r
+               transcodeDestination.setOutputWriteDirectory(outputPath);\r
+               transcodeRequest.setTranscodeDestination(transcodeDestination);\r
+               return transcodeRequest;\r
+       }\r
 \r
-               // Store the input file provided by the end user in a TranscodeManager\r
-               // MediaFile object.\r
-               MediaFile mediaFile = new MediaFile();\r
-               mediaFile.setFile(sourceFilePath);\r
+       @StepEntry\r
+       public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               manager = jobEngine.getItemManager();\r
+               store = manager.getSystemStore(true);\r
+               if (store == null)\r
+                       throw new NullPointerException("System is not configured properly, low-res system store definition missing.");\r
 \r
-               /*  \r
-                * Though this client only accepts one input file, only clip lists are\r
-                * processed by blueprints and projects. The file must\r
-                * be encapsulated within a ClipList before it is added to the \r
-                * TranscodeRequest.          \r
-                */\r
+               StoreUri sourceStoreUri = store.getSourceStoreUri(RemoteStoreProtocol.SMB);\r
+               if (sourceStoreUri == null)\r
+                       throw new NullPointerException("System is not configured properly, low-res system store SMB store URI definition missing.");\r
+               outputPath = sourceStoreUri.getRootPath();\r
 \r
-               // Create an empty Transcode Manager ClipList object.\r
-               ClipList clipList = new ClipList();\r
+               fileType = manager.getFileType(LOWRES_FILETYPE);\r
+               if (fileType == null)\r
+                       throw new NullPointerException("System is not configured properly, low-res file type definition missing.");\r
 \r
-               // Create Clip object for each input source file.\r
-               Clip clip = new Clip();\r
+               String sourceFile = archiveItem.getMediaFile().toString();\r
+               TranscodeRequest transcodeRequest = buildTranscodeRequest(projectFilePath, sourceFile);\r
+               TranscodeTask transcodeTask = transcoder.submitTranscodeTask(transcodeRequest);\r
 \r
-               // A Clip always consists of one video file and at least one\r
-               // audio file. Store the source files in AudioSource and VideoSource\r
-               // Transcode Manager API objects.\r
-               AudioSource audioSource = new AudioSource();\r
-               VideoSource videoSource = new VideoSource();\r
+               if (transcodeTask == null)\r
+                       throw new NullPointerException("Unable to submit transcode task, server response is empty for transcode input: " + sourceFile);\r
 \r
-               // In this case the client only accepts one file -- a video file.\r
-               // Video files can be used as the audio source of a clip as long\r
-               // as the file contains both elementary video and audio streams.\r
-               //\r
-               // Add the file to the AudioSource and VideoSource objects.\r
-               audioSource.setMediaFile(mediaFile);\r
-               videoSource.setMediaFile(mediaFile);\r
+               transcodeTask = monitor(jobRuntime, sourceFile, transcodeTask);\r
 \r
-               // Add the AudioSource and VideoSource objects to the Clip.\r
-               // Add the Clip to the ClipList\r
-               clip.getAudioSource().add(audioSource);\r
-               clip.setVideoSource(videoSource);\r
-               clipList.getClip().add(clip);\r
+               jobRuntime.incrementProgress(100);\r
 \r
-               // Add the ClipList to the TranscodeSource\r
-               transcodeSource.setClipList(clipList);\r
+               //jobRuntime.setDescription(String.valueOf(jobRuntime.getDescription())  + transcodeTask.getStatusDetail());\r
+               processState(transcodeTask, jobEngine, mediaCubeMedia);\r
+               return null;\r
+       }\r
 \r
-               // Add the TranscodeSource to the Transcoderequest\r
-               transcodeRequest.setTranscodeSource(transcodeSource);\r
+       private TranscodeTask monitor(IJobRuntime jobRuntime, String sourceFile, TranscodeTask transcodeTask) throws Exception_Exception, InterruptedException {\r
+               while (true) {\r
+                       transcodeTask = transcoder.getTranscodeTask(transcodeTask.getId());\r
+                       if (transcodeTask == null)\r
+                               throw new NullPointerException("Unable to query transcode task, server response is empty for transcode input: " + sourceFile);\r
 \r
-               TranscodeDestination transcodeDestination = new TranscodeDestination();\r
-               transcodeDestination.setOutputWriteDirectory("\\\\10.10.1.26\\mclowres\\www\\video");\r
-               transcodeRequest.setTranscodeDestination(transcodeDestination);\r
-               return transcodeRequest;\r
+                       Double progress = transcodeTask.getProgress();\r
+                       if (progress != null)\r
+                               jobRuntime.incrementProgress((int) Math.round(progress * 100));\r
+\r
+                       if (showStoppers.contains(transcodeTask.getState()))\r
+                               break;\r
+\r
+                       Thread.sleep(2000);\r
+               }\r
+               return transcodeTask;\r
+       }\r
+\r
+       private void onTranscodeComplete(TranscodeTask transcodeTask, IJobEngine jobEngine, Media mediaCubeMedia) {\r
+               OutputFiles of = transcodeTask.getOutputFiles();\r
+               List<user.commons.selenio.wsclient.MediaFile> outputs = of.getOutputFiles();\r
+               if (outputs.size() != 1)\r
+                       throw new IndexOutOfBoundsException("There are more than 1 file in the response: " + transcodeTask.getId());\r
+\r
+               user.commons.selenio.wsclient.MediaFile selenioMediaFile = outputs.get(0);\r
+               File outFile = new File(selenioMediaFile.getFile());\r
+               user.jobengine.db.MediaFile mediaFile = manager.createMediaFile(outFile.getName(), fileType, store, mediaCubeMedia);\r
+               mediaFile.add();\r
+       }\r
+\r
+       @SuppressWarnings("incomplete-switch")\r
+       private void processState(TranscodeTask transcodeTask, IJobEngine jobEngine, Media mediaCubeMedia) throws Exception {\r
+               switch (transcodeTask.getState()) {\r
+               case CANCELLED:\r
+                       throw new IllegalStateException("Transcode task was CANCELLED.");\r
+               case FAILED:\r
+                       throw new IllegalStateException("Transcode task has FAILED.");\r
+               case COMPLETE:\r
+                       onTranscodeComplete(transcodeTask, jobEngine, mediaCubeMedia);\r
+                       break;\r
+               }\r
        }\r
 \r
 }\r
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 (file)
index e50bbea..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-package user.jobengine.server.steps;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.RemoteFile;\r
-import user.commons.StoreUri;\r
-import user.commons.remotestore.IProgressEventListener;\r
-import user.commons.remotestore.IStatusEventListener;\r
-import user.commons.remotestore.ProgressEvent;\r
-import user.commons.remotestore.RemoteStoreProtocol;\r
-import user.commons.remotestore.StatusEvent;\r
-import user.jobengine.db.FileType;\r
-import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.Media;\r
-import user.jobengine.db.MediaFile;\r
-import user.jobengine.db.Store;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.JobEngineException;\r
-\r
-public class TSMBackupMediaWrapperStep extends JobStep {\r
-       private static final Logger logger = LogManager.getLogger();\r
-       private Media media;\r
-       private IItemManager manager;\r
-       private File file;\r
-       private String sourceFile;\r
-       private String sourceFileName;\r
-       private Store targetStore;\r
-       private StoreUri targetStoreUri;\r
-       private FileType fileType;\r
-\r
-       private void setAndCheck(MediaFileWrapper wrapper, IJobEngine jobEngine) throws JobEngineException, IOException {\r
-               media = wrapper.getMedia();\r
-               if (media == null)\r
-                       throw new JobEngineException("Missing Media in MediaFileWrapper parameter.");\r
-               manager = jobEngine.getItemManager();\r
-               if (manager == null)\r
-                       throw new JobEngineException("Missing ItemManager.");\r
-               file = wrapper.getMediaFile();\r
-               if (file == null)\r
-                       throw new JobEngineException("Missing File in MediaFileWrapper parameter.");\r
-               sourceFile = file.getCanonicalPath();\r
-               if (!file.exists())\r
-                       throw new JobEngineException("File not exists: " + sourceFile);\r
-               sourceFileName = file.getName();\r
-               targetStore = manager.getSystemStore(false);\r
-               if (targetStore == null)\r
-                       throw new JobEngineException("Missing High-res system store.");\r
-               targetStoreUri = targetStore.getSourceStoreUri(RemoteStoreProtocol.TSM);\r
-               if (targetStoreUri == null)\r
-                       throw new JobEngineException("Missing TSM store uri from High-res system store.");\r
-               fileType = manager.getFileType("High-res");\r
-               if (fileType == null)\r
-                       throw new JobEngineException("Missing High-res file type.");\r
-       }\r
-\r
-       @StepEntry\r
-       public Object[] execute(MediaFileWrapper wrapper, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
-               try {\r
-                       setAndCheck(wrapper, jobEngine);\r
-\r
-                       StoreUri sourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, file.getParent());\r
-\r
-                       final IJobRuntime runtime = jobRuntime;\r
-                       sourceUri.addProgressListener(new IProgressEventListener() {\r
-                               @Override\r
-                               public void progressChanged(ProgressEvent evt) {\r
-                                       runtime.incrementProgress(evt.getProgress());\r
-                               }\r
-                       });\r
-                       sourceUri.addStatusListener(new IStatusEventListener() {\r
-                               @Override\r
-                               public void statusChanged(StatusEvent evt) {\r
-                                       evt.setCancel(!canContinue());\r
-                               }\r
-                       });\r
-                       RemoteFile remoteFile = sourceUri.transferFrom(targetStoreUri, sourceFileName, sourceFileName);\r
-\r
-                       MediaFile mediaFile = manager.createMediaFile(sourceFileName, fileType, targetStore, media);\r
-                       media.appendMediaFile(mediaFile);\r
-\r
-                       manager.mergeItemStructure(wrapper.getItem());\r
-               } catch (Exception e) {\r
-                       wrapper.getCatchedFile().delete();\r
-                       throw e;\r
-               }\r
-               return new Object[] { wrapper.getItem().getMedias().get(0) };\r
-       }\r
-\r
-       @Override\r
-       public void cleanup() {\r
-       }\r
-}\r
index 6864f48fd49cc9d0fa06294173e9b1406b56de5e..e5220b29085b4e19b1c38b346ea282438bbb8652 100644 (file)
@@ -1,5 +1,8 @@
 package user.jobengine.server.steps;\r
 \r
+import java.io.IOException;\r
+import java.nio.file.Path;\r
+\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 \r
@@ -10,149 +13,78 @@ import user.commons.remotestore.IStatusEventListener;
 import user.commons.remotestore.ProgressEvent;\r
 import user.commons.remotestore.RemoteStoreProtocol;\r
 import user.commons.remotestore.StatusEvent;\r
+import user.jobengine.db.FileType;\r
 import user.jobengine.db.IItemManager;\r
 import user.jobengine.db.Media;\r
 import user.jobengine.db.MediaFile;\r
 import user.jobengine.db.Store;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
+import user.jobengine.server.JobEngineException;\r
 \r
 public class TSMBackupStep extends JobStep {\r
-       // @StepEntry\r
-       // public Object[] execute(Media media, IJobEngine jobEngine,\r
-       // IJobRuntime jobRuntime) throws Exception {\r
-       // TSMClient tsm = null;\r
-       // tsm = new TSMClient("JobEngine");\r
-       // tsm.connect(null, null);\r
-       // log_info("Connected to TSM");\r
-       // try {\r
-       // log_info("Trying register filespace");\r
-       // tsm.registerFilespace(File.separator + "JOBENGINE", "JOBENGINE",\r
-       // 'C', "JOBENGINE", 10L * 1024L * 1024L * 1024L, 0);\r
-       // } catch (Exception e) {\r
-       // log_info(e.getMessage());\r
-       // }\r
-       //\r
-       // IItemManager manager = jobEngine.getItemManager();\r
-       // final IJobRuntime runtime = jobRuntime;\r
-       //\r
-       // Store systemStore = manager.getSystemStore(false);\r
-       // Store mfStore = null;\r
-       // MediaFile mediaFile = null;\r
-       // for (MediaFile mf : media.getMediaFiles()) {\r
-       // mediaFile = mf;\r
-       // mfStore = mf.getStore();\r
-       // if (mfStore.getId() == systemStore.getId())\r
-       // break;\r
-       // }\r
-       //\r
-       // if (mediaFile == null)\r
-       // throw new Exception("Can not find HIRES media file");\r
-       // if (mfStore == null)\r
-       // throw new Exception("Can not find HIRES store");\r
-       //\r
-       // String path = mediaFile.getRelativePath();\r
-       // int pos = path.lastIndexOf("/");\r
-       // String fileName = pos > -1 ? path.substring(pos, path.length() - pos)\r
-       // : path;\r
-       //\r
-       // try {\r
-       // TSMBackupFileObject backupObject = new TSMBackupFileObject(\r
-       // File.separator + "JOBENGINE", File.separator + "JOBENGINE",\r
-       // File.separator + fileName);\r
-       // StoreUri uri = mfStore.getSourceStoreUri(RemoteStoreProtocol.LOCAL);\r
-       // // TODO RemoteFile konverzi�, MediaFile-ba be�p�teni\r
-       //\r
-       // String sourceFilePath = DirectoryUtils.combine(uri.getFullPath(),\r
-       // fileName);\r
-       // final File file = new File(sourceFilePath);\r
-       // if (!file.exists())\r
-       // throw new Exception("File not exists: " + sourceFilePath);\r
-       // final long fileSize = file.length();\r
-       // log_info("Saving: " + sourceFilePath + ", size:" + fileSize);\r
-       // backupObject.setLocalFilePath(sourceFilePath);\r
-       // backupObject.setListener(new TSMObjectListener() {\r
-       // private long transferredBytes;\r
-       // private int lastProgress;\r
-       //\r
-       // public void bytesWorked(long bytes) {\r
-       // transferredBytes += bytes;\r
-       // int progress = fileSize == 0 ? 100\r
-       // : (int) (transferredBytes * 100 / fileSize);\r
-       // if (progress > lastProgress + 4) {\r
-       // log_info("incrementProgress: " + progress);\r
-       // runtime.incrementProgress(progress);\r
-       // lastProgress = progress;\r
-       // }\r
-       // }\r
-       // });\r
-       // runtime.incrementProgress(100);\r
-       // tsm.send(backupObject);\r
-       // } catch (Exception e) {\r
-       // throw new Exception(e);\r
-       // } finally {\r
-       // tsm.disconnect();\r
-       // log_info("Disconnected");\r
-       // }\r
-       // return null;\r
-       // }\r
-\r
        private static final Logger logger = LogManager.getLogger();\r
+       private IItemManager manager;\r
+       private Path inputFilePath;\r
+       private Store targetStore;\r
+       private StoreUri targetStoreUri;\r
+       private FileType fileType;\r
 \r
        @StepEntry\r
-       public Object[] execute(Media media, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+       public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               try {\r
+                       setAndCheck(jobEngine, archiveItem, mediaCubeMedia);\r
 \r
-               RemoteFile result = null;\r
-               final IJobRuntime runtime = jobRuntime;\r
-               IItemManager manager = jobEngine.getItemManager();\r
-               Store systemStore = manager.getSystemStore(false);\r
-               Store mfStore = null;\r
-               MediaFile mediaFile = null;\r
-               for (MediaFile mf : media.getMediaFiles()) {\r
-                       mediaFile = mf;\r
-                       mfStore = mf.getStore();\r
-                       if (mfStore.getId() == systemStore.getId())\r
-                               break;\r
-               }\r
+                       StoreUri sourceUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, inputFilePath.getParent().toString());\r
 \r
-               if (mediaFile == null)\r
-                       throw new Exception("Can not find HIRES media file");\r
-               if (mfStore == null)\r
-                       throw new Exception("Can not find HIRES store");\r
+                       final IJobRuntime runtime = jobRuntime;\r
+                       sourceUri.addProgressListener(new IProgressEventListener() {\r
+                               @Override\r
+                               public void progressChanged(ProgressEvent evt) {\r
+                                       runtime.incrementProgress(evt.getProgress());\r
+                               }\r
+                       });\r
+                       sourceUri.addStatusListener(new IStatusEventListener() {\r
+                               @Override\r
+                               public void statusChanged(StatusEvent evt) {\r
+                                       evt.setCancel(!canContinue());\r
+                               }\r
+                       });\r
+                       String sourceFileName = inputFilePath.toFile().getName();\r
+                       RemoteFile remoteFile = sourceUri.transferFrom(targetStoreUri, sourceFileName, sourceFileName);\r
 \r
-               String path = mediaFile.getRelativePath();\r
-               logger.info("Relative path is: " + path);\r
-               if (path == null)\r
-                       throw new Exception("Path is null!");\r
-               int pos = path.lastIndexOf("/");\r
-               // String sourceFileName = pos > -1 ? path.substring(pos, path.length()\r
-               // - pos) : path;\r
-               String sourceFileName = pos > -1 ? path.substring(pos + 1, path.length()) : path;\r
-               logger.info("SourceFileName is: " + sourceFileName);\r
-               if (sourceFileName == null)\r
-                       throw new NullPointerException("Source FileName is null");\r
+                       MediaFile mediaFile = manager.createMediaFile(sourceFileName, fileType, targetStore, mediaCubeMedia);\r
+                       mediaCubeMedia.appendMediaFile(mediaFile);\r
 \r
-               StoreUri sourceUri = mfStore.getSourceStoreUri(RemoteStoreProtocol.LOCAL);\r
-               StoreUri target = new StoreUri();\r
-               target.setProtocol(RemoteStoreProtocol.TSM);\r
-               logger.info("Target is: " + target.getProtocol());\r
-               sourceUri.addProgressListener(new IProgressEventListener() {\r
-                       @Override\r
-                       public void progressChanged(ProgressEvent evt) {\r
-                               runtime.incrementProgress(evt.getProgress());\r
-                       }\r
-               });\r
-               sourceUri.addStatusListener(new IStatusEventListener() {\r
-                       @Override\r
-                       public void statusChanged(StatusEvent evt) {\r
-                               evt.setCancel(!canContinue());\r
-                       }\r
-               });\r
-               result = sourceUri.transferFrom(target, sourceFileName, sourceFileName);\r
-               return new Object[] { result };\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+                       if (!archiveItem.removeCatchedFile())\r
+                               logger.error("Can not delete .catched file for {}", inputFilePath.toString());\r
+                       throw e;\r
+               }\r
+               return null;\r
        }\r
 \r
-       @Override\r
-       public void cleanup() {\r
+       private void setAndCheck(IJobEngine jobEngine, ArchiveItem archiveItem, Media mediaCubeMedia) throws JobEngineException, IOException {\r
+               manager = jobEngine.getItemManager();\r
+               if (manager == null)\r
+                       throw new NullPointerException("Missing ItemManager.");\r
+               inputFilePath = archiveItem.getMediaFile();\r
+               if (inputFilePath == null)\r
+                       throw new NullPointerException("Missing File in MediaFileWrapper parameter.");\r
+               if (!inputFilePath.toFile().exists())\r
+                       throw new IOException("File not exists: " + inputFilePath.toString());\r
+               targetStore = manager.getSystemStore(false);\r
+               if (targetStore == null)\r
+                       throw new NullPointerException("Missing High-res system store.");\r
+               targetStoreUri = targetStore.getSourceStoreUri(RemoteStoreProtocol.TSM);\r
+               if (targetStoreUri == null)\r
+                       throw new NullPointerException("Missing TSM store uri from High-res system store.");\r
+               fileType = manager.getFileType("High-res");\r
+               if (fileType == null)\r
+                       throw new NullPointerException("Missing High-res file type.");\r
+               if (mediaCubeMedia == null)\r
+                       throw new NullPointerException("Input parameter 'mediaCubeMedia' is null.");\r
+\r
        }\r
 }\r
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 (file)
index 0000000..8a30120
--- /dev/null
@@ -0,0 +1,158 @@
+package user.jobengine.server.steps;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import user.commons.RemoteFile;\r
+import user.commons.StoreUri;\r
+import user.commons.remotestore.IProgressEventListener;\r
+import user.commons.remotestore.IStatusEventListener;\r
+import user.commons.remotestore.ProgressEvent;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
+import user.commons.remotestore.StatusEvent;\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.Media;\r
+import user.jobengine.db.MediaFile;\r
+import user.jobengine.db.Store;\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class TSMBackupStep_orig extends JobStep {\r
+       // @StepEntry\r
+       // public Object[] execute(Media media, IJobEngine jobEngine,\r
+       // IJobRuntime jobRuntime) throws Exception {\r
+       // TSMClient tsm = null;\r
+       // tsm = new TSMClient("JobEngine");\r
+       // tsm.connect(null, null);\r
+       // log_info("Connected to TSM");\r
+       // try {\r
+       // log_info("Trying register filespace");\r
+       // tsm.registerFilespace(File.separator + "JOBENGINE", "JOBENGINE",\r
+       // 'C', "JOBENGINE", 10L * 1024L * 1024L * 1024L, 0);\r
+       // } catch (Exception e) {\r
+       // log_info(e.getMessage());\r
+       // }\r
+       //\r
+       // IItemManager manager = jobEngine.getItemManager();\r
+       // final IJobRuntime runtime = jobRuntime;\r
+       //\r
+       // Store systemStore = manager.getSystemStore(false);\r
+       // Store mfStore = null;\r
+       // MediaFile mediaFile = null;\r
+       // for (MediaFile mf : media.getMediaFiles()) {\r
+       // mediaFile = mf;\r
+       // mfStore = mf.getStore();\r
+       // if (mfStore.getId() == systemStore.getId())\r
+       // break;\r
+       // }\r
+       //\r
+       // if (mediaFile == null)\r
+       // throw new Exception("Can not find HIRES media file");\r
+       // if (mfStore == null)\r
+       // throw new Exception("Can not find HIRES store");\r
+       //\r
+       // String path = mediaFile.getRelativePath();\r
+       // int pos = path.lastIndexOf("/");\r
+       // String fileName = pos > -1 ? path.substring(pos, path.length() - pos)\r
+       // : path;\r
+       //\r
+       // try {\r
+       // TSMBackupFileObject backupObject = new TSMBackupFileObject(\r
+       // File.separator + "JOBENGINE", File.separator + "JOBENGINE",\r
+       // File.separator + fileName);\r
+       // StoreUri uri = mfStore.getSourceStoreUri(RemoteStoreProtocol.LOCAL);\r
+       // // TODO RemoteFile konverzi�, MediaFile-ba be�p�teni\r
+       //\r
+       // String sourceFilePath = DirectoryUtils.combine(uri.getFullPath(),\r
+       // fileName);\r
+       // final File file = new File(sourceFilePath);\r
+       // if (!file.exists())\r
+       // throw new Exception("File not exists: " + sourceFilePath);\r
+       // final long fileSize = file.length();\r
+       // log_info("Saving: " + sourceFilePath + ", size:" + fileSize);\r
+       // backupObject.setLocalFilePath(sourceFilePath);\r
+       // backupObject.setListener(new TSMObjectListener() {\r
+       // private long transferredBytes;\r
+       // private int lastProgress;\r
+       //\r
+       // public void bytesWorked(long bytes) {\r
+       // transferredBytes += bytes;\r
+       // int progress = fileSize == 0 ? 100\r
+       // : (int) (transferredBytes * 100 / fileSize);\r
+       // if (progress > lastProgress + 4) {\r
+       // log_info("incrementProgress: " + progress);\r
+       // runtime.incrementProgress(progress);\r
+       // lastProgress = progress;\r
+       // }\r
+       // }\r
+       // });\r
+       // runtime.incrementProgress(100);\r
+       // tsm.send(backupObject);\r
+       // } catch (Exception e) {\r
+       // throw new Exception(e);\r
+       // } finally {\r
+       // tsm.disconnect();\r
+       // log_info("Disconnected");\r
+       // }\r
+       // return null;\r
+       // }\r
+\r
+       private static final Logger logger = LogManager.getLogger();\r
+\r
+       @StepEntry\r
+       public Object[] execute(Media media, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+\r
+               RemoteFile result = null;\r
+               final IJobRuntime runtime = jobRuntime;\r
+               IItemManager manager = jobEngine.getItemManager();\r
+               Store systemStore = manager.getSystemStore(false);\r
+               Store mfStore = null;\r
+               MediaFile mediaFile = null;\r
+               for (MediaFile mf : media.getMediaFiles()) {\r
+                       mediaFile = mf;\r
+                       mfStore = mf.getStore();\r
+                       if (mfStore.getId() == systemStore.getId())\r
+                               break;\r
+               }\r
+\r
+               if (mediaFile == null)\r
+                       throw new Exception("Can not find HIRES media file");\r
+               if (mfStore == null)\r
+                       throw new Exception("Can not find HIRES store");\r
+\r
+               String path = mediaFile.getRelativePath();\r
+               logger.info("Relative path is: " + path);\r
+               if (path == null)\r
+                       throw new Exception("Path is null!");\r
+               int pos = path.lastIndexOf("/");\r
+               // String sourceFileName = pos > -1 ? path.substring(pos, path.length()\r
+               // - pos) : path;\r
+               String sourceFileName = pos > -1 ? path.substring(pos + 1, path.length()) : path;\r
+               logger.info("SourceFileName is: " + sourceFileName);\r
+               if (sourceFileName == null)\r
+                       throw new NullPointerException("Source FileName is null");\r
+\r
+               StoreUri sourceUri = mfStore.getSourceStoreUri(RemoteStoreProtocol.LOCAL);\r
+               StoreUri target = new StoreUri();\r
+               target.setProtocol(RemoteStoreProtocol.TSM);\r
+               logger.info("Target is: " + target.getProtocol());\r
+               sourceUri.addProgressListener(new IProgressEventListener() {\r
+                       @Override\r
+                       public void progressChanged(ProgressEvent evt) {\r
+                               runtime.incrementProgress(evt.getProgress());\r
+                       }\r
+               });\r
+               sourceUri.addStatusListener(new IStatusEventListener() {\r
+                       @Override\r
+                       public void statusChanged(StatusEvent evt) {\r
+                               evt.setCancel(!canContinue());\r
+                       }\r
+               });\r
+               result = sourceUri.transferFrom(target, sourceFileName, sourceFileName);\r
+               return new Object[] { result };\r
+       }\r
+\r
+       @Override\r
+       public void cleanup() {\r
+       }\r
+}\r
index 49c32fb18dce253f6f587677e3bea94a5273e99b..b144e13626d11fbcec979c60fb062304eeda6940 100644 (file)
@@ -46,23 +46,25 @@ public class ItemManager extends MemoryCache implements IItemManager {
        public static String DBUSERNAME = "jobengine.db.user";\r
        public static String DBPASSWORD = "jobengine.db.password";\r
 \r
+       static ItemManager currentInstance = null;\r
+\r
+       static public ItemManager getInstance() {\r
+               return currentInstance;\r
+       }\r
+\r
        private Map<Class<? extends IEntityBase>, IEntityBaseDAO> baseDAOs = new Hashtable<Class<? extends IEntityBase>, IEntityBaseDAO>();\r
        private IChangeHandler itemTypeChangeFactory;\r
        private int connectionPoolSize = 5;\r
+\r
        private ContextPool contextPool = null;\r
        String dbDriver = "com.ibm.db2.jcc.DB2Driver";\r
-\r
        String dbUrl = null;\r
+\r
        String dbUser = null;\r
        String dbPassword = null;\r
 \r
-       static ItemManager currentInstance = null;\r
        private SignalServer signalServer;\r
 \r
-       static public ItemManager getInstance() {\r
-               return currentInstance;\r
-       }\r
-\r
        public ItemManager() {\r
                initializeItemManager(signalServer);\r
                connect();\r
@@ -73,20 +75,16 @@ public class ItemManager extends MemoryCache implements IItemManager {
        // initializeItemManager(signalServer);\r
        // }\r
 \r
-       private void initializeItemManager(SignalServer signalServer) {\r
-               this.signalServer = signalServer;\r
-               initialize();\r
-               dbUrl = System.getProperty(DBURL);\r
-               dbUser = System.getProperty(DBUSERNAME);\r
-               dbPassword = System.getProperty(DBPASSWORD);\r
-       }\r
-\r
        public void activate() {\r
                //logger.info("ItemManager activated.");\r
        }\r
 \r
-       public void deactivate() {\r
-               //logger.info("ItemManager deactivated.");\r
+       @Override\r
+       public void add(IEntityBase entity) {\r
+               traceIn();\r
+               IEntityBaseDAO dbmanager = getBaseDAO(entity.getClass());\r
+               dbmanager.add(entity);\r
+               traceOut();\r
        }\r
 \r
        public synchronized void bindSignalServerService(SignalServer service) {\r
@@ -98,28 +96,10 @@ public class ItemManager extends MemoryCache implements IItemManager {
                }\r
        }\r
 \r
-       public synchronized void unbindSignalServerService(SignalServer service) {\r
-               try {\r
-                       disconnect();\r
-                       logger.info("ItemManager service stopped.");\r
-               } catch (Exception exc) {\r
-                       logger.error(exc);\r
-               }\r
-       }\r
-\r
-       @Override\r
-       public void add(IEntityBase entity) {\r
-               traceIn();\r
-               IEntityBaseDAO dbmanager = getBaseDAO(entity.getClass());\r
-               dbmanager.add(entity);\r
-               traceOut();\r
-       }\r
-\r
        @Override\r
        public void connect() {\r
                traceIn();\r
-               ConnectionPoolProperties properties = new ConnectionPoolProperties(dbDriver, dbUrl, dbUser, dbPassword, false,\r
-                               1000);\r
+               ConnectionPoolProperties properties = new ConnectionPoolProperties(dbDriver, dbUrl, dbUser, dbPassword, false, 1000);\r
                properties.add(ResourcePool.POOLSIZE, connectionPoolSize);\r
                contextPool = new ContextPool(properties);\r
 \r
@@ -137,8 +117,7 @@ public class ItemManager extends MemoryCache implements IItemManager {
        }\r
 \r
        @Override\r
-       public FileType createFileType(String name, String description, String videoCodec, String audioCodec,\r
-                       int videoTracks, int audioTracks, float frameRate) {\r
+       public FileType createFileType(String name, String description, String videoCodec, String audioCodec, int videoTracks, int audioTracks, float frameRate) {\r
                traceIn();\r
                FileType entity = new FileType();\r
                entity.setPersister(this);\r
@@ -154,25 +133,8 @@ public class ItemManager extends MemoryCache implements IItemManager {
        }\r
 \r
        @Override\r
-       public WorkflowAction createWorkflowAction(Timestamp touched, Timestamp started, Timestamp finished,\r
-                       boolean successful, String houseId, String description, String source, String destination, String tag,\r
-                       long size) {\r
-               traceIn();\r
-\r
-               WorkflowAction entity = new WorkflowAction();\r
-               entity.setPersister(this);\r
-               entity.setTouched(touched);\r
-               entity.setStarted(started);\r
-               entity.setFinished(finished);\r
-               entity.setSuccessful(successful);\r
-               entity.setHouseId(houseId);\r
-               entity.setDescription(description);\r
-               entity.setSource(source);\r
-               entity.setDestination(destination);\r
-               entity.setTag(tag);\r
-               entity.setSize(size);\r
-               traceOut();\r
-               return entity;\r
+       public Item createItem(String name, String description, String houseId) {\r
+               return createItem(null, name, description, houseId);\r
        }\r
 \r
        @Override\r
@@ -189,11 +151,6 @@ public class ItemManager extends MemoryCache implements IItemManager {
                return entity;\r
        }\r
 \r
-       @Override\r
-       public Item createItem(String name, String description, String houseId) {\r
-               return createItem(null, name, description, houseId);\r
-       }\r
-\r
        @Override\r
        public ItemType createItemType(String name, String description) {\r
                traceIn();\r
@@ -235,11 +192,6 @@ public class ItemManager extends MemoryCache implements IItemManager {
                return entity;\r
        }\r
 \r
-       @Override\r
-       public Metadata createMetadata(MetadataElement mde, MdType... flags) {\r
-               return createMetadata(mde, ListType.LABEL, GuiType.TEXTBOX, null, null, null, flags);\r
-       }\r
-\r
        @Override\r
        public Metadata createMetadata(MetadataElement mde, GuiType guiType, MdType... flags) {\r
                return createMetadata(mde, ListType.LABEL, guiType, null, null, null, flags);\r
@@ -251,8 +203,8 @@ public class ItemManager extends MemoryCache implements IItemManager {
        }\r
 \r
        @Override\r
-       public Metadata createMetadata(MetadataElement mde, ListType listType, GuiType guiType, String sqlField,\r
-                       StaticTables staticTable, String pojoField, MdType... flags) {\r
+       public Metadata createMetadata(MetadataElement mde, ListType listType, GuiType guiType, String sqlField, StaticTables staticTable, String pojoField,\r
+                       MdType... flags) {\r
                traceIn();\r
                Metadata entity = new Metadata();\r
                int values = MdType.getValues(flags);\r
@@ -274,6 +226,11 @@ public class ItemManager extends MemoryCache implements IItemManager {
                return entity;\r
        }\r
 \r
+       @Override\r
+       public Metadata createMetadata(MetadataElement mde, MdType... flags) {\r
+               return createMetadata(mde, ListType.LABEL, GuiType.TEXTBOX, null, null, null, flags);\r
+       }\r
+\r
        @Override\r
        public MetadataElement createMetadataElement(String name, String description, MetadataType mdt) {\r
                return createMetadataElement(name, description, mdt, false);\r
@@ -302,8 +259,7 @@ public class ItemManager extends MemoryCache implements IItemManager {
        }\r
 \r
        @Override\r
-       public MetadataType createMetadataType(String name, BaseType baseType, String javaType, String dataType,\r
-                       int length) {\r
+       public MetadataType createMetadataType(String name, BaseType baseType, String javaType, String dataType, int length) {\r
                traceIn();\r
                MetadataType entity = new MetadataType();\r
                entity.setPersister(this);\r
@@ -369,8 +325,8 @@ public class ItemManager extends MemoryCache implements IItemManager {
        }\r
 \r
        @Override\r
-       public StoreUri createStoreUri(RemoteStoreProtocol protocol, String uri, int portNumber, boolean isStream,\r
-                       boolean isSource, boolean isTarget, String userName, String password, String rootPath) {\r
+       public StoreUri createStoreUri(RemoteStoreProtocol protocol, String uri, int portNumber, boolean isStream, boolean isSource, boolean isTarget,\r
+                       String userName, String password, String rootPath) {\r
                traceIn();\r
                StoreUri entity = new StoreUri();\r
                entity.setPersister(this);\r
@@ -400,6 +356,31 @@ public class ItemManager extends MemoryCache implements IItemManager {
                return entity;\r
        }\r
 \r
+       @Override\r
+       public WorkflowAction createWorkflowAction(Timestamp touched, Timestamp started, Timestamp finished, boolean successful, String houseId, String description,\r
+                       String source, String destination, String tag, long size) {\r
+               traceIn();\r
+\r
+               WorkflowAction entity = new WorkflowAction();\r
+               entity.setPersister(this);\r
+               entity.setTouched(touched);\r
+               entity.setStarted(started);\r
+               entity.setFinished(finished);\r
+               entity.setSuccessful(successful);\r
+               entity.setHouseId(houseId);\r
+               entity.setDescription(description);\r
+               entity.setSource(source);\r
+               entity.setDestination(destination);\r
+               entity.setTag(tag);\r
+               entity.setSize(size);\r
+               traceOut();\r
+               return entity;\r
+       }\r
+\r
+       public void deactivate() {\r
+               //logger.info("ItemManager deactivated.");\r
+       }\r
+\r
        /**\r
         * Lez�rja a kapcsolatot az Adatb�zis kontextus er�forr�s kezel�.\r
         */\r
@@ -463,6 +444,19 @@ public class ItemManager extends MemoryCache implements IItemManager {
                return context;\r
        }\r
 \r
+       @Override\r
+       public List<ItemType> getDynamicItemTypes() {\r
+               List<ItemType> result = new ArrayList<ItemType>();\r
+               List<ItemType> itemTypes = getItemTypes();\r
+               if (itemTypes != null) {\r
+                       for (ItemType it : itemTypes) {\r
+                               if (!it.getIsStatic())\r
+                                       result.add(it);\r
+                       }\r
+               }\r
+               return result;\r
+       }\r
+\r
        @Override\r
        public FileType getFileType(String name) {\r
                FileTypeDAO dao = (FileTypeDAO) getBaseDAO(FileType.class);\r
@@ -509,14 +503,31 @@ public class ItemManager extends MemoryCache implements IItemManager {
        }\r
 \r
        @Override\r
-       public List<IEntityBase> getShots(long id) {\r
-               List<IEntityBase> result = null;\r
-               ShotDAO dao = (ShotDAO) getBaseDAO(Shot.class);\r
-               if (dao != null)\r
-                       result = dao.getShots(id);\r
+       public Item getItemByHouseID(String houseID) {\r
+               traceIn();\r
+               Item result = null;\r
+               SearchFilter filter = new SearchFilter();\r
+               filter.setMetadata(getStaticItemType().getMetadata("Anyag house ID"));\r
+               filter.setValueLogic(FilterValueLogic.EQUALS);\r
+               filter.setValues(Arrays.asList((Object) houseID));\r
+               QueryObject qo = new QueryObject();\r
+               qo.setFilters(Arrays.asList(filter));\r
+\r
+               // Exercise\r
+               List<SearchResult> searchResult = searchItem(qo);\r
+\r
+               if (searchResult != null && searchResult.size() > 0 && searchResult.get(0).getItemCount() == 1)\r
+                       result = searchResult.get(0).getItems().get(0);\r
+               traceOut();\r
                return result;\r
        }\r
 \r
+       @Override\r
+       public ItemType getItemType(String itemTypeName) {\r
+               ItemTypeDAO dbmanager = (ItemTypeDAO) getBaseDAO(ItemType.class);\r
+               return dbmanager.get(itemTypeName);\r
+       }\r
+\r
        @Override\r
        @SuppressWarnings("unchecked")\r
        public List<ItemType> getItemTypes() {\r
@@ -575,6 +586,13 @@ public class ItemManager extends MemoryCache implements IItemManager {
                return (MetadataType) get(MetadataType.class, id);\r
        }\r
 \r
+       @SuppressWarnings("unchecked")\r
+       @Override\r
+       public List<Job> getRunningJobs(String template) {\r
+               JobDAO dbmanager = (JobDAO) getBaseDAO(Job.class);\r
+               return (List<Job>) (List<?>) dbmanager.getAllIncomplete(template);\r
+       }\r
+\r
        @Override\r
        public Scene getScene(long id) {\r
                return (Scene) get(Scene.class, id);\r
@@ -594,6 +612,30 @@ public class ItemManager extends MemoryCache implements IItemManager {
                return (Shot) get(Shot.class, id);\r
        }\r
 \r
+       @Override\r
+       public List<IEntityBase> getShots(long id) {\r
+               List<IEntityBase> result = null;\r
+               ShotDAO dao = (ShotDAO) getBaseDAO(Shot.class);\r
+               if (dao != null)\r
+                       result = dao.getShots(id);\r
+               return result;\r
+       }\r
+\r
+       @Override\r
+       public ItemType getStaticItemType() {\r
+               ItemType result = null;\r
+               List<ItemType> itemTypes = getItemTypes();\r
+               if (itemTypes != null) {\r
+                       for (ItemType it : itemTypes) {\r
+                               if (it.getIsStatic()) {\r
+                                       result = it;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+               return result;\r
+       }\r
+\r
        @Override\r
        public Store getStore(long id) {\r
                return (Store) get(Store.class, id);\r
@@ -631,6 +673,16 @@ public class ItemManager extends MemoryCache implements IItemManager {
                return result;\r
        }\r
 \r
+       @SuppressWarnings("unchecked")\r
+       @Override\r
+       public List<WorkflowAction> getWorkflowActions(Date date) {\r
+               Calendar begin = CalendarUtils.createZeroCalendar(date);\r
+               Calendar end = CalendarUtils.createZeroCalendar(date);\r
+               end.add(Calendar.DAY_OF_YEAR, 1);\r
+               WorkflowActionDAO dao = (WorkflowActionDAO) getBaseDAO(WorkflowAction.class);\r
+               return (List<WorkflowAction>) (List<?>) dao.getWorkflowActions(new Timestamp(begin.getTimeInMillis()), new Timestamp(end.getTimeInMillis()));\r
+       }\r
+\r
        void initialize() {\r
                currentInstance = this;\r
                super.setItemManager(this);\r
@@ -666,6 +718,50 @@ public class ItemManager extends MemoryCache implements IItemManager {
                logger.info("ItemManager initialized");\r
        }\r
 \r
+       private void initializeItemManager(SignalServer signalServer) {\r
+               this.signalServer = signalServer;\r
+               initialize();\r
+               dbUrl = System.getProperty(DBURL);\r
+               dbUser = System.getProperty(DBUSERNAME);\r
+               dbPassword = System.getProperty(DBPASSWORD);\r
+       }\r
+\r
+       @Override\r
+       public void merge(IEntityBase entity) {\r
+               traceIn();\r
+               IEntityBaseDAO dbmanager = getBaseDAO(entity.getClass());\r
+               dbmanager.merge(entity);\r
+               traceOut();\r
+       }\r
+\r
+       @Override\r
+       public void mergeItemStructure(Item item) {\r
+               if (item.getId() == 0) {\r
+                       item.add();\r
+                       return;\r
+               }\r
+               List<Media> mS = item.getMedias();\r
+               if (mS == null)\r
+                       return;\r
+               for (Media m : mS) {\r
+                       if (m.getId() == 0) {\r
+                               m.setItemId(item.getId());\r
+                               m.add();\r
+                               continue;\r
+                       }\r
+                       List<MediaFile> fS = m.getMediaFiles();\r
+                       if (fS == null)\r
+                               continue;\r
+                       for (MediaFile f : fS) {\r
+                               if (f.getId() == 0) {\r
+                                       f.setMediaId(m.getId());\r
+                                       f.add();\r
+                                       continue;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
        @Override\r
        public void modify(IEntityBase entity) {\r
                traceIn();\r
@@ -709,26 +805,6 @@ public class ItemManager extends MemoryCache implements IItemManager {
                return result;\r
        }\r
 \r
-       @Override\r
-       public Item getItemByHouseID(String houseID) {\r
-               traceIn();\r
-               Item result = null;\r
-               SearchFilter filter = new SearchFilter();\r
-               filter.setMetadata(getStaticItemType().getMetadata("Anyag house ID"));\r
-               filter.setValueLogic(FilterValueLogic.EQUALS);\r
-               filter.setValues(Arrays.asList((Object) houseID));\r
-               QueryObject qo = new QueryObject();\r
-               qo.setFilters(Arrays.asList(filter));\r
-\r
-               // Exercise\r
-               List<SearchResult> searchResult = searchItem(qo);\r
-\r
-               if (searchResult != null && searchResult.size() > 0 && searchResult.get(0).getItemCount() == 1)\r
-                       result = searchResult.get(0).getItems().get(0);\r
-               traceOut();\r
-               return result;\r
-       }\r
-\r
        @Override\r
        public SearchResult searchItem(String criteria, int fromResult, int toResult) {\r
                traceIn();\r
@@ -829,91 +905,12 @@ public class ItemManager extends MemoryCache implements IItemManager {
                traceOut();\r
        }\r
 \r
-       @Override\r
-       public ItemType getStaticItemType() {\r
-               ItemType result = null;\r
-               List<ItemType> itemTypes = getItemTypes();\r
-               if (itemTypes != null) {\r
-                       for (ItemType it : itemTypes) {\r
-                               if (it.getIsStatic()) {\r
-                                       result = it;\r
-                                       break;\r
-                               }\r
-                       }\r
-               }\r
-               return result;\r
-       }\r
-\r
-       @Override\r
-       public List<ItemType> getDynamicItemTypes() {\r
-               List<ItemType> result = new ArrayList<ItemType>();\r
-               List<ItemType> itemTypes = getItemTypes();\r
-               if (itemTypes != null) {\r
-                       for (ItemType it : itemTypes) {\r
-                               if (!it.getIsStatic())\r
-                                       result.add(it);\r
-                       }\r
-               }\r
-               return result;\r
-       }\r
-\r
-       @Override\r
-       public ItemType getItemType(String itemTypeName) {\r
-               ItemTypeDAO dbmanager = (ItemTypeDAO) getBaseDAO(ItemType.class);\r
-               return dbmanager.get(itemTypeName);\r
-       }\r
-\r
-       @SuppressWarnings("unchecked")\r
-       @Override\r
-       public List<Job> getRunningJobs(String template) {\r
-               JobDAO dbmanager = (JobDAO) getBaseDAO(Job.class);\r
-               return (List<Job>) (List<?>) dbmanager.getAllIncomplete(template);\r
-       }\r
-\r
-       @SuppressWarnings("unchecked")\r
-       @Override\r
-       public List<WorkflowAction> getWorkflowActions(Date date) {\r
-               Calendar begin = CalendarUtils.createZeroCalendar(date);\r
-               Calendar end = CalendarUtils.createZeroCalendar(date);\r
-               end.add(Calendar.DAY_OF_YEAR, 1);\r
-               WorkflowActionDAO dao = (WorkflowActionDAO) getBaseDAO(WorkflowAction.class);\r
-               return (List<WorkflowAction>) (List<?>) dao.getWorkflowActions(new Timestamp(begin.getTimeInMillis()),\r
-                               new Timestamp(end.getTimeInMillis()));\r
-       }\r
-\r
-       @Override\r
-       public void mergeItemStructure(Item item) {\r
-               if (item.getId() == 0) {\r
-                       add(item);\r
-                       return;\r
-               }\r
-               List<Media> mS = item.getMedias();\r
-               if (mS == null)\r
-                       return;\r
-               for (Media m : mS) {\r
-                       if (m.getId() == 0) {\r
-                               m.setItemId(item.getId());\r
-                               add(m);\r
-                               continue;\r
-                       }\r
-                       List<MediaFile> fS = m.getMediaFiles();\r
-                       if (fS == null)\r
-                               continue;\r
-                       for (MediaFile f : fS) {\r
-                               if (f.getId() == 0) {\r
-                                       f.setMediaId(m.getId());\r
-                                       add(f);\r
-                                       continue;\r
-                               }\r
-                       }\r
+       public synchronized void unbindSignalServerService(SignalServer service) {\r
+               try {\r
+                       disconnect();\r
+                       logger.info("ItemManager service stopped.");\r
+               } catch (Exception exc) {\r
+                       logger.error(exc);\r
                }\r
        }\r
-\r
-       @Override\r
-       public void merge(IEntityBase entity) {\r
-               traceIn();\r
-               IEntityBaseDAO dbmanager = getBaseDAO(entity.getClass());\r
-               dbmanager.merge(entity);\r
-               traceOut();\r
-       }\r
 }\r
index f858e91556424534a325e301e64a2e0e3b542fd0..0d18b01eaa2e89713d264e4ed6d43a93c139d5ac 100644 (file)
@@ -32,18 +32,29 @@ public class TestItem extends TestBase {
                        manager.createItemType("Generic", "Generic").add();\r
 \r
                if (manager.getStore("TSM") == null) {\r
-                       Store tsmStore = manager.createStore("TSM", true, false);\r
-                       StoreUri tsmStoreUri = manager.createStoreUri(RemoteStoreProtocol.TSM, "MEDIACUBE");\r
-                       tsmStoreUri.setSource(true);\r
-                       tsmStoreUri.setTarget(true);\r
-                       tsmStoreUri.setUserName("mediacube");\r
-                       tsmStoreUri.setPassword("password");\r
-                       tsmStore.appendStoreUri(tsmStoreUri);\r
-                       tsmStore.add();\r
+                       Store store = manager.createStore("TSM", true, false);\r
+                       StoreUri storeUri = manager.createStoreUri(RemoteStoreProtocol.TSM, "MEDIACUBE");\r
+                       storeUri.setSource(true);\r
+                       storeUri.setTarget(true);\r
+                       storeUri.setUserName("mediacube");\r
+                       storeUri.setPassword("password");\r
+                       store.appendStoreUri(storeUri);\r
+                       store.add();\r
+               }\r
+               if (manager.getStore("Low-res") == null) {\r
+                       Store store = manager.createStore("Low-res", true, true);\r
+                       StoreUri storeUri = manager.createStoreUri(RemoteStoreProtocol.LOCAL, "/mediacube/data/lowres/www/video/");\r
+                       storeUri.setSource(true);\r
+                       storeUri.setTarget(true);\r
+                       store.appendStoreUri(storeUri);\r
+                       storeUri = manager.createStoreUri(RemoteStoreProtocol.SMB, "\\\\10.10.1.26\\mclowres\\www\\video");\r
+                       storeUri.setSource(true);\r
+                       storeUri.setTarget(false);\r
+                       store.appendStoreUri(storeUri);\r
+                       store.add();\r
                }\r
                if (manager.getFileType("High-res") == null) {\r
-                       FileType fileType = manager.createFileType("High-res", "High resolution material", "MPEG Video", "PCM", 1,\r
-                                       8, 25);\r
+                       FileType fileType = manager.createFileType("High-res", "High resolution material", "MPEG Video", "PCM", 1, 8, 25);\r
                        fileType.add();\r
                }\r
                if (manager.getFileType("Low-res") == null) {\r
@@ -66,100 +77,15 @@ public class TestItem extends TestBase {
        }\r
 \r
        @Test\r
-       public void testMergeItemStructure_NewItem() {\r
-               Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", "");\r
-               Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null);\r
-               item.appendMedia(media);\r
-               MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Low-res"), manager.getStore("TSM"),\r
-                               media);\r
-               media.appendMediaFile(mf);\r
-               // Exercise\r
-               manager.mergeItemStructure(item);\r
-               assertTrue(item.getId() > 0);\r
-               assertTrue(item.getMedias().get(0).getId() > 0);\r
-               assertTrue(item.getMedias().get(0).getMediaFiles().get(0).getId() > 0);\r
-       }\r
-\r
-       @Test\r
-       public void testMergeItemStructure_NewMedia() {\r
-               Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", "");\r
-               item.add();\r
-\r
-               Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null);\r
-               item.appendMedia(media);\r
-               MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Low-res"), manager.getStore("TSM"),\r
-                               media);\r
-               media.appendMediaFile(mf);\r
-               // Exercise\r
-               manager.mergeItemStructure(item);\r
-               assertTrue(item.getId() > 0);\r
-               assertTrue(item.getMedias().get(0).getId() > 0);\r
-               assertTrue(item.getMedias().get(0).getMediaFiles().get(0).getId() > 0);\r
-       }\r
-\r
-       @Test\r
-       public void testMergeItemStructure_NewMediaFile() {\r
-               Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", "");\r
-\r
-               Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null);\r
-               item.appendMedia(media);\r
-               item.add();\r
+       public void testCreate() {\r
+               // Fixture\r
+               Item sut = manager.createItem("Adásanyag light", "Ötödik elem", "Scifi", null);\r
 \r
-               MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Low-res"), manager.getStore("TSM"),\r
-                               media);\r
-               media.appendMediaFile(mf);\r
                // Exercise\r
-               manager.mergeItemStructure(item);\r
-               assertTrue(item.getId() > 0);\r
-               assertTrue(item.getMedias().get(0).getId() > 0);\r
-               assertTrue(item.getMedias().get(0).getMediaFiles().get(0).getId() > 0);\r
-       }\r
-\r
-       @Test\r
-       public void testCreateWorkflowActions_and_search() {\r
-               //              manager.truncate(WorkflowAction.class);\r
-               //              String[] tags = { "INGEST", "ARCHIVE", "TRANSCODE" };\r
-               //              for (int i = 0; i < 1000; i++) {\r
-               //                      Calendar touched = Calendar.getInstance();\r
-               //                      Calendar started = Calendar.getInstance();\r
-               //                      Calendar finished = Calendar.getInstance();\r
-               //                      finished.add(Calendar.HOUR_OF_DAY, 1);\r
-               //                      String houseId = "house" + i % 10;\r
-               //                      WorkflowAction item = manager.createWorkflowAction(new Timestamp(touched.getTimeInMillis()),\r
-               //                                      new Timestamp(started.getTimeInMillis()), new Timestamp(finished.getTimeInMillis()), true, houseId,\r
-               //                                      houseId, houseId, houseId, tags[i % 3], 1000);\r
-               //                      item.add();\r
-               //                      System.out.println("Created " + i + " id: " + item.getId());\r
-               //              }\r
-               //\r
-               WorkflowActionDAO dao = (WorkflowActionDAO) manager.getBaseDAO(WorkflowAction.class);\r
-\r
-               Calendar begin = CalendarUtils.createZeroCalendar();\r
-               Calendar end = CalendarUtils.createZeroCalendar();\r
-               end.add(Calendar.DAY_OF_YEAR, 1);\r
-               List<IEntityBase> workflowActions = dao.getWorkflowActions(new Timestamp(begin.getTimeInMillis()),\r
-                               new Timestamp(end.getTimeInMillis()));\r
-               assertEquals(1000, workflowActions.size());\r
-       }\r
-\r
-       @Test\r
-       public void testCreateManyFull() {\r
-               // manager.truncate();\r
-\r
-               for (int i = 0; i < 1000; i++) {\r
-                       Item item = manager.createItem("Generic", "Ötödik elem " + i, "Scifi", i + "");\r
-                       item.add();\r
-\r
-                       Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null);\r
-                       item.appendMedia(media);\r
-                       item.add();\r
-\r
-                       MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Lowres"),\r
-                                       manager.getStore("Local video"), media);\r
-                       mf.add();\r
+               sut.add();\r
 \r
-                       System.out.println("Item created: " + i);\r
-               }\r
+               // Verify\r
+               assertTrue(sut.getId() > 0);\r
        }\r
 \r
        @Test\r
@@ -172,8 +98,7 @@ public class TestItem extends TestBase {
                item.appendMedia(media);\r
                item.add();\r
 \r
-               MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Lowres"),\r
-                               manager.getStore("Local video"), media);\r
+               MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Lowres"), manager.getStore("Local video"), media);\r
                mf.add();\r
        }\r
 \r
@@ -199,69 +124,22 @@ public class TestItem extends TestBase {
        }\r
 \r
        @Test\r
-       public void testSearch() {\r
-               SearchResult search = manager.searchItem("elem", 10, 20);\r
-               assertEquals(1000, search.getItemCount());\r
-               assertEquals(10, search.getItems().size());\r
-\r
-               for (Item item : search.getItems()) {\r
-                       System.out.println(item.getTitle());\r
-               }\r
-       }\r
-\r
-       @Test\r
-       public void testCreate() {\r
-               // Fixture\r
-               Item sut = manager.createItem("Adásanyag light", "Ötödik elem", "Scifi", null);\r
-\r
-               // Exercise\r
-               sut.add();\r
-\r
-               // Verify\r
-               assertTrue(sut.getId() > 0);\r
-       }\r
-\r
-       @Test\r
-       public void testRemove() {\r
-               // Fixture\r
-               Item sut = null;\r
-               sut = manager.createItem("Film", "Nyolcadik kör ami törölhető", "Scifi", null);\r
-               sut.setAttribute("Főszereplő", "Kovocs Géza");\r
-               sut.setAttribute("Gyártás éve", 2001);\r
-               sut.setAttribute("Szinkron", "Hajda Ákos");\r
-               sut.add();\r
-\r
-               // Exercise\r
-               sut.remove();\r
-\r
-               // Verify\r
-               Item actual = (Item) manager.get(Item.class, sut.getId());\r
-               assertNull(actual);\r
-       }\r
-\r
-       @Test\r
-       public void testSetAttribute() {\r
-               // Fixture\r
-               Item sut = manager.createItem("Film", "Ötödik elem", "Scifi", null);\r
-\r
-               // Exercise\r
-               sut.setAttribute("Főszereplő", "Kalapács Miklós");\r
+       public void testCreateManyFull() {\r
+               // manager.truncate();\r
 \r
-               // Verify\r
-               assertEquals("Kalapács Miklós", sut.getAttribute("Főszereplő"));\r
-       }\r
+               for (int i = 0; i < 1000; i++) {\r
+                       Item item = manager.createItem("Generic", "Ötödik elem " + i, "Scifi", i + "");\r
+                       item.add();\r
 \r
-       @Test\r
-       public void testSetAttributeWithWrongType() {\r
-               // L�tez� dinamikus attrib�tum rossz adatttal val� felt�lt�se.\r
-               // Fixture\r
-               Item item = manager.createItem("Film", "Ötödik elem", "Scifi", null);\r
+                       Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null);\r
+                       item.appendMedia(media);\r
+                       item.add();\r
 \r
-               // Exercise\r
-               item.setAttribute("F�szerepl�", 10);\r
+                       MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Lowres"), manager.getStore("Local video"), media);\r
+                       mf.add();\r
 \r
-               // Verify\r
-               assertNull(item.getAttribute("F�szerepl�"));\r
+                       System.out.println("Item created: " + i);\r
+               }\r
        }\r
 \r
        @Test\r
@@ -289,6 +167,28 @@ public class TestItem extends TestBase {
                assertEquals(value3, actual.getAttribute("Gyártás éve"));\r
        }\r
 \r
+       @Test\r
+       @SuppressWarnings("unchecked")\r
+       public void testCreateWithDomainAttribute() {\r
+               // Fixture\r
+               Item sut = null;\r
+               sut = manager.createItem("Domain", "Domain teszt record", "Scifi", null);\r
+               sut.setAttribute("Szereplők", Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara")));\r
+\r
+               // Exercise\r
+               sut.add();\r
+\r
+               // Verify\r
+               List<Domain> domains = (List<Domain>) sut.getAttribute("Szereplők");\r
+\r
+               assertNotNull(domains);\r
+               assertEquals(3, domains.size());\r
+               for (Domain d : domains) {\r
+                       assertTrue(d.getId() > 0);\r
+                       assertTrue(d.getDomainCategoryId() > 0);\r
+               }\r
+       }\r
+\r
        @Test(expected = ItemManagerException.class)\r
        public void testCreateWithUniqueAttribute() {\r
                // L�trehoz�s, unique dinamikus attrib�tummal.\r
@@ -309,26 +209,76 @@ public class TestItem extends TestBase {
        }\r
 \r
        @Test\r
-       @SuppressWarnings("unchecked")\r
-       public void testCreateWithDomainAttribute() {\r
-               // Fixture\r
-               Item sut = null;\r
-               sut = manager.createItem("Domain", "Domain teszt record", "Scifi", null);\r
-               sut.setAttribute("Szereplők",\r
-                               Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara")));\r
+       public void testCreateWorkflowActions_and_search() {\r
+               //              manager.truncate(WorkflowAction.class);\r
+               //              String[] tags = { "INGEST", "ARCHIVE", "TRANSCODE" };\r
+               //              for (int i = 0; i < 1000; i++) {\r
+               //                      Calendar touched = Calendar.getInstance();\r
+               //                      Calendar started = Calendar.getInstance();\r
+               //                      Calendar finished = Calendar.getInstance();\r
+               //                      finished.add(Calendar.HOUR_OF_DAY, 1);\r
+               //                      String houseId = "house" + i % 10;\r
+               //                      WorkflowAction item = manager.createWorkflowAction(new Timestamp(touched.getTimeInMillis()),\r
+               //                                      new Timestamp(started.getTimeInMillis()), new Timestamp(finished.getTimeInMillis()), true, houseId,\r
+               //                                      houseId, houseId, houseId, tags[i % 3], 1000);\r
+               //                      item.add();\r
+               //                      System.out.println("Created " + i + " id: " + item.getId());\r
+               //              }\r
+               //\r
+               WorkflowActionDAO dao = (WorkflowActionDAO) manager.getBaseDAO(WorkflowAction.class);\r
+\r
+               Calendar begin = CalendarUtils.createZeroCalendar();\r
+               Calendar end = CalendarUtils.createZeroCalendar();\r
+               end.add(Calendar.DAY_OF_YEAR, 1);\r
+               List<IEntityBase> workflowActions = dao.getWorkflowActions(new Timestamp(begin.getTimeInMillis()), new Timestamp(end.getTimeInMillis()));\r
+               assertEquals(1000, workflowActions.size());\r
+       }\r
 \r
+       @Test\r
+       public void testMergeItemStructure_NewItem() {\r
+               Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", "");\r
+               Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null);\r
+               item.appendMedia(media);\r
+               MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Low-res"), manager.getStore("TSM"), media);\r
+               media.appendMediaFile(mf);\r
                // Exercise\r
-               sut.add();\r
+               manager.mergeItemStructure(item);\r
+               assertTrue(item.getId() > 0);\r
+               assertTrue(item.getMedias().get(0).getId() > 0);\r
+               assertTrue(item.getMedias().get(0).getMediaFiles().get(0).getId() > 0);\r
+       }\r
 \r
-               // Verify\r
-               List<Domain> domains = (List<Domain>) sut.getAttribute("Szereplők");\r
+       @Test\r
+       public void testMergeItemStructure_NewMedia() {\r
+               Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", "");\r
+               item.add();\r
 \r
-               assertNotNull(domains);\r
-               assertEquals(3, domains.size());\r
-               for (Domain d : domains) {\r
-                       assertTrue(d.getId() > 0);\r
-                       assertTrue(d.getDomainCategoryId() > 0);\r
-               }\r
+               Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null);\r
+               item.appendMedia(media);\r
+               MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Low-res"), manager.getStore("TSM"), media);\r
+               media.appendMediaFile(mf);\r
+               // Exercise\r
+               manager.mergeItemStructure(item);\r
+               assertTrue(item.getId() > 0);\r
+               assertTrue(item.getMedias().get(0).getId() > 0);\r
+               assertTrue(item.getMedias().get(0).getMediaFiles().get(0).getId() > 0);\r
+       }\r
+\r
+       @Test\r
+       public void testMergeItemStructure_NewMediaFile() {\r
+               Item item = manager.createItem("Generic", "Ötödik elem", "Scifi", "");\r
+\r
+               Media media = manager.createMedia("Generic", "Média1", "Nagyon frankó kis mozi.", null);\r
+               item.appendMedia(media);\r
+               item.add();\r
+\r
+               MediaFile mf = manager.createMediaFile("low.wmv", manager.getFileType("Low-res"), manager.getStore("TSM"), media);\r
+               media.appendMediaFile(mf);\r
+               // Exercise\r
+               manager.mergeItemStructure(item);\r
+               assertTrue(item.getId() > 0);\r
+               assertTrue(item.getMedias().get(0).getId() > 0);\r
+               assertTrue(item.getMedias().get(0).getMediaFiles().get(0).getId() > 0);\r
        }\r
 \r
        @Test\r
@@ -337,8 +287,7 @@ public class TestItem extends TestBase {
                // Fixture\r
                Item item = null;\r
                item = manager.createItem("Domain", "Domain teszt record", "Scifi", null);\r
-               item.setAttribute("Szereplők",\r
-                               Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara")));\r
+               item.setAttribute("Szereplők", Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara")));\r
                item.add();\r
 \r
                // Exercise\r
@@ -351,13 +300,30 @@ public class TestItem extends TestBase {
                assertEquals(3, domains.size());\r
        }\r
 \r
+       @Test\r
+       public void testRemove() {\r
+               // Fixture\r
+               Item sut = null;\r
+               sut = manager.createItem("Film", "Nyolcadik kör ami törölhető", "Scifi", null);\r
+               sut.setAttribute("Főszereplő", "Kovocs Géza");\r
+               sut.setAttribute("Gyártás éve", 2001);\r
+               sut.setAttribute("Szinkron", "Hajda Ákos");\r
+               sut.add();\r
+\r
+               // Exercise\r
+               sut.remove();\r
+\r
+               // Verify\r
+               Item actual = (Item) manager.get(Item.class, sut.getId());\r
+               assertNull(actual);\r
+       }\r
+\r
        @Test\r
        public void testRemoveWithDomainAttribute() throws Exception {\r
                // Fixture\r
                Item sut = null;\r
                sut = manager.createItem("Domain", "Domain teszt record", "Scifi", null);\r
-               sut.setAttribute("Szereplők",\r
-                               Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara")));\r
+               sut.setAttribute("Szereplők", Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara")));\r
                sut.add();\r
 \r
                // Exercise\r
@@ -374,13 +340,60 @@ public class TestItem extends TestBase {
                assertNull(expected);\r
        }\r
 \r
+       @Test\r
+       public void testSearch() {\r
+               SearchResult search = manager.searchItem("elem", 10, 20);\r
+               assertEquals(1000, search.getItemCount());\r
+               assertEquals(10, search.getItems().size());\r
+\r
+               for (Item item : search.getItems()) {\r
+                       System.out.println(item.getTitle());\r
+               }\r
+       }\r
+\r
+       @Test\r
+       public void testSearchItem_byHouseID() {\r
+\r
+               //TestDB.createStaticItemTypes();\r
+               // Fixture\r
+               // Exercise\r
+               Item result = manager.getItemByHouseID("11111");\r
+\r
+               // Verify\r
+               assertNotNull(result);\r
+       }\r
+\r
+       @Test\r
+       public void testSetAttribute() {\r
+               // Fixture\r
+               Item sut = manager.createItem("Film", "Ötödik elem", "Scifi", null);\r
+\r
+               // Exercise\r
+               sut.setAttribute("Főszereplő", "Kalapács Miklós");\r
+\r
+               // Verify\r
+               assertEquals("Kalapács Miklós", sut.getAttribute("Főszereplő"));\r
+       }\r
+\r
+       @Test\r
+       public void testSetAttributeWithWrongType() {\r
+               // L�tez� dinamikus attrib�tum rossz adatttal val� felt�lt�se.\r
+               // Fixture\r
+               Item item = manager.createItem("Film", "Ötödik elem", "Scifi", null);\r
+\r
+               // Exercise\r
+               item.setAttribute("F�szerepl�", 10);\r
+\r
+               // Verify\r
+               assertNull(item.getAttribute("F�szerepl�"));\r
+       }\r
+\r
        @Test\r
        public void testUpdateWithDomainAttribute() throws Exception {\r
                // Fixture\r
                Item sut = null;\r
                sut = manager.createItem("Domain", "Domain teszt record", "Scifi", null);\r
-               sut.setAttribute("Szereplők",\r
-                               Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara")));\r
+               sut.setAttribute("Szereplők", Arrays.asList(new Domain("Kovács Gizi"), new Domain("Szekér Ivett"), new Domain("Hanka Barbara")));\r
                sut.add();\r
 \r
                // Exercise\r
@@ -397,16 +410,4 @@ public class TestItem extends TestBase {
                assertNull(expected);\r
        }\r
 \r
-       @Test\r
-       public void testSearchItem_byHouseID() {\r
-\r
-               //TestDB.createStaticItemTypes();\r
-               // Fixture\r
-               // Exercise\r
-               Item result = manager.getItemByHouseID("11111");\r
-\r
-               // Verify\r
-               assertNotNull(result);\r
-       }\r
-\r
 }\r
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 (file)
index bab908d..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate>\r
-<declarations>\r
-       <parameters>\r
-               <parameter name="mediaFolder" type="java.lang.String"/>\r
-       </parameters>\r
-       <variables>\r
-               <variable name="mediaFileWrapperList" type="java.util.ArrayList"/>\r
-       </variables>\r
-</declarations>\r
-\r
-<commands>\r
-       <calljobstep id="step1" type="user.jobengine.server.steps.ArchiveListBuilderStep" weight="1">\r
-               <inputs>\r
-                       <input>\r
-                               <parameter name="mediaFolder" />\r
-                       </input>\r
-               </inputs>\r
-               <outputs>\r
-                       <output>\r
-                               <variable name="mediaFileWrapperList" />\r
-                       </output>\r
-               </outputs>\r
-       </calljobstep>\r
-       \r
-       <calljobstep id="step2" type="user.jobengine.server.steps.ItemCreatorStep" weight="1">\r
-               <inputs>\r
-                       <input>\r
-                               <variable name="mediaFileWrapperList" />\r
-                       </input>\r
-               </inputs>\r
-               <outputs>\r
-                       <output>\r
-                               <variable name="mediaFileWrapperList" />\r
-                       </output>\r
-               </outputs>\r
-       </calljobstep>\r
-\r
-       <calljobstep id="step3" type="user.jobengine.server.steps.ArchiveItemJobCreatorStep" weight="1">\r
-               <inputs>\r
-                       <input>\r
-                               <variable name="mediaFileWrapperList" />\r
-                       </input>\r
-               </inputs>\r
-       </calljobstep>\r
-       \r
-</commands>\r
-</jobtemplate>
\ 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 (file)
index 6d17c2d..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate name="Archiválás" description="Kiálasztott média nagy felbontású verziójának mentése szalagos háttértárra.">\r
-<declarations>\r
-       <parameters>\r
-               <parameter name="mediaWrapper" type="user.jobengine.server.steps.MediaFileWrapper"/>\r
-       </parameters>\r
-<!--   <variables> -->\r
-<!--           <variable name="media" type="user.jobengine.db.Media"/> -->\r
-<!--   </variables> -->\r
-</declarations>\r
-<commands>\r
-       <calljobstep id="id1" type="user.jobengine.server.steps.TSMBackupMediaWrapperStep" weight="1">\r
-               <inputs>\r
-                       <input>\r
-                               <parameter name="mediaWrapper" />\r
-                       </input>\r
-               </inputs>\r
-<!--           <outputs> -->\r
-<!--                   <output> -->\r
-<!--                           <variable name="media" /> -->\r
-<!--                   </output> -->\r
-<!--           </outputs> -->\r
-       </calljobstep>\r
-<!--   <calljobstep id="id2" type="user.jobengine.server.steps.SetArchivedStep" weight="0"> -->\r
-<!--           <inputs> -->\r
-<!--                   <input> -->\r
-<!--                           <variable name="media" /> -->\r
-<!--                   </input> -->\r
-<!--           </inputs> -->\r
-<!--   </calljobstep> -->\r
-</commands>\r
-</jobtemplate>
\ 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 (file)
index 0000000..7b3ccd7
--- /dev/null
@@ -0,0 +1,92 @@
+package user.jobengine.server.steps;\r
+\r
+import java.io.File;\r
+import java.io.Serializable;\r
+import java.nio.file.Path;\r
+\r
+public class ArchiveItem implements Serializable {\r
+       private static final long serialVersionUID = -7278747969491719357L;\r
+       private String itemTitle;\r
+       private String itemHouseId;\r
+       private String itemDescription;\r
+       private String mediaHouseId;\r
+       private String mediaTitle;\r
+       private String mediaDescription;\r
+\r
+       private Path mediaFile = null;\r
+       private Path catchedFile = null;\r
+\r
+       public Path getCatchedFile() {\r
+               return catchedFile;\r
+       }\r
+\r
+       public String getItemDescription() {\r
+               return itemDescription;\r
+       }\r
+\r
+       public String getItemHouseId() {\r
+               return itemHouseId;\r
+       }\r
+\r
+       public String getItemTitle() {\r
+               return itemTitle;\r
+       }\r
+\r
+       public String getMediaDescription() {\r
+               return mediaDescription;\r
+       }\r
+\r
+       public Path getMediaFile() {\r
+               return mediaFile;\r
+       }\r
+\r
+       public String getMediaHouseId() {\r
+               return mediaHouseId;\r
+       }\r
+\r
+       public String getMediaTitle() {\r
+               return mediaTitle;\r
+       }\r
+\r
+       public boolean removeCatchedFile() {\r
+               boolean result = false;\r
+               if (catchedFile != null) {\r
+                       File file = catchedFile.toFile();\r
+                       if (file.exists())\r
+                               result = file.delete();\r
+               }\r
+               return result;\r
+       }\r
+\r
+       public void setCatchedFile(Path catchedFile) {\r
+               this.catchedFile = catchedFile;\r
+       }\r
+\r
+       public void setItemDescription(String itemDescription) {\r
+               this.itemDescription = itemDescription;\r
+       }\r
+\r
+       public void setItemHouseId(String itemHouseId) {\r
+               this.itemHouseId = itemHouseId;\r
+       }\r
+\r
+       public void setItemTitle(String itemTitle) {\r
+               this.itemTitle = itemTitle;\r
+       }\r
+\r
+       public void setMediaDescription(String mediaDescription) {\r
+               this.mediaDescription = mediaDescription;\r
+       }\r
+\r
+       public void setMediaFile(Path mediaFile) {\r
+               this.mediaFile = mediaFile;\r
+       }\r
+\r
+       public void setMediaHouseId(String mediaHouseId) {\r
+               this.mediaHouseId = mediaHouseId;\r
+       }\r
+\r
+       public void setMediaTitle(String mediaTitle) {\r
+               this.mediaTitle = mediaTitle;\r
+       }\r
+}\r
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 (file)
index 294fa5f..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-package user.jobengine.server.steps;\r
-\r
-import java.io.File;\r
-import java.io.Serializable;\r
-\r
-import com.ibm.nosql.json.JSONUtil;\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-\r
-import user.jobengine.db.Item;\r
-import user.jobengine.db.Media;\r
-\r
-public class MediaFileWrapper implements Serializable {\r
-       public static final String ITEM_TITLE = "itemTitle";\r
-       public static final String ITEM_HOUSEID = "itemHouseID";\r
-       public static final String ITEM_DESCRIPTION = "itemDescription";\r
-       public static final String MEDIA_HOUSE_ID = "mediaHouseID";\r
-       public static final String MEDIA_TITLE = "mediaTitle";\r
-       public static final String MEDIA_DESCRIPTION = "mediaDescription";\r
-       public static final String ITEMTYPENAME = "Generic";\r
-\r
-       private File mediaFile = null;\r
-       private File jsonFile = null;\r
-       private File catchedFile = null;\r
-       private String jsonContent = null;\r
-       private BasicDBObject jsondbo = null;\r
-       private Item item = null;\r
-       private Media media = null;\r
-\r
-       public File getMediaFile() {\r
-               return mediaFile;\r
-       }\r
-\r
-       public void setMediaFile(File mediaFile) {\r
-               this.mediaFile = mediaFile;\r
-       }\r
-\r
-       public File getJsonFile() {\r
-               return jsonFile;\r
-       }\r
-\r
-       public void setJsonFile(File jsonFile) {\r
-               this.jsonFile = jsonFile;\r
-       }\r
-\r
-       public File getCatchedFile() {\r
-               return catchedFile;\r
-       }\r
-\r
-       public void setCatchedFile(File catchedFile) {\r
-               this.catchedFile = catchedFile;\r
-       }\r
-\r
-       public String getJsonContent() {\r
-               return jsonContent;\r
-       }\r
-\r
-       public void setJsonContent(String jsonContent) {\r
-               this.jsonContent = jsonContent;\r
-       }\r
-\r
-       public Item getItem() {\r
-               return item;\r
-       }\r
-\r
-       public void setItem(Item item) {\r
-               this.item = item;\r
-       }\r
-\r
-       public String getJSONString(String varName) {\r
-               String ret = null;\r
-               if (jsonContent != null) {\r
-                       if (jsondbo == null) {\r
-                               jsondbo = (BasicDBObject) JSONUtil.jsonToDbObject(jsonContent);\r
-                       }\r
-                       ret = jsondbo.getString(varName);\r
-               }\r
-               return ret;\r
-       }\r
-\r
-       public Media getMedia() {\r
-               return media;\r
-       }\r
-\r
-       public void setMedia(Media media) {\r
-               this.media = media;\r
-       }\r
-}\r