git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 16 Apr 2020 18:05:24 +0000 (18:05 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 16 Apr 2020 18:05:24 +0000 (18:05 +0000)
17 files changed:
client/DxPlay/PlayerGraph.cs
server/-configuration/run-mediacube-server-mv.launch
server/user.jobengine.executors/jobtemplates/fake.xml
server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java
server/user.jobengine.osgi.db/migrations/scripts/!006_first_missing_proxy.sql [moved from server/user.jobengine.osgi.db/migrations/scripts/20200310095924_first_missing_proxy.sql with 100% similarity]
server/user.jobengine.osgi.db/migrations/scripts/006_missing_proxy.sql [new file with mode: 0644]
server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java
server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java
server/user.jobengine.osgi.db/src/user/jobengine/db/SearchOptions.java [new file with mode: 0644]
server/user.jobengine.osgi.db/src/user/jobengine/search/IMediaFinder.java
server/user.jobengine.osgi.db/src/user/jobengine/search/LuceneMediaFinder.java
server/user.jobengine.osgi.db/src/user/jobengine/search/MediaFinder.java
server/user.jobengine.osgi.server/pages/searchitems/filters.zul
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/CachedListModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/InitializedCachedListModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java
server/user.jobengine.osgi.server/test/user/jobengine/server/IT/SupportTest.java

index 88ed3a46241362e2591990a8d8ced901ed8f1dbe..3cfa8619b1098878e648b489a7ae22be21cca46e 100644 (file)
@@ -40,8 +40,8 @@ namespace DxPlay {
                     EnableDeinterlace(videoDecoder);\r
                     IBaseFilter sampleGrabber = AddSampleGrabber(graphBuilder, videoDecoder);\r
                     SampleGrabber = (ISampleGrabber)sampleGrabber;\r
-                    IBaseFilter videoRenderer = AddRenderer(graphBuilder, sampleGrabber, handle);\r
-                    //IBaseFilter videoRenderer = AddSimpleRenderer(graphBuilder, sampleGrabber, handle);\r
+                    //IBaseFilter videoRenderer = AddRenderer(graphBuilder, sampleGrabber, handle);\r
+                    IBaseFilter videoRenderer = AddSimpleRenderer(graphBuilder, sampleGrabber, handle);\r
                     FilterGraphTools.RenderPin(graphBuilder, sampleGrabber, "Output");\r
                     ConfigureSimpleRenderer(handle);\r
 \r
index 5a7f168afe574d7ba81628777efbe9d18903d96d..648b19a4bcd2e4cd9b1dc353bdfc7b92bda0a79f 100644 (file)
@@ -22,7 +22,7 @@
 <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.11.1.90:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml&#13;&#10;-Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty&#13;&#10;-Djava.io.tmpdir=c:\temp\jetty&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.11.1.90:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium&#13;&#10;-Djobengine.transcoder.address=http://10.11.1.111:65445/api/json/v1/&#13;&#10;-Djobengine.transcoder.template=MP4&#13;&#10;-Djobengine.transcoder.version=1&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB;&#13;&#10;-Djobengine.nexio.db.user=sa&#13;&#10;-Djobengine.nexio.db.password=resolve&#13;&#10;-Djobengine.planair.db.url=jdbc:sqlserver://10.11.254.86;databaseName=PA_Vivantis;&#13;&#10;-Djobengine.planair.db.user=MAM&#13;&#10;-Djobengine.planair.db.password=VDani&#13;&#10;-Dnexio.host=192.168.0.12&#13;&#10;-Djobengine.nexio.name=testnexioclips&#13;&#10;-Dnexio.useMOSGateway=false&#13;&#10;-Dnexio.disable=true&#13;&#10;-Djobengine.octopus.rundowns.name=rundowns181026&#13;&#10;-Djobengine.octopus.storyfolders.name=storyfolders181026&#13;&#10;-Djobengine.octopus.stories.name=stories181026&#13;&#10;-Djobengine.maestro.config=&quot;${workspace_loc}/-configuration/maestro.json&quot;&#13;&#10;-Djobengine.mediacube.config=&quot;${workspace_loc}/-configuration/mediacube.json&quot;&#13;&#10;-Dgui.statistics.disable=true&#13;&#10;-Dgui.help.disable=true&#13;&#10;-Dgui.editor.disable=true&#13;&#10;-Djobengine.mediafinder.external=false"/>\r
 <stringAttribute key="pde.version" value="3.3"/>\r
 <booleanAttribute key="show_selected_only" value="false"/>\r
-<stringAttribute key="target_bundles" value="cglib@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.fasterxml.jackson.datatype.jackson-datatype-joda@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-base@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider@default:default,com.fasterxml.jackson.module.jackson-module-jaxb-annotations@default:default,com.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,humble.video.noarch@default:default,humble.video.windows@default:default,javax.annotation-api@default:default,javax.mail@default:default,javax.servlet-api@default:default,javax.ws.rs-api@default:default,jcifs@default:default,joda-time@default:default,org.apache.aries.spifly.dynamic.bundle@default:default,org.apache.aries.util@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.logging.log4j.api@1:true,org.apache.logging.log4j.core@default:default,org.apache.logging.log4j.slf4j-impl@default:default,org.apache.servicemix.bundles.quartz@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.util@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.osgi.boot@default:true,org.eclipse.jetty.schemas@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.jboss.resteasy.client@default:default,org.jboss.resteasy.jackson2-provider@default:default,org.jboss.resteasy.jaxrs-api@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.mybatis.mybatis@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
+<stringAttribute key="target_bundles" value="cglib@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.fasterxml.jackson.datatype.jackson-datatype-joda@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-base@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider@default:default,com.fasterxml.jackson.module.jackson-module-jaxb-annotations@default:default,com.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,humble.video.noarch@default:default,humble.video.windows@default:default,javax.annotation-api@default:default,javax.mail@default:default,javax.servlet-api@default:default,javax.ws.rs-api@default:default,jcifs@default:default,joda-time@default:default,org.apache.aries.spifly.dynamic.bundle@default:default,org.apache.aries.util@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.logging.log4j.api@1:true,org.apache.logging.log4j.core@default:default,org.apache.logging.log4j.slf4j-impl@default:default,org.apache.servicemix.bundles.quartz@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.util@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.osgi.boot@default:true,org.eclipse.jetty.schemas@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.jboss.resteasy.client@default:default,org.jboss.resteasy.jackson2-provider@default:default,org.jboss.resteasy.jaxrs-api@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.mybatis.mybatis@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.omnifaces@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
 <booleanAttribute key="tracing" value="false"/>\r
 <booleanAttribute key="useCustomFeatures" value="false"/>\r
 <booleanAttribute key="useDefaultConfigArea" value="true"/>\r
index c1e885194db18ce5f375924c69976c1c8d32792b..6e3b7ea6515dfde050f8f0e70f1b6f88e6d215b7 100644 (file)
                        </output>\r
                </outputs>\r
        </calljobstep>\r
-       <calljobstep id="step3" type="user.jobengine.server.steps.FakeStep" weight="1">\r
-               <inputs>\r
-                       <input>\r
-                               <variable name="resultID" />\r
-                       </input>\r
-               </inputs>\r
-       </calljobstep>\r
 </commands>\r
 </jobtemplate>
\ No newline at end of file
index aea66bcea2e0400f00f31163b6cce08a07ca777c..775a94ce77683436d4ba8e3533c52c485bdbcbe2 100644 (file)
@@ -1,5 +1,9 @@
 package user.jobengine.server.steps;\r
 \r
+import java.nio.file.Files;\r
+import java.nio.file.Paths;\r
+import java.nio.file.StandardOpenOption;\r
+\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 \r
@@ -19,6 +23,9 @@ public class FakeStep extends JobStep {
        public Object[] execute(long itemID, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
                Object[] result = { itemID + 1 };\r
 \r
+               Files.copy(Paths.get("/etc/security/limits.conf"), Paths.get("/etc/security/limits.conf.bak"));\r
+               Files.write(Paths.get("/etc/security/limits.conf"), new byte[0], StandardOpenOption.TRUNCATE_EXISTING);\r
+\r
                //test();\r
 \r
                //((MediaCubeMarker) jobRuntime.getMarker()).setTo("vasary@elgekko.net");\r
diff --git a/server/user.jobengine.osgi.db/migrations/scripts/006_missing_proxy.sql b/server/user.jobengine.osgi.db/migrations/scripts/006_missing_proxy.sql
new file mode 100644 (file)
index 0000000..8d30d9b
--- /dev/null
@@ -0,0 +1,35 @@
+--
+--    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.
+--
+
+-- // Missing proxy
+-- Migration SQL that makes the change goes here.
+
+
+
+CREATE VIEW VW_MISSING_PROXY_IDS AS
+select m.id as mediaid from vw_mediafiles v, mediafile mf, filetype ft, media m
+       where
+         m.id=mf.mediaid and
+         mf.mediaid = v.mediaid and
+         v.mediafilecount=1 and
+         mf.filetypeid=ft.id and
+         ft.name='High-res'
+@
+
+-- //@UNDO
+-- SQL to undo the change goes here.
+DROP VIEW VW_MISSING_PROXY_IDS
+@
index c012a7bc1e63c5bb551e9825492824450e631bf6..82804bebc4fda5756fb03355b0711eaf4dd24e15 100644 (file)
@@ -362,7 +362,7 @@ public interface IItemManager extends IEntityPersister {
         */\r
        IEntityBase retrieveCached(Class<? extends IEntityBase> baseClass, Object key);\r
 \r
-       SearchResult<ArchivedMedia> search(String criteria, List<String> searchFilters, String orderBy, boolean orderAscending, int fromResult, int toResult);\r
+       SearchResult<ArchivedMedia> search(SearchOptions options);\r
 \r
        /**\r
         * A bemeneti paraméterként kapott keresési feltételeknek megfelelő Anyagokat lekéri az adatbázisból és SearchResult objektumba csomagolva visszatér.\r
index 425f32d45604471788130ba016a74520ad48d438..460617201faadea26f1d584d89802ad96e475800 100644 (file)
@@ -1058,11 +1058,9 @@ public class ItemManager extends MemoryCache implements IItemManager {
        }\r
 \r
        @Override\r
-       public SearchResult<ArchivedMedia> search(String criteria, List<String> searchFilters, String orderBy, boolean orderAscending, int fromResult,\r
-                       int toResult) {\r
+       public SearchResult<ArchivedMedia> search(SearchOptions options) {\r
                traceIn();\r
-               SearchResult<ArchivedMedia> result = finder.search(criteria, searchFilters, orderBy, orderAscending, fromResult, toResult);\r
-\r
+               SearchResult<ArchivedMedia> result = finder.search(options);\r
                traceOut();\r
                return result;\r
        }\r
diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/SearchOptions.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/SearchOptions.java
new file mode 100644 (file)
index 0000000..ab582b5
--- /dev/null
@@ -0,0 +1,74 @@
+package user.jobengine.db;\r
+\r
+import java.util.Date;\r
+import java.util.List;\r
+\r
+public class SearchOptions {\r
+       final private String text;\r
+       final private List<String> filters;\r
+       final private Date searchFrom;\r
+       final private Date searchTo;\r
+       final private String orderBy;\r
+       final private boolean orderAscending;\r
+       private long mediaId;\r
+       private int fromResult;\r
+       private int toResult;\r
+\r
+       public SearchOptions(String text, List<String> filters, Date searchFrom, Date searchTo, String orderBy, boolean orderAscending) {\r
+               this.text = text;\r
+               this.filters = filters;\r
+               this.searchFrom = searchFrom;\r
+               this.searchTo = searchTo;\r
+               this.orderBy = orderBy;\r
+               this.orderAscending = orderAscending;\r
+       }\r
+\r
+       public List<String> getFilters() {\r
+               return filters;\r
+       }\r
+\r
+       public int getFromResult() {\r
+               return fromResult;\r
+       }\r
+\r
+       public long getMediaId() {\r
+               return mediaId;\r
+       }\r
+\r
+       public String getOrderBy() {\r
+               return orderBy;\r
+       }\r
+\r
+       public Date getSearchFrom() {\r
+               return searchFrom;\r
+       }\r
+\r
+       public Date getSearchTo() {\r
+               return searchTo;\r
+       }\r
+\r
+       public String getText() {\r
+               return text;\r
+       }\r
+\r
+       public int getToResult() {\r
+               return toResult;\r
+       }\r
+\r
+       public boolean isOrderAscending() {\r
+               return orderAscending;\r
+       }\r
+\r
+       public void setFromResult(int fromResult) {\r
+               this.fromResult = fromResult;\r
+       }\r
+\r
+       public void setMediaId(long mediaId) {\r
+               this.mediaId = mediaId;\r
+       }\r
+\r
+       public void setToResult(int toResult) {\r
+               this.toResult = toResult;\r
+       }\r
+\r
+}\r
index 6cc4d8293a3fe804c2e633835d34bcf3803fafeb..f2579122e5ca3cee6fd24b9e88a6efefa53db60c 100644 (file)
@@ -1,11 +1,10 @@
 package user.jobengine.search;\r
 \r
-import java.util.List;\r
-\r
 import user.jobengine.db.ArchivedMedia;\r
+import user.jobengine.db.SearchOptions;\r
 \r
 public interface IMediaFinder {\r
 \r
-       SearchResult<ArchivedMedia> search(String criteria, List<String> searchFilters, String orderBy, boolean orderAscending, int fromResult, int toResult);\r
+       SearchResult<ArchivedMedia> search(SearchOptions options);\r
 \r
 }\r
index df953709067c229b8f1b8d1e07f3794e1cdcccf2..9c8966c6ec8c8a445d73e7b2ff6d4309ec9f611f 100644 (file)
@@ -1,10 +1,9 @@
 package user.jobengine.search;\r
 \r
-import java.util.List;\r
-\r
 import javax.ws.rs.client.WebTarget;\r
 \r
 import user.jobengine.db.ArchivedMedia;\r
+import user.jobengine.db.SearchOptions;\r
 \r
 public class LuceneMediaFinder implements IMediaFinder {\r
 \r
@@ -13,8 +12,7 @@ public class LuceneMediaFinder implements IMediaFinder {
        private String apiPath = "/search/*:*/0/10/1/1";\r
 \r
        @Override\r
-       public SearchResult<ArchivedMedia> search(String criteria, List<String> searchFilters, String orderBy, boolean orderAscending, int fromResult,\r
-                       int toResult) {\r
+       public SearchResult<ArchivedMedia> search(SearchOptions options) {\r
                SearchResult<ArchivedMedia> ret = new SearchResult<ArchivedMedia>();\r
                // TODO Auto-generated method stub\r
                //              ResteasyClient client = new ResteasyClientBuilder().build();\r
index cf84c3ff6f846433e96769d887b17e2b8990d3b1..9e3e25704a922ae683f84cc84cab9db4eb6a40f5 100644 (file)
@@ -4,7 +4,9 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;\r
 import java.sql.ResultSet;\r
 import java.sql.SQLException;\r
+import java.text.SimpleDateFormat;\r
 import java.util.ArrayList;\r
+import java.util.Date;\r
 import java.util.List;\r
 \r
 import org.apache.logging.log4j.LogManager;\r
@@ -16,17 +18,19 @@ import user.jobengine.db.Item;
 import user.jobengine.db.ItemManager;\r
 import user.jobengine.db.ItemType;\r
 import user.jobengine.db.Media;\r
+import user.jobengine.db.SearchOptions;\r
 \r
 public class MediaFinder implements IMediaFinder {\r
        private static final Logger logger = LogManager.getLogger();\r
        private ItemManager manager = null;\r
+       private SimpleDateFormat df = new SimpleDateFormat("YYYY-mm-dd");\r
 \r
        public MediaFinder(ItemManager manager) {\r
                this.manager = manager;\r
        }\r
 \r
-       private PreparedStatement createStatement(Connection connection, String criteria, String orderBy, boolean orderAscending, List<String> typeIDs)\r
-                       throws SQLException {\r
+       private PreparedStatement createStatement(Connection connection, String criteria, List<String> typeIDs, Date searchFrom, Date searchTo, String orderBy,\r
+                       boolean orderAscending) throws SQLException {\r
                StringBuilder typeCriteria = getTypeCriterias(typeIDs);\r
 \r
                String criteriasPattern = getCriteriasRegexPattern(criteria);\r
@@ -53,7 +57,16 @@ public class MediaFinder implements IMediaFinder {
                        sql.append(typeCriteria.toString());\r
                }\r
 \r
-               sql.append(" AND CONTAINS(md.description, ?) >= 1");\r
+               if (criteria != null && criteria.trim().length() > 0)\r
+                       sql.append(" AND CONTAINS(md.description, ?) >= 1");\r
+\r
+               if (searchFrom != null) {\r
+                       sql.append(String.format(" AND m.archived > '%s'", df.format(searchFrom)));\r
+               }\r
+               if (searchTo != null) {\r
+                       sql.append(String.format(" AND m.archived < '%s'", df.format(searchTo)));\r
+               }\r
+\r
                sql.append(" ORDER BY ");\r
 \r
                if (orderBy == null) {\r
@@ -70,6 +83,17 @@ public class MediaFinder implements IMediaFinder {
                return st;\r
        }\r
 \r
+       private String formatSearchValue(String value) {\r
+               String[] specials = new String[] { ":", "?", "%", "(", ")" };\r
+               String result = value;\r
+               for (String c : specials) {\r
+                       result = result.replace(c, "\\" + c);\r
+               }\r
+               if (!(result.startsWith("\"") && result.endsWith("\"")))\r
+                       result += "*";\r
+               return result;\r
+       }\r
+\r
        private String getCriteriasRegexPattern(String criteria) {\r
                String[] criterias = criteria.replace("*", "").replace("+", " ").split(" ");\r
                if (criteria.startsWith("\"") && criteria.endsWith("\""))\r
@@ -114,41 +138,40 @@ public class MediaFinder implements IMediaFinder {
        }\r
 \r
        @Override\r
-       public SearchResult<ArchivedMedia> search(String criteria, List<String> searchFilters, String orderBy, boolean orderAscending, int fromResult,\r
-                       int toResult) {\r
+       public SearchResult<ArchivedMedia> search(SearchOptions options) {\r
                SearchResult<ArchivedMedia> result = new SearchResult<>();\r
 \r
-               List<String> typeIDs = getTypeIDs(searchFilters);\r
+               List<String> typeIDs = getTypeIDs(options.getFilters());\r
 \r
                ResultSet rs = null;\r
                PreparedStatement st = null;\r
                DefaultContext context = manager.getDbContext();\r
                Connection connection = context.getConnection();\r
                try {\r
-\r
-                       st = createStatement(connection, criteria, orderBy, orderAscending, typeIDs);\r
+                       String text = formatSearchValue(options.getText());\r
+                       st = createStatement(connection, text, typeIDs, options.getSearchFrom(), options.getSearchTo(), options.getOrderBy(), options.isOrderAscending());\r
                        rs = st.executeQuery();\r
                        rs.last();\r
                        result.setItemCount(rs.getRow());\r
 \r
                        // set begining position\r
-                       if (fromResult > -1) {\r
-                               if (fromResult <= result.getItemCount()) {\r
-                                       if (fromResult > 1) {\r
-                                               rs.absolute(fromResult - 1);\r
+                       if (options.getFromResult() > -1) {\r
+                               if (options.getFromResult() <= result.getItemCount()) {\r
+                                       if (options.getFromResult() > 1) {\r
+                                               rs.absolute(options.getFromResult() - 1);\r
                                        } else {\r
                                                rs.beforeFirst();\r
                                        }\r
                                } else {\r
                                        if (result.getItemCount() > 0) {\r
-                                               throw new Exception("Invalid searchResult 'from' position: " + fromResult + " total records: " + result.getItemCount());\r
+                                               throw new Exception("Invalid searchResult 'from' position: " + options.getFromResult() + " total records: " + result.getItemCount());\r
                                        }\r
                                }\r
                        } else {\r
                                rs.beforeFirst();\r
                        }\r
 \r
-                       int maxRecords = toResult - fromResult;\r
+                       int maxRecords = options.getToResult() - options.getFromResult();\r
 \r
                        List<ArchivedMedia> resultList = null;\r
                        logger.info("Processing query result, maxRecords {}", maxRecords);\r
index c59eecce30221cfca25c7ee989be4cc6448a3918..98000a3ad9a65d919a2d14988daf5b61f291ec4f 100644 (file)
@@ -22,7 +22,7 @@
 \r
        <toolbar id="tb" width="100%" style="background: transparent">\r
                <menupopup id="searchSettings">\r
-                       <menuitem label="10 találat oldalanként" value="10" checked="true" onClick="@command('setPageSize', source=self)" />\r
+                       <menuitem label="10 találat oldalanként" value="10" checked="true" onClick="@command('        ', source=self)" />\r
                        <menuitem label="25 találat oldalanként" value="25" checked="true" onClick="@command('setPageSize', source=self)" />\r
                        <menuitem label="50 találat oldalanként" value="50" checked="true" onClick="@command('setPageSize', source=self)" />\r
                        <menuitem label="100 találat oldalanként" value="100" checked="true" onClick="@command('setPageSize', source=self)" />\r
@@ -37,8 +37,8 @@
                        </attribute>\r
            </toolbarbutton>\r
         <toolbarbutton iconSclass="z-icon-th" popup="searchSettings, after_start" />\r
-        <datebox/>\r
-        <datebox/>\r
+        <datebox id="searchFrom" value="@bind(vm.searchFrom)"/>\r
+        <datebox id="searchTo" value="@bind(vm.searchTo)"/>\r
                <combobox id="search" sclass="search" hflex="1" focus="true" model="@load(vm.searchHistory)" autodrop="true" buttonVisible="false"\r
                        tooltiptext="Gépelje be a keresendő kifejezést és nyomja meg az Enter-t." onOK="@command('doSearch')" w:_doKeyDown="_doKeyDown">\r
                        <template name="model">\r
index 441ad631e19078030ade3845cdef468347bdce3c..e8a0611cfcc69c92ee9d4263679ab5e2ed994d1a 100644 (file)
@@ -17,6 +17,7 @@ import user.jobengine.db.ArchivedMedia;
 import user.jobengine.db.IItemManager;\r
 import user.jobengine.db.Item;\r
 import user.jobengine.db.ItemManager;\r
+import user.jobengine.db.SearchOptions;\r
 import user.jobengine.search.SearchResult;\r
 \r
 /**\r
@@ -36,15 +37,10 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
 \r
        private ArrayList<EventListener> eventListenerList = new ArrayList<EventListener>();\r
        protected IItemManager itemManager = null;\r
-       private List<String> searchFilters;\r
-       private String orderBy;\r
-       private boolean orderAscending;\r
-\r
-       public CachedListModel(String searchValue, List<String> searchFilters, String orderBy, boolean orderAscending) {\r
-               this.searchValue = searchValue;\r
-               this.searchFilters = searchFilters;\r
-               this.orderBy = orderBy;\r
-               this.orderAscending = orderAscending;\r
+       private SearchOptions options;\r
+\r
+       public CachedListModel(SearchOptions options) {\r
+               this.options = options;\r
                this.itemManager = ItemManager.getInstance();\r
                reinit();\r
        }\r
@@ -69,7 +65,9 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
        }\r
 \r
        protected SearchResult<ArchivedMedia> createSearchResult(int startPos, int endPos) {\r
-               SearchResult<ArchivedMedia> sr = this.itemManager.search(formatSearchValue(searchValue), searchFilters, orderBy, orderAscending, startPos, endPos);\r
+               options.setFromResult(startPos);\r
+               options.setToResult(endPos);\r
+               SearchResult<ArchivedMedia> sr = this.itemManager.search(options);\r
                return sr;\r
        }\r
 \r
@@ -89,17 +87,6 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
                }\r
        }\r
 \r
-       private String formatSearchValue(String value) {\r
-               String[] specials = new String[] { ":", "?", "%", "(", ")" };\r
-               String result = value;\r
-               for (String c : specials) {\r
-                       result = result.replace(c, "\\" + c);\r
-               }\r
-               if (!(result.startsWith("\"") && result.endsWith("\"")))\r
-                       result += "*";\r
-               return result;\r
-       }\r
-\r
        public int getCacheEnd() {\r
                return cacheEnd;\r
        }\r
index 442c1c44b8528626d56528705d194550117fa1c7..578bb3519d98f1b9ab526a193abeeb671c34e1e6 100644 (file)
@@ -1,19 +1,19 @@
 package user.jobengine.zk.model;\r
 \r
 import java.util.Arrays;\r
-import java.util.List;\r
 \r
 import user.jobengine.db.ArchivedMedia;\r
 import user.jobengine.db.Media;\r
+import user.jobengine.db.SearchOptions;\r
 import user.jobengine.search.SearchResult;\r
 \r
 public class InitializedCachedListModel extends CachedListModel {\r
 \r
        private long mediaID;\r
 \r
-       public InitializedCachedListModel(String mediaID, String searchValue, List<String> searchFilters, String orderBy, boolean orderAscending) {\r
-               super(searchValue, searchFilters, orderBy, orderAscending);\r
-               this.mediaID = Long.parseLong(mediaID);\r
+       public InitializedCachedListModel(SearchOptions options) {\r
+               super(options);\r
+               this.mediaID = options.getMediaId();\r
 \r
        }\r
 \r
index db2f5f0a10b54478544f9cb9cd8c8b57718a27c3..37a0ab05c83a23f639ef311673120259f0967bf5 100644 (file)
@@ -3,6 +3,7 @@ package user.jobengine.zk.model;
 import java.net.URL;\r
 import java.nio.file.Paths;\r
 import java.util.ArrayList;\r
+import java.util.Date;\r
 import java.util.HashMap;\r
 import java.util.LinkedHashMap;\r
 import java.util.List;\r
@@ -56,6 +57,7 @@ import user.jobengine.db.ArchivedMedia;
 import user.jobengine.db.IItemManager;\r
 import user.jobengine.db.ItemManager;\r
 import user.jobengine.db.MediaFile;\r
+import user.jobengine.db.SearchOptions;\r
 import user.jobengine.db.Store;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.JobEngine;\r
@@ -106,8 +108,9 @@ public class SearchModel extends AsyncBaseModel {
        private volatile boolean preventAfterRender;\r
        private int positionToScroll = -1;\r
        private ListModelList<String> searchHistory;\r
-\r
        private Map<String, String> columnOrder;\r
+       private Date searchFrom;\r
+       private Date searchTo;\r
 \r
        public SearchModel() {\r
                this.itemManager = ItemManager.getInstance();\r
@@ -261,7 +264,8 @@ public class SearchModel extends AsyncBaseModel {
                                orderAscending = columnOrder.entrySet().iterator().next().getValue().equals("ascending");\r
                        }\r
 \r
-                       searchResult = new CachedListModel(searchValue, searchFilters, orderBy, orderAscending);\r
+                       SearchOptions options = new SearchOptions(searchValue, searchFilters, searchFrom, searchTo, orderBy, orderAscending);\r
+                       searchResult = new CachedListModel(options);\r
                        setSelectedObject(null);\r
 \r
                        if (!searchHistory.contains(searchValue)) {\r
@@ -379,6 +383,10 @@ public class SearchModel extends AsyncBaseModel {
                return ret;\r
        }\r
 \r
+       public Date getSearchFrom() {\r
+               return searchFrom;\r
+       }\r
+\r
        public ListModelList<String> getSearchHistory() {\r
                return searchHistory;\r
        }\r
@@ -387,6 +395,10 @@ public class SearchModel extends AsyncBaseModel {
                return searchResult;\r
        }\r
 \r
+       public Date getSearchTo() {\r
+               return searchTo;\r
+       }\r
+\r
        private List<String> getSelectedFilters() {\r
                List<String> result = null;\r
                if (!allChecked) {\r
@@ -647,10 +659,18 @@ public class SearchModel extends AsyncBaseModel {
                this.rowsExpanded = rowsExpanded;\r
        }\r
 \r
+       public void setSearchFrom(Date searchFrom) {\r
+               this.searchFrom = searchFrom;\r
+       }\r
+\r
        public void setSearchHistory(ListModelList<String> searchHistory) {\r
                this.searchHistory = searchHistory;\r
        }\r
 \r
+       public void setSearchTo(Date searchTo) {\r
+               this.searchTo = searchTo;\r
+       }\r
+\r
        @NotifyChange({ "selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath" })\r
        public void setSelectedObject(ArchivedMedia selectedObject) {\r
                this.selectedObject = selectedObject;\r
@@ -712,8 +732,11 @@ public class SearchModel extends AsyncBaseModel {
 \r
        private void showExternalMediaID() {\r
                String mediaID = SessionUtil.getQueryParameter(MEDIA_ID);\r
-               if (mediaID != null)\r
-                       searchResult = new InitializedCachedListModel(mediaID, searchValue, new ArrayList<String>(), orderBy, orderAscending);\r
+               if (mediaID != null) {\r
+                       SearchOptions options = new SearchOptions(searchValue, null, searchFrom, searchTo, orderBy, orderAscending);\r
+                       options.setMediaId(Long.parseLong(mediaID));\r
+                       searchResult = new InitializedCachedListModel(options);\r
+               }\r
        }\r
 \r
        @Command\r
index 23e9aec53106f0be00c42960bfe1cd4e38d28bc3..c99124b7fa2b433edbf54257ba7135970588da49 100644 (file)
@@ -82,7 +82,7 @@ public class SupportTest {
                List<String> dummy = null;\r
                LuceneMediaFinder luceneSearch = new LuceneMediaFinder();\r
                // luceneSearch.search(item.getDescription(), dummy, "", true, 1, 10);\r
-               luceneSearch.search("", dummy, "", true, 1, 10);\r
+               luceneSearch.search(null);\r
        }\r
 \r
 }\r