File Source: BookmarkAdd.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 java.net.MalformedURLException;
    22  import java.net.URL;
    23  import org.apache.commons.lang.StringUtils;
    24  import org.apache.commons.logging.Log;
    25  import org.apache.commons.logging.LogFactory;
    26  import org.apache.roller.weblogger.WebloggerException;
    27  import org.apache.roller.weblogger.business.BookmarkManager;
    28  import org.apache.roller.weblogger.business.WebloggerFactory;
    29  import org.apache.roller.weblogger.pojos.WeblogBookmark;
    30  import org.apache.roller.weblogger.pojos.WeblogBookmarkFolder;
    31  import org.apache.roller.weblogger.pojos.WeblogPermission;
    32  import org.apache.roller.weblogger.ui.struts2.util.UIAction;
    33  import org.apache.roller.weblogger.util.cache.CacheManager;
    34  import org.apache.struts2.interceptor.validation.SkipValidation;
    35  
    36  
    37  /**
    38   * Add a new bookmark to a folder.
    39   */
    40  public class BookmarkAdd extends UIAction {
    41      
             /* 
    P/P       *  Method: org.apache.roller.weblogger.ui.struts2.editor.BookmarkAdd__static_init
              * 
              *  Postconditions:
              *    init'ed(log)
              */
    42      private static Log log = LogFactory.getLog(BookmarkAdd.class);
    43      
    44      // the id of the folder we are adding the bookmark into
    45      private String folderId = null;
    46      
    47      // the folder we are adding the bookmark into
    48      private WeblogBookmarkFolder folder = null;
    49      
    50      // bean for managing form data
    51      private BookmarkBean bean = new BookmarkBean();
    52      
    53      
             /* 
    P/P       *  Method: void org.apache.roller.weblogger.ui.struts2.editor.BookmarkAdd()
              * 
              *  Postconditions:
              *    this.actionName == &"bookmarkAdd"
              *    this.bean == &new BookmarkBean(BookmarkAdd#1)
              *    this.desiredMenu == &"editor"
              *    this.folder == null
              *    this.folderId == null
              *    this.bean.description == null
              *    this.bean.feedUrl == null
              *    this.bean.id == null
              *    this.bean.image == null
              *    this.bean.name == null
              *    ...
              */
    54      public BookmarkAdd() {
    55          this.actionName = "bookmarkAdd";
    56          this.desiredMenu = "editor";
    57          this.pageTitle = "bookmarkForm.add.title";
    58      }
    59      
    60      
    61      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)
                  */
    62          return WeblogPermission.ADMIN;
    63      }
    64      
    65      
    66      public void myPrepare() {
    67          try {
                     /* 
    P/P               *  Method: void myPrepare()
                      * 
                      *  Preconditions:
                      *    (soft) log != null
                      *    (soft) init'ed(this.folderId)
                      * 
                      *  Presumptions:
                      *    org.apache.roller.weblogger.business.Weblogger:getBookmarkManager(...)@68 != null
                      *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@68 != null
                      * 
                      *  Postconditions:
                      *    possibly_updated(this.folder)
                      * 
                      *  Test Vectors:
                      *    org.apache.commons.lang.StringUtils:isEmpty(...)@69: {1}, {0}
                      */
    68              BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
    69              if(!StringUtils.isEmpty(getFolderId())) {
    70                  setFolder(bmgr.getFolder(getFolderId()));
    71              }
    72          } catch (WebloggerException ex) {
    73              log.error("Error looking up folder", ex);
    74          }
    75      }
    76      
    77      
    78      @SkipValidation
    79      public String execute() {
    80          
                 /* 
    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}
                  */
    81          if(getFolder() == null) {
    82              // TODO: i18n
    83              addError("Cannot add bookmark to null folder");
    84              return ERROR;
    85          }
    86          
    87          return INPUT;
    88      }
    89  
    90      
    91      public String save() {
    92          
                 /* 
    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.feedUrl)
                  *    (soft) init'ed(this.bean.image)
                  *    (soft) init'ed(this.bean.name)
                  *    (soft) init'ed(this.bean.priority)
                  *    (soft) init'ed(this.bean.url)
                  *    (soft) init'ed(this.bean.weight)
                  * 
                  *  Presumptions:
                  *    org.apache.roller.weblogger.business.Weblogger:getBookmarkManager(...)@108 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@108 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@110 != 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.BookmarkAdd:hasActionErrors(...)@102: {1}, {0}
                  */
    93          if(getFolder() == null) {
    94              // TODO: i18n
    95              addError("Cannot add bookmark to null folder");
    96              return ERROR;
    97          }
    98          
    99          // validation
   100          myValidate();
   101          
   102          if(!hasActionErrors()) try {
   103              
   104              WeblogBookmark newBookmark = new WeblogBookmark();
   105              newBookmark.setFolder(getFolder());
   106              getBean().copyTo(newBookmark);
   107              
   108              BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
   109              bmgr.saveBookmark(newBookmark);
   110              WebloggerFactory.getWeblogger().flush();
   111              
   112              CacheManager.invalidate(newBookmark);
   113              
   114              // TODO: i18n
   115              addMessage("bookmark added");
   116              
   117              return SUCCESS;
   118              
   119          } catch(Exception ex) {
   120              log.error("Error saving new bookmark", ex);
   121              // TODO: i18n
   122              addError("Error saving new bookmark");
   123          }
   124  
   125          
   126          return INPUT;
   127      }
   128  
   129      
   130      // TODO: validation
   131      public void myValidate() {
   132          
   133          // name is required, max length, no html
   134          
   135          // url is required, valid url
   136          
                 /* 
    P/P           *  Method: void myValidate()
                  * 
                  *  Preconditions:
                  *    this.bean != null
                  *    init'ed(this.bean.feedUrl)
                  *    init'ed(this.bean.image)
                  *    init'ed(this.bean.url)
                  * 
                  *  Test Vectors:
                  *    org.apache.commons.lang.StringUtils:isNotEmpty(...)@137: {0}, {1}
                  *    org.apache.commons.lang.StringUtils:isNotEmpty(...)@140: {0}, {1}
                  *    org.apache.commons.lang.StringUtils:isNotEmpty(...)@143: {0}, {1}
                  */
   137          if (StringUtils.isNotEmpty(getBean().getUrl()) && !validURL(getBean().getUrl())) {
   138              addError("bookmarkForm.error.invalidURL", getBean().getUrl());
   139          }
   140          if (StringUtils.isNotEmpty(getBean().getFeedUrl()) && !validURL(getBean().getFeedUrl())) {
   141              addError("bookmarkForm.error.invalidURL", getBean().getFeedUrl());
   142          }
   143          if (StringUtils.isNotEmpty(getBean().getImage()) && !validURL(getBean().getImage())) {
   144              addError("bookmarkForm.error.invalidURL", getBean().getImage());
   145          }
   146      }
   147      
   148      public boolean validURL(String url) {
                 /* 
    P/P           *  Method: bool validURL(String)
                  * 
                  *  Postconditions:
                  *    init'ed(return_value)
                  */
   149          boolean valid = false;
   150          try {
+  151              URL test = new URL(url);
   152              valid = true;
   153          } catch (MalformedURLException intentionallyIgnored) {}
   154          return valid;
   155      }
   156      
   157      
   158      public String getFolderId() {
                 /* 
    P/P           *  Method: String getFolderId()
                  * 
                  *  Preconditions:
                  *    init'ed(this.folderId)
                  * 
                  *  Postconditions:
                  *    return_value == this.folderId
                  *    init'ed(return_value)
                  */
   159          return folderId;
   160      }
   161  
   162      public void setFolderId(String folderId) {
                 /* 
    P/P           *  Method: void setFolderId(String)
                  * 
                  *  Postconditions:
                  *    this.folderId == folderId
                  *    init'ed(this.folderId)
                  */
   163          this.folderId = folderId;
   164      }
   165  
   166      public WeblogBookmarkFolder getFolder() {
                 /* 
    P/P           *  Method: WeblogBookmarkFolder getFolder()
                  * 
                  *  Preconditions:
                  *    init'ed(this.folder)
                  * 
                  *  Postconditions:
                  *    return_value == this.folder
                  *    init'ed(return_value)
                  */
   167          return folder;
   168      }
   169  
   170      public void setFolder(WeblogBookmarkFolder folder) {
                 /* 
    P/P           *  Method: void setFolder(WeblogBookmarkFolder)
                  * 
                  *  Postconditions:
                  *    this.folder == folder
                  *    init'ed(this.folder)
                  */
   171          this.folder = folder;
   172      }
   173  
   174      public BookmarkBean getBean() {
                 /* 
    P/P           *  Method: BookmarkBean getBean()
                  * 
                  *  Preconditions:
                  *    init'ed(this.bean)
                  * 
                  *  Postconditions:
                  *    return_value == this.bean
                  *    init'ed(return_value)
                  */
   175          return bean;
   176      }
   177  
   178      public void setBean(BookmarkBean bean) {
                 /* 
    P/P           *  Method: void setBean(BookmarkBean)
                  * 
                  *  Postconditions:
                  *    this.bean == bean
                  *    init'ed(this.bean)
                  */
   179          this.bean = bean;
   180      }
   181      
   182  }








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