File Source: EntryRemove.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  
    19  package org.apache.roller.weblogger.ui.struts2.editor;
    20  
    21  import org.apache.commons.logging.Log;
    22  import org.apache.commons.logging.LogFactory;
    23  import org.apache.roller.weblogger.WebloggerException;
    24  import org.apache.roller.weblogger.business.WebloggerFactory;
    25  import org.apache.roller.weblogger.business.WeblogManager;
    26  import org.apache.roller.weblogger.business.search.IndexManager;
    27  import org.apache.roller.weblogger.pojos.WeblogEntry;
    28  import org.apache.roller.weblogger.ui.struts2.util.UIAction;
    29  import org.apache.roller.weblogger.util.cache.CacheManager;
    30  
    31  
    32  /**
    33   * Remove a weblog entry.
    34   */
    35  public class EntryRemove extends UIAction {
    36      
             /* 
    P/P       *  Method: org.apache.roller.weblogger.ui.struts2.editor.EntryRemove__static_init
              * 
              *  Postconditions:
              *    init'ed(log)
              */
    37      private static Log log = LogFactory.getLog(EntryRemove.class);
    38      
    39      // id of entry to remove
    40      private String removeId = null;
    41      
    42      // entry object to remove
    43      private WeblogEntry removeEntry = null;
    44      
    45      
             /* 
    P/P       *  Method: void org.apache.roller.weblogger.ui.struts2.editor.EntryRemove()
              * 
              *  Postconditions:
              *    this.actionName == &"entryRemove"
              *    this.desiredMenu == &"editor"
              *    this.pageTitle == &"weblogEdit.title.newEntry"
              *    this.removeEntry == null
              *    this.removeId == null
              */
    46      public EntryRemove() {
    47          this.actionName = "entryRemove";
    48          this.desiredMenu = "editor";
    49          this.pageTitle = "weblogEdit.title.newEntry";
    50      }
    51      
    52      
    53      public void myPrepare() {
                 /* 
    P/P           *  Method: void myPrepare()
                  * 
                  *  Preconditions:
                  *    init'ed(this.removeId)
                  *    (soft) log != null
                  * 
                  *  Presumptions:
                  *    org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@56 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@56 != null
                  * 
                  *  Postconditions:
                  *    possibly_updated(this.removeEntry)
                  * 
                  *  Test Vectors:
                  *    this.removeId: Addr_Set{null}, Inverse{null}
                  */
    54          if(getRemoveId() != null) {
    55              try {
    56                  WeblogManager wmgr = WebloggerFactory.getWeblogger().getWeblogManager();
    57                  setRemoveEntry(wmgr.getWeblogEntry(getRemoveId()));
    58              } catch (WebloggerException ex) {
    59                  log.error("Error looking up entry by id - "+getRemoveId(), ex);
    60              }
    61          }
    62      }
    63      
    64      
    65      public String execute() {
                 /* 
    P/P           *  Method: String execute()
                  * 
                  *  Postconditions:
                  *    return_value == &"input"
                  */
    66          return INPUT;
    67      }
    68      
    69      
    70      public String remove() {
    71          
                 /* 
    P/P           *  Method: String remove()
                  * 
                  *  Preconditions:
                  *    init'ed(this.removeEntry)
                  *    (soft) log != null
                  *    (soft) init'ed(this.removeId)
                  * 
                  *  Presumptions:
                  *    org.apache.roller.weblogger.business.Weblogger:getIndexManager(...)@80 != null
                  *    org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@93 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@80 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@93 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@95 != null
                  * 
                  *  Postconditions:
                  *    return_value in Addr_Set{&"error",&"success",&"input"}
                  * 
                  *  Test Vectors:
                  *    this.removeEntry: Addr_Set{null}, Inverse{null}
                  */
    72          if(getRemoveEntry() != null) try {
    73              
    74              WeblogEntry entry = getRemoveEntry();
    75              
    76              try {
    77                  // remove the entry from the search index
    78                  // TODO: can we do this in a better way?
    79                  entry.setStatus(WeblogEntry.DRAFT);
    80                  IndexManager manager = WebloggerFactory.getWeblogger().getIndexManager();
    81                  manager.addEntryReIndexOperation(entry);
    82              } catch (WebloggerException ex) {
    83                  log.warn("Trouble triggering entry indexing", ex);
    84              }
    85              
    86              // remove from search index
    87              removeEntryIndex(entry);
    88              
    89              // flush caches
    90              CacheManager.invalidate(entry);
    91              
    92              // remove entry itself
    93              WeblogManager wmgr = WebloggerFactory.getWeblogger().getWeblogManager();
    94              wmgr.removeWeblogEntry(entry);
    95              WebloggerFactory.getWeblogger().flush();
    96              
    97              // note to user
    98              addMessage("weblogEdit.entryRemoved");
    99              
   100              return SUCCESS;
   101              
   102          } catch(Exception e) {
   103              log.error("Error removing entry "+getRemoveId(), e);
   104              // TODO: i18n
   105              addError("Error removing entry");
   106          } else {
   107              addError("weblogEntry.notFound");
   108              return ERROR;
   109          }
   110          
   111          return INPUT;
   112      }
   113      
   114      
   115      /**
   116       * Trigger reindexing of modified entry.
   117       */
   118      protected void removeEntryIndex(WeblogEntry entry) {
                 /* 
    P/P           *  Method: void removeEntryIndex(WeblogEntry)
                  * 
                  *  Preconditions:
                  *    entry != null
                  *    (soft) log != null
                  * 
                  *  Presumptions:
                  *    org.apache.roller.weblogger.business.Weblogger:getIndexManager(...)@119 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@119 != null
                  * 
                  *  Test Vectors:
                  *    org.apache.roller.weblogger.pojos.WeblogEntry:isPublished(...)@122: {0}, {1}
                  */
   119          IndexManager manager = WebloggerFactory.getWeblogger().getIndexManager();
   120          
   121          // if published, index the entry
   122          if (entry.isPublished()) {
   123              try {
   124                  manager.removeEntryIndexOperation(entry);
   125              } catch (WebloggerException ex) {
   126                  log.warn("Trouble triggering entry indexing", ex);
   127              }
   128          }
   129      }
   130      
   131      
   132      public String getRemoveId() {
                 /* 
    P/P           *  Method: String getRemoveId()
                  * 
                  *  Preconditions:
                  *    init'ed(this.removeId)
                  * 
                  *  Postconditions:
                  *    return_value == this.removeId
                  *    init'ed(return_value)
                  */
   133          return removeId;
   134      }
   135  
   136      public void setRemoveId(String removeId) {
                 /* 
    P/P           *  Method: void setRemoveId(String)
                  * 
                  *  Postconditions:
                  *    this.removeId == removeId
                  *    init'ed(this.removeId)
                  */
   137          this.removeId = removeId;
   138      }
   139  
   140      public WeblogEntry getRemoveEntry() {
                 /* 
    P/P           *  Method: WeblogEntry getRemoveEntry()
                  * 
                  *  Preconditions:
                  *    init'ed(this.removeEntry)
                  * 
                  *  Postconditions:
                  *    return_value == this.removeEntry
                  *    init'ed(return_value)
                  */
   141          return removeEntry;
   142      }
   143  
   144      public void setRemoveEntry(WeblogEntry removeEntry) {
                 /* 
    P/P           *  Method: void setRemoveEntry(WeblogEntry)
                  * 
                  *  Postconditions:
                  *    this.removeEntry == removeEntry
                  *    init'ed(this.removeEntry)
                  */
   145          this.removeEntry = removeEntry;
   146      }
   147      
   148  }








SofCheck Inspector Build Version : 2.18479
EntryRemove.java 2009-Jan-02 14:24:52
EntryRemove.class 2009-Sep-04 03:12:45