File Source: BookmarkEdit.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.WeblogPermission;
31 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
32 import org.apache.roller.weblogger.util.cache.CacheManager;
33 import org.apache.struts2.interceptor.validation.SkipValidation;
34
35
36 /**
37 * Add a new bookmark to a folder.
38 */
39 public class BookmarkEdit extends UIAction {
40
/*
P/P * Method: org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit__static_init
*
* Postconditions:
* init'ed(log)
*/
41 private static Log log = LogFactory.getLog(BookmarkEdit.class);
42
43 // the bookmark we are editing
44 private WeblogBookmark bookmark = null;
45
46 // bean for managing form data
47 private BookmarkBean bean = new BookmarkBean();
48
49
/*
P/P * Method: void org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit()
*
* Postconditions:
* this.actionName == &"bookmarkEdit"
* this.bean == &new BookmarkBean(BookmarkEdit#1)
* this.bookmark == null
* this.bean.description == null
* this.bean.feedUrl == null
* this.bean.id == null
* this.bean.image == null
* this.bean.name == null
* this.bean.url == null
* this.desiredMenu == &"editor"
* ...
*/
50 public BookmarkEdit() {
51 this.actionName = "bookmarkEdit";
52 this.desiredMenu = "editor";
53 this.pageTitle = "bookmarkForm.edit.title";
54 }
55
56
57 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)
*/
58 return WeblogPermission.ADMIN;
59 }
60
61
62 public void myPrepare() {
63 try {
/*
P/P * Method: void myPrepare()
*
* Preconditions:
* this.bean != null
* init'ed(this.bean.id)
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getBookmarkManager(...)@64 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@64 != null
*
* Postconditions:
* possibly_updated(this.bookmark)
*
* Test Vectors:
* org.apache.commons.lang.StringUtils:isEmpty(...)@65: {1}, {0}
*/
64 BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
65 if(!StringUtils.isEmpty(getBean().getId())) {
66 setBookmark(bmgr.getBookmark(getBean().getId()));
67 }
68 } catch (WebloggerException ex) {
69 log.error("Error looking up bookmark - "+getBean().getId(), ex);
70 }
71 }
72
73
74 @SkipValidation
75 public String execute() {
76
/*
P/P * Method: String execute()
*
* Preconditions:
* init'ed(this.bookmark)
* (soft) this.bean != null
*
* Postconditions:
* return_value in Addr_Set{&"input",&"error"}
* possibly_updated(this.bean.description)
* possibly_updated(this.bean.feedUrl)
* possibly_updated(this.bean.id)
* possibly_updated(this.bean.image)
* possibly_updated(this.bean.name)
* possibly_updated(this.bean.priority)
* possibly_updated(this.bean.url)
* possibly_updated(this.bean.weight)
*
* Test Vectors:
* this.bookmark: Inverse{null}, Addr_Set{null}
*/
77 if(getBookmark() == null) {
78 // TODO: i18n
79 addError("Cannot edit null bookmark");
80 return ERROR;
81 }
82
83 // make sure bean is properly loaded with pojo data
84 getBean().copyFrom(getBookmark());
85
86 return INPUT;
87 }
88
89
90 public String save() {
91
/*
P/P * Method: String save()
*
* Preconditions:
* init'ed(this.bookmark)
* (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(...)@105 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@105 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@107 != null
*
* Postconditions:
* return_value in Addr_Set{&"input",&"error"}
*
* Test Vectors:
* this.bookmark: Inverse{null}, Addr_Set{null}
* org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit:hasActionErrors(...)@101: {1}, {0}
*/
92 if(getBookmark() == null) {
93 // TODO: i18n
94 addError("Cannot edit null bookmark");
95 return ERROR;
96 }
97
98 // validation
99 myValidate();
100
101 if(!hasActionErrors()) try {
102
103 getBean().copyTo(getBookmark());
104
105 BookmarkManager bmgr = WebloggerFactory.getWeblogger().getBookmarkManager();
106 bmgr.saveBookmark(getBookmark());
107 WebloggerFactory.getWeblogger().flush();
108
109 CacheManager.invalidate(getBookmark());
110
111 // TODO: i18n
112 addMessage("bookmark updated");
113
114 } catch(Exception ex) {
115 log.error("Error saving bookmark", ex);
116 // TODO: i18n
117 addError("Error saving bookmark");
118 }
119
120 return INPUT;
121 }
122
123
124 public void myValidate() {
/*
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(...)@125: {0}, {1}
* org.apache.commons.lang.StringUtils:isNotEmpty(...)@128: {0}, {1}
* org.apache.commons.lang.StringUtils:isNotEmpty(...)@131: {0}, {1}
*/
125 if (StringUtils.isNotEmpty(getBean().getUrl()) && !validURL(getBean().getUrl())) {
126 addError("bookmarkgetBean().error.invalidURL", getBean().getUrl());
127 }
128 if (StringUtils.isNotEmpty(getBean().getFeedUrl()) && !validURL(getBean().getFeedUrl())) {
129 addError("bookmarkgetBean().error.invalidURL", getBean().getFeedUrl());
130 }
131 if (StringUtils.isNotEmpty(getBean().getImage()) && !validURL(getBean().getImage())) {
132 addError("bookmarkgetBean().error.invalidURL", getBean().getImage());
133 }
134 }
135
136 public boolean validURL(String url) {
/*
P/P * Method: bool validURL(String)
*
* Postconditions:
* init'ed(return_value)
*/
137 boolean valid = false;
138 try {
+ 139 URL test = new URL(url);
140 valid = true;
141 } catch (MalformedURLException intentionallyIgnored) {}
142 return valid;
143 }
144
145
146 public WeblogBookmark getBookmark() {
/*
P/P * Method: WeblogBookmark getBookmark()
*
* Preconditions:
* init'ed(this.bookmark)
*
* Postconditions:
* return_value == this.bookmark
* init'ed(return_value)
*/
147 return bookmark;
148 }
149
150 public void setBookmark(WeblogBookmark bookmark) {
/*
P/P * Method: void setBookmark(WeblogBookmark)
*
* Postconditions:
* this.bookmark == bookmark
* init'ed(this.bookmark)
*/
151 this.bookmark = bookmark;
152 }
153
154 public BookmarkBean getBean() {
/*
P/P * Method: BookmarkBean getBean()
*
* Preconditions:
* init'ed(this.bean)
*
* Postconditions:
* return_value == this.bean
* init'ed(return_value)
*/
155 return bean;
156 }
157
158 public void setBean(BookmarkBean bean) {
/*
P/P * Method: void setBean(BookmarkBean)
*
* Postconditions:
* this.bean == bean
* init'ed(this.bean)
*/
159 this.bean = bean;
160 }
161
162 }
SofCheck Inspector Build Version : 2.18479
| BookmarkEdit.java |
2009-Jan-02 14:25:02 |
| BookmarkEdit.class |
2009-Sep-04 03:12:45 |