package de.juwimm.cms.search.beans; import org.apache.log4j.Logger; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.Term; import org.springframework.beans.factory.annotation.Autowired; import de.juwimm.cms.model.SiteHbm; import de.juwimm.cms.model.ViewComponentHbm; import de.juwimm.cms.model.ViewDocumentHbm; import de.juwimm.cms.search.lucene.LuceneService; import de.juwimm.cms.search.xmldb.XmlDb; /** * Needs to avoid cyclic references * @author <a href="mailto:j2ee@juwimm.com">Sascha-Matthias Kulawik</a> * company Juwi|MacMillan Group GmbH, Walsrode, Germany * @version $Id$ * @since cqcms-core 06.07.2009 */ public class SearchengineDeleteService { private static Logger log = Logger.getLogger(SearchengineDeleteService.class); @Autowired private LuceneService luceneService; @Autowired private XmlDb xmlDb; public void deletePage(ViewComponentHbm viewComponent, boolean isLive) { deletePage4Xml(viewComponent); deletePage4Lucene(viewComponent, isLive); } public void deletePage4Xml(ViewComponentHbm viewComponent) { if (log.isDebugEnabled()) log.debug("XML-Index delete for VC " + viewComponent.getViewComponentId()); ViewDocumentHbm viewDocument = viewComponent.getViewDocument(); SiteHbm site = viewDocument.getSite(); xmlDb.deleteXml(site.getSiteId(), viewComponent.getViewComponentId()); if (log.isDebugEnabled()) log.debug("finished deletePage4Xml"); } public void deletePage4Lucene(ViewComponentHbm viewComponent, boolean isLive) { if (log.isDebugEnabled()) log.debug("Lucene-Index delete for VC " + viewComponent.getViewComponentId()); try { String currentUrl = getUrl(viewComponent, isLive); String cleanUrl = viewComponent.getViewDocument().getSite().getPageNameSearch(); cleanUrl = currentUrl.substring(0, currentUrl.length() - cleanUrl.length()); luceneService.removeDocument(new Term("uid", cleanUrl)); } catch (Exception e) { log.warn("Error deletePage4Lucene, maybe this page is not in the index: " + e.getMessage()); if (log.isDebugEnabled()) log.debug(e); } finally { } if (log.isDebugEnabled()) log.debug("finished deletePage4Lucene"); } public String getUrl(ViewComponentHbm vc, boolean isLive) { SiteHbm site = vc.getViewDocument().getSite(); String url = ""; if (isLive) { url = site.getPreviewUrlLiveServer(); } else { url = site.getPreviewUrlWorkServer(); } if (url != null) { url += vc.getViewDocument().getLanguage() + "/" + vc.getPath() + "." + site.getPageNameSearch(); } if (log.isInfoEnabled()) log.info("created url " + url + " for site " + site.getName()); return url; } public void deleteDocument(Integer documentId, Integer siteId) { if (log.isDebugEnabled()) log.debug("Index delete for Document: " + documentId); try { luceneService.removeDocument(new Term("uid", documentId.toString())); } catch (Exception e) { log.warn("Error deleteDocument, maybe this document is not in the index: " + e.getMessage()); if (log.isDebugEnabled()) log.debug(e); } finally { } if (log.isDebugEnabled()) log.debug("finished deleteDocument"); } }