git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorSweidan Omar <TFS\sweidan.omar>
Mon, 29 Nov 2021 15:22:54 +0000 (15:22 +0000)
committerSweidan Omar <TFS\sweidan.omar>
Mon, 29 Nov 2021 15:22:54 +0000 (15:22 +0000)
server/user.jobengine.osgi.db/src/user/jobengine/search/MediaFinder.java

index 06f6e09d740a139d834578e5910cad209b780583..f1a5b9fe2f2c5ce91a399271f84a76998fd2879e 100644 (file)
@@ -101,7 +101,7 @@ public class MediaFinder implements IMediaFinder {
                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
@@ -288,4 +288,109 @@ public class MediaFinder implements IMediaFinder {
                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