KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > roller > business > search > operations > ReIndexEntryOperation


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.business.search.operations;
20
21 import java.io.IOException JavaDoc;
22
23 import org.apache.commons.logging.Log;
24 import org.apache.commons.logging.LogFactory;
25 import org.apache.lucene.index.IndexReader;
26 import org.apache.lucene.index.IndexWriter;
27 import org.apache.lucene.index.Term;
28 import org.apache.roller.business.IndexManagerImpl;
29 import org.apache.roller.business.search.FieldConstants;
30 import org.apache.roller.model.Roller;
31 import org.apache.roller.model.RollerFactory;
32 import org.apache.roller.pojos.WeblogEntryData;
33
34 /**
35  * An operation that adds a new log entry into the index.
36  * @author Mindaugas Idzelis (min@idzelis.com)
37  */

38 public class ReIndexEntryOperation extends WriteToIndexOperation {
39     
40     //~ Static fields/initializers =============================================
41

42     private static Log mLogger =
43             LogFactory.getFactory().getInstance(AddEntryOperation.class);
44     
45     //~ Instance fields ========================================================
46

47     private WeblogEntryData data;
48     
49     //~ Constructors ===========================================================
50

51     /**
52      * Adds a web log entry into the index.
53      */

54     public ReIndexEntryOperation(IndexManagerImpl mgr, WeblogEntryData data) {
55         super(mgr);
56         this.data = data;
57     }
58     
59     //~ Methods ================================================================
60

61     public void doRun() {
62         IndexReader reader = beginDeleting();
63         try {
64             if (reader != null) {
65                 Term term = new Term(FieldConstants.ID, data.getId());
66                 reader.delete(term);
67             }
68         } catch (IOException JavaDoc e) {
69             mLogger.error("Error deleting doc from index", e);
70         } finally {
71             endDeleting();
72         }
73         
74         IndexWriter writer = beginWriting();
75         Roller roller = RollerFactory.getRoller();
76         try {
77             if (writer != null) {
78                 writer.addDocument(getDocument(data));
79             }
80         } catch (IOException JavaDoc e) {
81             mLogger.error("Problems adding doc to index", e);
82         } finally {
83             if (roller != null) roller.release();
84             endWriting();
85         }
86     }
87 }
88
Popular Tags