File Source: Referrers.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.util.Collections;
22 import java.util.List;
23 import org.apache.commons.logging.Log;
24 import org.apache.commons.logging.LogFactory;
25 import org.apache.roller.weblogger.business.referrers.RefererManager;
26 import org.apache.roller.weblogger.business.WebloggerFactory;
27 import org.apache.roller.weblogger.pojos.WeblogPermission;
28 import org.apache.roller.weblogger.pojos.WeblogReferrer;
29 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
30 import org.apache.roller.weblogger.util.cache.CacheManager;
31
32
33 /**
34 * Manage weblog referrer data.
35 */
36 public class Referrers extends UIAction {
37
/*
P/P * Method: org.apache.roller.weblogger.ui.struts2.editor.Referrers__static_init
*
* Postconditions:
* init'ed(log)
*/
38 private static Log log = LogFactory.getLog(Referrers.class);
39
40 // list of referrers to display
41 private List<WeblogReferrer> referrers = Collections.EMPTY_LIST;
42
43 // referrers hits today
44 private int dayHits = 0;
45
46 // ids of referrers to remove
47 private String[] removeIds = null;
48
49
/*
P/P * Method: void org.apache.roller.weblogger.ui.struts2.editor.Referrers()
*
* Presumptions:
* init'ed(java.util.Collections.EMPTY_LIST)
*
* Postconditions:
* this.actionName == &"referrers"
* this.dayHits == 0
* this.desiredMenu == &"editor"
* this.pageTitle == &"referers.todaysReferers"
* this.referrers == java.util.Collections.EMPTY_LIST
* (soft) init'ed(this.referrers)
* this.removeIds == null
*/
50 public Referrers() {
51 this.actionName = "referrers";
52 this.desiredMenu = "editor";
53 this.pageTitle = "referers.todaysReferers";
54 }
55
56
57 @Override
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 /**
64 * Show list of weblog referrers.
65 */
66 public String execute() {
67
/*
P/P * Method: String execute()
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getRefererManager(...)@68 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@68 != null
* org.apache.roller.weblogger.ui.struts2.editor.Referrers:getActionWeblog(...)@73 != null
*
* Postconditions:
* return_value == &"list"
* possibly_updated(this.dayHits)
* possibly_updated(this.referrers)
*/
68 RefererManager refmgr = WebloggerFactory.getWeblogger().getRefererManager();
69 try {
70 setDayHits(refmgr.getDayHits(getActionWeblog()));
71 setReferrers(refmgr.getTodaysReferers(getActionWeblog()));
72 } catch (Exception ex) {
73 log.error("Error getting referrer data for weblog - "+getActionWeblog().getHandle(), ex);
74 // TODO: i18n
75 addError("Error loading referrer data");
76 }
77
78 return LIST;
79 }
80
81
82 /**
83 * Reset all referrer counts.
84 */
85 public String reset() {
86
87 try {
/*
P/P * Method: String reset()
*
* Preconditions:
* (soft) log != null
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getRefererManager(...)@88 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@88 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@90 != null
*
* Postconditions:
* return_value == &"list"
* possibly_updated(this.dayHits)
* possibly_updated(this.referrers)
*/
88 RefererManager refmgr = WebloggerFactory.getWeblogger().getRefererManager();
89 refmgr.clearReferrers(getActionWeblog());
90 WebloggerFactory.getWeblogger().flush();
91
92 CacheManager.invalidate(getActionWeblog());
93 } catch (Exception ex) {
94 log.error("Error resetting referrers", ex);
95 // TODO: i18n
96 addError("Error resetting referrers");
97 }
98
99 return execute();
100 }
101
102
103 /**
104 * Remove selected referrers.
105 */
106 public String remove() {
107
/*
P/P * Method: String remove()
*
* Preconditions:
* init'ed(this.removeIds)
* (soft) log != null
* (soft) this.removeIds.length <= 232-1
* (soft) init'ed(this.removeIds[...])
*
* Presumptions:
* org.apache.roller.weblogger.business.Weblogger:getRefererManager(...)@110 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@110 != null
* org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@124 != null
* org.apache.roller.weblogger.business.referrers.RefererManager:getReferer(...)@115 != null
* org.apache.roller.weblogger.ui.struts2.editor.Referrers:getActionWeblog(...)@118 != null
*
* Postconditions:
* return_value == &"list"
* possibly_updated(this.dayHits)
* possibly_updated(this.referrers)
*
* Test Vectors:
* this.removeIds: Addr_Set{null}, Inverse{null}
* org.apache.roller.weblogger.pojos.Weblog:equals(...)@118: {0}, {1}
*/
108 String[] removeIds = getRemoveIds();
109 if(removeIds != null) {
110 RefererManager refmgr = WebloggerFactory.getWeblogger().getRefererManager();
111
112 try {
113 WeblogReferrer referer = null;
114 for (int i=0; i < removeIds.length; i++) {
115 referer = refmgr.getReferer(removeIds[i]);
116
117 // make sure referrer belongs to action weblog
118 if(getActionWeblog().equals(referer.getWebsite())) {
119 refmgr.removeReferer(referer);
120 }
121 }
122
123 // flush
124 WebloggerFactory.getWeblogger().flush();
125
126 // notify caches
127 CacheManager.invalidate(getActionWeblog());
128
129 addMessage("referers.deletedReferers");
130
131 } catch (Exception ex) {
132 log.error("Error removing referrers", ex);
133 // TODO: i18n
134 addError("Error removing referrers");
135 }
136 } else {
137 addError("referers.noReferersSpecified");
138 }
139
140 return execute();
141 }
142
143
144 public List<WeblogReferrer> getReferrers() {
/*
P/P * Method: List getReferrers()
*
* Preconditions:
* init'ed(this.referrers)
*
* Postconditions:
* return_value == this.referrers
* init'ed(return_value)
*/
145 return referrers;
146 }
147
148 public void setReferrers(List<WeblogReferrer> referrers) {
/*
P/P * Method: void setReferrers(List)
*
* Postconditions:
* this.referrers == referrers
* init'ed(this.referrers)
*/
149 this.referrers = referrers;
150 }
151
152 public int getDayHits() {
/*
P/P * Method: int getDayHits()
*
* Preconditions:
* init'ed(this.dayHits)
*
* Postconditions:
* return_value == this.dayHits
* init'ed(return_value)
*/
153 return dayHits;
154 }
155
156 public void setDayHits(int dayHits) {
/*
P/P * Method: void setDayHits(int)
*
* Postconditions:
* this.dayHits == dayHits
* init'ed(this.dayHits)
*/
157 this.dayHits = dayHits;
158 }
159
160 public String[] getRemoveIds() {
/*
P/P * Method: String[] getRemoveIds()
*
* Preconditions:
* init'ed(this.removeIds)
*
* Postconditions:
* return_value == this.removeIds
* init'ed(return_value)
*/
161 return removeIds;
162 }
163
164 public void setRemoveIds(String[] removeIds) {
/*
P/P * Method: void setRemoveIds(String[])
*
* Postconditions:
* this.removeIds == removeIds
* init'ed(this.removeIds)
*/
165 this.removeIds = removeIds;
166 }
167
168 }
SofCheck Inspector Build Version : 2.18479
| Referrers.java |
2009-Jan-02 14:25:00 |
| Referrers.class |
2009-Sep-04 03:12:45 |