<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="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djobengine.jobsteps.root="${workspace_loc}/user.jobengine.executors/bin" -Djobengine.jobtemplates.root="${workspace_loc}/user.jobengine.executors/jobtemplates" -Djobengine.db.url=jdbc:db2://10.228.198.1:50000/mediaarc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=password -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djetty.home="${workspace_loc:}/-configuration/jetty" -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 -Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty -Djava.io.tmpdir=c:\temp\jetty -Djobengine.octopus.api.address=http://10.10.1.11/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://10.228.198.1:50000/mccache:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=password -Djobengine.nosql.db.schema=test -Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl -Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium -Djobengine.transcoder.address=http://10.11.1.111:65445/api/json/v1/ -Djobengine.transcoder.template=MP4 -Djobengine.transcoder.version=1 -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB; -Djobengine.nexio.db.user=sa -Djobengine.nexio.db.password=resolve -Djobengine.planair.db.url=jdbc:sqlserver://10.11.254.86;databaseName=PA_Vivantis; -Djobengine.planair.db.user=MAM -Djobengine.planair.db.password=VDani -Dnexio.host=192.168.0.12 -Djobengine.nexio.name=testnexioclips -Dnexio.useMOSGateway=false -Dnexio.disable=true -Djobengine.octopus.rundowns.name=rundowns181026 -Djobengine.octopus.storyfolders.name=storyfolders181026 -Djobengine.octopus.stories.name=stories181026 -Djobengine.maestro.config="${workspace_loc}/-configuration/maestro.json" -Djobengine.mediacube.config="${workspace_loc}/-configuration/mediacube.json" -Dgui.statistics.disable=true -Dgui.help.disable=true -Dgui.editor.disable=true -Djobengine.mediafinder.external=false -Djobengine.mediacube.service.proxyroot="/opt" -Djobengine.scheduledexecution.disabled=false -Djobengine.randomize.archives=false -Djobengine.jobsteps.config="${workspace_loc}/user.jobengine.executors/config/config.xml""/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djobengine.jobsteps.root="${workspace_loc}/user.jobengine.executors/bin" -Djobengine.jobtemplates.root="${workspace_loc}/user.jobengine.executors/jobtemplates" -Djobengine.db.url=jdbc:db2://10.228.198.1:50000/mediaarc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=password -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djetty.home="${workspace_loc:}/-configuration/jetty" -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 -Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty -Djava.io.tmpdir=c:\temp\jetty -Djobengine.octopus.api.address=http://10.10.1.11/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://10.228.198.1:50000/mccache:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=password -Djobengine.nosql.db.schema=test -Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl -Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium -Djobengine.transcoder.address=http://10.11.1.111:65445/api/json/v1/ -Djobengine.transcoder.template=MP4 -Djobengine.transcoder.version=1 -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB; -Djobengine.nexio.db.user=sa -Djobengine.nexio.db.password=resolve -Djobengine.planair.db.url=jdbc:sqlserver://10.11.254.86;databaseName=PA_Vivantis; -Djobengine.planair.db.user=MAM -Djobengine.planair.db.password=VDani -Dnexio.host=192.168.0.12 -Djobengine.nexio.name=testnexioclips -Dnexio.useMOSGateway=false -Dnexio.disable=true -Djobengine.octopus.rundowns.name=rundowns181026 -Djobengine.octopus.storyfolders.name=storyfolders181026 -Djobengine.octopus.stories.name=stories181026 -Djobengine.maestro.config="${workspace_loc}/-configuration/maestro.json" -Djobengine.mediacube.config="${workspace_loc}/-configuration/mediacube.json" -Dgui.statistics.disable=true -Dgui.help.disable=true -Dgui.editor.disable=true -Djobengine.mediafinder.external=false -Djobengine.mediacube.service.proxyroot="/opt" -Djobengine.scheduledexecution.disabled=false -Djobengine.randomize.archives=false -Djobengine.jobsteps.config="${workspace_loc}/user.jobengine.executors/config/config.xml" -Djobengine.jobsteps.groovy.root="${workspace_loc}/user.jobengine.executors/src/user/jobengine/server/steps""/>\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.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.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.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,humble.video.noarch@default:default,humble.video.windows@default:default,javax.annotation-api@default:default,javax.mail@default:default,javax.servlet-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.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@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.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.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,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.mybatis.mybatis@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.omnifaces@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
+<stringAttribute key="target_bundles" value="cglib@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.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.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,groovy@default:default,humble.video.noarch@default:default,humble.video.windows@default:default,javax.annotation-api@default:default,javax.mail@default:default,javax.servlet-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.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@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.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.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,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.mybatis.mybatis@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.omnifaces@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
<booleanAttribute key="tracing" value="false"/>\r
<booleanAttribute key="useCustomFeatures" value="false"/>\r
<booleanAttribute key="useDefaultConfigArea" value="true"/>\r
{"joblist":[\r
{\r
+ "template": "copy-from-nexio.xml",\r
+ "parameters": [ \r
+ {"name": "servers", "value": ["NEXIO1", "NEXIO2"], "type": "java.lang.Iterable"},\r
+ \r
+ {"name": "globalRetrievePath", "value": "file://isilon.intra.echotv.hu", "type": "java.lang.String"},\r
+ {"name": "localRetrievePath", "value": "/mnt/ISILON", "type": "java.lang.String"},\r
+ {"name": "localHiresPath", "value": "/mediacube/data/lowres/", "type": "java.lang.String" },\r
+ {"name": "globalHiresPath", "value": "L:\\", "type": "java.lang.String" },\r
+ {"name": "localLowresPath", "value": "/mnt/FIXTRANSCODER/OUTPUT", "type": "java.lang.String" },\r
+ {"name": "transcoderAddress", "value": "http://10.10.1.74:65445/api/json/v1/", "type": "java.lang.String"},\r
+ {"name": "transcoderTemplateName", "value": "MAM_proxy", "type": "java.lang.String"},\r
+ {"name": "webPath", "value": "/mediacube/data/lowres/www/video/", "type": "java.lang.String" }\r
+ ]\r
+ }, \r
+ {\r
"active": false,\r
"executeimmediate": false,\r
"cronexpression": "0/10 * * * * ? *",\r
"name" : "Teszt folyamat",\r
"template": "fake.xml",\r
"cronexpression": "0/20 * * * * ?",\r
- "parameters": [ {"name": "itemID", "value": 1, "type": "java.lang.Long"} ]\r
+ "parameters": [ \r
+ {"name": "itemID", "value": 1, "type": "java.lang.Long"},\r
+ {"name": "iter", "value": ["a", "b", "c"], "type": "java.lang.Iterable"}\r
+ ]\r
},\r
{\r
"active": false,\r
<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<?pde version="3.8"?><target name="JobEngine" sequenceNumber="305">\r
+<?pde version="3.8"?><target name="JobEngine" sequenceNumber="309">\r
<locations>\r
<location path="${eclipse_home}" type="Profile"/>\r
<location path="${workspace_loc}/-dependencies/target/repository/plugins" type="Directory"/>\r
<plugin id="com.ibm.nosql"/>\r
<plugin id="com.microsoft.sqlserver.sqljdbc"/>\r
<plugin id="commons-logging"/>\r
+<plugin id="groovy"/>\r
<plugin id="humble.video.linux"/>\r
<plugin id="humble.video.noarch"/>\r
<plugin id="humble.video.windows"/>\r
<id>default-cli</id>\r
<configuration>\r
<artifacts>\r
-<!-- \r
- <artifact>\r
- <id>org.apache.servicemix.bundles:org.apache.servicemix.bundles.jasper:6.0.53_1</id>\r
- </artifact>\r
- <artifact>\r
- <id>org.apache.aries:org.apache.aries.util:1.1.3</id>\r
- </artifact>\r
- <artifact>\r
- <id>javax.transaction:javax.transaction-api:1.2</id>\r
- </artifact>\r
<artifact>\r
- <id>org.mortbay.jasper:apache-jsp:8.0.33</id>\r
- <source>true</source>\r
- </artifact>\r
- <artifact>\r
- <id>org.mortbay.jasper:apache-el:8.0.33</id>\r
- </artifact>\r
- <artifact>\r
- <id>org.eclipse.jdt.core.compiler:ecj:4.4.2</id>\r
- </artifact>\r
- <artifact>\r
- <id>org.eclipse.jetty:jetty-jsp:9.2.22.v20170606</id>\r
- <source>true</source>\r
+ <id>org.codehaus.groovy:groovy:3.0.3</id>\r
</artifact>\r
- <artifact>\r
- <id>org.eclipse.tycho:org.eclipse.osgi:3.11.2.v20161107-1947</id>\r
- </artifact>\r
- <artifact>\r
- <id>org.eclipse.jetty.osgi:jetty-osgi-boot-jsp:${jetty.version}</id>\r
- </artifact>\r
- <artifact>\r
- <id>org.eclipse.jetty:apache-jsp:${jetty.version}</id>\r
- <source>true</source>\r
- </artifact>\r
- <artifact>\r
- <id>javax.servlet.jsp:javax.servlet.jsp-api:2.3.0</id>\r
- </artifact>\r
- <artifact>\r
- <id>com.sun.org.apache:jaxp-ri:1.4</id>\r
- </artifact>\r
- <artifact>\r
- <id>org.eclipse.platform:org.eclipse.equinox.ds:1.4.400</id>\r
- </artifact>\r
- -->\r
<artifact>\r
<id>org.omnifaces:omnifaces:3.4.1</id>\r
</artifact>\r
// System.setProperty("jobengine.nosql.db.user", "db2admin");\r
// System.setProperty("jobengine.nosql.db.password", "password");\r
System.setProperty("nexio.host", "10.10.1.55");\r
- System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
- System.setProperty(ItemManager.DBUSERNAME, "db2admin");\r
- System.setProperty(ItemManager.DBPASSWORD, "password");\r
+ System.setProperty(ItemManager.DBURL, "jdbc:db2://10.228.212.42:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
+ System.setProperty(ItemManager.DBUSERNAME, "blobtest");\r
+ System.setProperty(ItemManager.DBPASSWORD, "blobtest");\r
System.setProperty(LogUtils.LOGLEVEL, "INFO");\r
// System.setProperty(ItemManager.DBURL,\r
\r
return null;\r
}\r
\r
+ @Test\r
+ public void mediaByName() throws Exception {\r
+ Media media = manager.getMedia("DK_10103300_01");\r
+ assertNotNull(media);\r
+ }\r
+\r
// private void check_rd_process(List<String> allFiles, List<String> allStatus) {\r
// File mediaFile = mediaFilePath.toFile();\r
// if (mediaFile.isDirectory() || !mediaFile.getName().toUpperCase().endsWith(".MXF"))\r
org.jboss.resteasy.validator-provider-11;bundle-version="3.0.11"
Bundle-ClassPath: .
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Import-Package: javax.ws.rs.client,
+Import-Package: groovy.lang;version="3.0.3",
+ javax.ws.rs.client,
javax.ws.rs.core;version="2.0.1",
org.apache.commons.io;version="2.2.0",
org.apache.commons.net.ftp;version="3.6.0",
<?xml version="1.0" encoding="UTF-8"?>\r
<executors>\r
+ <executor className="FakeStep.java" maxConcurrent="20" isRemote="false" />\r
+ <executor className="MergeStep.java" maxConcurrent="20" isRemote="false" />\r
<executor className="user.jobengine.server.steps.ArchiveListBuilderStep" maxConcurrent="1" isRemote="false" />\r
<executor className="user.jobengine.server.steps.ArchiveMaterialSubmitStep" maxConcurrent="1" isRemote="false" />\r
<executor className="user.jobengine.server.steps.BatchRetrieveForkStep" maxConcurrent="10" isRemote="false" />\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate multiInstance="true" name="Fake">\r
+<declarations>\r
+ <parameters>\r
+ <parameter name="storeName" type="java.lang.String"/>\r
+ </parameters>\r
+ <variables>\r
+ <variable name="newFiles" type="java.lang.ArrayList"/>\r
+ <variable name="updatedFiles" type="java.lang.ArrayList"/>\r
+ </variables>\r
+</declarations>\r
+<commands>\r
+ <calljobstep type="NEXIOCheckerStep.java" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="storeName" />\r
+ </input>\r
+ </inputs>\r
+ <outputs>\r
+ <output>\r
+ <variable name="newFiles" />\r
+ </output>\r
+ <output>\r
+ <variable name="updatedFiles" />\r
+ </output>\r
+ </outputs>\r
+ </calljobstep>\r
+ <calljobstep type="SubmitDownloadStep.java" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <variable name="storeName" />\r
+ </input>\r
+ <input>\r
+ <variable name="newFiles" />\r
+ </input>\r
+ <input>\r
+ <variable name="updatedFiles" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
+</commands>\r
+</jobtemplate>
\ No newline at end of file
<parameters>\r
<parameter name="itemID" type="java.lang.Long"/>\r
</parameters>\r
+ <parameters>\r
+ <parameter name="iter" type="java.lang.Iterable"/>\r
+ </parameters>\r
<variables>\r
<variable name="resultID" type="java.lang.Long"/>\r
+ <variable name="resultID1" type="java.lang.Long"/>\r
</variables>\r
</declarations>\r
<commands>\r
- <calljobstep id="step1" type="user.jobengine.server.steps.FakeStep" weight="1">\r
+ <calljobstep type="FakeStep.java" weight="5" forEach="iter">\r
<inputs>\r
<input>\r
<parameter name="itemID" />\r
</input>\r
+ <input>\r
+ <parameter name="iter" />\r
+ </input>\r
</inputs>\r
<outputs>\r
<output>\r
<variable name="resultID" />\r
</output>\r
+ <output>\r
+ <variable name="resultID1" />\r
+ </output>\r
</outputs>\r
</calljobstep>\r
+ <calljobstep type="MergeStep.java" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <variable name="resultID" />\r
+ </input>\r
+ <input>\r
+ <variable name="resultID1" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
</commands>\r
</jobtemplate>
\ No newline at end of file
import user.jobengine.db.Store;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.messages.CancelRequest;\r
\r
public class CreateMissingLowresStep extends JobStep {\r
private static final Logger logger = LogManager.getLogger();\r
if (media == null) {\r
logger.info(new MediaCubeUndoMarker(marker.getSessionID()), "Nincs feldolgozandó hiány.");\r
// throw new Exception("Nincs feldolgozandó hiány.");\r
- jobEngine.sendMessage(new CancelRequest(jobRuntime.getId()));\r
+ cancel();\r
return null;\r
}\r
\r
package user.jobengine.server.steps;\r
\r
+import java.util.Arrays;\r
+\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-import user.mediacube.metadata.interfaces.IMetadataProvider;\r
-\r
public class FakeStep extends JobStep {\r
private static final Logger logger = LogManager.getLogger();\r
private int count = 10;\r
- private StringBuilder sb = new StringBuilder();\r
- private IMetadataProvider metadataProvider;\r
\r
@StepEntry\r
- public Object[] execute(long itemID, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- Object[] result = { itemID + 1 };\r
-\r
- // if (result != null)\r
- // throw new Exception(\r
- // "Ez most egy nagyon hosszú hibaüzenet szeretne lenni, amit remélem hogy több sorban fogok látni. Mert ha nem! Akko lesz nemulass...");\r
- // Files.copy(Paths.get("/etc/security/limits.conf"), Paths.get("/etc/security/limits.conf.bak"));\r
- // Files.write(Paths.get("/etc/security/limits.conf"), new byte[0], StandardOpenOption.TRUNCATE_EXISTING);\r
+ public Object[] execute(long itemID, Iterable<?> iter) throws Exception {\r
\r
- //test();\r
-\r
- //((MediaCubeMarker) jobRuntime.getMarker()).setTo("vasary@elgekko.net");\r
+ if (getJobRuntime().getSpawnOrder() == 0) {\r
+ count = 5;\r
+ }\r
+ logger.info(getMarker(), "Starting params: {}, {}, spawnOrder {}", itemID, iter, getJobRuntime().getSpawnOrder());\r
\r
- //logger.info(jobRuntime.getMarker(), "<a href='UNC://\\10.10.1.100\\BRAAVOS\\ARCHIVE' target='blank'>usefullink</a>");\r
- logger.info(jobRuntime.getMarker(), "Starting with {} #{}", itemID, jobRuntime.getId());\r
- // Message message = logger.getMessageFactory().newMessage("Starting with {} #{}", itemID, jobRuntime.getId());\r
- //logger.error(jobRuntime.getMarker(), message, new Exception("TESZT"));\r
try {\r
+ int step = 100 / count;\r
for (int i = 0; i < count; i++) {\r
- //sb.append("Sikeres iteráció : ")\r
if (!canContinue())\r
break;\r
- jobRuntime.incrementProgress((i + 1) * count);\r
+ setProgress((i + 1) * step);\r
for (int j = 0; j < 100; j++) {\r
Thread.sleep(10);\r
}\r
-\r
- //jobEngine.sendMessage(new CancelRequest(jobRuntime.getId()));\r
- logger.info("Progress {}", jobRuntime.getProgress());\r
+ logger.info("Progress {}", getJobRuntime().getProgress());\r
}\r
\r
} catch (Exception e) {\r
- logger.error(jobRuntime.getMarker(), e.getMessage());\r
+ logger.error(getMarker(), e.getMessage());\r
throw e;\r
}\r
+ Object[] result = Arrays.asList(10, 20).toArray();\r
+ logger.info("Returning {}, {}", result[0], result[1]);\r
return result;\r
}\r
\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+public class MergeStep extends JobStep {\r
+ private static final Logger logger = LogManager.getLogger();\r
+\r
+ @StepEntry\r
+ public Object[] execute(long id1, long id2) throws Exception {\r
+ logger.info("MERGE {} {}", id1, id2);\r
+ return null;\r
+ }\r
+\r
+}\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import java.sql.Timestamp;\r
+import java.time.Instant;\r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import user.commons.StoreUri;\r
+import user.commons.nexio.api.Clip;\r
+import user.commons.nexio.api.Controller;\r
+import user.commons.nexio.api.Mediabase;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
+import user.jobengine.db.IItemManager;\r
+import user.jobengine.db.Media;\r
+import user.jobengine.db.Store;\r
+\r
+public class NEXIOCheckerStep extends JobStep {\r
+ private static final Logger logger = LogManager.getLogger();\r
+\r
+ @StepEntry\r
+ public Object[] execute(String storeName, int limit) throws Exception {\r
+ List<Media> newItems = new ArrayList<>();\r
+ List<Media> updatedItems = new ArrayList<>();\r
+ Object[] result = Arrays.asList(newItems, updatedItems).toArray();\r
+ IItemManager manager = getManager();\r
+\r
+ Store store = manager.getStore(storeName);\r
+ if (store == null)\r
+ throw new NullPointerException("Store not available: " + storeName);\r
+\r
+ StoreUri storeUri = store.getSourceStoreUri(RemoteStoreProtocol.NEXIO);\r
+ if (storeUri == null)\r
+ throw new NullPointerException("NEXIO StoreUri not available on: " + storeName);\r
+\r
+ Controller controller = null;\r
+\r
+ try {\r
+ controller = new Controller(storeUri.getRootPath(), storeUri.getPortNumber());\r
+ controller.connect();\r
+ Mediabase mediabase = controller.getMediabase();\r
+ //SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");\r
+ Iterator<Clip> clips = mediabase.getClips();\r
+ int count = limit;\r
+ while (clips.hasNext()) {\r
+ Clip clip = clips.next();\r
+ //String id = clip.getId().get();\r
+ String title = clip.getXid().get();\r
+ Timestamp modified = Timestamp.from(clip.getModifiedTimestamp().toInstant());\r
+ Timestamp created = Timestamp.from(clip.getRecordDateTimestamp().toInstant());\r
+ int duration = clip.getDuration();\r
+\r
+ Media media = manager.getMedia(title);\r
+ if (media == null) {\r
+ media = new Media();\r
+ media.setModified(modified);\r
+ media.setCreated(created);\r
+ media.setArchived(Timestamp.from(Instant.now()));\r
+ media.setTitle(title);\r
+ media.setDescription(title);\r
+ media.setLength(duration);\r
+ newItems.add(media);\r
+ count--;\r
+ } else {\r
+ if (media.getLength() != duration || !media.getModified().equals(modified)) {\r
+ media.setArchived(Timestamp.from(Instant.now()));\r
+ media.setModified(modified);\r
+ media.setLength(duration);\r
+ updatedItems.add(media);\r
+ count--;\r
+ }\r
+ }\r
+\r
+ //ha volt limit, akkor egyszer csak 0 lesz, ha nem volt akkor alapbol -1\r
+ if (count == 0) {\r
+ logger.info("Limit reached: {}", limit);\r
+ break;\r
+ }\r
+\r
+ }\r
+ } catch (Exception e) {\r
+ logger.error(e);\r
+ } finally {\r
+ if (controller != null)\r
+ controller.disconnect();\r
+ }\r
+\r
+ if (newItems.size() == 0 && updatedItems.size() == 0)\r
+ cancel();\r
+\r
+ return result;\r
+ }\r
+\r
+}\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import java.util.List;\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.db.IItemManager;\r
+import user.jobengine.db.Media;\r
+import user.jobengine.db.Store;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class SubmitDownloadStep extends JobStep {\r
+ private static final Logger logger = LogManager.getLogger();\r
+ private static final String JOBTEMPLATE = "download-material.xml";\r
+ private static final String DOWNLOAD = "Letöltés";\r
+\r
+ @StepEntry\r
+ public Object[] execute(String storeName, List<Media> newFiles, List<Media> updatedFiles) throws Exception {\r
+ if (!getJobRuntime().forkPrepare())\r
+ throw new Exception("Unable to fork");\r
+\r
+ IItemManager manager = getManager();\r
+ Store store = manager.getStore(storeName);\r
+ if (store == null)\r
+ throw new NullPointerException("Store not available: " + storeName);\r
+\r
+ for (Media media : newFiles) {\r
+ try {\r
+ IJobRuntime runtime = getEngine().submit(getJobRuntime(), null, JOBTEMPLATE, DOWNLOAD, ListUtils.asMap("store", store, "media", media));\r
+ if (runtime == null)\r
+ throw new Exception("Unable to submit job");\r
+ } catch (Exception e) {\r
+ logger.error(e.getMessage());\r
+ throw e;\r
+ }\r
+ }\r
+\r
+ getJobRuntime().forkWaitComplete();\r
+ return null;\r
+ }\r
+\r
+}\r
user.commons.mediatool,
user.commons.morpheus,
user.commons.nexio,
+ user.commons.nexio.api,
+ user.commons.nexio.server.protocol,
user.commons.nosql,
user.commons.octopus,
user.commons.rcc,
user.commons.remotestore,
+ user.commons.rest,
user.commons.selenio,
user.commons.selenio.wsclient,
user.commons.server.protocol,
/**
* Végrehajtás alatt - a folyamat végrehajtó futtatja a lépést.
*/
- EXECUTING(0x1000);
+ EXECUTING(0x1000),
+ /**
+ * Végrehajtás alatt - a folyamat végrehajtó futtatja a lépést.
+ */
+ WAIT_FINISH(0x010C);
private final int value;
package user.commons.remotestore;\r
\r
public enum RemoteStoreProtocol {\r
- HTTPS("https://"), HTTP("http://"), FTP("ftp://"), SMB("smb://"), LOCAL("file://"), TSM("tsm://");\r
+ HTTPS("https://"), HTTP("http://"), FTP("ftp://"), SMB("smb://"), LOCAL("file://"), TSM("tsm://"), NEXIO("nexio://");\r
static public RemoteStoreProtocol fromString(String data) {\r
RemoteStoreProtocol result = null;\r
if (data != null) {\r
-package user.jobengine.osgi.rest;
+package user.commons.rest;
import java.text.FieldPosition;
import java.util.Date;
--- /dev/null
+package user.commons.rest;\r
+\r
+import com.fasterxml.jackson.annotation.JsonInclude.Include;\r
+import com.fasterxml.jackson.databind.DeserializationFeature;\r
+import com.fasterxml.jackson.databind.ObjectMapper;\r
+import com.fasterxml.jackson.databind.SerializationFeature;\r
+import com.fasterxml.jackson.datatype.joda.JodaModule;\r
+\r
+public class ServiceObjectMapper {\r
+ private static final ObjectMapper mapper = new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)\r
+ .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).registerModule(new JodaModule()).setDateFormat(new RFC3339DateFormat())\r
+ .setSerializationInclusion(Include.NON_NULL);\r
+ // .enable(SerializationFeature.INDENT_OUTPUT);\r
+\r
+ public static ObjectMapper getMapper() {\r
+ return mapper;\r
+ }\r
+}\r
\r
::Remote::\r
SET REMOTE_LOCATION=/tmp/mediaarch\r
- SET REMOTE_SERVER_HOSTKEY=ssh-ed25519 256 ea:ab:67:70:79:63:2f:6a:34:81:48:e2:b9:dd:ca:d4\r
- SET REMOTE_SERVER_ADDRESS=scp://db2admin:password@10.10.1.27\r
+ SET REMOTE_SERVER_HOSTKEY=ssh-ed25519 256 86:5b:9b:bc:df:7b:df:90:c6:bf:60:69:d2:c9:61:62\r
+ SET REMOTE_SERVER_ADDRESS=scp://db2admin:password@10.228.198.1\r
\r
CALL :deploy_source\r
if %ERRORLEVEL% neq 0 exit /b %ERRORLEVEL%\r
try {
add(context, entity);
} catch (Exception e) {
+ //TODO reszletezes
throw new ItemManagerException(e);
} finally {
manager.putDbContext(context);
insert(context, entity);
if (id == 0) {
- /*@lineinfo:generated-code*//*@lineinfo:51^4*/
+ /*@lineinfo:generated-code*//*@lineinfo:52^4*/
// ************************************************************
// #sql [context] { SELECT IDENTITY_VAL_LOCAL() INTO :id, FROM SYSIBM.SYSDUMMY1 };
// ************************************************************
-/*@lineinfo:user-code*//*@lineinfo:51^80*/
+/*@lineinfo:user-code*//*@lineinfo:52^80*/
entity.setId(id);
}
afterAdd(context, entity);
- /*@lineinfo:generated-code*//*@lineinfo:55^3*/
+ /*@lineinfo:generated-code*//*@lineinfo:56^3*/
// ************************************************************
// #sql [context] { COMMIT };
// ************************************************************
-/*@lineinfo:user-code*//*@lineinfo:55^27*/
+/*@lineinfo:user-code*//*@lineinfo:56^27*/
if (useMemoryCache())
manager.storeCached(entity.getId(), entity);
} catch (Exception e) {
try {
- /*@lineinfo:generated-code*//*@lineinfo:61^4*/
+ /*@lineinfo:generated-code*//*@lineinfo:62^4*/
// ************************************************************
// #sql [context] { ROLLBACK };
// ************************************************************
-/*@lineinfo:user-code*//*@lineinfo:61^30*/
+/*@lineinfo:user-code*//*@lineinfo:62^30*/
} catch(Exception e1) {
}
manager.throwError(e);
}
return result;
}
-
+
+ @Override
+ public IEntityBase get(IDAOIterProvider provider) {
+ IEntityBase entity = null;
+ DefaultContext context = manager.getDbContext();
+ try {
+ entity = get(context, provider);
+ } catch (Exception e) {
+ throw new ItemManagerException(e);
+ } finally {
+ manager.putDbContext(context);
+ }
+ return entity;
+ }
+
+ private IEntityBase get(DefaultContext context, IDAOIterProvider provider) {
+ manager.traceIn();
+ IEntityBase entity = null;
+ try {
+ ResultSetIterImpl iter = provider.get(context, this);
+ checkNull(iter, ResultSetIterImpl.class);
+ entity = getEntity(context, iter);
+ afterGet(context, entity);
+ } catch (Exception e) {
+ throw new ItemManagerException(e);
+ }
+ manager.traceOut();
+ return entity;
+ }
+
public List<IEntityBase> getAll(DefaultContext context) {
manager.traceIn();
List<IEntityBase> result = null;
manager.setAllCached(getCacheType(), result);
}
- /*@lineinfo:generated-code*//*@lineinfo:222^3*/
+ /*@lineinfo:generated-code*//*@lineinfo:252^3*/
// ************************************************************
// #sql [context] { COMMIT };
// ************************************************************
-/*@lineinfo:user-code*//*@lineinfo:222^27*/
+/*@lineinfo:user-code*//*@lineinfo:252^27*/
} catch (Exception e) {
try {
- /*@lineinfo:generated-code*//*@lineinfo:225^4*/
+ /*@lineinfo:generated-code*//*@lineinfo:255^4*/
// ************************************************************
// #sql [context] { ROLLBACK };
// ************************************************************
-/*@lineinfo:user-code*//*@lineinfo:225^30*/
+/*@lineinfo:user-code*//*@lineinfo:255^30*/
} catch(Exception e1) {
}
manager.throwError(e);
entity.checkParameter("ID", id, false);
update(context, entity);
afterModify(context, entity);
- /*@lineinfo:generated-code*//*@lineinfo:269^3*/
+ /*@lineinfo:generated-code*//*@lineinfo:299^3*/
// ************************************************************
// #sql [context] { COMMIT };
// ************************************************************
-/*@lineinfo:user-code*//*@lineinfo:269^27*/
+/*@lineinfo:user-code*//*@lineinfo:299^27*/
if (useMemoryCache())
manager.storeCached(entity.getId(), entity);
} catch (Exception e) {
try {
- /*@lineinfo:generated-code*//*@lineinfo:274^4*/
+ /*@lineinfo:generated-code*//*@lineinfo:304^4*/
// ************************************************************
// #sql [context] { ROLLBACK };
// ************************************************************
-/*@lineinfo:user-code*//*@lineinfo:274^30*/
+/*@lineinfo:user-code*//*@lineinfo:304^30*/
} catch(Exception e1) {
}
manager.throwError(e);
beforeDelete(context, entity);
delete(context, id);
afterDelete(context, entity);
- /*@lineinfo:generated-code*//*@lineinfo:303^3*/
+ /*@lineinfo:generated-code*//*@lineinfo:333^3*/
// ************************************************************
// #sql [context] { COMMIT };
// ************************************************************
-/*@lineinfo:user-code*//*@lineinfo:303^27*/
+/*@lineinfo:user-code*//*@lineinfo:333^27*/
if (useMemoryCache())
manager.removeCached(getCacheType(), entity.getId());
} catch (Exception e) {
try {
- /*@lineinfo:generated-code*//*@lineinfo:308^4*/
+ /*@lineinfo:generated-code*//*@lineinfo:338^4*/
// ************************************************************
// #sql [context] { ROLLBACK };
// ************************************************************
-/*@lineinfo:user-code*//*@lineinfo:308^30*/
+/*@lineinfo:user-code*//*@lineinfo:338^30*/
} catch(Exception e1) {
}
manager.throwError(e);
try {
for (long id : ids)
delete(context, id);
- /*@lineinfo:generated-code*//*@lineinfo:332^3*/
+ /*@lineinfo:generated-code*//*@lineinfo:362^3*/
// ************************************************************
// #sql [context] { COMMIT };
// ************************************************************
-/*@lineinfo:user-code*//*@lineinfo:332^27*/
+/*@lineinfo:user-code*//*@lineinfo:362^27*/
if (useMemoryCache()) {
for (long id : ids)
manager.removeCached(getCacheType(), id);
}
} catch (Exception e) {
try {
- /*@lineinfo:generated-code*//*@lineinfo:339^4*/
+ /*@lineinfo:generated-code*//*@lineinfo:369^4*/
// ************************************************************
// #sql [context] { ROLLBACK };
// ************************************************************
-/*@lineinfo:user-code*//*@lineinfo:339^30*/
+/*@lineinfo:user-code*//*@lineinfo:369^30*/
} catch(Exception e1) {
}
manager.throwError(e);
DefaultContext context = manager.getDbContext();
try {
truncateTable(context);
- /*@lineinfo:generated-code*//*@lineinfo:353^3*/
+ /*@lineinfo:generated-code*//*@lineinfo:383^3*/
// ************************************************************
// #sql [context] { COMMIT };
// ************************************************************
-/*@lineinfo:user-code*//*@lineinfo:353^27*/
+/*@lineinfo:user-code*//*@lineinfo:383^27*/
} catch (Exception e) {
throw new ItemManagerException(e);
} finally {
--- /dev/null
+package user.jobengine.db;\r
+\r
+import sqlj.runtime.ref.DefaultContext;\r
+import sqlj.runtime.ref.ResultSetIterImpl;\r
+\r
+public interface IDAOIterProvider {\r
+\r
+ ResultSetIterImpl get(DefaultContext context, IEntityBaseDAO dao);\r
+\r
+}\r
import java.lang.reflect.InvocationTargetException;\r
import java.sql.Connection;\r
import java.sql.DriverManager;\r
+import java.sql.ResultSet;\r
+import java.sql.Statement;\r
import java.util.Properties;\r
\r
import org.apache.logging.log4j.LogManager;\r
protected boolean checkObject(Object resourceObject) {\r
DefaultContext context = (DefaultContext) resourceObject;\r
boolean result = false;\r
- try {\r
- result = context.getConnection().isClosed();\r
- } catch (Exception e) {\r
- logger.catching(e);\r
+ String sql = "SELECT 1 FROM SYSIBM.SYSDUMMY1";\r
+ try (Statement stmt = context.getConnection().createStatement()) {\r
+ try (ResultSet resultSet = stmt.executeQuery(sql)) {\r
+ result = true;\r
+ } catch (Exception e2) {\r
+ throw e2;\r
+ }\r
+ } catch (Exception e1) {\r
+ logger.catching(e1);\r
}\r
return result;\r
}\r
DomainIndexDAO indexdao = (DomainIndexDAO) manager.getBaseDAO(DomainIndex.class);\r
indexdao.removeAll(context, entity, metadata);\r
}\r
+\r
}\r
try {\r
add(context, entity);\r
} catch (Exception e) {\r
+ //TODO reszletezes\r
throw new ItemManagerException(e);\r
} finally {\r
manager.putDbContext(context);\r
}\r
return result;\r
}\r
-\r
+ \r
+ @Override\r
+ public IEntityBase get(IDAOIterProvider provider) {\r
+ IEntityBase entity = null;\r
+ DefaultContext context = manager.getDbContext();\r
+ try {\r
+ entity = get(context, provider);\r
+ } catch (Exception e) {\r
+ throw new ItemManagerException(e);\r
+ } finally {\r
+ manager.putDbContext(context);\r
+ }\r
+ return entity;\r
+ }\r
+ \r
+ private IEntityBase get(DefaultContext context, IDAOIterProvider provider) {\r
+ manager.traceIn();\r
+ IEntityBase entity = null;\r
+ try {\r
+ ResultSetIterImpl iter = provider.get(context, this);\r
+ checkNull(iter, ResultSetIterImpl.class);\r
+ entity = getEntity(context, iter);\r
+ afterGet(context, entity);\r
+ } catch (Exception e) {\r
+ throw new ItemManagerException(e);\r
+ }\r
+ manager.traceOut();\r
+ return entity;\r
+ } \r
+ \r
public List<IEntityBase> getAll(DefaultContext context) {\r
manager.traceIn();\r
List<IEntityBase> result = null;\r
public interface IEntityBaseDAO {\r
void add(IEntityBase entity);\r
\r
+ IEntityBase get(IDAOIterProvider provider);\r
+\r
IEntityBase get(long id);\r
\r
List<IEntityBase> getAll();\r
\r
List<IEntityBase> getAll(long id);\r
\r
- void modify(IEntityBase entity);\r
-\r
void merge(IEntityBase entity);\r
\r
+ void modify(IEntityBase entity);\r
+\r
void remove(IEntityBase entity);\r
\r
void remove(List<Long> ids);\r
*/\r
Media getMedia(long id);\r
\r
+ Media getMedia(String title);\r
+\r
/**\r
* Azonosító alapján elkér egy Metaadat elem objektumot.\r
*\r
import com.ibm.nosql.json.api.BasicDBObject;\r
\r
import sqlj.runtime.ref.DefaultContext;\r
+import sqlj.runtime.ref.ResultSetIterImpl;\r
import user.commons.BaseType;\r
import user.commons.CalendarUtils;\r
import user.commons.IEntityBase;\r
\r
public ItemManager() {\r
initializeItemManager(signalServer);\r
- connect();\r
-\r
// TODO mediafinder lokalis valtozo helyett private field.\r
// System.getProperty("jobengine.mediafinder.external") == true\r
// System.getProperty("jobengine.mediafinder.external.url")\r
}\r
\r
public void activate() {\r
- // logger.info("ItemManager activated.");\r
+ connect();\r
}\r
\r
- // public ItemManager(SignalServer signalServer) {\r
- // initializeItemManager(signalServer);\r
- // }\r
-\r
@Override\r
public void add(IEntityBase entity) {\r
traceIn();\r
\r
public void deactivate() {\r
// logger.info("ItemManager deactivated.");\r
+ disconnect();\r
}\r
\r
/**\r
@Override\r
public DefaultContext getDbContext() {\r
DefaultContext context = null;\r
- context = contextPool.borrowObject();\r
+ if (contextPool != null)\r
+ context = contextPool.borrowObject();\r
return context;\r
}\r
\r
return (Media) get(Media.class, id);\r
}\r
\r
+ @Override\r
+ public Media getMedia(String title) {\r
+ IEntityBaseDAO daoBase = getBaseDAO(Media.class);\r
+ return (Media) daoBase.get((context, dao) -> {\r
+ ResultSetIterImpl result = null;\r
+ try {\r
+ result = ((MediaDAO) dao).selectByTitle(context, title);\r
+ } catch (SQLException e) {\r
+ logger.error(e.getMessage());\r
+ }\r
+ return result;\r
+ });\r
+ }\r
+\r
@Override\r
public MetadataElement getMetadataElement(long id) {\r
return (MetadataElement) get(MetadataElement.class, id);\r
private static final long serialVersionUID = 1L;
private Timestamp archived = null;
private Timestamp created = null;
+ private Timestamp modified = null;
private String description = null;
private String houseId = null;
private long itemId = 0;
return mediaFilesName;
}
+ public Timestamp getModified() {
+ return modified;
+ }
+
public byte[] getPoster() {
return poster;
}
this.mediaFilesName = mediaFilesName;
}
+ public void setModified(Timestamp modified) {
+ this.modified = modified;
+ }
+
public void setPoster(byte[] poster) {
this.poster = poster;
}
import java.util.ArrayList;\r
import java.util.List;\r
\r
-#sql iterator MediaIter(long id, String title, String description, long itemId, long itemTypeId, String houseId, long length, Timestamp created, Timestamp archived, byte[] poster);\r
+#sql iterator MediaIter(long id, String title, String description, long itemId, long itemTypeId, String houseId, long length, Timestamp created, Timestamp archived, Timestamp modified, byte[] poster);\r
\r
@SuppressWarnings("unused")\r
class MediaDAO extends EntityBaseDAO {\r
entity.setLength(iterator.length());\r
entity.setCreated(iterator.created());\r
entity.setArchived(iterator.archived());\r
+ entity.setModified(iterator.modified());\r
entity.setPoster(iterator.poster());\r
\r
if (result == null)\r
@Override\r
protected ResultSetIterImpl selectByKey(DefaultContext context, long id) throws SQLException{\r
MediaIter iter = null;\r
- #sql [context] iter = { SELECT ID, TITLE, DESCRIPTION, ITEMID, ITEMTYPEID, HOUSEID, LENGTH, CREATED, ARCHIVED, POSTER FROM MEDIA WHERE ID = :id };\r
+ #sql [context] iter = { SELECT ID, TITLE, DESCRIPTION, ITEMID, ITEMTYPEID, HOUSEID, LENGTH, CREATED, ARCHIVED, MODIFIED, POSTER FROM MEDIA WHERE ID = :id };\r
return iter;\r
}\r
\r
@Override\r
protected ResultSetIterImpl selectByForeignKey(DefaultContext context, long id) throws SQLException{\r
MediaIter iter = null;\r
- #sql [context] iter = { SELECT ID, TITLE, DESCRIPTION, ITEMID, ITEMTYPEID, HOUSEID, LENGTH, CREATED, ARCHIVED, POSTER FROM MEDIA WHERE ITEMID = :id };\r
+ #sql [context] iter = { SELECT ID, TITLE, DESCRIPTION, ITEMID, ITEMTYPEID, HOUSEID, LENGTH, CREATED, ARCHIVED, MODIFIED, POSTER FROM MEDIA WHERE ITEMID = :id };\r
+ return iter;\r
+ }\r
+ \r
+ public ResultSetIterImpl selectByTitle(DefaultContext context, String title) throws SQLException{\r
+ MediaIter iter = null;\r
+ #sql [context] iter = { SELECT ID, TITLE, DESCRIPTION, ITEMID, ITEMTYPEID, HOUSEID, LENGTH, CREATED, ARCHIVED, MODIFIED, POSTER FROM MEDIA WHERE TITLE = :title };\r
return iter;\r
}\r
\r
@Override\r
protected ResultSetIterImpl selectAll(DefaultContext context) throws SQLException{\r
MediaIter iter = null;\r
- #sql [context] iter = { SELECT ID, TITLE, DESCRIPTION, ITEMID, ITEMTYPEID, HOUSEID, LENGTH, CREATED, ARCHIVED, POSTER FROM MEDIA };\r
+ #sql [context] iter = { SELECT ID, TITLE, DESCRIPTION, ITEMID, ITEMTYPEID, HOUSEID, LENGTH, CREATED, ARCHIVED, MODIFIED, POSTER FROM MEDIA };\r
return iter;\r
}\r
\r
long length = obj.getLength();\r
byte[] poster = obj.getPoster();\r
Timestamp archived = obj.getArchived();\r
+ Timestamp modified = obj.getModified();\r
\r
- #sql [context] { UPDATE MEDIA SET TITLE = :title, DESCRIPTION = :description, ITEMID = :itemId, ITEMTYPEID = :itemTypeId, HOUSEID = :houseId, LENGTH = :length, POSTER = :poster, ARCHIVED = :archived WHERE ID = :id };\r
+ #sql [context] { UPDATE MEDIA SET TITLE = :title, DESCRIPTION = :description, ITEMID = :itemId, ITEMTYPEID = :itemTypeId, HOUSEID = :houseId, LENGTH = :length, POSTER = :poster, ARCHIVED = :archived, MODIFIED = :modified WHERE ID = :id };\r
}\r
\r
@Override\r
long length = obj.getLength();\r
byte[] poster = obj.getPoster();\r
Timestamp archived = obj.getArchived();\r
+ Timestamp modified = obj.getModified();\r
\r
- #sql [context] { INSERT INTO MEDIA (ID, TITLE, DESCRIPTION, ITEMID, ITEMTYPEID, HOUSEID, LENGTH, POSTER, ARCHIVED) VALUES (:id, :title, :description, :itemId, :itemTypeId, :houseId, :length, :poster, :archived) };\r
+ #sql [context] { INSERT INTO MEDIA (ID, TITLE, DESCRIPTION, ITEMID, ITEMTYPEID, HOUSEID, LENGTH, POSTER, ARCHIVED, MODIFIED) VALUES (:id, :title, :description, :itemId, :itemTypeId, :houseId, :length, :poster, :archived, :modified) };\r
}\r
\r
/**\r
- * Beszúrja az Item objektumhoz kapcsolódó statikus/dinamikus Media adatokat. \r
+ * Besz�rja az Item objektumhoz kapcsol�d� statikus/dinamikus Media adatokat. \r
*/\r
void addAll(DefaultContext context, IEntityBase entity) throws SQLException {\r
manager.traceIn();\r
Bundle-SymbolicName: user.jobengine.osgi.server;singleton:=true
Bundle-Version: 1.0.0
Service-Component: OSGI-INF/component.xml, OSGI-INF/componentBinder.xml
-Import-Package: javax.servlet;version="3.1.0",
+Import-Package: com.fasterxml.jackson.jaxrs.cfg;version="2.4.5",
+ com.fasterxml.jackson.jaxrs.json;version="2.4.5",
+ com.fasterxml.jackson.module.jaxb;version="2.4.5",
+ groovy.lang;version="3.0.3",
+ javax.servlet;version="3.1.0",
javax.servlet.http;version="3.1.0",
javax.ws.rs.client,
javax.ws.rs.core,
emptyMessage="Nincs futó folyamat" >\r
<listhead>\r
<listheader label="Id" hflex="min" align="left" sort="auto" />\r
+ <listheader label="ParentId" hflex="min" align="left" sort="auto" />\r
<listheader label="Indítás" hflex="min" align="left" sort="auto" />\r
<listheader label="Kész" hflex="min" align="left" sort="auto" />\r
<listheader label="Név" hflex="min" align="left" sort="auto" />\r
<template name="model">\r
<listitem>\r
<listcell label="@load(each.id)" />\r
+ <listcell label="@load(each.parentJobId)" />\r
<listcell label="@load(each.submitted)" />\r
<listcell label="@load(each.finished)" />\r
<listcell label="@load(each.name)" />\r
import user.jobengine.server.instructions.IInstruction;
/**
- * Program leíró interface. A gépikód gyûjtõ osztája.
+ * Program le�r� interface. A g�pik�d gy�jt� oszt�ja.
*/
public interface IProgram {
/**
- * Gépikódú utasítás hozzáadása.
- *
+ * G�pik�d� utas�t�s hozz�ad�sa.
+ *
* @param instruction
- * Gepikódú utasítás.
+ * Gepik�d� utas�t�s.
*/
void addInstruction(IInstruction instruction);
/**
- * Program egyenlõség vizsgálata. Két program akkor lesz egyenlõ, ha
- * utasításainak darabszáma, utasításainak típusa, utasításainak sorrendje
- * és utasításainak paraméterei megegyeznek.
- *
+ * Program egyenl�s�g vizsg�lata. K�t program akkor lesz egyenl�, ha utas�t�sainak darabsz�ma, utas�t�sainak t�pusa, utas�t�sainak sorrendje �s
+ * utas�t�sainak param�terei megegyeznek.
+ *
* @param obj
- * Az aktuális példánnyal összahsonlítandó példány.
- * @return Igen - a két program megegyezik, Nem - a két program
- * különbözõ.Eltérõ utasításszámnál és az elsõ eltérõ utasításnál
- * kivételt kapunk.
+ * Az aktu�lis p�ld�nnyal �sszahsonl�tand� p�ld�ny.
+ * @return Igen - a k�t program megegyezik, Nem - a k�t program k�l�nb�z�.Elt�r� utas�t�ssz�mn�l �s az els� elt�r� utas�t�sn�l kiv�telt kapunk.
*/
@Override
boolean equals(Object obj);
/**
- * Gépikódú utasítás lekérdezése.
- *
+ * G�pik�d� utas�t�s lek�rdez�se.
+ *
* @param index
- * Utasítás sorszáma.
- * @return Gépikódú utasítás.
+ * Utas�t�s sorsz�ma.
+ * @return G�pik�d� utas�t�s.
*/
IInstruction get(int index);
List<IInstruction> getInstructions();
/**
- * Gépikódú utasítások számának lekérdezése.
- *
- * @return Gépikódú utasítások darabszáma.
+ * G�pik�d� utas�t�sok sz�m�nak lek�rdez�se.
+ *
+ * @return G�pik�d� utas�t�sok darabsz�ma.
*/
long getInstructionsCount();
+ JobTemplate getTemplate();
+
+ void removeAfter(int ip);
+
/**
- * Gépikódú utasítások törlése a programból.
+ * G�pik�d� utas�t�sok t�rl�se a programb�l.
*/
void reset();
void setTemplate(JobTemplate template);
-
- JobTemplate getTemplate();
}
import user.jobengine.server.instructions.IInstruction;
public class Program implements IProgram {
- private final List<IInstruction> instructions;
+ private List<IInstruction> instructions;
private JobTemplate template;
public Program() {
instructions = new ArrayList<IInstruction>();
}
+ public Program(IProgram program) {
+ instructions = program.getInstructions();
+ template = program.getTemplate();
+ }
+
@Override
public void addInstruction(IInstruction instruction) {
if (instruction == null)
throw new NullPointerException("instruction");
- getInstructions().add(instruction);
+ instructions.add(instruction);
}
@Override
public IInstruction get(int ip) {
if (ip > getInstructions().size() - 1)
throw new IndexOutOfBoundsException("instructions");
- return getInstructions().get(ip);
+ return instructions.get(ip);
}
@Override
@Override
public long getInstructionsCount() {
- return getInstructions().size();
+ return instructions.size();
}
@Override
return template;
}
+ @Override
+ public void removeAfter(int ip) {
+ List<IInstruction> result = new ArrayList<>();
+
+ for (int i = 0; i <= ip; i++)
+ result.add(instructions.get(i));
+
+ instructions = result;
+ }
+
@Override
public void reset() {
- getInstructions().clear();
+ instructions.clear();
}
@Override
StatusMachineAction machineAction = new StatusMachineAction(jobAction, jobRuntime.getStatus());\r
if (actions.containsKey(machineAction)) {\r
IJobStatusAction action = actions.get(machineAction);\r
- logger.debug("{} status change {} -> {}", jobRuntime, jobRuntime.getStatus(), jobAction);\r
+ logger.info("{} status change {} -> {}", jobRuntime, jobRuntime.getStatus(), jobAction);\r
action.processAction(jobEngine, jobRuntime);\r
+ } else {\r
+ logger.warn("No status processor registered for {} -> {}", jobAction, jobRuntime.getStatus());\r
}\r
\r
// throw new RuntimeException("missing action: " + jobAction + ", " +\r
private CommandSequence commandSequence = null;\r
private String type = null;\r
private boolean isRemote;\r
+ private String forEach;\r
\r
public CallJobStepCommand() {\r
}\r
return commandSequence;\r
}\r
\r
+ public String getForEach() {\r
+ return forEach;\r
+ }\r
+\r
public ParameterSequence getInputParameterSequence() {\r
return inputParameterSequence;\r
}\r
this.commandSequence = commandSequence;\r
}\r
\r
+ public void setForEach(String forEach) {\r
+ this.forEach = forEach;\r
+ }\r
+\r
public void setInputParameterSequence(ParameterSequence parameterSequence) {\r
this.inputParameterSequence = parameterSequence;\r
}\r
\r
import java.util.List;\r
\r
+import org.apache.commons.lang.StringUtils;\r
+\r
import user.jobengine.server.IProgram;\r
import user.jobengine.server.Program;\r
import user.jobengine.server.instructions.AssignVariableInstruction;\r
import user.jobengine.server.instructions.GetVariableInstruction;\r
import user.jobengine.server.instructions.PushToStackInstruction;\r
import user.jobengine.server.instructions.SendMessageToUserInstruction;\r
+import user.jobengine.server.instructions.WaitForSpawnJobsInstruction;\r
\r
public class Encoder implements Visitor {\r
\r
}\r
\r
p.addInstruction(new PushToStackInstruction(command.getType()));\r
- p.addInstruction(new CallJobStepInstruction(command.getWeight(), command.isRemote()));\r
+ p.addInstruction(new CallJobStepInstruction(command.getWeight(), command.isRemote(), command.getForEach()));\r
\r
if (outputs != null) {\r
for (@SuppressWarnings("unused")\r
p.addInstruction(new AssignVariableInstruction());\r
}\r
}\r
+ if (StringUtils.isNotBlank(command.getForEach()))\r
+ p.addInstruction(new WaitForSpawnJobsInstruction());\r
return null;\r
}\r
\r
import user.jobengine.server.IJobRuntime;
/**
- * Változó értékadás utasítás.
+ * Valtozo ertekadas utasitas.
*/
public class AssignVariableInstruction extends Instruction {
@Override
public class CallJobStepInstruction extends Instruction {
private boolean isRemote;
+ private String forEach;
public CallJobStepInstruction() {
}
- public CallJobStepInstruction(int weight, boolean isRemote) {
+ public CallJobStepInstruction(int weight, boolean isRemote, String forEach) {
this.isRemote = isRemote;
+ this.forEach = forEach;
setWeight(weight);
}
jobEngine.executeCallJobStepInstruction(jobRuntime);
}
+ public String getForEach() {
+ return forEach;
+ }
+
public boolean isRemote() {
return isRemote;
}
+ public void setForEach(String forEach) {
+ this.forEach = forEach;
+ }
+
public void setRemote(boolean isRemote) {
this.isRemote = isRemote;
}
import user.jobengine.server.IJobRuntime;
/**
- * Folyamat változó létrehozása utasítás.
+ * Folyamat valtozo letrehozasa utasatas.
*/
public class DeclareVariableInstruction extends Instruction {
@Override
public void execute(IJobEngine jobEngine, IJobRuntime jobRuntime) {
super.execute(jobEngine, jobRuntime);
- jobEngine.executeDeclareVariableInstruction(jobRuntime);
+ jobEngine.executeDeclareVariableInstruction(jobRuntime);
}
}
--- /dev/null
+package user.jobengine.server.instructions;
+
+import user.jobengine.server.IJobEngine;
+import user.jobengine.server.IJobRuntime;
+
+/**
+ * Folyamat varakozas letrehozasa
+ */
+public class WaitForSpawnJobsInstruction extends Instruction {
+ @Override
+ public void execute(IJobEngine jobEngine, IJobRuntime jobRuntime) {
+ super.execute(jobEngine, jobRuntime);
+ jobEngine.executeWaitForSpawnJobsInstruction(jobRuntime);
+ }
+}
import user.jobengine.server.IJobEngine;
/**
- * Folyamat lépés kész rendszerüzenet.
+ * Folyamat l�p�s k�sz rendszer�zenet.
*/
public class JobStepCompletedMessage extends JobMessage {
private final Object[] outputs;
/**
- * Példányosítás az egyedi azonosító és a lépés visszatérési értékeinek
- * megadásával.
- *
+ * Peldanyositas az egyedi azonositoval es a lepes visszataresi ertekeivel
+ *
* @param jobId
* @param outputs
*/
this.outputs = outputs;
}
- @Override
- public void process(IJobEngine jobEngine) {
- super.process(jobEngine);
- jobEngine.processJobStepCompletedMessage(this);
- }
-
@Override
public boolean equals(Object obj) {
boolean result = super.equals(obj);
}
/**
- * Lépés visszatérési értékeinek lekérdezése.
- *
- * @return Lépés visszatérési értékei tábla.
+ * @return Lepes visszateresi ertekei
*/
public Object[] getOutputs() {
return outputs;
}
+ @Override
+ public void process(IJobEngine jobEngine) {
+ super.process(jobEngine);
+ jobEngine.processJobStepCompletedMessage(this);
+ }
+
}
import java.io.File;\r
import java.nio.file.Files;\r
import java.nio.file.Paths;\r
+import java.util.ArrayList;\r
import java.util.Arrays;\r
import java.util.List;\r
import java.util.UUID;\r
if (jobParams != null) {\r
for (int p = 0; p < jobParams.size(); p++) {\r
BasicDBObject jsParam = (BasicDBObject) jobParams.get(p);\r
- String stringValue = jsParam.getString("value");\r
- if (stringValue == null)\r
- continue;\r
- Class<?> clazz = null;\r
- try {\r
- clazz = Class.forName(jsParam.getString("type"));\r
- Object value = parseObjectFromString(stringValue, clazz);\r
- sj.setJobParameter(jsParam.getString("name"), value);\r
- } catch (Exception e) {\r
- logger.error(e);\r
+ String n = jsParam.getString("name");\r
+ Object v = jsParam.get("value");\r
+ if (v instanceof BasicDBList) {\r
+ ArrayList<?> list = (BasicDBList) v;\r
+ sj.setJobParameter(n, list);\r
+ } else {\r
+ if (v == null)\r
+ continue;\r
+\r
+ String sv = String.valueOf(v);\r
+\r
+ if ("null".equals(v))\r
+ continue;\r
+\r
+ Class<?> clazz = null;\r
+ try {\r
+ clazz = Class.forName(jsParam.getString("type"));\r
+ Object value = parseObjectFromString(sv, clazz);\r
+ sj.setJobParameter(n, value);\r
+ } catch (Exception e) {\r
+ logger.error(e);\r
+ }\r
}\r
+\r
}\r
}\r
\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
+import user.jobengine.server.messages.CancelRequest;\r
\r
/**\r
* Folyamat lépés ősosztály implementáció.\r
return result;\r
}\r
\r
+ protected void cancel() {\r
+ jobEngine.sendMessage(new CancelRequest(jobRuntime.getId()));\r
+ }\r
+\r
@Override\r
public boolean canContinue() {\r
return !jobRuntime.isWaitingExecutor();\r
user.commons.cluster,
user.commons.nexio,
user.commons.octopus,
+ user.commons.rest,
user.jobengine.db,
user.jobengine.server
Export-Package: user.jobengine.osgi.rest,
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
+import user.commons.rest.ServiceObjectMapper;
+
@Provider
@Produces({ MediaType.APPLICATION_JSON })
//@Consumes({ "application/json;charset=UTF-8" })
public class JacksonJsonProvider extends JacksonJaxbJsonProvider {
public JacksonJsonProvider() {
- ObjectMapper objectMapper = ServiceObjectMapper.createMapper();
+ ObjectMapper objectMapper = ServiceObjectMapper.getMapper();
setMapper(objectMapper);
}
}
\ No newline at end of file
+++ /dev/null
-package user.jobengine.osgi.rest;\r
-\r
-import com.fasterxml.jackson.annotation.JsonInclude.Include;\r
-import com.fasterxml.jackson.databind.DeserializationFeature;\r
-import com.fasterxml.jackson.databind.ObjectMapper;\r
-import com.fasterxml.jackson.databind.SerializationFeature;\r
-import com.fasterxml.jackson.datatype.joda.JodaModule;\r
-\r
-public class ServiceObjectMapper {\r
-\r
- public static ObjectMapper createMapper() {\r
- //újraindítás kell a módoosításokhoz\r
- return new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)\r
- .registerModule(new JodaModule()).setDateFormat(new RFC3339DateFormat()).setSerializationInclusion(Include.NON_NULL);\r
- // .enable(SerializationFeature.INDENT_OUTPUT);\r
-\r
- }\r
-}\r
import com.ibm.nosql.json.api.BasicDBObject;
import user.commons.JobStatus;
+import user.commons.rest.ServiceObjectMapper;
import user.jobengine.db.ItemManagerData.SignalType;
import user.jobengine.db.JSONBase;
import user.jobengine.osgi.rest.ComponentBinder;
-import user.jobengine.osgi.rest.ServiceObjectMapper;
import user.jobengine.server.IJobChangedListener;
import user.jobengine.server.IJobEngine;
import user.jobengine.server.IJobRuntime;
private static Map<Long, IJobChangedListener> jobChangedListeners = new ConcurrentHashMap<>();
public MediaCubeAPIWSSocket() {
- mapper = ServiceObjectMapper.createMapper();
+ mapper = ServiceObjectMapper.getMapper();
logger.info("EventSocket created");
}
import com.ibm.nosql.json.JSONUtil;
import com.ibm.nosql.json.api.BasicDBObject;
+import user.commons.rest.ServiceObjectMapper;
import user.jobengine.osgi.rest.ComponentBinder;
-import user.jobengine.osgi.rest.ServiceObjectMapper;
public class NexioWSSocket extends WebSocketAdapter {
private static final Logger logger = LogManager.getLogger();
}
public NexioWSSocket() {
- mapper = ServiceObjectMapper.createMapper();
+ mapper = ServiceObjectMapper.getMapper();
logger.info("EventSocket created");
}