this.manager = manager;\r
}\r
\r
- private PreparedStatement createStatement(Connection connection, String criteria, SearchOptions options)\r
- throws Exception {\r
+ private PreparedStatement createStatement(Connection connection, String criteria, SearchOptions options) throws Exception {\r
String criteriasPattern = getCriteriasRegexPattern(criteria);\r
\r
StringBuilder sql = new StringBuilder();\r
sql.append("m.modified,");\r
sql.append("m.length,");\r
sql.append("m.itemtypeid mediaitemtypeid,");\r
- sql.append(String.format("HIGHLIGHT(md.description, '<span class=''rhl''>', '</span>', '%s') description,",\r
- criteriasPattern));\r
+ sql.append(String.format("HIGHLIGHT(md.description, '<span class=''rhl''>', '</span>', '%s') description,", criteriasPattern));\r
sql.append("it.name mediaitemtypename,");\r
sql.append("m.houseid mediahouseid,");\r
sql.append("mf.houseid mediafilehouseid,");\r
String query = sql.toString();\r
logger.info(query);\r
\r
- PreparedStatement st = connection.prepareStatement(query, ResultSet.TYPE_FORWARD_ONLY,\r
- ResultSet.CONCUR_UPDATABLE);\r
+ PreparedStatement st = connection.prepareStatement(query, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);\r
// PreparedStatement st = connection.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE,\r
// ResultSet.CONCUR_READ_ONLY);\r
\r
manager.traceIn();\r
SearchResult<ArchivedMedia> result = new SearchResult<>();\r
\r
- long numberOfRecords = getNumberOfRecords(options);\r
- logger.info("Number of records {}", numberOfRecords);\r
+ if (options.getFromResult() == 0) {\r
+ long numberOfRecords = getNumberOfRecords(options);\r
+ logger.info("Number of records {}", numberOfRecords);\r
+\r
+ result.setItemCount(numberOfRecords);\r
+ }\r
\r
- result.setItemCount(numberOfRecords);\r
getSearchResults(result, options);\r
manager.traceOut();\r
return result;\r
}\r
\r
- public SearchResult<ArchivedMedia> search_v1(SearchOptions options) {\r
- SearchResult<ArchivedMedia> result = new SearchResult<>();\r
-\r
- ResultSet rs = null;\r
- PreparedStatement st = null;\r
- DefaultContext context = manager.getDbContext();\r
- Connection connection = context.getConnection();\r
- try {\r
- int maxRecords = options.getToResult() - options.getFromResult();\r
-\r
- st = createStatement(connection, options.getText(), options);\r
-\r
- logger.info("Executing query, fetch size is {}, autocommit {}", st.getFetchSize(),\r
- connection.getAutoCommit());\r
- rs = st.executeQuery();\r
- logger.info("Checking size");\r
- rs.last();\r
- result.setItemCount(rs.getRow());\r
- logger.info("Result size is {}", result.getItemCount());\r
-\r
- // set begining position\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: " + options.getFromResult()\r
- + " total records: " + result.getItemCount());\r
- }\r
- }\r
- } else {\r
- rs.beforeFirst();\r
- }\r
-\r
- List<ArchivedMedia> resultList = null;\r
- logger.info("Processing query result, maxRecords {}", maxRecords);\r
- while (rs.next() && maxRecords > 0) {\r
- ItemType it = new ItemType();\r
- it.setId(rs.getLong("mediaitemtypeid"));\r
- it.setName(rs.getString("mediaitemtypename"));\r
-\r
- Item item = new Item();\r
- item.setId(rs.getLong("itemid"));\r
- item.setTitle(rs.getString("itemtitle"));\r
-\r
- Media media = new Media();\r
-\r
- media.setItemId(item.getId());\r
- media.setItemType(it);\r
- media.setId(rs.getLong("mediaid"));\r
- media.setTitle(rs.getString("mediatitle"));\r
- media.setHouseId(rs.getString("mediahouseid"));\r
- media.setCreation(rs.getTimestamp("creation"));\r
- media.setCreated(rs.getTimestamp("created"));\r
- media.setModified(rs.getTimestamp("modified"));\r
- media.setArchived(rs.getTimestamp("archived"));\r
- media.setLength(rs.getLong("length"));\r
- media.setMediaFilesCount(rs.getInt("mediafilecount"));\r
- media.setMediaFilesName(rs.getString("mediafilehouseid"));\r
-\r
- ArchivedMedia am = new ArchivedMedia();\r
- am.setMedia(media);\r
- am.setItem(item);\r
-\r
- if (resultList == null)\r
- resultList = new ArrayList<>();\r
- resultList.add(am);\r
-\r
- am.setRelevant(rs.getString("description"));\r
- // setRelevant(criterias, am, rs.getString("description"));\r
- maxRecords--;\r
- }\r
- logger.info("Query result processed");\r
- result.setItems(resultList);\r
- connection.commit();\r
- } catch (Exception e) {\r
- try {\r
- connection.rollback();\r
- } catch (Exception e1) {\r
- e1.printStackTrace();\r
- }\r
- manager.throwError(e);\r
- } finally {\r
- try {\r
-\r
- if (rs != null)\r
- rs.close();\r
- } catch (Exception e1) {\r
- }\r
- try {\r
- if (st != null)\r
- st.close();\r
- } catch (Exception e1) {\r
- }\r
-\r
- manager.putDbContext(context);\r
- }\r
- manager.traceOut();\r
-\r
- return result;\r
- }\r
}\r