if (options.getDescLength() > 0)\r
sql.append(" AND LENGTH(m.description) < " + options.getDescLength());\r
\r
- if (!options.isCountOnly()) {\r
+ if (!options.isCountOnly() && (options.getToResult() != 0)) {\r
sql.append(" ORDER BY ");\r
if (options.getOrderBy() == null) {\r
sql.append("itemtitle desc, mediaitemtypeid");\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 {}, automcommit {}", 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