01: package com.sun.jspwiki.community.provisioning;
02:
03: import com.ecyrd.jspwiki.PageManager;
04: import com.ecyrd.jspwiki.WikiEngine;
05: import com.ecyrd.jspwiki.search.SearchManager;
06: import com.ecyrd.jspwiki.search.SearchProvider;
07: import com.ecyrd.jspwiki.SearchResult;
08: import com.sun.jspwiki.search.RDMSearchProvider;
09: import com.sun.jspwiki.community.CommunityContext;
10: import com.sun.jspwiki.search.RDMSearchProvider;
11: import com.sun.portal.community.CommunityFactory;
12: import com.sun.portal.community.CommunityId;
13: import com.sun.portal.portlet.service.provision.*;
14: import javax.portlet.PortletContext;
15: import java.io.FileWriter;
16: import java.util.Collection;
17: import java.util.Iterator;
18:
19: import javax.servlet.ServletContext;
20: import javax.servlet.http.HttpServletRequest;
21: import java.util.logging.Level;
22: import java.util.logging.Logger;
23: import com.sun.portal.log.common.PortalLogger;
24:
25: public class WikiProvisioningListener extends
26: GenericPortletProvisionListener {
27:
28: private static Logger _logger = PortalLogger
29: .getLogger(WikiProvisioningListener.class);
30:
31: public void handleProvisionEvent(PortletProvisionEvent event)
32: throws PortletProvisionException {
33: if (event.getType().equals(
34: PortletProvisionEvent.EVENT_TYPE_DESTROYED)) {
35: doPurge(event);
36: }
37: }
38:
39: // handles communitiy's wiki's destruction
40: private void doPurge(PortletProvisionEvent event)
41: throws PortletProvisionException {
42: try {
43: CommunityId ctyId = new CommunityId(event
44: .getCommunityPrincipalId());
45: ServletContext sc = this .getServletContext();
46: WikiEngine we = WikiEngine.getInstance(sc, null);
47:
48: // delete community's wiki pages from Back-end
49: PageManager pm = we.getPageManager();
50: Collection wpages = null;
51: RDMSearchProvider sp = (RDMSearchProvider) we
52: .getSearchManager().getSearchEngine();
53: wpages = sp.findPages("virtual-db = " + ctyId.toString(),
54: -1);
55: Iterator pi = wpages.iterator();
56: while (pi.hasNext()) {
57: // delete page from the wiki back-end
58: pm.deletePage(((SearchResult) pi.next()).getPage());
59: }
60:
61: } catch (Exception e) {
62: // TODO handle exception or disgard
63: }
64: }
65:
66: }
|