From: Sweidan Omar Date: Tue, 23 Nov 2021 12:39:41 +0000 (+0000) Subject: MediaFinder: keresés módosítása X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=518c9cd43f067f38f0e369e689d74a66604bdaab;p=mediacube.git MediaFinder: keresés módosítása git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C32354 --- 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 95db16d8..a25385ec 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 @@ -33,6 +33,10 @@ public class MediaFinder implements IMediaFinder { StringBuilder sql = new StringBuilder(); sql.append("SELECT "); + + if(options.isCountOnly() == true) { + sql.append(" COUNT("); + } sql.append("i.id itemid,"); sql.append("i.title itemtitle,"); sql.append("m.id mediaid,"); @@ -49,6 +53,10 @@ public class MediaFinder implements IMediaFinder { sql.append("m.houseid mediahouseid,"); sql.append("mf.houseid mediafilehouseid,"); sql.append("vw_mf.mediafilecount"); + if(options.isCountOnly() == true) { + sql.append(") AS NumberOfRecords"); + } + 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"); @@ -83,13 +91,6 @@ public class MediaFinder implements IMediaFinder { sql.append(" AND CONTAINS(md.description, '" + criteria + "') >= 1"); } - /* - if (options.getFrom() != null) - sql.append(String.format(" AND m.archived > '%s'", df.format(options.getFrom()))); - - if (options.getTo() != null) - sql.append(String.format(" AND m.archived < '%s'", df.format(options.getTo()))); - */ if (options.getFrom() != null) sql.append(String.format(" AND m.creation > '%s'", df.format(options.getFrom()))); @@ -115,7 +116,7 @@ public class MediaFinder implements IMediaFinder { PreparedStatement st = connection.prepareStatement(query, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); - // Ettol elszall a 11.5-on a kereses + // TODO Ettol elszall a 11.5-on a kereses // if (criteria != null && criteria.trim().length() > 0) { // st.setString(1, criteria); // logger.info("Parameter is {}", criteria); @@ -156,37 +157,26 @@ public class MediaFinder implements IMediaFinder { PreparedStatement st = null; DefaultContext context = manager.getDbContext(); Connection connection = context.getConnection(); + SearchOptions optionsForCounting= options; + optionsForCounting.setCountOnly(true); + try { int maxRecords = options.getToResult() - options.getFromResult(); + //creating a query for checking resultset size + st= createStatement(connection, optionsForCounting.getText(), optionsForCounting); + st.close(); + rs= st.executeQuery(); + rs.close(); + logger.info("Checking size"); + result.setItemCount(rs.getInt("NumberOfRecords")); + st = createStatement(connection, options.getText(), options); - - logger.info("Executing query, fetch size is {}, automcommit {}", st.getFetchSize(), + logger.info("Executing query, fetch size is {}, autocommit {}", st.getFetchSize(), connection.getAutoCommit()); rs = st.executeQuery(); - logger.info("Checking size"); - rs.last(); - result.setItemCount(rs.getRow()); logger.info("Result size is {}", result.getItemCount()); - // set begining position - 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: " + options.getFromResult() - + " total records: " + result.getItemCount()); - } - } - } else { - rs.beforeFirst(); - } - List resultList = null; logger.info("Processing query result, maxRecords {}", maxRecords); while (rs.next() && maxRecords > 0) { @@ -222,7 +212,6 @@ public class MediaFinder implements IMediaFinder { resultList.add(am); am.setRelevant(rs.getString("description")); - // setRelevant(criterias, am, rs.getString("description")); maxRecords--; } logger.info("Query result processed"); @@ -237,7 +226,6 @@ public class MediaFinder implements IMediaFinder { manager.throwError(e); } finally { try { - if (rs != null) rs.close(); } catch (Exception e1) { @@ -275,7 +263,7 @@ public class MediaFinder implements IMediaFinder { result.setItemCount(rs.getRow()); logger.info("Result size is {}", result.getItemCount()); - // set begining position + // set beginning position if (options.getFromResult() > -1) { if (options.getFromResult() <= result.getItemCount()) { if (options.getFromResult() > 1) {