File Source: FolderAdd.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.lang.StringUtils;
    22  import org.apache.commons.logging.Log;
    23  import org.apache.commons.logging.LogFactory;
    24  import org.apache.roller.weblogger.WebloggerException;
    25  import org.apache.roller.weblogger.business.BookmarkManager;
    26  import org.apache.roller.weblogger.business.WebloggerFactory;
    27  import org.apache.roller.weblogger.pojos.WeblogBookmarkFolder;
    28  import org.apache.roller.weblogger.pojos.WeblogPermission;
    29  import org.apache.roller.weblogger.ui.struts2.util.UIAction;
    30  import org.apache.roller.weblogger.util.cache.CacheManager;
    31  import org.apache.struts2.interceptor.validation.SkipValidation;
    32  
    33  
    34  /**
    35   * Add a new subfolder to an existing folder.
    36   */
    37  public class FolderAdd extends UIAction {
    38      
             /* 
    P/P       *  Method: org.apache.roller.weblogger.ui.struts2.editor.FolderAdd__static_init
              * 
              *  Postconditions:
              *    init'ed(log)
              */
    39      private static Log log = LogFactory.getLog(FolderAdd.class);
    40      
    41      // the id of the folder we are adding the new subfolder into
    42      private String folderId = null;
    43      
    44      // the folder we are adding the new subfolder into
    45      private WeblogBookmarkFolder folder = null;
    46      
    47      // bean for managing form data
    48      private FolderBean bean = new FolderBean();
    49      
    50      
             /* 
    P/P       *  Method: void org.apache.roller.weblogger.ui.struts2.editor.FolderAdd()
              * 
              *  Postconditions:
              *    this.actionName == &"folderAdd"
              *    this.bean == &new FolderBean(FolderAdd#1)
              *    this.desiredMenu == &"editor"
              *    this.folder == null
              *    this.folderId == null
              *    this.bean.description == null
              *    this.bean.id == null
              *    this.bean.name == null
              *    this.pageTitle == &"folderForm.add.title"
              *    new FolderBean(FolderAdd#1) num objects == 1
              */
    51      public FolderAdd() {
    52          this.actionName = "folderAdd";
    53          this.desiredMenu = "editor";
    54          this.pageTitle = "folderForm.add.title";
    55      }
    56      
    57      
    58      public short requiredWeblogPermissions() {
                 /* 
    P/P           *  Method: short requiredWeblogPermissions()
                  * 
                  *  Presumptions:
                  *    init'ed(org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN)
                  * 
                  *  Postconditions:
                  *    return_value == org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN
                  *    (soft) init'ed(return_value)
                  */
    59          return WeblogPermission.ADMIN;
    60      }
    61      
    62      
    63      public void myPrepare() {
    64          try {
                     /* 
    P/P               *  Method: void myPrepare()
                      * 
                      *  Preconditions:
                      *    init'ed(this.folderId)
                      *    (soft) log != null
                      * 
                      *  Presumptions:
                      *    org.apache.roller.weblogger.business.Weblogger:getBookmarkManager(...)@65 != null
                      *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@65 != null
                      * 
                      *  Postconditions:
                      *    possibly_updated(this.folder)
                      * 
                      *  Test Vectors:
                      *    org.apache.commons.lang.StringUtils:isEmpty(...)@66: {1}, {0}
                      */
    65              BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
    66              if(!StringUtils.isEmpty(getFolderId())) {
    67                  setFolder(bmgr.getFolder(getFolderId()));
    68              }
    69          } catch (WebloggerException ex) {
    70              log.error("Error looking up folder - "+getFolderId(), ex);
    71          }
    72      }
    73      
    74      
    75      @SkipValidation
    76      public String execute() {
    77          
                 /* 
    P/P           *  Method: String execute()
                  * 
                  *  Preconditions:
                  *    init'ed(this.folder)
                  * 
                  *  Postconditions:
                  *    return_value in Addr_Set{&"input",&"error"}
                  * 
                  *  Test Vectors:
                  *    this.folder: Inverse{null}, Addr_Set{null}
                  */
    78          if(getFolder() == null) {
    79              // TODO: i18n
    80              addError("Cannot add folder to null parent folder");
    81              return ERROR;
    82          }
    83          
    84          return INPUT;
    85      }
    86  
    87      
    88      public String save() {
    89          
                 /* 
    P/P           *  Method: String save()
                  * 
                  *  Preconditions:
                  *    init'ed(this.folder)
                  *    (soft) log != null
                  *    (soft) this.bean != null
                  *    (soft) init'ed(this.bean.description)
                  *    (soft) init'ed(this.bean.name)
                  * 
                  *  Presumptions:
                  *    org.apache.roller.weblogger.business.Weblogger:getBookmarkManager(...)@111 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@111 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@113 != null
                  * 
                  *  Postconditions:
                  *    return_value in Addr_Set{&"success",&"input",&"error"}
                  * 
                  *  Test Vectors:
                  *    this.folder: Inverse{null}, Addr_Set{null}
                  *    org.apache.roller.weblogger.ui.struts2.editor.FolderAdd:hasActionErrors(...)@99: {1}, {0}
                  */
    90          if(getFolder() == null) {
    91              // TODO: i18n
    92              addError("Cannot add folder to null parent folder");
    93              return ERROR;
    94          }
    95          
    96          // validation
    97          myValidate();
    98          
    99          if(!hasActionErrors()) try {
   100              
   101              WeblogBookmarkFolder newFolder = new WeblogBookmarkFolder(
   102                      getFolder(),
   103                      getBean().getName(),
   104                      getBean().getDescription(),
   105                      getActionWeblog());
   106              
   107              // add new folder to parent
   108              getFolder().addFolder(newFolder);
   109              
   110              // save changes
   111              BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
   112              bmgr.saveFolder(newFolder);
   113              WebloggerFactory.getWeblogger().flush();
   114              
   115              // notify caches
   116              CacheManager.invalidate(newFolder);
   117              
   118              // TODO: i18n
   119              addMessage("folder added");
   120              
   121              return SUCCESS;
   122              
   123          } catch(Exception ex) {
   124              log.error("Error saving new folder", ex);
   125              // TODO: i18n
   126              addError("Error saving new folder");
   127          }
   128  
   129          
   130          return INPUT;
   131      }
   132  
   133      
   134      // TODO: validation
   135      public void myValidate() {
   136          
   137          // name is required, has max length, no html
   138          
   139          // make sure new name is not a duplicate of an existing folder
                 /* 
    P/P           *  Method: void myValidate()
                  * 
                  *  Preconditions:
                  *    this.bean != null
                  *    init'ed(this.bean.name)
                  *    this.folder != null
                  * 
                  *  Test Vectors:
                  *    org.apache.roller.weblogger.pojos.WeblogBookmarkFolder:hasFolder(...)@140: {0}, {1}
                  */
   140          if(getFolder().hasFolder(getBean().getName())) {
   141              addError("folderForm.error.duplicateName", getBean().getName());
   142          }
   143      }
   144      
   145      
   146      public String getFolderId() {
                 /* 
    P/P           *  Method: String getFolderId()
                  * 
                  *  Preconditions:
                  *    init'ed(this.folderId)
                  * 
                  *  Postconditions:
                  *    return_value == this.folderId
                  *    init'ed(return_value)
                  */
   147          return folderId;
   148      }
   149  
   150      public void setFolderId(String folderId) {
                 /* 
    P/P           *  Method: void setFolderId(String)
                  * 
                  *  Postconditions:
                  *    this.folderId == folderId
                  *    init'ed(this.folderId)
                  */
   151          this.folderId = folderId;
   152      }
   153  
   154      public WeblogBookmarkFolder getFolder() {
                 /* 
    P/P           *  Method: WeblogBookmarkFolder getFolder()
                  * 
                  *  Preconditions:
                  *    init'ed(this.folder)
                  * 
                  *  Postconditions:
                  *    return_value == this.folder
                  *    init'ed(return_value)
                  */
   155          return folder;
   156      }
   157  
   158      public void setFolder(WeblogBookmarkFolder folder) {
                 /* 
    P/P           *  Method: void setFolder(WeblogBookmarkFolder)
                  * 
                  *  Postconditions:
                  *    this.folder == folder
                  *    init'ed(this.folder)
                  */
   159          this.folder = folder;
   160      }
   161  
   162      public FolderBean getBean() {
                 /* 
    P/P           *  Method: FolderBean getBean()
                  * 
                  *  Preconditions:
                  *    init'ed(this.bean)
                  * 
                  *  Postconditions:
                  *    return_value == this.bean
                  *    init'ed(return_value)
                  */
   163          return bean;
   164      }
   165  
   166      public void setBean(FolderBean bean) {
                 /* 
    P/P           *  Method: void setBean(FolderBean)
                  * 
                  *  Postconditions:
                  *    this.bean == bean
                  *    init'ed(this.bean)
                  */
   167          this.bean = bean;
   168      }
   169      
   170  }








SofCheck Inspector Build Version : 2.18479
FolderAdd.java 2009-Jan-02 14:25:00
FolderAdd.class 2009-Sep-04 03:12:45