git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 19 Sep 2019 11:48:15 +0000 (11:48 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 19 Sep 2019 11:48:15 +0000 (11:48 +0000)
39 files changed:
server/-configuration/debug-mediacube-mv-8888.launch [new file with mode: 0644]
server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java [new file with mode: 0644]
server/hu.user.mediacube.indexer/indexer-build.launch
server/hu.user.mediacube.indexer/pom.xml
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/JsonProperties.java
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/RESTController.java
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/db/MediadescriptionMapper.java
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/db/MediadescriptionSqlProvider.java
server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/lucene/LuceneIndexer.java [new file with mode: 0644]
server/hu.user.mediacube.indexer/src/main/resources/application.properties
server/hu.user.mediacube.indexer/src/main/resources/base.xml [new file with mode: 0644]
server/hu.user.mediacube.indexer/src/main/resources/configprops.json
server/hu.user.mediacube.indexer/src/main/resources/console-appender.xml [new file with mode: 0644]
server/hu.user.mediacube.indexer/src/main/resources/defaults.xml [new file with mode: 0644]
server/hu.user.mediacube.indexer/src/main/resources/file-appender.xml [new file with mode: 0644]
server/hu.user.mediacube.indexer/src/main/resources/logback.xml [new file with mode: 0644]
server/hu.user.mediacube.indexer/src/main/resources/mybatis.xml [deleted file]
server/hu.user.mediacube.indexer/src/main/resources/templates/hello.html [deleted file]
server/hu.user.mediacube.indexer/src/test/java/application.properties [deleted file]
server/hu.user.mediacube.indexer/src/test/java/hu/user/mediacube/indexer/TestDB2.java
server/hu.user.mediacube.indexer/src/test/java/hu/user/mediacube/indexer/TestJsonProperties.java
server/hu.user.mediacube.indexer/src/test/java/mapper.xml [deleted file]
server/user.jobengine.executors/config/config.xml
server/user.jobengine.executors/jobtemplates/retrieve-ondemand.xml
server/user.jobengine.executors/src/user/jobengine/server/steps/BatchRetrieveForkStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMExtendedRetrieveStep.java
server/user.jobengine.osgi.commons/src/user/commons/Job.java
server/user.jobengine.osgi.db/migrations/20190909125326_init.sql [new file with mode: 0644]
server/user.jobengine.osgi.db/migrations/20190915120000_metadata.sql [new file with mode: 0644]
server/user.jobengine.osgi.db/migrations/20190916120000_views.sql [new file with mode: 0644]
server/user.jobengine.osgi.db/migrations/20190916130000_ft.sql [new file with mode: 0644]
server/user.jobengine.osgi.db/migrations/20190917120000_indexer_view.sql [new file with mode: 0644]
server/user.jobengine.osgi.db/sql/4-CreateFT.sql [new file with mode: 0644]
server/user.jobengine.osgi.db/sql/4-CreateTrigger.sql [deleted file]
server/user.jobengine.osgi.db/src/user/jobengine/db/ArchivedMedia.java
server/user.jobengine.osgi.server/src/user/jobengine/server/JobStepExecutor.java
server/user.jobengine.osgi.server/src/user/jobengine/server/steps/JobStep.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/RetrieveBatchSelectorModel.java

diff --git a/server/-configuration/debug-mediacube-mv-8888.launch b/server/-configuration/debug-mediacube-mv-8888.launch
new file mode 100644 (file)
index 0000000..d4284f2
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<launchConfiguration type="org.eclipse.jdt.launching.remoteJavaApplication">\r
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">\r
+<listEntry value="/user.jobengine.osgi.server"/>\r
+</listAttribute>\r
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">\r
+<listEntry value="4"/>\r
+</listAttribute>\r
+<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>\r
+<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.commons.log4j2&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.jobengine.executors&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.jobengine.osgi.commons&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.jobengine.osgi.db&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.jobengine.osgi.server&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkcharts.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/classes&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/commons-codec-1.10.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/commons-fileupload-1.2.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/commons-io-1.4.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/commons-logging-1.1.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zcommon.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zel.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zhtml.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_bsh.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_commons-collections.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_elinez.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_eplotz.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_Filters.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_flashchart.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_gmapsz.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jackson-annotations.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jackson-core.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jackson-databind.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jasperreports.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_javassist.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jcommon.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jfreechart.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jsp.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_monitor.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_psz.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_sapphire.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_shchart.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_silvertail.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_timelinez.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_timeplotz.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_zuljsp.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkbind.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkex_r.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkmax.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkplus.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zml.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zsoup.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zul.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zuti.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zweb.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.jobengine.osgi.services&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.tsm.client&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>\r
+<booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE" value="false"/>\r
+<mapAttribute key="org.eclipse.jdt.launching.CONNECT_MAP">\r
+<mapEntry key="hostname" value="10.11.1.90"/>\r
+<mapEntry key="port" value="8888"/>\r
+</mapAttribute>\r
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="user.jobengine.osgi.server"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_CONNECTOR_ID" value="org.eclipse.jdt.launching.socketAttachConnector"/>\r
+</launchConfiguration>\r
diff --git a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java
new file mode 100644 (file)
index 0000000..edb9521
--- /dev/null
@@ -0,0 +1,60 @@
+package hu.user.mediacube.executors.tests;\r
+\r
+import java.util.Arrays;\r
+\r
+import org.junit.Test;\r
+\r
+import user.jobengine.db.Media;\r
+import user.jobengine.server.steps.TSMExtendedRetrieveStep;\r
+\r
+public class SmallTests {\r
+       class Pojo extends PojoRoot {\r
+\r
+               @Override\r
+               public String toString() {\r
+                       return "pojo";\r
+               }\r
+       }\r
+\r
+       class PojoRoot {\r
+       }\r
+\r
+       @Test\r
+       public void test1() throws Exception {\r
+               Object[] sut = { 1, 5, "valami", new Pojo() };\r
+\r
+               System.out.println(Arrays.toString(sut));\r
+       }\r
+\r
+       @Test\r
+       public void test2() throws Exception {\r
+               Integer i = 5;\r
+               Boolean j = Boolean.FALSE;\r
+               xxx(i, j);\r
+       }\r
+\r
+       @Test\r
+       public void test3() throws Exception {\r
+               TSMExtendedRetrieveStep sut = new TSMExtendedRetrieveStep();\r
+               Media mediaCubeMedia = new Media();\r
+               String targetPath = "/mnt/PROMISE/TRANSCODER/ARCHIVE_RESTORE/TTT";\r
+               String targetNamePattern = "ttt-ARCH-%s";\r
+               String successRecipient = "vasary@elgekko.net";\r
+               Integer killDateDays = 7;\r
+               String localRetrievePath = "/mnt/PROMISE/TRANSCODER/";\r
+               String globalRetrievePath = " file://10.11.1.100/TRANSCODER";\r
+               Boolean useNexioTarget = false;\r
+               String nexioAgency = "ARCHIVE_RESTORE";\r
+               Integer nexioPort = 2098;\r
+               String nexioUserName = "administrator";\r
+               String nexioPassword = "system";\r
+               Object[] inputs = { mediaCubeMedia, targetPath, targetNamePattern, successRecipient, killDateDays, localRetrievePath, globalRetrievePath,\r
+                               useNexioTarget, nexioAgency, nexioPort, nexioUserName, nexioPassword };\r
+               //              Object[] inputs = { null, null, null, null, 0, null, null, false, null, 0, null, null };\r
+               sut.run(null, null, inputs);\r
+       }\r
+\r
+       void xxx(int x, boolean y) {\r
+               System.out.println("call");\r
+       }\r
+}\r
index 0180b88a7b44a5f2618fb4a5066580ab438c31b3..c079b63df9d9b9c8e0ea9f14b4bc5df63ace20c8 100644 (file)
@@ -7,7 +7,7 @@
 <stringAttribute key="M2_PROFILES" value=""/>\r
 <listAttribute key="M2_PROPERTIES"/>\r
 <stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>\r
-<booleanAttribute key="M2_SKIP_TESTS" value="false"/>\r
+<booleanAttribute key="M2_SKIP_TESTS" value="true"/>\r
 <intAttribute key="M2_THREADS" value="1"/>\r
 <booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>\r
 <stringAttribute key="M2_USER_SETTINGS" value=""/>\r
index 9b256892726f408b0e9afcae0fe41b566fd3820b..ba162dfb350e4803b42dbf76157c8383289da952 100644 (file)
@@ -17,6 +17,7 @@
                <downloadSources>true</downloadSources>\r
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\r
                <java.version>1.8</java.version>\r
+               <lucene.version>8.2.0</lucene.version>\r
                <maven.compiler.source>1.8</maven.compiler.source>\r
                <maven.compiler.target>1.8</maven.compiler.target>\r
        </properties>\r
                <dependency>\r
                        <groupId>org.apache.lucene</groupId>\r
                        <artifactId>lucene-core</artifactId>\r
-                       <version>8.2.0</version>\r
+                       <version>${lucene.version}</version>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>org.apache.lucene</groupId>\r
+                       <artifactId>lucene-highlighter</artifactId>\r
+                       <version>${lucene.version}</version>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>org.apache.lucene</groupId>\r
+                       <artifactId>lucene-misc</artifactId>\r
+                       <version>${lucene.version}</version>\r
                </dependency>\r
                <dependency>\r
                        <groupId>org.apache.lucene</groupId>\r
                        <version>5.1.8.RELEASE</version>\r
                        <scope>test</scope>\r
                </dependency>\r
+               <dependency>\r
+                       <groupId>org.springframework.boot</groupId>\r
+                       <artifactId>spring-boot-starter-test</artifactId>\r
+                       <version>2.1.8.RELEASE</version>\r
+                       <scope>test</scope>\r
+               </dependency>\r
        </dependencies>\r
        <build>\r
                <finalName>mediacube-indexer</finalName>\r
index a51ff405ded9e90c3329f0f3fcb6efcd99a6b3e5..3f0b92fe4e9813534908ba85eb8b5321f0b73908 100644 (file)
@@ -10,20 +10,47 @@ import org.springframework.stereotype.Component;
 public class JsonProperties {\r
        private String message;\r
        private String polishMessage;\r
+       private String indexLocation;\r
+       private boolean dropIndex;\r
+       private boolean resetIndex;\r
 \r
-       public String getMessage() {\r
-               return message;\r
+       public String getIndexLocation() {\r
+               return indexLocation;\r
        }\r
 \r
-       public void setMessage(String message) {\r
-               this.message = message;\r
+       public String getMessage() {\r
+               return message;\r
        }\r
 \r
        public String getPolishMessage() {\r
                return polishMessage;\r
        }\r
 \r
+       public boolean isDropIndex() {\r
+               return dropIndex;\r
+       }\r
+\r
+       public void setDropIndex(boolean dropIndex) {\r
+               this.dropIndex = dropIndex;\r
+       }\r
+\r
+       public void setIndexLocation(String indexLocation) {\r
+               this.indexLocation = indexLocation;\r
+       }\r
+\r
+       public void setMessage(String message) {\r
+               this.message = message;\r
+       }\r
+\r
        public void setPolishMessage(String polishMessage) {\r
                this.polishMessage = polishMessage;\r
        }\r
+\r
+       public boolean isResetIndex() {\r
+               return resetIndex;\r
+       }\r
+\r
+       public void setResetIndex(boolean resetIndex) {\r
+               this.resetIndex = resetIndex;\r
+       }\r
 }\r
index 3deded33ee911c75bdb7062ebedacf67fc638819..58fcafcccdf11a405e907f2c7abf7d7bd918217d 100644 (file)
@@ -3,7 +3,9 @@ package hu.user.mediacube.indexer;
 import java.time.ZoneId;\r
 import java.time.ZonedDateTime;\r
 import java.util.Date;\r
+import java.util.List;\r
 \r
+import org.apache.lucene.document.Document;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
@@ -12,11 +14,11 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;\r
 import org.springframework.web.bind.annotation.RestController;\r
 \r
+import hu.user.mediacube.indexer.lucene.LuceneIndexer;\r
+\r
 @RestController\r
 @RequestMapping("rest")\r
 public class RESTController {\r
-       private static Logger logger = LoggerFactory.getLogger(RESTController.class);\r
-\r
        public class CustomResponse {\r
                private int age;\r
                private String name;\r
@@ -26,43 +28,47 @@ public class RESTController {
                        return age;\r
                }\r
 \r
-               public void setAge(int age) {\r
-                       this.age = age;\r
+               public ZonedDateTime getDate() {\r
+                       return date;\r
                }\r
 \r
                public String getName() {\r
                        return name;\r
                }\r
 \r
-               public void setName(String name) {\r
-                       this.name = name;\r
-               }\r
-\r
-               public ZonedDateTime getDate() {\r
-                       return date;\r
+               public void setAge(int age) {\r
+                       this.age = age;\r
                }\r
 \r
                public void setDate(ZonedDateTime date) {\r
                        this.date = date;\r
                }\r
 \r
+               public void setName(String name) {\r
+                       this.name = name;\r
+               }\r
+\r
        }\r
 \r
-//     @Configuration\r
-//     public class JacksonConfiguration {\r
-//\r
-//         @Bean\r
-//         public ObjectMapper objectMapper() {\r
-//             ObjectMapper mapper = new ObjectMapper();\r
-//             mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\r
-//             mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);\r
-//\r
-//             return mapper;\r
-//         }\r
-//     }\r
+       private static Logger logger = LoggerFactory.getLogger(RESTController.class);\r
+\r
+       //      @Configuration\r
+       //      public class JacksonConfiguration {\r
+       //\r
+       //          @Bean\r
+       //          public ObjectMapper objectMapper() {\r
+       //              ObjectMapper mapper = new ObjectMapper();\r
+       //              mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\r
+       //              mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);\r
+       //\r
+       //              return mapper;\r
+       //          }\r
+       //      }\r
 \r
        @Autowired\r
        GreetingService greetingService;\r
+       @Autowired\r
+       private LuceneIndexer indexer;\r
 \r
        @GetMapping(path = "/{id}", produces = "application/json")\r
        public CustomResponse getBook(@PathVariable int id) {\r
@@ -73,4 +79,9 @@ public class RESTController {
                result.setDate(ZonedDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()));\r
                return result;\r
        }\r
+\r
+       @GetMapping(path = "/search/{queryString}/{skipRecords}/{takeRecords}", produces = "application/json")\r
+       public List<Document> search(@PathVariable String queryString, @PathVariable int skipRecords, @PathVariable int takeRecords) {\r
+               return indexer.search(queryString, skipRecords, takeRecords);\r
+       }\r
 }
\ No newline at end of file
index cc7fd694c38695ddbb392ce5471479568cbd8a18..4c1dd83b8812b2038eae2d4c32340f5607e99c56 100644 (file)
@@ -16,6 +16,8 @@ import org.apache.ibatis.annotations.Update;
 import org.apache.ibatis.annotations.UpdateProvider;\r
 import org.apache.ibatis.type.JdbcType;\r
 \r
+//SELECT * FROM VW_INDEXER FETCH FIRST 10000 ROWS ONLY\r
+\r
 @Mapper\r
 public interface MediadescriptionMapper {\r
        /**\r
index 712a7d22cac3b3f6e661c87202a3cd4a2ce25f15..2f91f702379ab0bd24b511683b211ca775070d31 100644 (file)
@@ -183,7 +183,7 @@ public class MediadescriptionSqlProvider {
                sql.FROM("DB2ADMIN.MEDIADESCRIPTION");\r
                applyWhere(sql, example, false);\r
 \r
-               sql.FETCH_FIRST_ROWS_ONLY(1);\r
+               //sql.FETCH_FIRST_ROWS_ONLY(1);\r
 \r
                if (example != null && example.getOrderByClause() != null) {\r
                        sql.ORDER_BY(example.getOrderByClause());\r
diff --git a/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/lucene/LuceneIndexer.java b/server/hu.user.mediacube.indexer/src/main/java/hu/user/mediacube/indexer/lucene/LuceneIndexer.java
new file mode 100644 (file)
index 0000000..d14d62e
--- /dev/null
@@ -0,0 +1,131 @@
+package hu.user.mediacube.indexer.lucene;\r
+\r
+import java.io.IOException;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import javax.annotation.PostConstruct;\r
+import javax.annotation.PreDestroy;\r
+\r
+import org.apache.lucene.analysis.standard.StandardAnalyzer;\r
+import org.apache.lucene.document.Document;\r
+import org.apache.lucene.document.Field.Store;\r
+import org.apache.lucene.document.LongPoint;\r
+import org.apache.lucene.document.SortedNumericDocValuesField;\r
+import org.apache.lucene.document.TextField;\r
+import org.apache.lucene.index.DirectoryReader;\r
+import org.apache.lucene.index.IndexReader;\r
+import org.apache.lucene.index.IndexWriter;\r
+import org.apache.lucene.index.IndexWriterConfig;\r
+import org.apache.lucene.queryparser.classic.QueryParser;\r
+import org.apache.lucene.search.IndexSearcher;\r
+import org.apache.lucene.search.Query;\r
+import org.apache.lucene.search.ScoreDoc;\r
+import org.apache.lucene.search.Sort;\r
+import org.apache.lucene.search.SortField.Type;\r
+import org.apache.lucene.search.SortedNumericSortField;\r
+import org.apache.lucene.search.TopDocs;\r
+import org.apache.lucene.search.uhighlight.UnifiedHighlighter;\r
+import org.apache.lucene.store.Directory;\r
+import org.apache.lucene.store.SimpleFSDirectory;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.stereotype.Component;\r
+import org.springframework.util.FileSystemUtils;\r
+\r
+import hu.user.mediacube.indexer.JsonProperties;\r
+import hu.user.mediacube.indexer.db.Mediadescription;\r
+\r
+@Component\r
+public class LuceneIndexer {\r
+       private static Logger logger = LoggerFactory.getLogger(LuceneIndexer.class);\r
+       private static final String DESCRIPTION = "description";\r
+       @Autowired\r
+       private JsonProperties config;\r
+       private Directory directoryIndex;\r
+       private IndexWriterConfig indexWriterConfig;\r
+       private IndexWriter indexWritter;\r
+       private StandardAnalyzer analyzer;\r
+\r
+       public void index(Mediadescription mediadescription, boolean commit) throws IOException {\r
+               Document document = new Document();\r
+               document.add(new SortedNumericDocValuesField("id", mediadescription.getId()));\r
+               document.add(new LongPoint("itemid", mediadescription.getItemid()));\r
+               document.add(new LongPoint("mediaid", mediadescription.getMediaid()));\r
+               document.add(new LongPoint("mediafileid", mediadescription.getMediafileid()));\r
+               document.add(new TextField(DESCRIPTION, mediadescription.getDescription(), Store.YES));\r
+               indexWritter.addDocument(document);\r
+               if (commit)\r
+                       indexWritter.commit();\r
+       }\r
+\r
+       public List<Document> search(String queryString, int skipRecords, int takeRecords) {\r
+               List<Document> ret = new ArrayList<Document>();\r
+               IndexReader indexReader = null;\r
+               IndexSearcher searcher = null;\r
+               try {\r
+                       indexReader = DirectoryReader.open(directoryIndex);\r
+                       searcher = new IndexSearcher(indexReader);\r
+\r
+                       Query query = new QueryParser(DESCRIPTION, analyzer).parse(queryString);\r
+\r
+                       TopDocs results = searcher.search(query, skipRecords + takeRecords, new Sort(new SortedNumericSortField("id", Type.LONG, true)));\r
+                       //TopDocs results = searcher.search(query, skipRecords + takeRecords);\r
+                       ScoreDoc[] scoreDocs = results.scoreDocs;\r
+                       UnifiedHighlighter highlighter = new UnifiedHighlighter(searcher, analyzer);\r
+                       //highlighter.setFormatter(formatter);\r
+                       for (int i = skipRecords; i < results.totalHits.value; i++) {\r
+                               if (i > (skipRecords + takeRecords) - 1) {\r
+                                       break;\r
+                               }\r
+                               Document doc = searcher.doc(scoreDocs[i].doc);\r
+                               ret.add(doc);\r
+\r
+                               String[] fragments = highlighter.highlight(DESCRIPTION, query, results);\r
+                               logger.info("Item " + doc.getValues("id")[0] + " : " + fragments[0]);\r
+                       }\r
+               } catch (Exception e) {\r
+                       logger.error("Search", e);\r
+               } finally {\r
+                       try {\r
+                               if (indexReader != null)\r
+                                       indexReader.close();\r
+                       } catch (IOException e) {\r
+                               logger.error("Close index reader", e);\r
+                       }\r
+               }\r
+               return ret;\r
+       }\r
+\r
+       @PostConstruct\r
+       public void start() throws Exception {\r
+               try {\r
+                       Path path = Paths.get(config.getIndexLocation());\r
+                       if (config.isDropIndex())\r
+                               FileSystemUtils.deleteRecursively(path);\r
+                       directoryIndex = new SimpleFSDirectory(path);\r
+                       analyzer = new StandardAnalyzer();\r
+                       indexWriterConfig = new IndexWriterConfig(analyzer);\r
+                       indexWritter = new IndexWriter(directoryIndex, indexWriterConfig);\r
+               } catch (Exception e) {\r
+                       logger.error("Could not create indexer", e);\r
+                       throw e;\r
+               }\r
+               logger.info("Indexer started");\r
+       }\r
+\r
+       @PreDestroy\r
+       public void stop() {\r
+               try {\r
+                       if (indexWritter != null)\r
+                               indexWritter.close();\r
+               } catch (IOException e) {\r
+                       logger.error("IndexWriter close", e);\r
+               }\r
+               logger.info("Indexer stopped");\r
+       }\r
+\r
+}\r
index f156d170f9d1df2295cd759f9c133a12b7bd8f94..9b0951ed1632e01b2b502d0ab80720ac5b52ccdc 100644 (file)
@@ -1,4 +1,5 @@
-#mybatis.config-location=classpath*:mybatis.xml\r
+spring.main.banner-mode=off\r
+spring.output.ansi.enabled=always\r
 spring.datasource.driver-class-name=com.ibm.db2.jcc.DB2Driver\r
 spring.datasource.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;\r
 spring.datasource.username=db2admin\r
diff --git a/server/hu.user.mediacube.indexer/src/main/resources/base.xml b/server/hu.user.mediacube.indexer/src/main/resources/base.xml
new file mode 100644 (file)
index 0000000..af37d27
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Base logback configuration provided for compatibility with Spring Boot 1.1
+-->
+
+<included>
+       <include resource="defaults.xml" />
+       <property name="LOG_FILE" value="/opt/indexer/logs/indexer.log}"/>
+       <include resource="console-appender.xml" />
+       <include resource="file-appender.xml" />
+       <root level="INFO">
+               <appender-ref ref="CONSOLE" />
+               <appender-ref ref="FILE" />
+       </root>
+</included>
index 14204b404621e35679e8fe6301d9e6e80144ff86..ffd97a55c5ca3dbd0dc4eb25a571d1fef726f6fc 100644 (file)
@@ -1,4 +1,7 @@
 {\r
   "message" : "Hy",\r
-  "polishMessage" : "Czesc"\r
+  "polishMessage" : "Czesc",\r
+  "indexLocation" : "/opt/indexer/mediacube",\r
+  "dropIndex": false,\r
+  "resetIndex": false\r
 }
\ No newline at end of file
diff --git a/server/hu.user.mediacube.indexer/src/main/resources/console-appender.xml b/server/hu.user.mediacube.indexer/src/main/resources/console-appender.xml
new file mode 100644 (file)
index 0000000..92d0da0
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Console appender logback configuration provided for import, equivalent to the programmatic
+initialization performed by Boot
+-->
+
+<included>
+       <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+               <encoder>
+                       <pattern>${CONSOLE_LOG_PATTERN}</pattern>
+               </encoder>
+       </appender>
+</included>
diff --git a/server/hu.user.mediacube.indexer/src/main/resources/defaults.xml b/server/hu.user.mediacube.indexer/src/main/resources/defaults.xml
new file mode 100644 (file)
index 0000000..4d761ba
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Default logback configuration provided for import, equivalent to the programmatic
+initialization performed by Boot
+-->
+
+<included>
+       <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+       <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+       <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+       <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+       <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+       <logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
+       <logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"/>
+       <logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
+       <logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN"/>
+       <logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
+       <logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR"/>
+       <logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>
+</included>
diff --git a/server/hu.user.mediacube.indexer/src/main/resources/file-appender.xml b/server/hu.user.mediacube.indexer/src/main/resources/file-appender.xml
new file mode 100644 (file)
index 0000000..deae1a9
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+File appender logback configuration provided for import, equivalent to the programmatic
+initialization performed by Boot
+-->
+
+<included>
+       <appender name="FILE"
+               class="ch.qos.logback.core.rolling.RollingFileAppender">
+               <encoder>
+                       <pattern>${FILE_LOG_PATTERN}</pattern>
+               </encoder>
+               <file>${LOG_FILE}</file>
+               <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+                       <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
+                       <maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize>
+                       <maxHistory>${LOG_FILE_MAX_HISTORY:-0}</maxHistory>
+               </rollingPolicy>
+       </appender>
+</included>
diff --git a/server/hu.user.mediacube.indexer/src/main/resources/logback.xml b/server/hu.user.mediacube.indexer/src/main/resources/logback.xml
new file mode 100644 (file)
index 0000000..d08b3fa
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<configuration>\r
+       <include resource="base.xml" />\r
+       <logger name="hu.user.mediacube.indexer" level="info" />\r
+</configuration>
\ No newline at end of file
diff --git a/server/hu.user.mediacube.indexer/src/main/resources/mybatis.xml b/server/hu.user.mediacube.indexer/src/main/resources/mybatis.xml
deleted file mode 100644 (file)
index e72703b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<environments default="development">\r
-       <environment id="development">\r
-               <transactionManager type="JDBC" />\r
-               <dataSource type="POOLED">\r
-                       <property name="driver" value="com.ibm.db2.jcc.DB2Driver" />\r
-                       <property name="url" value="jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;" />\r
-                       <property name="username" value="db2admin" />\r
-                       <property name="password" value="password" />\r
-               </dataSource>\r
-       </environment>\r
-</environments>
\ No newline at end of file
diff --git a/server/hu.user.mediacube.indexer/src/main/resources/templates/hello.html b/server/hu.user.mediacube.indexer/src/main/resources/templates/hello.html
deleted file mode 100644 (file)
index a761abf..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE HTML>\r
-<html xmlns:th="http://www.thymeleaf.org">\r
-<head>\r
-    <title>Getting Started: Serving Web Content</title>\r
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-</head>\r
-<body>\r
-    <p th:text="'Hello ' + ${name} + '!'" />\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/server/hu.user.mediacube.indexer/src/test/java/application.properties b/server/hu.user.mediacube.indexer/src/test/java/application.properties
deleted file mode 100644 (file)
index 145e25e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-mybatis.config-location=mapper.xml
\ No newline at end of file
index 77b3d307aae968bc7ce509861eed54d36facd06e..a2d8f2e3150cce951fd02ec96e55032afc14bc76 100644 (file)
@@ -5,6 +5,7 @@ import static org.junit.Assert.assertNull;
 import org.junit.Test;\r
 import org.junit.runner.RunWith;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.boot.test.context.SpringBootTest;\r
 import org.springframework.test.context.ContextConfiguration;\r
 import org.springframework.test.context.junit4.SpringRunner;\r
 \r
@@ -12,7 +13,7 @@ import hu.user.mediacube.indexer.db.MediadescriptionMapper;
 \r
 @RunWith(SpringRunner.class)\r
 @ContextConfiguration(classes = IndexerApplication.class)\r
-\r
+@SpringBootTest\r
 public class TestDB2 {\r
 \r
        @Autowired\r
index 2e4fb3f82edcb1cc376f93a35effc134c98342f9..f769443a15448a418d550a516deac9fa36328ca1 100644 (file)
@@ -5,15 +5,14 @@ import static org.junit.Assert.assertEquals;
 import org.junit.Test;\r
 import org.junit.runner.RunWith;\r
 import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.boot.test.context.SpringBootTest;\r
 import org.springframework.test.context.ContextConfiguration;\r
 import org.springframework.test.context.junit4.SpringRunner;\r
 \r
-import hu.user.mediacube.indexer.IndexerApplication;\r
-import hu.user.mediacube.indexer.JsonProperties;\r
-\r
 @RunWith(SpringRunner.class)\r
 @ContextConfiguration(classes = IndexerApplication.class)\r
-\r
+//https://stackoverflow.com/questions/29669393/override-default-spring-boot-application-properties-settings-in-junit-test\r
+@SpringBootTest\r
 public class TestJsonProperties {\r
 \r
        @Autowired\r
diff --git a/server/hu.user.mediacube.indexer/src/test/java/mapper.xml b/server/hu.user.mediacube.indexer/src/test/java/mapper.xml
deleted file mode 100644 (file)
index aa2bee7..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<configuration>\r
-       <dataSource type="POOLED">\r
-         <property name="driver" value="com.ibm.db2.jcc.DB2Driver"/>\r
-         <property name="url" value="jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"/>\r
-         <property name="username" value="db2admin"/>\r
-         <property name="password" value="password"/>\r
-       </dataSource>\r
-</configuration>
\ No newline at end of file
index 8e3d17728c3024291f61ca223eff0f53b8a929f2..06ad6316b43421025219d2308aaa0365f0303237 100644 (file)
@@ -22,6 +22,7 @@
        <executor className="user.jobengine.server.steps.ImportMORPHEUSMissingMaterialsStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.ImportStatisticsStep" maxConcurrent="7"/>\r
        <executor className="user.jobengine.server.steps.MetadataTransformStep" maxConcurrent="1"/>\r
+       <executor className="user.jobengine.server.steps.MXFCutterStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.OutputPathAndNameSelectorStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.RecordingsArchiveItemBuilderStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.SyncOCTOPUSDataStep" maxConcurrent="1"/>\r
index 20d3b0a1e99e51c7241090eb348f5c69f0e86997..ede6854a1afd138a87bcfc287dddc61190713414 100644 (file)
@@ -24,7 +24,6 @@
                        <variable name="targetPath" type="java.lang.String" />\r
                        <variable name="targetNamePattern" type="java.lang.String" />\r
                        <variable name="useNexioTarget" type="java.lang.Boolean" />\r
-                       <variable name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
                </variables>\r
        </declarations>\r
        <commands>\r
@@ -76,7 +75,7 @@
                <calljobstep type="user.jobengine.server.steps.TSMExtendedRetrieveStep" weight="1">\r
                        <inputs>\r
                                <input>\r
-                                       <variable name="mediaCubeMedia" />\r
+                                       <parameter name="archivedMedia" />\r
                                </input>\r
                                <input>\r
                                        <variable name="targetPath" />\r
index 547d019bd9181449968b1d7de77fb11f3c69b933..839d64956e62489fc317ecf05b72f737d6f62556 100644 (file)
@@ -8,7 +8,7 @@ import org.apache.logging.log4j.Logger;
 \r
 import user.commons.MediaCubeFinishMarker;\r
 import user.commons.MediaCubeMarker;\r
-import user.jobengine.db.Media;\r
+import user.jobengine.db.ArchivedMedia;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
 import user.jobengine.server.scheduler.ScheduledJob;\r
@@ -17,13 +17,13 @@ public class BatchRetrieveForkStep extends JobStep {
        private static final String TARGET_PATH_TYPE = "targetPathType";\r
        private static final Logger logger = LogManager.getLogger();\r
        private static final String CHILD_TEMPLATE = "retrieve-ondemand.xml";\r
-       private static final String MEDIACUBEMEDIA = "mediaCubeMedia";\r
+       private static final String ARCHIVEDMEDIA = "archivedMedia";\r
        private static final String RECIPIENT = "successRecipient";\r
        private static final String HOUSEID = "houseId";\r
        private MediaCubeMarker marker;\r
 \r
        @StepEntry\r
-       public Object[] execute(List<Media> basket, String houseId, String recipient, String targetPathType, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
+       public Object[] execute(List<ArchivedMedia> basket, String houseId, String recipient, String targetPathType, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
                        throws Exception {\r
                marker = (MediaCubeMarker) jobRuntime.getMarker();\r
 \r
@@ -43,9 +43,9 @@ public class BatchRetrieveForkStep extends JobStep {
                logger.info(mailMarker, "A visszatöltések elindultak az alábbi állományokra:");\r
 \r
                if (jobRuntime.forkPrepare()) {\r
-                       for (Media mediaCubeMedia : basket) {\r
-                               logger.info(mailMarker, mediaCubeMedia.getMediaFilesName());\r
-                               submit(mediaCubeMedia, recipient, houseId, targetPathType, jobEngine, jobRuntime);\r
+                       for (ArchivedMedia archivedMedia : basket) {\r
+                               logger.info(mailMarker, archivedMedia.getMedia().getMediaFilesName());\r
+                               submit(archivedMedia, recipient, houseId, targetPathType, jobEngine, jobRuntime);\r
                        }\r
                }\r
                setProgress(50);\r
@@ -55,12 +55,12 @@ public class BatchRetrieveForkStep extends JobStep {
                return null;\r
        }\r
 \r
-       public void submit(Media mediaCubeMedia, String recipient, String houseId, String targetPathType, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
+       public void submit(ArchivedMedia archivedMedia, String recipient, String houseId, String targetPathType, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
                        throws Exception {\r
                try {\r
                        ScheduledJob scheduledJob = jobEngine.getScheduledJob(CHILD_TEMPLATE);\r
                        Map<String, Object> parameters = scheduledJob.getJobParameters();\r
-                       parameters.put(MEDIACUBEMEDIA, mediaCubeMedia);\r
+                       parameters.put(ARCHIVEDMEDIA, archivedMedia);\r
                        parameters.put(HOUSEID, houseId);\r
                        parameters.put(RECIPIENT, recipient);\r
                        parameters.put(TARGET_PATH_TYPE, targetPathType);\r
index 8cb0ed4edacbf515d5dff80d4a69da230d174833..746a325afd674427cbf1efbf473b4deaf73f0c14 100644 (file)
@@ -27,38 +27,31 @@ public class OutputPathAndNameSelectorStep extends JobStep {
 \r
        private Marker marker;\r
 \r
-       private void check(String localRetrievePath, String materialOutputFolder, String promoOutputFolder,\r
-                       String advertisementOutputFolder, String octopusOutputFolder, String genericOutputFolder, String houseId,\r
-                       String targetPathType) {\r
+       private void check(String localRetrievePath, String materialOutputFolder, String promoOutputFolder, String advertisementOutputFolder,\r
+                       String octopusOutputFolder, String genericOutputFolder, String houseId, String targetPathType) {\r
                if (StringUtils.isBlank(localRetrievePath)) {\r
                        logger.error(marker, "A folyamat 'localRetrievePath' bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'localRetrievePath' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'localRetrievePath' input parameter missing.");\r
                }\r
                if (StringUtils.isBlank(materialOutputFolder)) {\r
                        logger.error(marker, "A folyamat 'materialOutputFolder' bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'materialOutputFolder' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'materialOutputFolder' input parameter missing.");\r
                }\r
                if (StringUtils.isBlank(promoOutputFolder)) {\r
                        logger.error(marker, "A folyamat 'promoOutputFolder' bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'promoOutputFolder' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'promoOutputFolder' input parameter missing.");\r
                }\r
                if (StringUtils.isBlank(advertisementOutputFolder)) {\r
                        logger.error(marker, "A folyamat 'advertisementOutputFolder' bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'advertisementOutputFolder' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'advertisementOutputFolder' input parameter missing.");\r
                }\r
                if (StringUtils.isBlank(octopusOutputFolder)) {\r
                        logger.error(marker, "A folyamat 'octopusOutputFolder' bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'octopusOutputFolder' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'octopusOutputFolder' input parameter missing.");\r
                }\r
                if (StringUtils.isBlank(genericOutputFolder)) {\r
                        logger.error(marker, "A folyamat 'genericOutputFolder' bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'genericOutputFolder' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'genericOutputFolder' input parameter missing.");\r
                }\r
                if (StringUtils.isBlank(houseId)) {\r
                        logger.error(marker, "A folyamat 'houseId' bemeneti paramétere üres.");\r
@@ -66,40 +59,40 @@ public class OutputPathAndNameSelectorStep extends JobStep {
                }\r
                if (StringUtils.isBlank(targetPathType)) {\r
                        logger.error(marker, "A folyamat 'targetPathType' bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'targetPathType' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'targetPathType' input parameter missing.");\r
                }\r
        }\r
 \r
        @StepEntry\r
-       public Object[] execute(String localRetrievePath, String materialOutputFolder, String promoOutputFolder,\r
-                       String advertisementOutputFolder, String octopusOutputFolder, String genericOutputFolder,\r
-                       String onlineOutputFolder, String houseId, String targetPathType, ArchivedMedia archivedMedia,\r
-                       IJobEngine jobEngine, IJobRuntime jobRuntime) throws IOException {\r
+       public Object[] execute(String localRetrievePath, String materialOutputFolder, String promoOutputFolder, String advertisementOutputFolder,\r
+                       String octopusOutputFolder, String genericOutputFolder, String onlineOutputFolder, String houseId, String targetPathType,\r
+                       ArchivedMedia archivedMedia, IJobEngine jobEngine, IJobRuntime jobRuntime) throws IOException {\r
                marker = jobRuntime.getMarker();\r
-               check(localRetrievePath, materialOutputFolder, promoOutputFolder, advertisementOutputFolder,\r
-                               octopusOutputFolder, genericOutputFolder, houseId, targetPathType);\r
+               check(localRetrievePath, materialOutputFolder, promoOutputFolder, advertisementOutputFolder, octopusOutputFolder, genericOutputFolder, houseId,\r
+                               targetPathType);\r
                Object[] result = null;\r
                switch (Integer.parseInt(targetPathType)) {\r
                case 0:\r
-                       String outputFolder = getFolderById(materialOutputFolder, promoOutputFolder, advertisementOutputFolder,\r
-                                       octopusOutputFolder, genericOutputFolder, houseId, archivedMedia);\r
+                       String outputFolder = getFolderById(materialOutputFolder, promoOutputFolder, advertisementOutputFolder, octopusOutputFolder, genericOutputFolder,\r
+                                       houseId, archivedMedia);\r
                        result = localTargetInit(localRetrievePath, outputFolder, houseId, jobRuntime);\r
+                       break;\r
                case 1:\r
                        result = localTargetInit(localRetrievePath, onlineOutputFolder, houseId, jobRuntime);\r
+                       break;\r
                case 2:\r
 \r
                        if (archivedMedia.getTcIn() != null && archivedMedia.getTcOut() != null)\r
                                result = new Object[] { genericOutputFolder, houseId, true };\r
                        else\r
                                result = new Object[] { null, houseId, true };\r
+                       break;\r
                }\r
                return result;\r
        }\r
 \r
-       private String getFolderById(String materialOutputFolder, String promoOutputFolder,\r
-                       String advertisementOutputFolder, String octopusOutputFolder, String genericOutputFolder, String houseId,\r
-                       ArchivedMedia archivedMedia) {\r
+       private String getFolderById(String materialOutputFolder, String promoOutputFolder, String advertisementOutputFolder, String octopusOutputFolder,\r
+                       String genericOutputFolder, String houseId, ArchivedMedia archivedMedia) {\r
                String id = houseId.toUpperCase();\r
                MetadataType mdType = MetadataTypeDetector.GuessMetadataType(id);\r
                String result = null;\r
@@ -142,17 +135,14 @@ public class OutputPathAndNameSelectorStep extends JobStep {
                return result[0];\r
        }\r
 \r
-       private Object[] localTargetInit(String localRetrievePath, String outputFolder, String houseId,\r
-                       IJobRuntime jobRuntime) throws IOException {\r
+       private Object[] localTargetInit(String localRetrievePath, String outputFolder, String houseId, IJobRuntime jobRuntime) throws IOException {\r
                String id = houseId.toUpperCase();\r
                String targetPath = getPossiblePath(id, Paths.get(localRetrievePath, outputFolder, id)).toString();\r
                String targetNamePattern = houseId + TARGETNAMEPATTERN;\r
                try {\r
                        EscortFiles.ensureUNCFolder(Paths.get(targetPath));\r
                } catch (Exception e) {\r
-                       logger.error(jobRuntime.getMarker(),\r
-                                       "A cél mappa '{}' nem létezik és nem hozható létre. A rendszer hibaüzenete: {}", targetPath,\r
-                                       e.getMessage());\r
+                       logger.error(jobRuntime.getMarker(), "A cél mappa '{}' nem létezik és nem hozható létre. A rendszer hibaüzenete: {}", targetPath, e.getMessage());\r
                        throw e;\r
                }\r
                return new Object[] { targetPath, targetNamePattern, false };\r
index 4b210e92595e7e24f2648373cf1a004c5a2bc2e0..0074883c2a81289133461bfa9601fa02b920b8f5 100644 (file)
@@ -2,8 +2,8 @@ package user.jobengine.server.steps;
 \r
 import user.commons.StoreUri;\r
 import user.commons.remotestore.RemoteStoreProtocol;\r
+import user.jobengine.db.ArchivedMedia;\r
 import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.Media;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
 \r
@@ -15,8 +15,7 @@ public class TSMExtendedRetrieveStep extends TSMRestoreStep {
        private String nexioAgency;\r
 \r
        @Override\r
-       protected void afterRestore(StoreUri targetUri, String targetPath, int killDateDays, String targetFileName)\r
-                       throws Exception {\r
+       protected void afterRestore(StoreUri targetUri, String targetPath, int killDateDays, String targetFileName) throws Exception {\r
                if (useNexioTarget) {\r
                        EscortFiles.setNEXIOKillDate(killDateDays, targetFileName, nexioAgency, targetUri);\r
                } else {\r
@@ -31,8 +30,7 @@ public class TSMExtendedRetrieveStep extends TSMRestoreStep {
                        newTargetName = targetName.substring(0, targetName.lastIndexOf('.'));\r
                if (useNexioTarget)\r
                        if (targetURI.fileExists(newTargetName + ".mxf"))\r
-                               throw new Exception(\r
-                                               String.format("%s-The newly created file name is existed.", getClass().getSimpleName()));\r
+                               throw new Exception(String.format("%s-The newly created file name is existed.", getClass().getSimpleName()));\r
        }\r
 \r
        @Override\r
@@ -45,48 +43,43 @@ public class TSMExtendedRetrieveStep extends TSMRestoreStep {
        protected StoreUri createTargetUri(IItemManager manager, String targetPath) throws NullPointerException {\r
                StoreUri result = null;\r
                if (useNexioTarget) {\r
+                       nexioHost = System.getProperty("nexio.host");\r
+                       if (nexioHost == null) {\r
+                               throw new NullPointerException("Missing system property on 'nexio.host' name");\r
+                       }\r
                        result = manager.createStoreUri(RemoteStoreProtocol.FTP, nexioHost);\r
                        result.setPortNumber(nexioPort);\r
                        result.setUserName(nexioUserName);\r
                        result.setPassword(nexioPassword);\r
-\r
                } else\r
                        result = super.createTargetUri(manager, targetPath);\r
                return result;\r
        }\r
 \r
        @StepEntry\r
-       public Object[] execute(Media mediaCubeMedia, String targetPath, String targetNamePattern, String successRecipient,\r
-                       int killDateDays, String localRetrievePath, String globalRetrievePath, boolean useNexioTarget,\r
-                       String nexioAgency, Integer nexioPort, String nexioUserName, String nexioPassword, IJobEngine jobEngine,\r
-                       IJobRuntime jobRuntime) throws Exception {\r
+       public Object[] execute(ArchivedMedia archivedMedia, String targetPath, String targetNamePattern, String successRecipient, int killDateDays,\r
+                       String localRetrievePath, String globalRetrievePath, boolean useNexioTarget, String nexioAgency, int nexioPort, String nexioUserName,\r
+                       String nexioPassword, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
                this.useNexioTarget = useNexioTarget;\r
                this.nexioAgency = nexioAgency;\r
                this.nexioPort = nexioPort;\r
                this.nexioUserName = nexioUserName;\r
                this.nexioPassword = nexioPassword;\r
-               nexioHost = System.getProperty("nexio.host");\r
-\r
-               if (nexioHost == null) {\r
-                       throw new NullPointerException("Missing system property on 'nexio.host' name");\r
-               }\r
                if (nexioPort == 0) {\r
                        throw new NullPointerException("System is not configured properly, 'nexioPort' input parameter missing.");\r
                }\r
                if (nexioUserName == null) {\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'nexioUserName' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'nexioUserName' input parameter missing.");\r
                }\r
                if (nexioPassword == null) {\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'nexioPassword' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'nexioPassword' input parameter missing.");\r
                }\r
                if (nexioAgency == null) {\r
                        throw new NullPointerException("System is not configured properly, 'nexioAgency' input parameter missing.");\r
                }\r
 \r
-               return super.execute(mediaCubeMedia, targetPath, targetNamePattern, successRecipient, killDateDays,\r
-                               localRetrievePath, globalRetrievePath, jobEngine, jobRuntime);\r
+               return super.execute(archivedMedia.getMedia(), targetPath, targetNamePattern, successRecipient, killDateDays, localRetrievePath, globalRetrievePath,\r
+                               jobEngine, jobRuntime);\r
        }\r
 \r
 }\r
index f5973b24182c20a6ad4bfa1a2b29dc6120efa6b7..87eeb59bde27b5e02322777b35be883bfd8c0c92 100644 (file)
@@ -177,6 +177,6 @@ public class Job extends Syncable implements IJob, Comparable<IJob> {
 \r
        @Override\r
        public String toString() {\r
-               return String.format("## %d - %s - %s ##", getId(), getName(), status);\r
+               return String.format("## %d / %s / %s [%s] ##", getId(), getName(), getTemplate(), status);\r
        }\r
 }\r
diff --git a/server/user.jobengine.osgi.db/migrations/20190909125326_init.sql b/server/user.jobengine.osgi.db/migrations/20190909125326_init.sql
new file mode 100644 (file)
index 0000000..49b8925
--- /dev/null
@@ -0,0 +1,52 @@
+--
+--    Copyright 2010-2016 the original author or authors.
+--
+--    Licensed under the Apache License, Version 2.0 (the "License");
+--    you may not use this file except in compliance with the License.
+--    You may obtain a copy of the License at
+--
+--       http://www.apache.org/licenses/LICENSE-2.0
+--
+--    Unless required by applicable law or agreed to in writing, software
+--    distributed under the License is distributed on an "AS IS" BASIS,
+--    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+--    See the License for the specific language governing permissions and
+--    limitations under the License.
+--
+
+-- // Initial data.
+-- Migration SQL that makes the change goes here.
+INSERT INTO ITEMTYPE(NAME,DESCRIPTION,ISSTATIC) 
+VALUES
+('Default','Statikus mezők leírója','Y'),
+('Generic','Generic','N'),
+('Visszarögzített','Visszarögzített','N'),
+('Műsor','Műsor','N'),
+('Reklám','Reklám','N'),
+('Promo','Promo','N'),
+('Hír nyers','Hír nyers','N'),
+('Műsor nyers','Műsor nyers','N'),
+('Hír bejátszó','Hír bejátszó','N')
+@
+
+INSERT INTO STORE(NAME,ISSYSTEM,ISLOWRES) VALUES
+('TSM','Y','N'),
+('Low-res','Y','Y')
+@
+
+INSERT INTO STOREURI(STOREID,PROTOCOL,DELIVERY,URI,ISSTREAM,ISSOURCE,ISTARGET,USERNAME,PASSWORD,ROOTPATH,PORTNUMBER) VALUES
+((SELECT ID FROM STORE WHERE NAME='TSM'),'TSM',null,'MEDIACUBE','N','Y','Y','mediacube','password',null,null),
+((SELECT ID FROM STORE WHERE NAME='Low-res'),'HTTP',null,'10.11.1.90:90','Y','Y','N',null,null,null,90),
+((SELECT ID FROM STORE WHERE NAME='Low-res'),'LOCAL',null,'/mediacube/data/lowres','N','Y','Y',null,null,null,null)
+@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+DELETE FROM ITEMTYPE WHERE NAME IN ('Generic','Visszarögzített','Műsor','Reklám','Promo','Hír nyers','Műsor nyers','Hír bejátszó')
+@
+
+DELETE FROM STOREURI WHERE STOREID IN (SELECT ID FROM STORE WHERE NAME='Low-res' OR NAME='TSM')
+@
+
+DELETE FROM STORE WHERE NAME IN ('Low-res', 'TSM')
+@
diff --git a/server/user.jobengine.osgi.db/migrations/20190915120000_metadata.sql b/server/user.jobengine.osgi.db/migrations/20190915120000_metadata.sql
new file mode 100644 (file)
index 0000000..4a77240
--- /dev/null
@@ -0,0 +1,77 @@
+--
+--    Copyright 2010-2016 the original author or authors.
+--
+--    Licensed under the Apache License, Version 2.0 (the "License");
+--    you may not use this file except in compliance with the License.
+--    You may obtain a copy of the License at
+--
+--       http://www.apache.org/licenses/LICENSE-2.0
+--
+--    Unless required by applicable law or agreed to in writing, software
+--    distributed under the License is distributed on an "AS IS" BASIS,
+--    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+--    See the License for the specific language governing permissions and
+--    limitations under the License.
+--
+
+-- // Metadata.
+-- Migration SQL that makes the change goes here.
+INSERT INTO METADATATYPE(NAME,DATATYPE,LENGTH,BASETYPE,JAVATYPE) VALUES
+('string255','VARCHAR',255,'VARCHAR','java.lang.String'),
+('string80','VARCHAR',80,'VARCHAR','java.lang.String'),
+('string40','VARCHAR',40,'VARCHAR','java.lang.String'),
+('boolean1','VARCHAR',1,'BOOL','java.lang.Boolean'),
+('biginteger','BIGINT',0,'BIGINT','java.lang.Long'),
+('datetime1','TIMESTAMP',0,'DATETIME','java.sql.Timestamp')
+@
+
+INSERT INTO METADATAELEMENT(METADATATYPEID,NAME,DESCRIPTION) VALUES
+((SELECT ID FROM METADATATYPE WHERE NAME='boolean1'),'Mappa','Mappa'),
+((SELECT ID FROM METADATATYPE WHERE NAME='biginteger'),'Anyag ID','Anyag azonosító'),
+((SELECT ID FROM METADATATYPE WHERE NAME='string80'),'Anyag cím','Anyag cím'),
+((SELECT ID FROM METADATATYPE WHERE NAME='string255'),'Anyag leírás','Anyag leírás'),
+((SELECT ID FROM METADATATYPE WHERE NAME='datetime1'),'Anyag létrehozva','Anyag létrehozás ideje'),
+((SELECT ID FROM METADATATYPE WHERE NAME='string40'),'Anyag house ID','Anyag belső azonosító'),
+((SELECT ID FROM METADATATYPE WHERE NAME='biginteger'),'Verzió ID','Verzió azonosító'),
+((SELECT ID FROM METADATATYPE WHERE NAME='biginteger'),'Verzió anyag ID','Verzió anyag azonosító'),
+((SELECT ID FROM METADATATYPE WHERE NAME='string80'),'Verzió cím','Verzió cím'),
+((SELECT ID FROM METADATATYPE WHERE NAME='string255'),'Verzió leírás','Verzió leírás'),
+((SELECT ID FROM METADATATYPE WHERE NAME='datetime1'),'Verzió létrehozva','Verzió létrehozás ideje'),
+((SELECT ID FROM METADATATYPE WHERE NAME='string40'),'Verzió house ID','Verzió belső azonosító'),
+((SELECT ID FROM METADATATYPE WHERE NAME='biginteger'),'Verzió hossz','Verzió hossz'),
+((SELECT ID FROM METADATATYPE WHERE NAME='datetime1'),'Verzió archiválva','Verzió archiválás ideje'),
+((SELECT ID FROM METADATATYPE WHERE NAME='biginteger'),'Szülő mappa','Szülő mappa')
+@
+
+INSERT INTO METADATA(ITEMTYPEID,METADATAELEMENTID,ISDBINDEX,ISDBUNIQUE,ISDBNULLABLE,ISLISTABLE,ISEDITABLE,ISGENERATED,ISSEARCHABLE,GUITYPE,LISTTYPE,STATICTABLE,POJOFIELD,SQLFIELD) VALUES
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Mappa')                            ,'Y','N','N','Y','Y','Y','Y','CHECKBOX','FOLDERICON','ITEM','isFolder','ISFOLDER'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Anyag ID')                 ,'N','Y','N','Y','Y','Y','Y','WHOLENUMBER','LABEL','ITEM','id','ID'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Anyag cím')                       ,'Y','N','N','Y','Y','N','Y','TEXTBOX','LABEL','ITEM','title','TITLE'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Anyag leírás')           ,'Y','N','N','Y','Y','N','Y','MULTILINETEXTBOX','WRAPPEDLABEL','ITEM','description','DESCRIPTION'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Anyag létrehozva')        ,'Y','N','N','Y','Y','Y','Y','DATETIMEPICKER','LABEL','ITEM','created','CREATED'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Anyag house ID')           ,'Y','N','N','Y','Y','N','Y','TEXTBOX','LABEL','ITEM','houseId','HOUSEID'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Verzió ID')                       ,'N','Y','N','Y','Y','N','Y','WHOLENUMBER','LABEL','MEDIA','id','ID'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Verzió anyag ID') ,'Y','N','N','Y','Y','N','N','LABEL','LABEL','MEDIA','itemId','ITEMID'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Verzió cím')                     ,'Y','N','N','Y','Y','N','Y','TEXTBOX','LABEL','MEDIA','title','TITLE'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Verzió leírás')         ,'Y','N','N','Y','Y','N','Y','MULTILINETEXTBOX','WRAPPEDLABEL','MEDIA','description','DESCRIPTION'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Verzió létrehozva')      ,'Y','N','N','Y','Y','Y','Y','DATETIMEPICKER','LABEL','MEDIA','created','CREATED'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Verzió house ID') ,'Y','N','N','Y','Y','N','Y','TEXTBOX','LABEL','MEDIA','houseId','HOUSEID'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Verzió hossz')            ,'Y','N','N','Y','Y','N','N','TIMECODE','TIMECODE','MEDIA','length','LENGTH'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Verzió archiválva')      ,'Y','N','Y','Y','N','N','Y','LABEL','LABEL','MEDIA','archived','ARCHIVED'),
+((SELECT ID FROM ITEMTYPE WHERE NAME='Default'),(SELECT ID FROM METADATAELEMENT WHERE NAME='Szülő mappa')            ,'Y','N','N','Y','Y','N','N','LABEL','LABEL','FOLDER','parentId','PARENTID')
+@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+DELETE FROM METADATA WHERE METADATAELEMENTID IN 
+(SELECT id FROM METADATAELEMENT WHERE NAME IN
+       ('Mappa','Anyag ID','Anyag cím','Anyag leírás','Anyag létrehozva','Anyag house ID','Verzió ID','Verzió anyag ID',
+       'Verzió cím','Verzió leírás','Verzió létrehozva','Verzió house ID','Verzió hossz','Verzió archiválva','Szülő mappa')
+)
+@
+DELETE FROM METADATAELEMENT WHERE NAME IN 
+('Mappa','Anyag ID','Anyag cím','Anyag leírás','Anyag létrehozva','Anyag house ID','Verzió ID','Verzió anyag ID',
+'Verzió cím','Verzió leírás','Verzió létrehozva','Verzió house ID','Verzió hossz','Verzió archiválva','Szülő mappa')
+@
+DELETE FROM METADATATYPE WHERE NAME IN ('string255','string80','string40','boolean1','biginteger','datetime1')
+@
diff --git a/server/user.jobengine.osgi.db/migrations/20190916120000_views.sql b/server/user.jobengine.osgi.db/migrations/20190916120000_views.sql
new file mode 100644 (file)
index 0000000..5f57776
--- /dev/null
@@ -0,0 +1,30 @@
+--
+--    Copyright 2010-2016 the original author or authors.
+--
+--    Licensed under the Apache License, Version 2.0 (the "License");
+--    you may not use this file except in compliance with the License.
+--    You may obtain a copy of the License at
+--
+--       http://www.apache.org/licenses/LICENSE-2.0
+--
+--    Unless required by applicable law or agreed to in writing, software
+--    distributed under the License is distributed on an "AS IS" BASIS,
+--    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+--    See the License for the specific language governing permissions and
+--    limitations under the License.
+--
+
+-- // General views.
+-- Migration SQL that makes the change goes here.
+CREATE VIEW VW_MEDIAFILES AS
+SELECT 
+       mediaid,
+       count(*) AS mediafilecount 
+FROM mediafile 
+GROUP BY (mediaid)
+@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+DROP VIEW VW_MEDIAFILES
+@
diff --git a/server/user.jobengine.osgi.db/migrations/20190916130000_ft.sql b/server/user.jobengine.osgi.db/migrations/20190916130000_ft.sql
new file mode 100644 (file)
index 0000000..f8a5b1f
--- /dev/null
@@ -0,0 +1,213 @@
+--
+--    Copyright 2010-2016 the original author or authors.
+--
+--    Licensed under the Apache License, Version 2.0 (the "License");
+--    you may not use this file except in compliance with the License.
+--    You may obtain a copy of the License at
+--
+--       http://www.apache.org/licenses/LICENSE-2.0
+--
+--    Unless required by applicable law or agreed to in writing, software
+--    distributed under the License is distributed on an "AS IS" BASIS,
+--    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+--    See the License for the specific language governing permissions and
+--    limitations under the License.
+--
+
+-- // Indexer view.
+-- Migration SQL that makes the change goes here.
+CREATE OR REPLACE VIEW VW_ITEMS AS
+SELECT
+       i.id AS itemid, 
+       i.created AS itemcreated, 
+       i.houseid AS itemhouseid, 
+       i.title AS itemtitle, 
+       m.id AS mediaid,
+       m.created AS mediacreated, 
+       m.archived,
+       m.length, 
+       it.name AS mediatype, 
+       m.houseid AS mediahouseid, 
+       m.title AS mediatitle, 
+       mf.id AS mediafileid,
+       mf.houseid AS mediafilehouseid
+FROM MEDIAFILE mf
+LEFT OUTER JOIN MEDIA m ON (m.id = mf.mediaid) 
+LEFT OUTER JOIN ITEM i ON (i.id = m.itemid) 
+LEFT OUTER JOIN ITEMTYPE it ON (it.id = m.itemtypeid) 
+WHERE mf.storeid = (SELECT id FROM STORE WHERE name='TSM')
+@
+
+CREATE OR REPLACE VIEW VW_ITEMS_DESCRIPTION AS
+SELECT
+       i.id AS itemid, 
+       i.created AS itemcreated, 
+       i.houseid AS itemhouseid, 
+       i.title AS itemtitle, 
+       i.description AS itemdescription,
+       m.id AS mediaid,
+       m.created AS mediacreated, 
+       m.archived,
+       m.length, 
+       it.name AS mediatype, 
+       m.houseid AS mediahouseid, 
+       m.title AS mediatitle, 
+       m.description AS mediadescription, 
+       mf.id AS mediafileid,
+       mf.houseid AS mediafilehouseid
+FROM MEDIAFILE mf
+LEFT OUTER JOIN MEDIA m ON (m.id = mf.mediaid) 
+LEFT OUTER JOIN ITEM i ON (i.id = m.itemid) 
+LEFT OUTER JOIN ITEMTYPE it ON (it.id = m.itemtypeid) 
+WHERE mf.storeid = (SELECT id FROM STORE WHERE name='TSM')
+@
+
+CREATE OR REPLACE FUNCTION DEFDATE(TS TIMESTAMP) 
+       RETURNS VARCHAR(10) 
+       RETURN 
+WITH tmp (dd,mm,yyyy,hh,mi,ss,nnnnnn) AS 
+( 
+    SELECT 
+           SUBSTR( DIGITS (DAY(TS)),9), 
+           SUBSTR( DIGITS (MONTH(TS)),9) , 
+           RTRIM(CHAR(YEAR(TS))) , 
+           SUBSTR( DIGITS (HOUR(TS)),9), 
+           SUBSTR( DIGITS (MINUTE(TS)),9), 
+           SUBSTR( DIGITS (SECOND(TS)),9), 
+           RTRIM(CHAR(MICROSECOND(TS))) 
+    FROM SYSIBM.SYSDUMMY1 
+) 
+SELECT yyyy || mm || dd FROM tmp
+@
+
+
+CREATE OR REPLACE FUNCTION HUNDATE(TS TIMESTAMP) 
+       RETURNS VARCHAR(10) 
+       RETURN 
+WITH tmp (dd,mm,yyyy,hh,mi,ss,nnnnnn) AS 
+( 
+    SELECT 
+           SUBSTR( DIGITS (DAY(TS)),9), 
+           SUBSTR( DIGITS (MONTH(TS)),9) , 
+           RTRIM(CHAR(YEAR(TS))) , 
+           SUBSTR( DIGITS (HOUR(TS)),9), 
+           SUBSTR( DIGITS (MINUTE(TS)),9), 
+           SUBSTR( DIGITS (SECOND(TS)),9), 
+           RTRIM(CHAR(MICROSECOND(TS))) 
+    FROM SYSIBM.SYSDUMMY1 
+) 
+SELECT yyyy || '.' || mm || '.' || dd FROM tmp
+@
+
+CREATE OR REPLACE FUNCTION HIGHLIGHT(content CLOB(400000), starttag VARCHAR(20), endtag VARCHAR(20), pattern VARCHAR(1000))
+      RETURNS VARCHAR(32000)
+      LANGUAGE SQL
+      NO EXTERNAL ACTION
+      READS SQL DATA
+      DETERMINISTIC
+BEGIN
+    DECLARE RESULT VARCHAR(32000) DEFAULT '';
+    DECLARE CHUNKSIZE INT DEFAULT 10000;
+    DECLARE CHUNK VARCHAR(10000);
+    DECLARE CHUNKSTART INT DEFAULT 1;
+    DECLARE HITSTART INT DEFAULT 1;
+    WHILE LENGTH(RESULT) = 0 AND CHUNKSTART < LENGTH(content) DO
+        SET CHUNK = DBMS_LOB.SUBSTR(content, CHUNKSIZE, CHUNKSTART);
+        SET HITSTART = REGEXP_INSTR(CHUNK, pattern, 1, 1, 0, 'i');
+        IF HITSTART > 0 THEN
+            IF CHUNKSTART + HITSTART > 100 THEN
+                SET CHUNK = DBMS_LOB.SUBSTR(content, 200, CHUNKSTART + HITSTART - 100);
+            ELSE
+                SET CHUNK = DBMS_LOB.SUBSTR(content, 200, CHUNKSTART);
+            END IF;    
+            SET CHUNK = REPLACE(CHUNK, '<', '');
+            SET CHUNK = REPLACE(CHUNK, '>', '');
+            SET RESULT = '...' || REGEXP_REPLACE(CHUNK, pattern, starttag||'$0'||endtag,1,0,'i') || '...';
+        END IF;    
+        SET CHUNKSTART = CHUNKSTART + CHUNKSIZE;
+    END WHILE;
+    RETURN RESULT;
+END
+@
+
+CREATE OR REPLACE FUNCTION FULLDESC(IN initemid BIGINT, IN inmediaid BIGINT, IN inmediafileid BIGINT) 
+       RETURNS CLOB(400000) 
+       RETURN 
+SELECT 
+    COALESCE(hundate(archived), '') || ' ' ||
+    COALESCE(defdate(archived), '') || ' ' ||
+    COALESCE(itemhouseid, '') || ' ' ||
+    COALESCE(itemtitle, '') || ' ' ||
+    COALESCE(itemdescription,'') || ' ' ||
+    COALESCE(mediahouseid, '') || ' ' ||
+    COALESCE(mediatitle, '') || ' ' ||
+    COALESCE(mediadescription, '') || ' ' ||
+    COALESCE(mediafilehouseid, '')
+FROM VW_ITEMS_DESCRIPTION 
+WHERE itemid = initemid AND mediaid = inmediaid AND mediafileid = inmediafileid
+@
+
+CREATE OR REPLACE TRIGGER TRG_MEDIAFILE_AFTER_INSERT AFTER INSERT ON MEDIAFILE
+       REFERENCING NEW AS n
+       FOR EACH ROW
+       WHEN (n.storeid = (SELECT id FROM STORE WHERE name='TSM'))
+BEGIN ATOMIC
+    INSERT INTO mediadescription (itemid, mediaid, mediafileid, description)
+    SELECT 
+        itemid,
+        mediaid, 
+        mediafileid,
+        fulldesc(itemid, mediaid, mediafileid)
+    FROM VW_ITEMS 
+    WHERE mediafileid = n.id;
+END
+@
+
+CREATE OR REPLACE TRIGGER TRG_MEDIAFILE_AFTER_DELETE AFTER DELETE ON MEDIAFILE
+       REFERENCING OLD AS o
+       FOR EACH ROW
+       WHEN (o.storeid = (SELECT id FROM STORE WHERE name='TSM'))
+BEGIN ATOMIC
+    DELETE FROM MEDIADESCRIPTION WHERE mediafileid = o.id;
+END
+@
+
+CREATE OR REPLACE TRIGGER TRG_MEDIA_AFTER_UPDATE AFTER UPDATE ON MEDIA
+       REFERENCING NEW AS n
+       FOR EACH ROW
+BEGIN ATOMIC
+    UPDATE MEDIADESCRIPTION SET description = FULLDESC(itemid, mediaid, mediafileid) WHERE mediaid = n.id;
+END
+@
+
+CREATE OR REPLACE TRIGGER TRG_ITEM_AFTER_UPDATE AFTER UPDATE ON ITEM
+       REFERENCING NEW AS n
+       FOR EACH ROW
+BEGIN ATOMIC
+    UPDATE MEDIADESCRIPTION SET description = FULLDESC(itemid, mediaid, mediafileid) WHERE itemid = n.id;
+END
+@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+DROP TRIGGER TRG_ITEM_AFTER_UPDATE
+@
+DROP TRIGGER TRG_MEDIA_AFTER_UPDATE
+@
+DROP TRIGGER TRG_MEDIAFILE_AFTER_DELETE
+@
+DROP TRIGGER TRG_MEDIAFILE_AFTER_INSERT
+@
+DROP VIEW VW_ITEMS_DESCRIPTION
+@
+DROP VIEW VW_ITEMS
+@
+DROP FUNCTION FULLDESC 
+@
+DROP FUNCTION HIGHLIGHT
+@
+DROP FUNCTION HUNDATE 
+@
+DROP FUNCTION DEFDATE 
+@
+
diff --git a/server/user.jobengine.osgi.db/migrations/20190917120000_indexer_view.sql b/server/user.jobengine.osgi.db/migrations/20190917120000_indexer_view.sql
new file mode 100644 (file)
index 0000000..66fe6fd
--- /dev/null
@@ -0,0 +1,44 @@
+--
+--    Copyright 2010-2016 the original author or authors.
+--
+--    Licensed under the Apache License, Version 2.0 (the "License");
+--    you may not use this file except in compliance with the License.
+--    You may obtain a copy of the License at
+--
+--       http://www.apache.org/licenses/LICENSE-2.0
+--
+--    Unless required by applicable law or agreed to in writing, software
+--    distributed under the License is distributed on an "AS IS" BASIS,
+--    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+--    See the License for the specific language governing permissions and
+--    limitations under the License.
+--
+
+-- // Indexer view.
+-- Migration SQL that makes the change goes here.
+
+CREATE OR REPLACE VIEW VW_INDEXER AS 
+SELECT
+       i.id AS itemid, 
+       i.title AS itemtitle, 
+       m.id AS mediaid,
+       m.title AS mediatitle, 
+       m.houseid AS mediahouseid, 
+       m.archived,
+       m.length,
+       m.itemtypeid AS mediaitemtypeid, 
+       it.name AS mediaitemtypename, 
+       mf.id AS mediafileid,
+       mf.houseid AS mediafilehouseid,
+       vw_mf.mediafilecount
+FROM ITEM i, MEDIA m, MEDIAFILE mf, VW_MEDIAFILES vw_mf, ITEMTYPE it WHERE
+       m.id = mf.mediaid AND 
+       i.id = m.itemid AND 
+       it.id = m.itemtypeid AND 
+       vw_mf.mediaid = m.id AND 
+       mf.storeid = (SELECT id FROM STORE WHERE name='TSM')
+@
+-- //@UNDO
+-- SQL to undo the change goes here.
+DROP VIEW VW_INDEXER
+@
diff --git a/server/user.jobengine.osgi.db/sql/4-CreateFT.sql b/server/user.jobengine.osgi.db/sql/4-CreateFT.sql
new file mode 100644 (file)
index 0000000..43c20f6
--- /dev/null
@@ -0,0 +1,178 @@
+CREATE OR REPLACE FUNCTION "DB2ADMIN"."DEFDATE" (TS timestamp) \r
+returns varchar(10) \r
+return \r
+with tmp (dd,mm,yyyy,hh,mi,ss,nnnnnn) as \r
+( \r
+    select \r
+    substr( digits (day(TS)),9), \r
+    substr( digits (month(TS)),9) , \r
+    rtrim(char(year(TS))) , \r
+    substr( digits (hour(TS)),9), \r
+    substr( digits (minute(TS)),9), \r
+    substr( digits (second(TS)),9), \r
+    rtrim(char(microsecond(TS))) \r
+    from sysibm.sysdummy1 \r
+    ) \r
+select yyyy || mm || dd from tmp\r
+@\r
+\r
+\r
+CREATE OR REPLACE FUNCTION "DB2ADMIN"."HUNDATE" (TS timestamp) \r
+returns varchar(10) \r
+return \r
+with tmp (dd,mm,yyyy,hh,mi,ss,nnnnnn) as \r
+( \r
+    select \r
+    substr( digits (day(TS)),9), \r
+    substr( digits (month(TS)),9) , \r
+    rtrim(char(year(TS))) , \r
+    substr( digits (hour(TS)),9), \r
+    substr( digits (minute(TS)),9), \r
+    substr( digits (second(TS)),9), \r
+    rtrim(char(microsecond(TS))) \r
+    from sysibm.sysdummy1 \r
+    ) \r
+select yyyy || '.' || mm || '.' || dd from tmp\r
+@\r
+\r
+CREATE OR REPLACE FUNCTION "DB2ADMIN"."HIGHLIGHT"  (content CLOB(400000), starttag VARCHAR(20), endtag VARCHAR(20), pattern VARCHAR(1000))\r
+      RETURNS VARCHAR(32000)\r
+      LANGUAGE SQL\r
+      NO EXTERNAL ACTION\r
+      READS SQL DATA\r
+      DETERMINISTIC\r
+BEGIN\r
+    DECLARE RESULT VARCHAR(32000) DEFAULT '';\r
+    DECLARE CHUNKSIZE INT DEFAULT 10000;\r
+    DECLARE CHUNK VARCHAR(10000);\r
+    DECLARE CHUNKSTART INT DEFAULT 1;\r
+    DECLARE HITSTART INT DEFAULT 1;\r
+    WHILE LENGTH(RESULT) = 0 AND CHUNKSTART < LENGTH(content) DO\r
+        SET CHUNK = DBMS_LOB.SUBSTR(content, CHUNKSIZE, CHUNKSTART);\r
+        SET HITSTART = REGEXP_INSTR(CHUNK, pattern, 1, 1, 0, 'i');\r
+        IF HITSTART > 0 THEN\r
+            IF CHUNKSTART + HITSTART > 100 THEN\r
+                SET CHUNK = DBMS_LOB.SUBSTR(content, 200, CHUNKSTART + HITSTART - 100);\r
+            ELSE\r
+                SET CHUNK = DBMS_LOB.SUBSTR(content, 200, CHUNKSTART);\r
+            END IF;    \r
+            SET CHUNK = REPLACE(CHUNK, '<', '');\r
+            SET CHUNK = REPLACE(CHUNK, '>', '');\r
+            SET RESULT = '...' || REGEXP_REPLACE(CHUNK, pattern, starttag||'$0'||endtag,1,0,'i') || '...';\r
+        END IF;    \r
+        SET CHUNKSTART = CHUNKSTART + CHUNKSIZE;\r
+    END WHILE;\r
+    RETURN RESULT;\r
+END\r
+@\r
+\r
+CREATE OR REPLACE VIEW "DB2ADMIN"."VW_ITEMS" as\r
+select\r
+i.id as itemid, \r
+i.created as itemcreated, \r
+i.houseid as itemhouseid, \r
+i.title as itemtitle, \r
+m.id as mediaid,\r
+m.created as mediacreated, \r
+m.archived,\r
+m.length, \r
+it.name as mediatype, \r
+m.houseid as mediahouseid, \r
+m.title as mediatitle, \r
+mf.id as mediafileid,\r
+mf.houseid as mediafilehouseid\r
+from mediafile mf\r
+left outer join media m on (m.id = mf.mediaid) \r
+left outer join item i on (i.id = m.itemid) \r
+left outer join itemtype it on (it.id = m.itemtypeid) \r
+where mf.storeid = 1\r
+@\r
+\r
+CREATE OR REPLACE VIEW "DB2ADMIN"."VW_ITEMS_DESCRIPTION" as\r
+select\r
+i.id as itemid, \r
+i.created as itemcreated, \r
+i.houseid as itemhouseid, \r
+i.title as itemtitle, \r
+i.description as itemdescription,\r
+m.id as mediaid,\r
+m.created as mediacreated, \r
+m.archived,\r
+m.length,\r
+m.description as mediadescription, \r
+it.name as mediatype, \r
+m.houseid as mediahouseid, \r
+m.title as mediatitle, \r
+mf.id as mediafileid,\r
+mf.houseid as mediafilehouseid\r
+from mediafile mf\r
+left outer join media m on (m.id = mf.mediaid) \r
+left outer join item i on (i.id = m.itemid) \r
+left outer join itemtype it on (it.id = m.itemtypeid) \r
+where mf.storeid = 1\r
+@\r
+\r
+CREATE OR REPLACE FUNCTION "DB2ADMIN"."FULLDESC"  (IN initemid BIGINT, IN inmediaid BIGINT, IN inmediafileid BIGINT) \r
+returns CLOB(400000) \r
+return \r
+SELECT \r
+    COALESCE(hundate(archived), '') || ' ' ||\r
+    COALESCE(defdate(archived), '') || ' ' ||\r
+    COALESCE(itemhouseid, '') || ' ' ||\r
+    COALESCE(itemtitle, '') || ' ' ||\r
+    COALESCE(itemdescription,'') || ' ' ||\r
+    COALESCE(mediahouseid, '') || ' ' ||\r
+    COALESCE(mediatitle, '') || ' ' ||\r
+    COALESCE(mediadescription, '') || ' ' ||\r
+    COALESCE(mediafilehouseid, '')\r
+from vw_items_description WHERE itemid = initemid AND mediaid = inmediaid AND mediafileid = inmediafileid\r
+@\r
+\r
+CREATE OR REPLACE TRIGGER DB2ADMIN.TRG_MEDIAFILE_AFTER_INSERT after insert\r
+on mediafile\r
+referencing new as n\r
+for each row\r
+when (n.storeid = 1)\r
+begin atomic\r
+    insert into mediadescription (itemid, mediaid, mediafileid, description)\r
+    select \r
+        itemid,\r
+        mediaid, \r
+        mediafileid,\r
+        fulldesc(itemid, mediaid, mediafileid)\r
+    from vw_items \r
+    where mediafileid = n.id;\r
+end\r
+@\r
+\r
+CREATE OR REPLACE TRIGGER DB2ADMIN.TRG_MEDIAFILE_AFTER_DELETE after delete\r
+on mediafile\r
+referencing old as o\r
+for each row\r
+when (o.storeid = 1)\r
+begin atomic\r
+    delete from mediadescription where mediafileid = o.id;\r
+end\r
+@\r
+\r
+CREATE OR REPLACE TRIGGER DB2ADMIN.TRG_MEDIA_AFTER_UPDATE after update on media\r
+referencing new as n\r
+for each row\r
+begin atomic\r
+    update mediadescription SET description = fulldesc(itemid, mediaid, mediafileid) where mediaid = n.id;\r
+end\r
+@\r
+\r
+CREATE OR REPLACE TRIGGER DB2ADMIN.TRG_ITEM_AFTER_UPDATE after update on item\r
+referencing new as n\r
+for each row\r
+begin atomic\r
+    update mediadescription SET description = fulldesc(itemid, mediaid, mediafileid) where itemid = n.id;\r
+end\r
+@\r
+\r
+\r
+--osszes frissitese\r
+--update mediadescription SET description = fulldesc(itemid, mediaid, mediafileid)\r
+\r
+\r
diff --git a/server/user.jobengine.osgi.db/sql/4-CreateTrigger.sql b/server/user.jobengine.osgi.db/sql/4-CreateTrigger.sql
deleted file mode 100644 (file)
index 409c3b4..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-CREATE OR REPLACE FUNCTION "DB2ADMIN"."FULLDESC"  (IN initemid BIGINT, IN inmediaid BIGINT, IN inmediafileid BIGINT) \r
-returns CLOB(400000) \r
-return \r
-SELECT \r
-    COALESCE(hundate(archived), '') || ' ' ||\r
-    COALESCE(defdate(archived), '') || ' ' ||\r
-    COALESCE(itemhouseid, '') || ' ' ||\r
-    COALESCE(itemtitle, '') || ' ' ||\r
-    COALESCE(itemdescription,'') || ' ' ||\r
-    COALESCE(mediahouseid, '') || ' ' ||\r
-    COALESCE(mediatitle, '') || ' ' ||\r
-    COALESCE(mediadescription, '') || ' ' ||\r
-    COALESCE(mediafilehouseid, '')\r
-from vw_items_description WHERE itemid = initemid AND mediaid = inmediaid AND mediafileid = inmediafileid\r
-GO\r
-\r
-CREATE OR REPLACE TRIGGER DB2ADMIN.TRG_MEDIAFILE_AFTER_INSERT after insert\r
-on mediafile\r
-referencing new as n\r
-for each row\r
-when (n.storeid = 1)\r
-begin atomic\r
-    insert into mediadescription (itemid, mediaid, mediafileid, description)\r
-    select \r
-        itemid,\r
-        mediaid, \r
-        mediafileid,\r
-        fulldesc(itemid, mediaid, mediafileid)\r
-    from vw_items \r
-    where mediafileid = n.id;\r
-end\r
-GO\r
-\r
-CREATE OR REPLACE TRIGGER DB2ADMIN.TRG_MEDIAFILE_AFTER_DELETE after delete\r
-on mediafile\r
-referencing old as o\r
-for each row\r
-when (o.storeid = 1)\r
-begin atomic\r
-    delete from mediadescription where mediafileid = o.id;\r
-end\r
-GO\r
-\r
-CREATE OR REPLACE TRIGGER DB2ADMIN.TRG_MEDIA_AFTER_UPDATE after update on media\r
-referencing new as n\r
-for each row\r
-begin atomic\r
-    update mediadescription SET description = fulldesc(itemid, mediaid, mediafileid) where mediaid = n.id;\r
-end\r
-GO\r
-\r
-CREATE OR REPLACE TRIGGER DB2ADMIN.TRG_ITEM_AFTER_UPDATE after update on item\r
-referencing new as n\r
-for each row\r
-begin atomic\r
-    update mediadescription SET description = fulldesc(itemid, mediaid, mediafileid) where itemid = n.id;\r
-end\r
-GO\r
-\r
---osszes frissitese\r
---update mediadescription SET description = fulldesc(itemid, mediaid, mediafileid)\r
-\r
-\r
index 849debed1d7d6e3c9373e2bf2344e121d4356611..43dc4cfea7ec6106d51f5a9dc2a5e73969ce97ce 100644 (file)
@@ -1,6 +1,9 @@
 package user.jobengine.db;\r
 \r
-public class ArchivedMedia {\r
+import java.io.Serializable;\r
+\r
+public class ArchivedMedia implements Serializable {\r
+       private static final long serialVersionUID = 1L;\r
        private Item item;\r
        private Media media;\r
        private String relevant;\r
index c579b22ab426857cd7e67b4d0665d0302ca48919..4c65cb21932c02f940c98a6c6fc9819df4d86d6c 100644 (file)
@@ -93,6 +93,7 @@ public class JobStepExecutor implements IJobStepExecutor {
        private CountDownLatch barrier;
        private Class<IJobStep> stepClass;
        private int maxConcurrent;
+       private String className;
 
        public JobStepExecutor() {
        }
@@ -126,6 +127,7 @@ public class JobStepExecutor implements IJobStepExecutor {
        @Override
        @SuppressWarnings("unchecked")
        public void create(String className, int maxConcurrent) throws JobEngineException {
+               this.className = className;
                logger = LogManager.getLogger(getClass().getSimpleName() + ":" + className);
                logger.debug("Creating executor {}, instances {}", className, maxConcurrent);
                if (StringUtils.isEmpty(className))
index fee97cd32769e39f97f39c954be71e7650b825e1..ae4602f2be4eb75d8f52a2c75c1207a136608b03 100644 (file)
@@ -78,14 +78,29 @@ public class JobStep implements IJobStep {
                Object[] result = null;\r
                this.jobRuntime = jobRuntime;\r
                //jobRuntime.setDescription("Feldolgozás: " + getClass().getSimpleName());\r
-               jobRuntime.NotifyUpdate();\r
-               for (Method method : getClass().getDeclaredMethods()) {\r
+\r
+               if (jobRuntime != null)\r
+                       jobRuntime.NotifyUpdate();\r
+               for (Method method : this.getClass().getDeclaredMethods()) {\r
                        Annotation annotation = method.getAnnotation(StepEntry.class);\r
                        if (annotation != null) {\r
                                Object[] extendedInputs = inputs;\r
                                extendedInputs = addParameter(method, extendedInputs, IJobEngine.class, jobEngine);\r
                                extendedInputs = addParameter(method, extendedInputs, IJobRuntime.class, jobRuntime);\r
-                               result = (Object[]) method.invoke(this, extendedInputs);\r
+                               try {\r
+                                       logger.info("Executing {}", method);\r
+                                       result = (Object[]) method.invoke(this, extendedInputs);\r
+                               } catch (Exception e) {\r
+                                       if (e instanceof IllegalArgumentException) {\r
+                                               logger.error("Invokation error in {}. Invoke parameters:\r\n{}", getClass().getSimpleName(), Arrays.toString(extendedInputs));\r
+                                               if (method.getParameterCount() != extendedInputs.length) {\r
+                                                       logger.error("Expected parameter count: {}, invoke parameter count: {}", method.getGenericParameterTypes().length,\r
+                                                                       extendedInputs.length);\r
+                                               }\r
+                                       }\r
+\r
+                                       throw e;\r
+                               }\r
                                break;\r
                        }\r
                }\r
index 8eb5e2571c31b5639ef7d954d0663977097a8eb5..e634fc715150e36830ca7d1efa60bd703da41abd 100644 (file)
@@ -77,6 +77,17 @@ public class RetrieveBatchSelectorModel extends BaseModel {
                wndRetrieveBatch.detach();\r
        }\r
 \r
+       //////////TEST CODE KESOBB TOROLNI ++++++++++++++++\r
+       private ArchivedMedia createFakeArchivedMedia(int c) {\r
+               ArchivedMedia ret = new ArchivedMedia();\r
+               Media media = new Media();\r
+               media.setId(c);\r
+               media.setTitle("title_" + c);\r
+               media.setMediaFilesName("mediaFilesName_" + c);\r
+               ret.setMedia(media);\r
+               return ret;\r
+       }\r
+\r
        @Command\r
        @NotifyChange("basketItems")\r
        public void execute() {\r
@@ -91,7 +102,8 @@ public class RetrieveBatchSelectorModel extends BaseModel {
                        Map<String, Object> parameters = scheduledJob.getJobParameters();\r
                        parameters.put(HOUSEID, houseId);\r
                        parameters.put(RECIPIENT, email);\r
-                       parameters.put(BASKET, getMedias());\r
+\r
+                       parameters.put(BASKET, new ArrayList<ArchivedMedia>(getBasketItems()));\r
                        parameters.put(TARGET_PATH_TYPE, Types.valueOf(reloadTypes.getSelection().iterator().next().toString()).value);\r
                        jobEngine.submit(JOBTEMPLATE, RESTORE, parameters);\r
 \r
@@ -107,32 +119,9 @@ public class RetrieveBatchSelectorModel extends BaseModel {
 \r
        public List<ArchivedMedia> getBasketItems() {\r
                setDisabled(menuModel.getBasketItems() == null || menuModel.getBasketItems().size() == 0);\r
-               List<ArchivedMedia> basketItems = menuModel.getBasketItems();\r
-               \r
-               //////////TEST CODE KESOBB TOROLNI ++++++++++++++++\r
-               if(basketItems == null) basketItems = new ArrayList<ArchivedMedia>();\r
-               if(basketItems.size() == 0){\r
-                       for(int c=0; c<20; c++){\r
-                               basketItems.add(createFakeArchivedMedia(c));\r
-                       }\r
-               }\r
-               \r
-               \r
-               return basketItems;\r
+               return menuModel.getBasketItems();\r
        }\r
 \r
-       //////////TEST CODE KESOBB TOROLNI ++++++++++++++++\r
-       private ArchivedMedia createFakeArchivedMedia(int c){\r
-               ArchivedMedia ret = new ArchivedMedia();\r
-               Media media = new Media();\r
-               media.setId(c);\r
-               media.setTitle("title_" + c);\r
-               media.setMediaFilesName("mediaFilesName_" + c);\r
-               ret.setMedia(media);\r
-               return ret;\r
-       }\r
-       \r
-       \r
        public String getEmail() {\r
                return email;\r
        }\r
@@ -141,14 +130,6 @@ public class RetrieveBatchSelectorModel extends BaseModel {
                return houseId;\r
        }\r
 \r
-       private List<ArchivedMedia> getMedias() {\r
-               List<ArchivedMedia> basket = getBasketItems();\r
-//             List<Media> result = basket.stream().map(i -> {\r
-//             return i.getMedia();\r
-//     }).collect(Collectors.toList());\r
-               return basket;\r
-       }\r
-\r
        public ListModel<String> getReloadTypes() {\r
                return reloadTypes;\r
        }\r