package blade.migrate.liferay70;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import javax.portlet.PortletURL;
import org.eclipse.jdt.core.search.SearchEngine;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portal.kernel.search.Document;
import com.liferay.portal.kernel.search.Field;
import com.liferay.portal.kernel.search.Hits;
import com.liferay.portal.kernel.search.SearchResult;
import com.liferay.portal.kernel.search.Summary;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.documentlibrary.model.DLFileEntry;
import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil;
import com.liferay.portlet.journal.model.JournalArticle;
import com.liferay.portlet.messageboards.model.MBMessage;
import com.liferay.portlet.messageboards.service.MBMessageLocalServiceUtil;
public class SearchResultTest {
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;
}
}