From: elgekko Date: Thu, 2 Mar 2023 21:47:38 +0000 (+0100) Subject: 3.9.0 kereses alaphelyzetben, nincs leiras es file darabszam X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=1fbe76dee594155ae75bf85d3387bac1be43aed2;p=mediacube.git 3.9.0 kereses alaphelyzetben, nincs leiras es file darabszam --- diff --git a/server/-configuration/run-mediacube-server-hirtv.launch b/server/-configuration/run-mediacube-server-hirtv.launch index 05730822..7da728a6 100644 --- a/server/-configuration/run-mediacube-server-hirtv.launch +++ b/server/-configuration/run-mediacube-server-hirtv.launch @@ -39,9 +39,6 @@ - - - diff --git a/server/-configuration/run-mediacube-server-local.launch b/server/-configuration/run-mediacube-server-local.launch index 7e57147d..ffcac96b 100644 --- a/server/-configuration/run-mediacube-server-local.launch +++ b/server/-configuration/run-mediacube-server-local.launch @@ -50,9 +50,6 @@ - - - diff --git a/server/-configuration/run-mediacube-server-mv.launch b/server/-configuration/run-mediacube-server-mv.launch index 442bcae7..e6a4c1a4 100644 --- a/server/-configuration/run-mediacube-server-mv.launch +++ b/server/-configuration/run-mediacube-server-mv.launch @@ -12,6 +12,7 @@ + @@ -49,9 +50,6 @@ - - - diff --git a/server/-configuration/run-mediacube-server-omar.launch b/server/-configuration/run-mediacube-server-omar.launch deleted file mode 100644 index 7e9aae74..00000000 --- a/server/-configuration/run-mediacube-server-omar.launch +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/server/-product/mediacube.product b/server/-product/mediacube.product index 9f649038..c98528f5 100644 --- a/server/-product/mediacube.product +++ b/server/-product/mediacube.product @@ -1,7 +1,7 @@ - + /-product/production/configuration/config.ini @@ -39,9 +39,6 @@ - - - diff --git a/server/-product/production/LOCAL/settings/application.yaml b/server/-product/production/LOCAL/settings/application.yaml index ff4fd17e..9461a30c 100644 --- a/server/-product/production/LOCAL/settings/application.yaml +++ b/server/-product/production/LOCAL/settings/application.yaml @@ -1,18 +1,18 @@ datasource: mediacube: - url: jdbc:db2://localvm:50000/mc + url: jdbc:db2://localvm:50000/testmc user: db2admin password: password external-indexer: true simple-search: true - login-timeout: 3 + login-timeout: 5 pool-size: 10 mediacube-nosql: - url: jdbc:db2://localvm:50000/mc + url: jdbc:db2://localvm:50000/testmc user: db2admin password: password schema: test - login-timeout: 3 + login-timeout: 5 hsm: url: jdbc:db2://10.11.1.89:51500/tsmdb1 user: tsminst1 diff --git a/server/-product/production/LOCAL/settings/jetty.xml b/server/-product/production/LOCAL/settings/jetty.xml index 5e47cacd..cee4dd02 100644 --- a/server/-product/production/LOCAL/settings/jetty.xml +++ b/server/-product/production/LOCAL/settings/jetty.xml @@ -9,7 +9,7 @@ - + diff --git a/server/-product/production/LOCAL/settings/mediacube.yaml b/server/-product/production/LOCAL/settings/mediacube.yaml index f25bc3c6..68a7c549 100644 --- a/server/-product/production/LOCAL/settings/mediacube.yaml +++ b/server/-product/production/LOCAL/settings/mediacube.yaml @@ -1,5 +1,6 @@ -theme: userdark +#theme: userdark jobQueuePollInterval: 1000 +searchResultsListCacheSize: 100 disableHelp: true maestroDisabled: false alternateRetrieveSelector: true @@ -24,9 +25,9 @@ bottomTypeFilters: - name: Reklám nyers authentication: authEnabled: true -# defaultUser: root -# defaultPassword: password - adHost: intra.mediavivantis.hu + defaultUser: root + defaultPassword: password + adHost: localhost adNonSecurePort: 3268 adBaseDn: DC=intra,DC=mediavivantis,DC=hu adAdminMap: 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 9ecb34e3..287b933c 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 @@ -24,12 +24,12 @@ import user.jobengine.db.ItemManagerData.MdType; import user.jobengine.db.ItemManagerData.SignalType; import user.jobengine.db.ItemManagerData.StaticTables; import user.jobengine.db.ItemManagerData.UserRight; +import user.jobengine.search.IExecutionDurationNotification; import user.jobengine.search.SearchResult; /*** - * Adatbázis kezelő API. Az implementáció OSGI szolgáltatásként érhető el ezen - * az interfészen keresztül. Az API főbb szolgáltatásai: az adatmodell - * objektumainak létrehozása, módosítása, törlése az adatbázisban. + * Adatbázis kezelő API. Az implementáció OSGI szolgáltatásként érhető el ezen az interfészen keresztül. Az API főbb szolgáltatásai: az adatmodell objektumainak + * létrehozása, módosítása, törlése az adatbázisban. * * @author comtrans * @@ -112,8 +112,7 @@ public interface IItemManager extends IEntityPersister { void executeUpdate(String query, IStatementDecorator decorator, IResultSetConsumer keysConsumer); /** - * A type paraméterből lekéri az entitás DAO objektumát, amin keresztül - * visszakapjuk az összes entitást. + * A type paraméterből lekéri az entitás DAO objektumát, amin keresztül visszakapjuk az összes entitást. * * @param type * @return @@ -161,8 +160,7 @@ public interface IItemManager extends IEntityPersister { List getDynamicItemTypes(); /** - * Elkéri a FileTypeDAO-tól a bemeneti paraméterként kapott névvel rendelekző - * FileType-ot. + * Elkéri a FileTypeDAO-tól a bemeneti paraméterként kapott névvel rendelekző FileType-ot. * * @param name * @return @@ -197,8 +195,7 @@ public interface IItemManager extends IEntityPersister { List getFilteredScene(String name, boolean isChunked); /** - * A bemenő paraméterként kapott azonosító alaján lekéri a megfelelő Mappa - * objektumokat. + * A bemenő paraméterként kapott azonosító alaján lekéri a megfelelő Mappa objektumokat. * * @param id * @return @@ -285,8 +282,7 @@ public interface IItemManager extends IEntityPersister { Shot getShot(long id); /** - * A bemenő paraméterként kapott azonosító alaján lekéri a megfelelő Szkript - * objektumokat. + * A bemenő paraméterként kapott azonosító alaján lekéri a megfelelő Szkript objektumokat. * * @param id * @return @@ -323,8 +319,7 @@ public interface IItemManager extends IEntityPersister { MediaFile getSystemMediaFile(Media media); /** - * Elkér a StoreDAO-tól, egy olyan Rendszer tárolót, amely a lowres paraméterben - * kapott érték alapján vagy kisfelbontású videók tárolója, vagy nem. + * Elkér a StoreDAO-tól, egy olyan Rendszer tárolót, amely a lowres paraméterben kapott érték alapján vagy kisfelbontású videók tárolója, vagy nem. * * @param lowres * @return @@ -334,8 +329,7 @@ public interface IItemManager extends IEntityPersister { List getTargetStores(); /** - * Ha a bemeneti paraméter alapján létezik ilyen felhasználó, akkor true-val tér - * vissza. + * Ha a bemeneti paraméter alapján létezik ilyen felhasználó, akkor true-val tér vissza. * * @param userName * @param password @@ -344,8 +338,7 @@ public interface IItemManager extends IEntityPersister { boolean getUser(String userName, String password); /** - * A bemeneti paraméterként megadott felhasználónév/jelszó páros alapján - * visszaad egy UserInfo objektumot. + * A bemeneti paraméterként megadott felhasználónév/jelszó páros alapján visszaad egy UserInfo objektumot. * * @param userName * @param password @@ -364,8 +357,7 @@ public interface IItemManager extends IEntityPersister { void putDbContext(DefaultContext context); /** - * A bemeneti paraméterként kapott típus és azonosító lista alapján eltávolítja - * a megfelelő adatbázis bejegyzéseket. + * A bemeneti paraméterként kapott típus és azonosító lista alapján eltávolítja a megfelelő adatbázis bejegyzéseket. * * @param type * @param ids @@ -373,8 +365,7 @@ public interface IItemManager extends IEntityPersister { void remove(Class type, List ids); /** - * A bemeneti paraméterként kapott típus és azonosító alapján az objektumot - * eltávolítja az átmeneti tárolóból. + * A bemeneti paraméterként kapott típus és azonosító alapján az objektumot eltávolítja az átmeneti tárolóból. * * @param baseClass * @param key @@ -384,8 +375,7 @@ public interface IItemManager extends IEntityPersister { void removeMediaTag(long tagId, long mediaId); /** - * A bemeneti paraméterként kapott típus és kulcs alapján elkéri a megfelelő - * objektumot az átmeneti tárolóból. + * A bemeneti paraméterként kapott típus és kulcs alapján elkéri a megfelelő objektumot az átmeneti tárolóból. * * @param baseClass * @param key @@ -393,11 +383,8 @@ public interface IItemManager extends IEntityPersister { */ IEntityBase retrieveCached(Class baseClass, Object key); - 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. + * A bemeneti paraméterként kapott keresési feltételeknek megfelelő Anyagokat lekéri az adatbázisból és SearchResult objektumba csomagolva visszatér. * * @param parameter * @return @@ -407,8 +394,7 @@ public interface IItemManager extends IEntityPersister { SearchResult searchItem(String criteria, int fromResult, int toResult); /** - * A bemeneti paraméterként kapott keresési feltételeknek megfelelő - * Munkafolyamatokat lekéri az adaatbázisból. + * A bemeneti paraméterként kapott keresési feltételeknek megfelelő Munkafolyamatokat lekéri az adaatbázisból. * * @param parameter * @return @@ -416,8 +402,7 @@ public interface IItemManager extends IEntityPersister { List searchJob(QueryObject parameter); /** - * A kapott három paraméter alapján létrehoz egy Signal objektumot, - * átkonvertálja bájt tömbbé és beteszi a Signalserver üzenetküldő sorába. + * A kapott három paraméter alapján létrehoz egy Signal objektumot, átkonvertálja bájt tömbbé és beteszi a Signalserver üzenetküldő sorába. * * @param id * @param signalType @@ -435,8 +420,7 @@ public interface IItemManager extends IEntityPersister { boolean storeCached(Object key, IEntityBase entity); /** - * Kivétel dobása esetén a kivétel üzenetét és a keletkezés helyét becsomagolja - * egy string-be, majd átadja a logger-nek. + * Kivétel dobása esetén a kivétel üzenetét és a keletkezés helyét becsomagolja egy string-be, majd átadja a logger-nek. * * @param e */ @@ -464,7 +448,7 @@ public interface IItemManager extends IEntityPersister { */ void truncate(Class classInfo); - List getGroupChildren(ArchivedMedia master, String criteria); - BasicDBObject simpleSearch(BasicDBObject searchParameters); + + SearchResult search(SearchOptions options, IExecutionDurationNotification cb); } \ No newline at end of file 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 dd7f285a..e7430ba3 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 @@ -49,6 +49,7 @@ import user.jobengine.db.ItemManagerData.MdType; import user.jobengine.db.ItemManagerData.SignalType; import user.jobengine.db.ItemManagerData.StaticTables; import user.jobengine.db.ItemManagerData.UserRight; +import user.jobengine.search.IExecutionDurationNotification; import user.jobengine.search.IMediaFinder; import user.jobengine.search.MediaFinder; import user.jobengine.search.SearchResult; @@ -1305,21 +1306,12 @@ public class ItemManager extends MemoryCache implements IItemManager { } @Override - public SearchResult search(SearchOptions options) { + public SearchResult search(SearchOptions options, IExecutionDurationNotification cb) { traceIn(); IMediaFinder finder = createFinder(); - SearchResult result = finder.search(options); - traceOut(); - return result; - } - - @Override - public List getGroupChildren(ArchivedMedia master, String criteria) { - traceIn(); - IMediaFinder finder = createFinder(); - List result = finder.getGroupChildren(master, criteria); + SearchResult result = finder.search(options, cb); traceOut(); return result; } 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 e808962a..dd398c41 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,14 +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(SearchOptions options); - - List getGroupChildren(ArchivedMedia master, String criteria); + SearchResult search(SearchOptions options, IExecutionDurationNotification cb); } 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 ddd71715..ab234068 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,7 +1,5 @@ package user.jobengine.search; -import java.util.List; - import user.jobengine.db.ArchivedMedia; import user.jobengine.db.SearchOptions; @@ -12,7 +10,7 @@ public class LuceneMediaFinder implements IMediaFinder { // private String apiPath = "/search/*:*/0/10/1/1"; @Override - public SearchResult search(SearchOptions options) { + public SearchResult search(SearchOptions options, IExecutionDurationNotification cb) { SearchResult ret = new SearchResult(); // ResteasyClient client = new ResteasyClientBuilder().build(); // if (criteria == "" || criteria == null) @@ -41,10 +39,4 @@ public class LuceneMediaFinder implements IMediaFinder { return ret; } - @Override - public List getGroupChildren(ArchivedMedia master, String criteria) { - // TODO Auto-generated method stub - return null; - } - } 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 39a465a7..2056925b 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 @@ -5,8 +5,11 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.SimpleDateFormat; +import java.time.Duration; +import java.time.Instant; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import org.apache.ibatis.jdbc.SQL; import org.apache.logging.log4j.LogManager; @@ -39,7 +42,7 @@ public class MediaFinder implements IMediaFinder { sql.append("SELECT "); if (options.isCountOnly()) { - sql.append(" COUNT(1) AS NumberOfRecords"); + sql.append(" COUNT(1) AS totalCount"); } else { sql.append("i.id itemid,"); sql.append("i.title itemtitle,"); @@ -51,16 +54,18 @@ public class MediaFinder implements IMediaFinder { sql.append("m.modified,"); sql.append("m.length,"); sql.append("m.itemtypeid mediaitemtypeid,"); - sql.append(String.format("HIGHLIGHT(md.description, '', '', '%s') description,", criteriasPattern)); +// sql.append(String.format("HIGHLIGHT(md.description, '', '', '%s') description,", criteriasPattern)); sql.append("it.name mediaitemtypename,"); sql.append("m.houseid mediahouseid,"); - sql.append("mf.houseid mediafilehouseid,"); - sql.append("vw_mf.mediafilecount"); + sql.append("mf.houseid mediafilehouseid"); +// sql.append("vw_mf.mediafilecount"); } - sql.append(" FROM ITEM i, MEDIA m, MEDIAFILE mf, MEDIADESCRIPTION md, VW_MEDIAFILES vw_mf, ITEMTYPE it"); + sql.append(" FROM ITEM i, MEDIA m, MEDIAFILE mf, MEDIADESCRIPTION md, ITEMTYPE it"); + // sql.append(" FROM ITEM i, MEDIA m, MEDIAFILE mf, MEDIADESCRIPTION md, VW_MEDIAFILES vw_mf, ITEMTYPE it"); sql.append(" WHERE i.id = md.itemid AND m.id = md.mediaid AND mf.id = md.mediafileid"); - sql.append(" AND m.id=vw_mf.mediaid AND m.itemTypeId = it.id"); +// sql.append(" AND m.id=vw_mf.mediaid AND m.itemTypeId = it.id"); + sql.append(" AND m.itemTypeId = it.id"); StringBuilder criteriaForType = options.getCriteriaForType(); if (criteriaForType != null) { @@ -97,13 +102,13 @@ public class MediaFinder implements IMediaFinder { if (options.getTo() != null) sql.append(String.format(" AND m.creation < '%s'", df.format(options.getTo()))); - if (options.isMissingProxy()) - sql.append(" AND vw_mf.mediafilecount=1"); +// if (options.isMissingProxy()) +// sql.append(" AND vw_mf.mediafilecount=1"); if (options.getDescLength() > 0) sql.append(" AND LENGTH(m.description) < " + options.getDescLength()); - if (!options.isCountOnly() && (options.getToResult() != 0)) { + if (!options.isCountOnly()) { sql.append(" ORDER BY "); if (options.getOrderBy() == null) { sql.append("itemtitle desc, mediaitemtypeid"); @@ -111,6 +116,9 @@ public class MediaFinder implements IMediaFinder { sql.append(options.getOrderBy()); sql.append(options.isOrderAscending() ? " ASC" : " DESC"); } + } + + if (!options.isCountOnly() && (options.getToResult() != 0)) { sql.append(" LIMIT " + (options.getToResult() - options.getFromResult())); sql.append(" OFFSET " + options.getFromResult()); @@ -131,117 +139,100 @@ public class MediaFinder implements IMediaFinder { return st; } - private PreparedStatement createGroupingChildrenStatement(Connection connection, String fileName, String criteria) throws SQLException { - SQL sql = new SQL(); - sql.SELECT("vi.itemid", "vi.itemtitle", "vi.mediaid", "vi.mediatitle", "vi.mediaarchived archived", "vi.mediacreation creation", - "vi.mediacreated created", "vi.mediamodified modified", "vi.medialength length", "vi.mediaitemtypeid", "vi.mediaitemtypename", - "vi.mediahouseid", "vi.mediafilehouseid", "vf.mediafilecount"); - - sql.FROM("VW_ITEMS_WITH_PATH vi", "VW_MEDIAFILES vf"); - sql.WHERE("vf.mediaid = vi.mediaid"); - sql.AND(); - sql.WHERE(String.format("vi.mediarelativepath = '%s'", fileName)); - sql.ORDER_BY("vi.mediacreation DESC"); - String query = sql.toString(); - logger.info(query); - - return connection.prepareStatement(sql.toString(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); - } - - private PreparedStatement createGroupingStatement(Connection connection, String criteria, SearchOptions options) throws Exception { - boolean simpleSearch = manager.getSystemConfig().value("datasource.mediacube.simple-search", true); - String criteriasPattern = getCriteriasRegexPattern(criteria); - - SQL innerSql = new SQL(); - innerSql.SELECT("max(vi.mediaid)"); - innerSql.FROM("VW_ITEMS_WITH_PATH vi", "MEDIADESCRIPTION md"); - innerSql.WHERE("vi.mediafileid = md.mediafileid"); - - if (simpleSearch) { - // TODO ezen az agon nem jo!!!!! - String simpleTextCriteria = formatSimpleSearchValue(criteria); - if (simpleTextCriteria != null && simpleTextCriteria.trim().length() > 0) { - innerSql.AND(); - innerSql.WHERE("("); - innerSql.WHERE(String.format("%s LIKE '%%%s%%'", "vi.mediatitle", simpleTextCriteria)); - innerSql.OR(); - innerSql.WHERE(String.format("%s LIKE '%%%s%%'", "vi.itemtitle", simpleTextCriteria)); - innerSql.OR(); - innerSql.WHERE(String.format("%s LIKE '%%%s%%'", "vi.mediarelativepath", simpleTextCriteria)); - innerSql.WHERE(")"); - } - } else { - String textCriteria = formatSearchValue(criteria); - if (textCriteria != null && textCriteria.trim().length() > 0) { - innerSql.AND(); - innerSql.WHERE(String.format("CONTAINS(md.description, '%s') >= 1", textCriteria)); - } - } - innerSql.GROUP_BY("vi.mediarelativepath"); - - SQL mainSql = new SQL(); - if (options.isCountOnly()) - mainSql.SELECT("COUNT(1) AS NumberOfRecords"); - else - mainSql.SELECT("vi.itemid", "vi.itemtitle", "vi.mediaid", "vi.mediatitle", "vi.mediarelativepath", "vi.mediaarchived", "vi.mediacreation", - "vi.medialength", "vf.mediafilecount", - String.format("HIGHLIGHT(md.description, '', '', '%s') description", criteriasPattern)); - - mainSql.FROM("VW_ITEMS_WITH_PATH vi", "VW_MEDIAFILES vf", "MEDIADESCRIPTION md"); - mainSql.WHERE("vf.mediaid = vi.mediaid"); - mainSql.AND(); - mainSql.WHERE("vi.mediafileid = md.mediafileid"); - mainSql.AND(); - mainSql.WHERE(String.format("vi.mediaid IN (\r\n%s\r\n)", innerSql.toString())); - - StringBuilder criteriaForType = options.getCriteriaForType(); - if (criteriaForType != null) { - mainSql.AND(); - mainSql.WHERE(String.format("vi.mediaitemtypeid IN (%s)", criteriaForType.toString())); - } - - StringBuilder criteriaForTag = options.getCriteriaForTag(); - if (criteriaForTag != null) { - SQL tagSql = new SQL(); - tagSql.SELECT("mediaid"); - tagSql.FROM("MEDIATAGS"); - tagSql.WHERE(String.format("vi.mediaitemtypeid IN (%s)", criteriaForTag.toString())); - - mainSql.AND(); - mainSql.WHERE(String.format("vi.mediaid IN (%s)", tagSql.toString())); - } - - if (options.getFrom() != null) { - mainSql.AND(); - mainSql.WHERE(String.format("vi.mediacreation > '%s'", df.format(options.getFrom()))); - } - - if (options.getTo() != null) { - mainSql.AND(); - mainSql.WHERE(String.format("vi.mediacreation < '%s'", df.format(options.getTo()))); - } - - if (options.isMissingProxy()) { - mainSql.AND(); - mainSql.WHERE("vf.mediafilecount = 1"); - } - - if (options.getDescLength() > 0) { - mainSql.AND(); - mainSql.WHERE(String.format("LENGTH(vi.mediadescription) < %s", options.getDescLength())); - } - - if (!options.isCountOnly() && (options.getToResult() != 0)) { - mainSql.ORDER_BY("vi.mediacreation DESC"); - mainSql.LIMIT((options.getToResult() - options.getFromResult())); - mainSql.OFFSET(options.getFromResult()); - } - - String query = mainSql.toString(); - logger.info(query); - PreparedStatement st = connection.prepareStatement(query, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); - return st; - } +// private PreparedStatement createGroupingStatement(Connection connection, String criteria, SearchOptions options) throws Exception { +// boolean simpleSearch = manager.getSystemConfig().value("datasource.mediacube.simple-search", true); +// String criteriasPattern = getCriteriasRegexPattern(criteria); +// +// SQL innerSql = new SQL(); +// innerSql.SELECT("max(vi.mediaid)"); +// innerSql.FROM("VW_ITEMS_WITH_PATH vi", "MEDIADESCRIPTION md"); +// innerSql.WHERE("vi.mediafileid = md.mediafileid"); +// +// if (simpleSearch) { +// // TODO ezen az agon nem jo!!!!! +// String simpleTextCriteria = formatSimpleSearchValue(criteria); +// if (simpleTextCriteria != null && simpleTextCriteria.trim().length() > 0) { +// innerSql.AND(); +// innerSql.WHERE("("); +// innerSql.WHERE(String.format("%s LIKE '%%%s%%'", "vi.mediatitle", simpleTextCriteria)); +// innerSql.OR(); +// innerSql.WHERE(String.format("%s LIKE '%%%s%%'", "vi.itemtitle", simpleTextCriteria)); +// innerSql.OR(); +// innerSql.WHERE(String.format("%s LIKE '%%%s%%'", "vi.mediarelativepath", simpleTextCriteria)); +// innerSql.WHERE(")"); +// } +// } else { +// String textCriteria = formatSearchValue(criteria); +// if (textCriteria != null && textCriteria.trim().length() > 0) { +// innerSql.AND(); +// innerSql.WHERE(String.format("CONTAINS(md.description, '%s') >= 1", textCriteria)); +// } +// } +// innerSql.GROUP_BY("vi.mediarelativepath"); +// +// SQL mainSql = new SQL(); +// if (options.isCountOnly()) +// mainSql.SELECT("COUNT(1) AS NumberOfRecords"); +// else +// mainSql.SELECT("vi.itemid", "vi.itemtitle", "vi.mediaid", "vi.mediatitle", "vi.mediarelativepath", "vi.mediaarchived", "vi.mediacreation", +// "vi.medialength", "vf.mediafilecount", +// String.format("HIGHLIGHT(md.description, '', '', '%s') description", criteriasPattern)); +// +// mainSql.FROM("VW_ITEMS_WITH_PATH vi", "VW_MEDIAFILES vf", "MEDIADESCRIPTION md"); +// mainSql.WHERE("vf.mediaid = vi.mediaid"); +// mainSql.AND(); +// mainSql.WHERE("vi.mediafileid = md.mediafileid"); +// mainSql.AND(); +// mainSql.WHERE(String.format("vi.mediaid IN (\r\n%s\r\n)", innerSql.toString())); +// +// StringBuilder criteriaForType = options.getCriteriaForType(); +// if (criteriaForType != null) { +// mainSql.AND(); +// mainSql.WHERE(String.format("vi.mediaitemtypeid IN (%s)", criteriaForType.toString())); +// } +// +// StringBuilder criteriaForTag = options.getCriteriaForTag(); +// if (criteriaForTag != null) { +// SQL tagSql = new SQL(); +// tagSql.SELECT("mediaid"); +// tagSql.FROM("MEDIATAGS"); +// tagSql.WHERE(String.format("vi.mediaitemtypeid IN (%s)", criteriaForTag.toString())); +// +// mainSql.AND(); +// mainSql.WHERE(String.format("vi.mediaid IN (%s)", tagSql.toString())); +// } +// +// if (options.getFrom() != null) { +// mainSql.AND(); +// mainSql.WHERE(String.format("vi.mediacreation > '%s'", df.format(options.getFrom()))); +// } +// +// if (options.getTo() != null) { +// mainSql.AND(); +// mainSql.WHERE(String.format("vi.mediacreation < '%s'", df.format(options.getTo()))); +// } +// +// if (options.isMissingProxy()) { +// mainSql.AND(); +// mainSql.WHERE("vf.mediafilecount = 1"); +// } +// +// if (options.getDescLength() > 0) { +// mainSql.AND(); +// mainSql.WHERE(String.format("LENGTH(vi.mediadescription) < %s", options.getDescLength())); +// } +// +// if (!options.isCountOnly() && (options.getToResult() != 0)) { +// mainSql.ORDER_BY("vi.mediacreation DESC"); +// mainSql.LIMIT((options.getToResult() - options.getFromResult())); +// mainSql.OFFSET(options.getFromResult()); +// } +// +// String query = mainSql.toString(); +// logger.info(query); +// PreparedStatement st = connection.prepareStatement(query, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); +// return st; +// } private String formatSearchValue(String value) { String[] specials = new String[] { ":", "?", "%", "(", ")" }; @@ -268,7 +259,7 @@ public class MediaFinder implements IMediaFinder { return sb.toString(); } - private long getNumberOfRecords(SearchOptions options) { + private long getTotalCount(SearchOptions options) { long start = System.currentTimeMillis(); long result = 0; @@ -278,19 +269,14 @@ public class MediaFinder implements IMediaFinder { DefaultContext context = manager.getDbContext(); Connection connection = context.getConnection(); try { - logger.info("Checking size"); + logger.info("Query total count"); options.setCountOnly(true); // creating a query for checking resultset size - - if (options.isGrouping()) - st = createGroupingStatement(connection, options.getText(), options); - else - st = createStatement(connection, options.getText(), options); + st = createStatement(connection, options.getText(), options); rs = st.executeQuery(); if (rs.next()) { - result = rs.getLong("NumberOfRecords"); + result = rs.getLong("totalCount"); } - connection.commit(); } catch (Exception e) { try { @@ -329,23 +315,13 @@ public class MediaFinder implements IMediaFinder { try { options.setCountOnly(false); - if (options.isGrouping()) - st = createGroupingStatement(connection, options.getText(), options); - else - st = createStatement(connection, options.getText(), options); + st = createStatement(connection, options.getText(), options); rs = st.executeQuery(); List resultList = null; while (rs.next()) { - - ArchivedMedia am = null; - if (options.isGrouping()) - am = createGroupedArchiveMedia(rs, searchResults); - else { - am = createArchiveMedia(rs); - am.setRelevant(rs.getString("description")); - } - + ArchivedMedia am = createArchiveMedia(rs); + // am.setRelevant(rs.getString("description")); if (resultList == null) { resultList = new ArrayList<>(); searchResults.setItems(resultList); @@ -387,29 +363,6 @@ public class MediaFinder implements IMediaFinder { return result; } - private ArchivedMedia createGroupedArchiveMedia(ResultSet rs, SearchResult searchResult) throws SQLException { - Item item = new Item(); - item.setId(rs.getLong("itemid")); - item.setTitle(rs.getString("itemtitle")); - - Media media = new Media(); - media.setMediaFilesName(rs.getString("mediarelativepath")); - media.setId(rs.getLong("mediaid")); - media.setTitle(rs.getString("mediatitle")); - - media.setCreation(rs.getTimestamp("mediacreation")); - media.setArchived(rs.getTimestamp("mediaarchived")); - media.setLength(rs.getLong("medialength")); - media.setMediaFilesCount(rs.getInt("mediafilecount")); - - ArchivedMedia am = new ArchivedMedia(); - am.setMedia(media); - am.setItem(item); - am.setRelevant(rs.getString("description")); - return am; - - } - private ArchivedMedia createArchiveMedia(ResultSet rs) throws SQLException { ItemType it = new ItemType(); it.setId(rs.getLong("mediaitemtypeid")); @@ -431,8 +384,9 @@ public class MediaFinder implements IMediaFinder { media.setModified(rs.getTimestamp("modified")); media.setArchived(rs.getTimestamp("archived")); media.setLength(rs.getLong("length")); - media.setMediaFilesCount(rs.getInt("mediafilecount")); + // media.setMediaFilesCount(rs.getInt("mediafilecount")); media.setMediaFilesName(rs.getString("mediafilehouseid")); + media.setMediaFilesCount(1); ArchivedMedia am = new ArchivedMedia(); am.setMedia(media); @@ -441,12 +395,13 @@ public class MediaFinder implements IMediaFinder { } @Override - public SearchResult search(SearchOptions options) { + public SearchResult search(SearchOptions options, IExecutionDurationNotification cb) { + Instant started = Instant.now(); manager.traceIn(); SearchResult result = new SearchResult<>(); if (options.getFromResult() == 0) { - long numberOfRecords = getNumberOfRecords(options); + long numberOfRecords = getTotalCount(options); logger.info("Number of records {}", numberOfRecords); result.setItemCount(numberOfRecords); @@ -454,54 +409,12 @@ public class MediaFinder implements IMediaFinder { getSearchResults(result, options); manager.traceOut(); + Instant finished = Instant.now(); + if (Objects.nonNull(cb)) + cb.notify(Duration.between(started, finished)); return result; } - @Override - public List getGroupChildren(ArchivedMedia master, String criteria) { - ResultSet rs = null; - PreparedStatement st = null; - - DefaultContext context = manager.getDbContext(); - Connection connection = context.getConnection(); - - List resultList = null; - try { - st = createGroupingChildrenStatement(connection, master.getMedia().getMediaFilesName(), criteria); - rs = st.executeQuery(); - - while (rs.next()) { - - ArchivedMedia am = createArchiveMedia(rs); - if (resultList == null) - resultList = new ArrayList<>(); - resultList.add(am); - } - connection.commit(); - } catch (Exception e) { - try { - connection.rollback(); - } catch (Exception e1) { - logger.throwing(e1); - } - manager.throwError(e); - } finally { - try { - if (rs != null) - rs.close(); - } catch (Exception e1) { - } - try { - if (st != null) - st.close(); - } catch (Exception e1) { - } - - manager.putDbContext(context); - } - return resultList; - } - public BasicDBObject simpleSearch(BasicDBObject searchParameters) { BasicDBObject result = new BasicDBObject(); BasicDBList items = new BasicDBList(); diff --git a/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/SupportTest.java b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/SupportTest.java index d034aef6..5472b3d5 100644 --- a/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/SupportTest.java +++ b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/SupportTest.java @@ -34,17 +34,17 @@ public class SupportTest { @BeforeClass static public void setUpConnection() { - // System.setProperty("jobengine.octopus.rundowns.name", "rundowns180620"); - // System.setProperty("jobengine.octopus.stories.name", "stories180620"); - // System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180620"); + // System.setProperty("jobengine.octopus.rundowns.name", "rundowns180620"); + // System.setProperty("jobengine.octopus.stories.name", "stories180620"); + // System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders180620"); // - // System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.27:50000/mccache:retrieveMessagesFromServerOnGetMessage=true;"); - // System.setProperty("jobengine.nosql.db.user", "db2admin"); - // System.setProperty("jobengine.nosql.db.password", "password"); - // System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); - // System.setProperty(ItemManager.DBUSERNAME, "db2admin"); - // System.setProperty(ItemManager.DBPASSWORD, "password"); - // System.setProperty(LogUtils.LOGLEVEL, "INFO"); + // System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.27:50000/mccache:retrieveMessagesFromServerOnGetMessage=true;"); + // System.setProperty("jobengine.nosql.db.user", "db2admin"); + // System.setProperty("jobengine.nosql.db.password", "password"); + // System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); + // System.setProperty(ItemManager.DBUSERNAME, "db2admin"); + // System.setProperty(ItemManager.DBPASSWORD, "password"); + // System.setProperty(LogUtils.LOGLEVEL, "INFO"); manager = new ItemManager(); manager.connect(); @@ -60,21 +60,21 @@ public class SupportTest { System.out.println(FileSystemUtils.freeSpaceKb("/opt")); } - // @Test - // public void getLocalTargetStoreUriByFreeSpace() throws Exception { - // Store s = new Store(); - // for (int i = 0; i < 5; i++) { - // StoreUri su = new StoreUri(); - // su.setProtocol(RemoteStoreProtocol.LOCAL); - // su.setPriority(i); - // su.setUri("/opt"); - // su.setTarget(true); - // s.appendStoreUri(su); - // } + // @Test + // public void getLocalTargetStoreUriByFreeSpace() throws Exception { + // Store s = new Store(); + // for (int i = 0; i < 5; i++) { + // StoreUri su = new StoreUri(); + // su.setProtocol(RemoteStoreProtocol.LOCAL); + // su.setPriority(i); + // su.setUri("/opt"); + // su.setTarget(true); + // s.appendStoreUri(su); + // } // - // StoreUri uri = s.getLocalTargetStoreUriByFreeSpace(); - // assertEquals(uri.getPriority(), 0); - // } + // StoreUri uri = s.getLocalTargetStoreUriByFreeSpace(); + // assertEquals(uri.getPriority(), 0); + // } @Test public void mergeItemStructure() throws Exception { @@ -114,6 +114,6 @@ public class SupportTest { List dummy = null; LuceneMediaFinder luceneSearch = new LuceneMediaFinder(); // luceneSearch.search(item.getDescription(), dummy, "", true, 1, 10); - luceneSearch.search(null); + luceneSearch.search(null, null); } } diff --git a/server/user.mediacube.gui/.settings/org.eclipse.core.resources.prefs b/server/user.mediacube.gui/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 151d9f75..00000000 --- a/server/user.mediacube.gui/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,14 +0,0 @@ -eclipse.preferences.version=1 -encoding//pages/jobselector.zul=UTF-8 -encoding//pages/login.zul=UTF-8 -encoding//pages/searchitems/listresults.zul=UTF-8 -encoding//resources/i3-label_hu.properties=UTF-8 -encoding//src/user/jobengine/zk/model/ListSearchModel.java=UTF-8 -encoding//src/user/jobengine/zk/model/MaestroJobListModel.java=UTF-8 -encoding//src/user/jobengine/zk/model/MissingMaterialsModel.java=UTF-8 -encoding//src/user/jobengine/zk/model/RetrieveBatchSelectorModel.java=UTF-8 -encoding//src/user/jobengine/zk/model/RetrieveSelectorModel.java=UTF-8 -encoding//src/user/jobengine/zk/model/TargetsListModel.java=UTF-8 -encoding//src/user/jobengine/zk/util/ADHandler.java=UTF-8 -encoding//src/user/jobengine/zk/util/SessionUtil.java=UTF-8 -encoding/=UTF-8 diff --git a/server/user.mediacube.gui/index.zul b/server/user.mediacube.gui/index.zul index 76205d89..f1bb3a30 100644 --- a/server/user.mediacube.gui/index.zul +++ b/server/user.mediacube.gui/index.zul @@ -6,7 +6,7 @@ - +