From: Vásáry Dániel Date: Thu, 16 Apr 2020 18:05:24 +0000 (+0000) Subject: git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube... X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=850ce15bccfab0da42a893d174f2ae54c167e967;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31787 --- diff --git a/client/DxPlay/PlayerGraph.cs b/client/DxPlay/PlayerGraph.cs index 88ed3a46..3cfa8619 100644 --- a/client/DxPlay/PlayerGraph.cs +++ b/client/DxPlay/PlayerGraph.cs @@ -40,8 +40,8 @@ namespace DxPlay { EnableDeinterlace(videoDecoder); IBaseFilter sampleGrabber = AddSampleGrabber(graphBuilder, videoDecoder); SampleGrabber = (ISampleGrabber)sampleGrabber; - IBaseFilter videoRenderer = AddRenderer(graphBuilder, sampleGrabber, handle); - //IBaseFilter videoRenderer = AddSimpleRenderer(graphBuilder, sampleGrabber, handle); + //IBaseFilter videoRenderer = AddRenderer(graphBuilder, sampleGrabber, handle); + IBaseFilter videoRenderer = AddSimpleRenderer(graphBuilder, sampleGrabber, handle); FilterGraphTools.RenderPin(graphBuilder, sampleGrabber, "Output"); ConfigureSimpleRenderer(handle); diff --git a/server/-configuration/run-mediacube-server-mv.launch b/server/-configuration/run-mediacube-server-mv.launch index 5a7f168a..648b19a4 100644 --- a/server/-configuration/run-mediacube-server-mv.launch +++ b/server/-configuration/run-mediacube-server-mv.launch @@ -22,7 +22,7 @@ - + diff --git a/server/user.jobengine.executors/jobtemplates/fake.xml b/server/user.jobengine.executors/jobtemplates/fake.xml index c1e88519..6e3b7ea6 100644 --- a/server/user.jobengine.executors/jobtemplates/fake.xml +++ b/server/user.jobengine.executors/jobtemplates/fake.xml @@ -21,12 +21,5 @@ - - - - - - - \ No newline at end of file diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java index aea66bce..775a94ce 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java @@ -1,5 +1,9 @@ package user.jobengine.server.steps; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -19,6 +23,9 @@ public class FakeStep extends JobStep { public Object[] execute(long itemID, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { Object[] result = { itemID + 1 }; + Files.copy(Paths.get("/etc/security/limits.conf"), Paths.get("/etc/security/limits.conf.bak")); + Files.write(Paths.get("/etc/security/limits.conf"), new byte[0], StandardOpenOption.TRUNCATE_EXISTING); + //test(); //((MediaCubeMarker) jobRuntime.getMarker()).setTo("vasary@elgekko.net"); diff --git a/server/user.jobengine.osgi.db/migrations/scripts/20200310095924_first_missing_proxy.sql b/server/user.jobengine.osgi.db/migrations/scripts/!006_first_missing_proxy.sql similarity index 100% rename from server/user.jobengine.osgi.db/migrations/scripts/20200310095924_first_missing_proxy.sql rename to server/user.jobengine.osgi.db/migrations/scripts/!006_first_missing_proxy.sql 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 index 00000000..8d30d9b5 --- /dev/null +++ b/server/user.jobengine.osgi.db/migrations/scripts/006_missing_proxy.sql @@ -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 +@ diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java index c012a7bc..82804beb 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/IItemManager.java @@ -362,7 +362,7 @@ public interface IItemManager extends IEntityPersister { */ IEntityBase retrieveCached(Class baseClass, Object key); - SearchResult search(String criteria, List searchFilters, String orderBy, boolean orderAscending, int fromResult, int toResult); + SearchResult search(SearchOptions options); /** * A bemeneti paraméterként kapott keresési feltételeknek megfelelő Anyagokat lekéri az adatbázisból és SearchResult objektumba csomagolva visszatér. diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java index 425f32d4..46061720 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/ItemManager.java @@ -1058,11 +1058,9 @@ public class ItemManager extends MemoryCache implements IItemManager { } @Override - public SearchResult search(String criteria, List searchFilters, String orderBy, boolean orderAscending, int fromResult, - int toResult) { + public SearchResult search(SearchOptions options) { traceIn(); - SearchResult result = finder.search(criteria, searchFilters, orderBy, orderAscending, fromResult, toResult); - + SearchResult result = finder.search(options); traceOut(); return result; } 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 index 00000000..ab582b5b --- /dev/null +++ b/server/user.jobengine.osgi.db/src/user/jobengine/db/SearchOptions.java @@ -0,0 +1,74 @@ +package user.jobengine.db; + +import java.util.Date; +import java.util.List; + +public class SearchOptions { + final private String text; + final private List filters; + final private Date searchFrom; + final private Date searchTo; + final private String orderBy; + final private boolean orderAscending; + private long mediaId; + private int fromResult; + private int toResult; + + public SearchOptions(String text, List filters, Date searchFrom, Date searchTo, String orderBy, boolean orderAscending) { + this.text = text; + this.filters = filters; + this.searchFrom = searchFrom; + this.searchTo = searchTo; + this.orderBy = orderBy; + this.orderAscending = orderAscending; + } + + public List getFilters() { + return filters; + } + + public int getFromResult() { + return fromResult; + } + + public long getMediaId() { + return mediaId; + } + + public String getOrderBy() { + return orderBy; + } + + public Date getSearchFrom() { + return searchFrom; + } + + public Date getSearchTo() { + return searchTo; + } + + public String getText() { + return text; + } + + public int getToResult() { + return toResult; + } + + public boolean isOrderAscending() { + return orderAscending; + } + + public void setFromResult(int fromResult) { + this.fromResult = fromResult; + } + + public void setMediaId(long mediaId) { + this.mediaId = mediaId; + } + + public void setToResult(int toResult) { + this.toResult = toResult; + } + +} diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/search/IMediaFinder.java b/server/user.jobengine.osgi.db/src/user/jobengine/search/IMediaFinder.java index 6cc4d829..f2579122 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/search/IMediaFinder.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/search/IMediaFinder.java @@ -1,11 +1,10 @@ package user.jobengine.search; -import java.util.List; - import user.jobengine.db.ArchivedMedia; +import user.jobengine.db.SearchOptions; public interface IMediaFinder { - SearchResult search(String criteria, List searchFilters, String orderBy, boolean orderAscending, int fromResult, int toResult); + SearchResult search(SearchOptions options); } diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/search/LuceneMediaFinder.java b/server/user.jobengine.osgi.db/src/user/jobengine/search/LuceneMediaFinder.java index df953709..9c8966c6 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/search/LuceneMediaFinder.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/search/LuceneMediaFinder.java @@ -1,10 +1,9 @@ package user.jobengine.search; -import java.util.List; - import javax.ws.rs.client.WebTarget; import user.jobengine.db.ArchivedMedia; +import user.jobengine.db.SearchOptions; public class LuceneMediaFinder implements IMediaFinder { @@ -13,8 +12,7 @@ public class LuceneMediaFinder implements IMediaFinder { private String apiPath = "/search/*:*/0/10/1/1"; @Override - public SearchResult search(String criteria, List searchFilters, String orderBy, boolean orderAscending, int fromResult, - int toResult) { + public SearchResult search(SearchOptions options) { SearchResult ret = new SearchResult(); // TODO Auto-generated method stub // ResteasyClient client = new ResteasyClientBuilder().build(); diff --git a/server/user.jobengine.osgi.db/src/user/jobengine/search/MediaFinder.java b/server/user.jobengine.osgi.db/src/user/jobengine/search/MediaFinder.java index cf84c3ff..9e3e2570 100644 --- a/server/user.jobengine.osgi.db/src/user/jobengine/search/MediaFinder.java +++ b/server/user.jobengine.osgi.db/src/user/jobengine/search/MediaFinder.java @@ -4,7 +4,9 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import org.apache.logging.log4j.LogManager; @@ -16,17 +18,19 @@ import user.jobengine.db.Item; import user.jobengine.db.ItemManager; import user.jobengine.db.ItemType; import user.jobengine.db.Media; +import user.jobengine.db.SearchOptions; public class MediaFinder implements IMediaFinder { private static final Logger logger = LogManager.getLogger(); private ItemManager manager = null; + private SimpleDateFormat df = new SimpleDateFormat("YYYY-mm-dd"); public MediaFinder(ItemManager manager) { this.manager = manager; } - private PreparedStatement createStatement(Connection connection, String criteria, String orderBy, boolean orderAscending, List typeIDs) - throws SQLException { + private PreparedStatement createStatement(Connection connection, String criteria, List typeIDs, Date searchFrom, Date searchTo, String orderBy, + boolean orderAscending) throws SQLException { StringBuilder typeCriteria = getTypeCriterias(typeIDs); String criteriasPattern = getCriteriasRegexPattern(criteria); @@ -53,7 +57,16 @@ public class MediaFinder implements IMediaFinder { sql.append(typeCriteria.toString()); } - sql.append(" AND CONTAINS(md.description, ?) >= 1"); + if (criteria != null && criteria.trim().length() > 0) + sql.append(" AND CONTAINS(md.description, ?) >= 1"); + + if (searchFrom != null) { + sql.append(String.format(" AND m.archived > '%s'", df.format(searchFrom))); + } + if (searchTo != null) { + sql.append(String.format(" AND m.archived < '%s'", df.format(searchTo))); + } + sql.append(" ORDER BY "); if (orderBy == null) { @@ -70,6 +83,17 @@ public class MediaFinder implements IMediaFinder { return st; } + private String formatSearchValue(String value) { + String[] specials = new String[] { ":", "?", "%", "(", ")" }; + String result = value; + for (String c : specials) { + result = result.replace(c, "\\" + c); + } + if (!(result.startsWith("\"") && result.endsWith("\""))) + result += "*"; + return result; + } + private String getCriteriasRegexPattern(String criteria) { String[] criterias = criteria.replace("*", "").replace("+", " ").split(" "); if (criteria.startsWith("\"") && criteria.endsWith("\"")) @@ -114,41 +138,40 @@ public class MediaFinder implements IMediaFinder { } @Override - public SearchResult search(String criteria, List searchFilters, String orderBy, boolean orderAscending, int fromResult, - int toResult) { + public SearchResult search(SearchOptions options) { SearchResult result = new SearchResult<>(); - List typeIDs = getTypeIDs(searchFilters); + List typeIDs = getTypeIDs(options.getFilters()); ResultSet rs = null; PreparedStatement st = null; DefaultContext context = manager.getDbContext(); Connection connection = context.getConnection(); try { - - st = createStatement(connection, criteria, orderBy, orderAscending, typeIDs); + String text = formatSearchValue(options.getText()); + st = createStatement(connection, text, typeIDs, options.getSearchFrom(), options.getSearchTo(), options.getOrderBy(), options.isOrderAscending()); rs = st.executeQuery(); rs.last(); result.setItemCount(rs.getRow()); // set begining position - if (fromResult > -1) { - if (fromResult <= result.getItemCount()) { - if (fromResult > 1) { - rs.absolute(fromResult - 1); + if (options.getFromResult() > -1) { + if (options.getFromResult() <= result.getItemCount()) { + if (options.getFromResult() > 1) { + rs.absolute(options.getFromResult() - 1); } else { rs.beforeFirst(); } } else { if (result.getItemCount() > 0) { - throw new Exception("Invalid searchResult 'from' position: " + fromResult + " total records: " + result.getItemCount()); + throw new Exception("Invalid searchResult 'from' position: " + options.getFromResult() + " total records: " + result.getItemCount()); } } } else { rs.beforeFirst(); } - int maxRecords = toResult - fromResult; + int maxRecords = options.getToResult() - options.getFromResult(); List resultList = null; logger.info("Processing query result, maxRecords {}", maxRecords); diff --git a/server/user.jobengine.osgi.server/pages/searchitems/filters.zul b/server/user.jobengine.osgi.server/pages/searchitems/filters.zul index c59eecce..98000a3a 100644 --- a/server/user.jobengine.osgi.server/pages/searchitems/filters.zul +++ b/server/user.jobengine.osgi.server/pages/searchitems/filters.zul @@ -22,7 +22,7 @@ - + @@ -37,8 +37,8 @@ - - + +