1 /*
2 * Copyright 2001,2004 The Apache Software Foundation.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not 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.
15 */
16
17 package org.apache.commons.scaffold.util;
18
19
20 import java.util.Locale;
21 import java.util.Map;
22
23 import org.apache.commons.beanutils.BeanUtils;
24
25 // ------------------------------------------------------------------------ 78
26
27 /**
28 * Base implementation of ProcessBean with default functionality.
29 * The only method that must be overridden is
30 * <code>Object execute(Object)</code>.
31 * :TODO: Change from BeanUtil.populate to copyProperties in 1.1
32 * version.
33 * @author Ted Husted
34 * @version $Revision: 155464 $ $Date: 2005-02-26 13:26:54 +0000 (Sat, 26 Feb 2005) $
35 */
36 public abstract class ProcessBeanBase implements ProcessBean {
37
38 // ----------------------------------------------------------- Properties
39
40
41 /**
42 * The locale for this bean instance, if any.
43 */
44 private Locale locale = null;
45
46
47 public Locale getLocale() {
48 return this.locale;
49 }
50
51
52 public void setLocale(Locale locale) {
53 this.locale = locale;
54 }
55
56
57 /**
58 * The remoteNode for this bean instance, if any.
59 */
60 private Integer remoteNode = null;
61
62
63 public Integer getRemoteNode() {
64 return this.remoteNode;
65 }
66
67
68 public void setRemoteNode(Integer remoteNode) {
69 this.remoteNode = remoteNode;
70 }
71
72
73 /**
74 * Set the remoteNode using a String in
75 * the format usually given
76 * by the REMOTE_ADDR CGI variable, or
77 * ServletRequest.getRemoteAddr().
78 * NOTE: <b>not implemented; returns 0</b>.
79 * @return An Integer value based on RemoteAddr string.
80 */
81 public void setRemoteAddr(String remoteAddr) {
82
83 setRemoteNode(new Integer(0)); // :FIXME:
84
85 }
86
87
88 /**
89 * Return the String representation
90 * of an IP address expressed
91 * as an Integer, into the format usually given
92 * by the REMOTE_ADDR CGI variable, or
93 * ServletRequest.getRemoteAddr().
94 * NOTE: <b>not implemented; returns zeros.</b>
95 * @return An Integer value based on RemoteAddr string.
96 */
97 public String getRemoteAddr() {
98
99 return new String("000.000.000.000"); // :FIXME:
100
101 }
102
103
104 /**
105 * The remote server object for this bean instance, if any.
106 * This is often an application-scope object that can be used
107 * to process a JDBC query or equivalent.
108 * By default, the ProcessAction will set this to any
109 * application scope object found under the key "REMOTE_SERVER",
110 * or to null.
111 */
112 private Object server = null;
113
114
115 public Object getRemoteServer() {
116 return this.server;
117 }
118
119
120 public void setRemoteServer(Object server) {
121 this.server = server;
122 }
123
124
125 /**
126 * The parameter
127 */
128 private String parameter = null;
129
130
131 public String getParameter() {
132 return (this.parameter);
133 }
134
135
136 public void setParameter(String parameter) {
137 this.parameter = parameter;
138 }
139
140
141 // --------------------------------------------------------- Public Methods
142
143
144 /**
145 * Perform business logic for this bean.
146 * Called by other execute signatures (after populating
147 * subclass properties).
148 * The default implementation returns the bean instance (this).
149 * Subclasses should override to provide functionality.
150 * @exception Subclasses can throw any Exception
151 */
152 public Object execute() throws Exception {
153
154 return this;
155
156 } // end execute
157
158
159 /**
160 * Perform business logic for this instance by obtaining any
161 * properties from the parameters object.
162 * The base implementation casts the parameters as a Map,
163 * populates the bean, and returns execute().
164 * @exception Subclasses can throw any Exception
165 */
166 public Object execute(Object parameters) throws Exception {
167
168 if (parameters!=null) {
169 Map map = (Map) parameters;
170 BeanUtils.copyProperties(this,map);
171 }
172
173 return execute();
174
175 } // end execute
176
177 } // end ProcessBeanBase