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 |