@Test public void testSearchAndDeleteFolderAndSearch() throws Exception { ServiceContext serviceContext = ServiceContextTestUtil.getServiceContext(_group.getGroupId()); BookmarksFolder folder = BookmarksTestUtil.addFolder(_group.getGroupId(), RandomTestUtil.randomString()); BookmarksEntry entry = BookmarksTestUtil.addEntry(folder.getFolderId(), true, serviceContext); long companyId = entry.getCompanyId(); long groupId = entry.getFolder().getGroupId(); long folderId = entry.getFolderId(); String keywords = "test"; SearchContext searchContext = BookmarksTestUtil.getSearchContext(companyId, groupId, folderId, keywords); Indexer indexer = IndexerRegistryUtil.getIndexer(BookmarksEntry.class); Hits hits = indexer.search(searchContext); Assert.assertEquals(1, hits.getLength()); BookmarksFolderLocalServiceUtil.deleteFolder(folderId); hits = indexer.search(searchContext); Query query = hits.getQuery(); Assert.assertEquals(query.toString(), 0, hits.getLength()); }
@RenderMapping(params = "action=ricercaLibera") public String effettuaRicerca( RenderRequest renderRequest, RenderResponse renderResponse, Model model, @ModelAttribute("navigaProgetti") NavigaProgetti navigaProgetti, @RequestParam("cercaPerKeyword") String cercaPerKeyword) { model.addAttribute("currentAction", "ricercaLibera"); navigaProgetti.setCurrentAction("ricercaLibera"); model.addAttribute("cercaPerKeyword", cercaPerKeyword); model.addAttribute("navigaProgetti", navigaProgetti); logger.info("effettuaRicerca.cercaPerKeyword: " + cercaPerKeyword); try { Document[] documents = null; List<DocumentoDTO> risultatiGenerici = new ArrayList<DocumentoDTO>(); List<Progetto> risultatiProgetti = new ArrayList<Progetto>(); if (cercaPerKeyword != null && cercaPerKeyword.length() > 3) { Query query = StringQueryFactoryUtil.create( Field.TITLE + ":" + cercaPerKeyword + " or " + Field.CONTENT + ":" + cercaPerKeyword + " or " + Constants.RICERCALIBERA_FIELD_SEARCH + ":" + cercaPerKeyword + " or " + Constants.RICERCALIBERA_FIELD_LOCALIZZAZIONE + ":" + cercaPerKeyword + " or " + Constants.RICERCALIBERA_FIELD_CODICE_CUP + ":" + cercaPerKeyword); logger.debug("query = " + query.toString()); Hits hits = SearchEngineUtil.search( SearchEngineUtil.SYSTEM_ENGINE_ID, PortalUtil.getDefaultCompanyId(), query, -1, -1); logger.info("hits = " + hits.getLength()); documents = hits.getDocs(); model.addAttribute("valoreRicercaValido", "SI"); } else { SessionMessages.add(renderRequest, "valore-ricerca-non-valido"); model.addAttribute("valoreRicercaValido", "NO"); } if (documents != null) { DocumentoDTO documento = null; Progetto progetto = null; int contaDoc = 0; for (Document document : documents) { logger.debug("Document: " + document.getUID()); // for (Map.Entry<String, Field> entry : document.getFields().entrySet() ) { // logger.debug("-- " + entry.getKey() + ": " + entry.getValue().getValue() ); // } if (document.get(Field.ENTRY_CLASS_NAME).equals(Progetto.class.getName())) { progetto = getProgettoFromDocument(document); risultatiProgetti.add(progetto); } else { documento = new DocumentoDTO(); documento.setTitolo(document.getField(Field.TITLE).getValue()); String testo = "non disponibile"; if (document.getField(Field.CONTENT) != null) { testo = trunc(document.getField(Field.CONTENT).getValue(), 37); } documento.setTesto(testo); documento.setId(contaDoc++); AssetEntry assetEntry = AssetEntryLocalServiceUtil.getEntry( document.get(Field.ENTRY_CLASS_NAME), Long.parseLong(document.get(Field.ENTRY_CLASS_PK))); documento.setUrl( getAssetViewURL(renderRequest, renderResponse, assetEntry, cercaPerKeyword)); risultatiGenerici.add(documento); } } } // model.addAttribute("risultatiGenerici", risultatiGenerici); model.addAttribute("risultatiGenericiSize", risultatiGenerici.size()); SearchContainer<DocumentoDTO> searchContainerElencoDoc = new SearchContainer<DocumentoDTO>( renderRequest, renderResponse.createRenderURL(), null, "Nessun dato trovato per la selezione fatta"); searchContainerElencoDoc.setDelta(risultatiGenerici.size()); searchContainerElencoDoc.setTotal(risultatiGenerici.size()); searchContainerElencoDoc.setResults(risultatiGenerici); model.addAttribute("searchContainerElencoDoc", searchContainerElencoDoc); // model.addAttribute("risultatiProgetti", risultatiProgetti); SearchContainer<Progetto> searchContainerElencoPro = new SearchContainer<Progetto>( renderRequest, renderResponse.createRenderURL(), null, "Nessun dato trovato per la selezione fatta"); searchContainerElencoPro.setDelta(risultatiProgetti.size()); searchContainerElencoPro.setTotal(risultatiProgetti.size()); searchContainerElencoPro.setResults(risultatiProgetti); model.addAttribute("searchContainerElenco", searchContainerElencoPro); } catch (SearchException e) { logger.error("SearchException: ", e); } catch (NumberFormatException e) { logger.error("NumberFormatException: ", e); } catch (PortalException e) { logger.error("PortalException: ", e); } catch (SystemException e) { logger.error("SystemException: ", e); } return "elenco-progetti-view"; }