File Source: RemoveWebsiteIndexOperation.java
1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. The ASF licenses this file to You
4 * under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License. For additional information regarding
15 * copyright in this work, please see the NOTICE file in the top level
16 * directory of this distribution.
17 */
18 /* Created on Jul 16, 2003 */
19 package org.apache.roller.weblogger.business.search.operations;
20
21 import java.io.IOException;
22 import java.util.Date;
23
24 import org.apache.commons.logging.Log;
25 import org.apache.commons.logging.LogFactory;
26 import org.apache.lucene.index.IndexReader;
27 import org.apache.lucene.index.Term;
28 import org.apache.roller.weblogger.WebloggerException;
29 import org.apache.roller.weblogger.business.Weblogger;
30 import org.apache.roller.weblogger.business.UserManager;
31 import org.apache.roller.weblogger.business.search.IndexManagerImpl;
32 import org.apache.roller.weblogger.business.search.FieldConstants;
33 import org.apache.roller.weblogger.business.search.IndexUtil;
34 import org.apache.roller.weblogger.pojos.Weblog;
35
36
37 /**
38 * An index operation that rebuilds a given users index (or all indexes).
39 * @author Mindaugas Idzelis (min@idzelis.com)
40 */
41 public class RemoveWebsiteIndexOperation extends WriteToIndexOperation {
42
43 //~ Static fields/initializers =============================================
44
/*
P/P * Method: org.apache.roller.weblogger.business.search.operations.RemoveWebsiteIndexOperation__static_init
*
* Presumptions:
* org.apache.commons.logging.LogFactory:getFactory(...)@45 != null
*
* Postconditions:
* init'ed(mLogger)
*/
45 private static Log mLogger =
46 LogFactory.getFactory().getInstance(RemoveWebsiteIndexOperation.class);
47
48 //~ Instance fields ========================================================
49
50 private Weblog website;
51 private Weblogger roller;
52
53 //~ Constructors ===========================================================
54
55 /**
56 * Create a new operation that will recreate an index.
57 * @param website The website to rebuild the index for, or null for all sites.
58 */
59 public RemoveWebsiteIndexOperation(Weblogger roller, IndexManagerImpl mgr, Weblog website) {
/*
P/P * Method: void org.apache.roller.weblogger.business.search.operations.RemoveWebsiteIndexOperation(Weblogger, IndexManagerImpl, Weblog)
*
* Postconditions:
* this.manager == mgr
* init'ed(this.manager)
* this.roller == roller
* init'ed(this.roller)
* this.website == website
* init'ed(this.website)
*/
60 super(mgr);
61 this.roller = roller;
62 this.website = website;
63 }
64
65 //~ Methods ================================================================
66
67 public void doRun() {
/*
P/P * Method: void doRun()
*
* Preconditions:
* (soft) mLogger != null
* (soft) init'ed(this.reader)
* (soft) this.website != null
* (soft) org/apache/roller/weblogger/business/search/IndexManagerImpl.mLogger != null
* (soft) org/apache/roller/weblogger/business/search/operations/IndexOperation.mLogger != null
* (soft) this.manager != null
* (soft) init'ed(this.manager.fRAMindex)
* (soft) init'ed(this.manager.indexDir)
* (soft) init'ed(this.manager.useRAMIndex)
* (soft) this.roller != null
* ...
*
* Postconditions:
* init'ed(this.reader)
* init'ed(this.website)
*
* Test Vectors:
* javax.persistence.EntityManager:find(...)@216: Addr_Set{null}, Inverse{null}
*/
68 Date start = new Date();
69
70 // since this operation can be run on a separate thread we must treat
71 // the weblog object passed in as a detached object which is proned to
72 // lazy initialization problems, so requery for the object now
73 try {
74 UserManager uMgr = roller.getUserManager();
75 this.website = uMgr.getWebsite(this.website.getId());
76 } catch (WebloggerException ex) {
77 mLogger.error("Error getting website object", ex);
78 return;
79 }
80
81 IndexReader reader = beginDeleting();
82 try {
83 if (reader != null) {
84 String handle = null;
85 if (website != null) {
86 handle = website.getHandle();
87 }
88 Term tHandle =
89 IndexUtil.getTerm(FieldConstants.WEBSITE_HANDLE, handle);
90
91 if (tHandle != null) {
92 reader.delete(tHandle);
93 }
94 }
95 } catch (IOException e) {
96 mLogger.info("Problems deleting doc from index", e);
97 } finally {
98 endDeleting();
99 }
100
101 Date end = new Date();
102 double length = (end.getTime() - start.getTime()) / (double) 1000;
103
104 if (website != null) {
105 mLogger.info("Completed deleting indices for website '" +
106 website.getName() + "' in '" + length + "' seconds");
107 }
108 }
109 }
SofCheck Inspector Build Version : 2.18479
| RemoveWebsiteIndexOperation.java |
2009-Jan-02 14:25:14 |
| RemoveWebsiteIndexOperation.class |
2009-Sep-04 03:12:31 |