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 |