File Source: EntryRemove.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.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23 import org.apache.roller.weblogger.WebloggerException;
24 import org.apache.roller.weblogger.business.WebloggerFactory;
25 import org.apache.roller.weblogger.business.WeblogManager;
26 import org.apache.roller.weblogger.business.search.IndexManager;
27 import org.apache.roller.weblogger.pojos.WeblogEntry;
28 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
29 import org.apache.roller.weblogger.util.cache.CacheManager;
30
31
32 /**
33 * Remove a weblog entry.
34 */
35 public class EntryRemove extends UIAction {
36
/*
P/P * Method: org.apache.roller.weblogger.ui.struts2.editor.EntryRemove__static_init
*
* Postconditions:
* init'ed(log)
*/
37 private static Log log = LogFactory.getLog(EntryRemove.class);
38
39 // id of entry to remove
40 private String removeId = null;
41
42 // entry object to remove
43 private WeblogEntry removeEntry = null;
44
45
/*
P/P * Method: void org.apache.roller.weblogger.ui.struts2.editor.EntryRemove()
*
* Postconditions:
* this.actionName == &"entryRemove"
* this.desiredMenu == &"editor"
* this.pageTitle == &"weblogEdit.title.newEntry"
* this.removeEntry == null
* this.removeId == null
*/
46 public EntryRemove() {
47 this.actionName = "entryRemove";
48 this.desiredMenu = "editor";
49 this.pageTitle = "weblogEdit.title.newEntry";
50 }
51
52
53 public void myPrepare() {
/*
P/P * Method: void myPrepare()
*
* Preconditions:
* init'ed(this.removeId)
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@56 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@56 != null
*
* Postconditions:
* possibly_updated(this.removeEntry)
*
* Test Vectors:
* this.removeId: Addr_Set{null}, Inverse{null}
*/
54 if(getRemoveId() != null) {
55 try {
56 WeblogManager wmgr = WebloggerFactory.getWeblogger().getWeblogManager();
57 setRemoveEntry(wmgr.getWeblogEntry(getRemoveId()));
58 } catch (WebloggerException ex) {
59 log.error("Error looking up entry by id - "+getRemoveId(), ex);
60 }
61 }
62 }
63
64
65 public String execute() {
/*
P/P * Method: String execute()
*
* Postconditions:
* return_value == &"input"
*/
66 return INPUT;
67 }
68
69
70 public String remove() {
71
/*
P/P * Method: String remove()
*
* Preconditions:
* init'ed(this.removeEntry)
* (soft) log != null
* (soft) init'ed(this.removeId)
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getIndexManager(...)@80 != null
* org.apache.roller.weblogger.business.Weblogger:getWeblogManager(...)@93 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@80 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@93 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@95 != null
*
* Postconditions:
* return_value in Addr_Set{&"error",&"success",&"input"}
*
* Test Vectors:
* this.removeEntry: Addr_Set{null}, Inverse{null}
*/
72 if(getRemoveEntry() != null) try {
73
74 WeblogEntry entry = getRemoveEntry();
75
76 try {
77 // remove the entry from the search index
78 // TODO: can we do this in a better way?
79 entry.setStatus(WeblogEntry.DRAFT);
80 IndexManager manager = WebloggerFactory.getWeblogger().getIndexManager();
81 manager.addEntryReIndexOperation(entry);
82 } catch (WebloggerException ex) {
83 log.warn("Trouble triggering entry indexing", ex);
84 }
85
86 // remove from search index
87 removeEntryIndex(entry);
88
89 // flush caches
90 CacheManager.invalidate(entry);
91
92 // remove entry itself
93 WeblogManager wmgr = WebloggerFactory.getWeblogger().getWeblogManager();
94 wmgr.removeWeblogEntry(entry);
95 WebloggerFactory.getWeblogger().flush();
96
97 // note to user
98 addMessage("weblogEdit.entryRemoved");
99
100 return SUCCESS;
101
102 } catch(Exception e) {
103 log.error("Error removing entry "+getRemoveId(), e);
104 // TODO: i18n
105 addError("Error removing entry");
106 } else {
107 addError("weblogEntry.notFound");
108 return ERROR;
109 }
110
111 return INPUT;
112 }
113
114
115 /**
116 * Trigger reindexing of modified entry.
117 */
118 protected void removeEntryIndex(WeblogEntry entry) {
/*
P/P * Method: void removeEntryIndex(WeblogEntry)
*
* Preconditions:
* entry != null
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getIndexManager(...)@119 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@119 != null
*
* Test Vectors:
* org.apache.roller.weblogger.pojos.WeblogEntry:isPublished(...)@122: {0}, {1}
*/
119 IndexManager manager = WebloggerFactory.getWeblogger().getIndexManager();
120
121 // if published, index the entry
122 if (entry.isPublished()) {
123 try {
124 manager.removeEntryIndexOperation(entry);
125 } catch (WebloggerException ex) {
126 log.warn("Trouble triggering entry indexing", ex);
127 }
128 }
129 }
130
131
132 public String getRemoveId() {
/*
P/P * Method: String getRemoveId()
*
* Preconditions:
* init'ed(this.removeId)
*
* Postconditions:
* return_value == this.removeId
* init'ed(return_value)
*/
133 return removeId;
134 }
135
136 public void setRemoveId(String removeId) {
/*
P/P * Method: void setRemoveId(String)
*
* Postconditions:
* this.removeId == removeId
* init'ed(this.removeId)
*/
137 this.removeId = removeId;
138 }
139
140 public WeblogEntry getRemoveEntry() {
/*
P/P * Method: WeblogEntry getRemoveEntry()
*
* Preconditions:
* init'ed(this.removeEntry)
*
* Postconditions:
* return_value == this.removeEntry
* init'ed(return_value)
*/
141 return removeEntry;
142 }
143
144 public void setRemoveEntry(WeblogEntry removeEntry) {
/*
P/P * Method: void setRemoveEntry(WeblogEntry)
*
* Postconditions:
* this.removeEntry == removeEntry
* init'ed(this.removeEntry)
*/
145 this.removeEntry = removeEntry;
146 }
147
148 }
SofCheck Inspector Build Version : 2.18479
| EntryRemove.java |
2009-Jan-02 14:24:52 |
| EntryRemove.class |
2009-Sep-04 03:12:45 |