Search in sources :

Example 1 with SearchResult

use of com.liferay.portal.kernel.search.SearchResult in project liferay-ide by liferay.

the class SearchResultTest method getSearchResults.

public static List<SearchResult> getSearchResults(Hits hits, Locale locale, PortletURL portletURL) {
    List<SearchResult> searchResults = new ArrayList<SearchResult>();
    for (Document document : hits.getDocs()) {
        String entryClassName = GetterUtil.getString(document.get(Field.ENTRY_CLASS_NAME));
        long entryClassPK = GetterUtil.getLong(document.get(Field.ENTRY_CLASS_PK));
        try {
            String className = entryClassName;
            long classPK = entryClassPK;
            FileEntry fileEntry = null;
            MBMessage mbMessage = null;
            if (entryClassName.equals(DLFileEntry.class.getName()) || entryClassName.equals(MBMessage.class.getName())) {
                classPK = GetterUtil.getLong(document.get(Field.CLASS_PK));
                long classNameId = GetterUtil.getLong(document.get(Field.CLASS_NAME_ID));
                if ((classPK > 0) && (classNameId > 0)) {
                    className = PortalUtil.getClassName(classNameId);
                    if (entryClassName.equals(DLFileEntry.class.getName())) {
                        fileEntry = DLAppLocalServiceUtil.getFileEntry(entryClassPK);
                    } else if (entryClassName.equals(MBMessage.class.getName())) {
                        mbMessage = MBMessageLocalServiceUtil.getMessage(entryClassPK);
                    }
                } else {
                    className = entryClassName;
                    classPK = entryClassPK;
                }
            }
            SearchResult searchResult = new SearchResult(className, classPK);
            int index = searchResults.indexOf(searchResult);
            if (index < 0) {
                searchResults.add(searchResult);
            } else {
                searchResult = searchResults.get(index);
            }
            if (fileEntry != null) {
                Summary summary = getSummary(document, DLFileEntry.class.getName(), fileEntry.getFileEntryId(), locale, portletURL);
                searchResult.addFileEntry(fileEntry, summary);
            }
            if (mbMessage != null) {
                searchResult.addMBMessage(mbMessage);
                searchResult.getMBMessages();
                searchResult.getFileEntryTuples();
            }
            if (entryClassName.equals(JournalArticle.class.getName())) {
                String version = document.get(Field.VERSION);
                searchResult.addVersion(version);
            }
            if ((mbMessage == null) && (fileEntry == null)) {
                Summary summary = getSummary(document, className, classPK, locale, portletURL);
                searchResult.setSummary(summary);
            } else {
                if (searchResult.getSummary() == null) {
                    Summary summary = getSummary(className, classPK, locale, portletURL);
                    searchResult.setSummary(summary);
                }
            }
        } catch (Exception e) {
            if (_log.isWarnEnabled()) {
                _log.warn("Search index is stale and contains entry {" + entryClassPK + "}");
            }
        }
    }
    return searchResults;
}
Also used : ArrayList(java.util.ArrayList) SearchResult(com.liferay.portal.kernel.search.SearchResult) Document(com.liferay.portal.kernel.search.Document) MBMessage(com.liferay.portlet.messageboards.model.MBMessage) DLFileEntry(com.liferay.portlet.documentlibrary.model.DLFileEntry) Summary(com.liferay.portal.kernel.search.Summary) FileEntry(com.liferay.portal.kernel.repository.model.FileEntry) DLFileEntry(com.liferay.portlet.documentlibrary.model.DLFileEntry) JournalArticle(com.liferay.portlet.journal.model.JournalArticle)

Aggregations

FileEntry (com.liferay.portal.kernel.repository.model.FileEntry)1 Document (com.liferay.portal.kernel.search.Document)1 SearchResult (com.liferay.portal.kernel.search.SearchResult)1 Summary (com.liferay.portal.kernel.search.Summary)1 DLFileEntry (com.liferay.portlet.documentlibrary.model.DLFileEntry)1 JournalArticle (com.liferay.portlet.journal.model.JournalArticle)1 MBMessage (com.liferay.portlet.messageboards.model.MBMessage)1 ArrayList (java.util.ArrayList)1