Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package kz.bsbnb.petcatalog.search;
- import java.util.Locale;
- import javax.portlet.PortletURL;
- import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery;
- import com.liferay.portal.kernel.dao.orm.DynamicQuery;
- import com.liferay.portal.kernel.exception.PortalException;
- import com.liferay.portal.kernel.exception.SystemException;
- import com.liferay.portal.kernel.search.BaseIndexer;
- import com.liferay.portal.kernel.search.Document;
- import com.liferay.portal.kernel.search.Field;
- import com.liferay.portal.kernel.search.SearchContext;
- import com.liferay.portal.kernel.search.SearchEngineUtil;
- import com.liferay.portal.kernel.search.Summary;
- import com.liferay.portal.kernel.util.GetterUtil;
- import com.liferay.portal.kernel.util.StringUtil;
- import com.liferay.portal.kernel.util.Validator;
- import kz.bsbnb.petcatalog.PortletKeys;
- import kz.bsbnb.petcatalog.model.Pet;
- import kz.bsbnb.petcatalog.portlet.PetCatalogPortlet;
- import kz.bsbnb.petcatalog.service.PetLocalServiceUtil;
- import kz.bsbnb.petcatalog.service.persistence.PetActionableDynamicQuery;
- /**
- * Класс отвечающий за индексацию объектов Pet и за отображение результатов
- * поиска
- *
- */
- public class PetsIndexer extends BaseIndexer {
- public static final String[] CLASS_NAMES = {Pet.class.getName()};
- public static final String PORTLET_ID = PortletKeys.PET_CATALOG;
- @Override
- public String[] getClassNames() {
- return CLASS_NAMES;
- }
- @Override
- public String getPortletId() {
- return PORTLET_ID;
- }
- /**
- * Add then implement workflow
- *
- * @Override public boolean isVisible(long classPK, int status) throws
- * Exception { Pet pet = PetLocalServiceUtil.getPet(classPK);
- *
- * return isVisible(pet.getStatus(), status); }
- * @Override public void postProcessContextQuery( BooleanQuery contextQuery,
- * SearchContext searchContext) throws Exception {
- *
- * addStatus(contextQuery, searchContext); }
- */
- @Override
- protected void doDelete(Object obj) throws Exception {
- Pet pet = (Pet) obj;
- deleteDocument(pet.getCompanyId(), pet.getPetId());
- }
- /**
- * Основной метод, который вызывается при интексации объекта В нем надо
- * индексировать только аттрибуты объекта - общие вещи, такие, как например,
- * теги и категории, индексируются в базовом классе
- */
- @Override
- protected Document doGetDocument(Object obj) throws Exception {
- Pet pet = (Pet) obj;
- Document document = getBaseModelDocument(PORTLET_ID, pet);
- document.addText(Field.DESCRIPTION, pet.getDescription());
- document.addDate(Field.MODIFIED_DATE, pet.getModifiedDate());
- document.addText(Field.TITLE, pet.getName());
- return document;
- }
- /**
- * Этот метод вызывается для отображения информации об объекте в поисковой
- * выдаче
- *
- */
- @Override
- protected Summary doGetSummary(
- Document document, Locale locale, String snippet,
- PortletURL portletURL) {
- String title = document.get(Field.TITLE);
- String content = snippet;
- if (Validator.isNull(snippet)) {
- content = StringUtil.shorten(document.get(Field.CONTENT), 200);
- }
- String petId = document.get(Field.ENTRY_CLASS_PK);
- portletURL.setParameter("jspPage", PetCatalogPortlet.VIEW_PET_JSP);
- portletURL.setParameter(PetCatalogPortlet.PARAM_PET_ID, petId);
- return new Summary(title, content, portletURL);
- }
- @Override
- protected void doReindex(Object obj) throws Exception {
- Pet pet = (Pet) obj;
- Document document = getDocument(pet);
- SearchEngineUtil.updateDocument(
- getSearchEngineId(), pet.getCompanyId(), document);
- }
- @Override
- protected void doReindex(String className, long classPK) throws Exception {
- Pet pet = PetLocalServiceUtil.getPet(classPK);
- doReindex(pet);
- }
- @Override
- protected void doReindex(String[] ids) throws Exception {
- long companyId = GetterUtil.getLong(ids[0]);
- reindexPets(companyId);
- }
- @Override
- protected String getPortletId(SearchContext searchContext) {
- return PORTLET_ID;
- }
- protected void reindexPets(long companyId)
- throws PortalException, SystemException {
- ActionableDynamicQuery actionableDynamicQuery =
- new PetActionableDynamicQuery() {
- @Override
- protected void addCriteria(DynamicQuery dynamicQuery) {
- /*
- * TODO Add it then implement workflow Property
- * displayDateProperty = PropertyFactoryUtil.forName(
- * "displayDate");
- * dynamicQuery.add(displayDateProperty.lt(new Date()));
- *
- * Property statusProperty =
- * PropertyFactoryUtil.forName("status");
- *
- * Integer[] statuses = {
- * WorkflowConstants.STATUS_APPROVED,
- * WorkflowConstants.STATUS_IN_TRASH };
- *
- * dynamicQuery.add(statusProperty.in(statuses));
- */
- }
- @Override
- protected void performAction(Object object) throws PortalException {
- Pet pet = (Pet) object;
- Document document = getDocument(pet);
- addDocument(document);
- }
- };
- actionableDynamicQuery.setCompanyId(companyId);
- actionableDynamicQuery.setSearchEngineId(getSearchEngineId());
- actionableDynamicQuery.performActions();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement