From 518fe582d1b0c95c625478d893827cf3c9208641 Mon Sep 17 00:00:00 2001 From: Sweidan Omar Date: Mon, 29 Nov 2021 15:22:54 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C32379 --- .../user/jobengine/search/MediaFinder.java | 107 +++++++++++++++++- 1 file changed, 106 insertions(+), 1 deletion(-) 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 06f6e09d..f1a5b9fe 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 @@ -101,7 +101,7 @@ public class MediaFinder implements IMediaFinder { if (options.getDescLength() > 0) sql.append(" AND LENGTH(m.description) < " + options.getDescLength()); - if (!options.isCountOnly()) { + if (!options.isCountOnly() && (options.getToResult() != 0)) { sql.append(" ORDER BY "); if (options.getOrderBy() == null) { sql.append("itemtitle desc, mediaitemtypeid"); @@ -288,4 +288,109 @@ public class MediaFinder implements IMediaFinder { return result; } + public SearchResult search_v1(SearchOptions options) { + SearchResult result = new SearchResult<>(); + + ResultSet rs = null; + PreparedStatement st = null; + DefaultContext context = manager.getDbContext(); + Connection connection = context.getConnection(); + try { + int maxRecords = options.getToResult() - options.getFromResult(); + + st = createStatement(connection, options.getText(), options); + + logger.info("Executing query, fetch size is {}, automcommit {}", 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) { + ItemType it = new ItemType(); + it.setId(rs.getLong("mediaitemtypeid")); + it.setName(rs.getString("mediaitemtypename")); + + Item item = new Item(); + item.setId(rs.getLong("itemid")); + item.setTitle(rs.getString("itemtitle")); + + Media media = new Media(); + + media.setItemId(item.getId()); + media.setItemType(it); + media.setId(rs.getLong("mediaid")); + media.setTitle(rs.getString("mediatitle")); + media.setHouseId(rs.getString("mediahouseid")); + media.setCreation(rs.getTimestamp("creation")); + media.setCreated(rs.getTimestamp("created")); + media.setModified(rs.getTimestamp("modified")); + media.setArchived(rs.getTimestamp("archived")); + media.setLength(rs.getLong("length")); + media.setMediaFilesCount(rs.getInt("mediafilecount")); + media.setMediaFilesName(rs.getString("mediafilehouseid")); + + ArchivedMedia am = new ArchivedMedia(); + am.setMedia(media); + am.setItem(item); + + if (resultList == null) + resultList = new ArrayList<>(); + resultList.add(am); + + am.setRelevant(rs.getString("description")); + // setRelevant(criterias, am, rs.getString("description")); + maxRecords--; + } + logger.info("Query result processed"); + result.setItems(resultList); + connection.commit(); + } catch (Exception e) { + try { + connection.rollback(); + } catch (Exception e1) { + e1.printStackTrace(); + } + 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); + } + manager.traceOut(); + + return result; + } } -- 2.54.0