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