001    /*
002     * Copyright 2001,2004 The Apache Software Foundation.
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    
017    package org.apache.commons.scaffold.util;
018    
019    
020    import java.util.Locale;
021    import java.util.Map;
022    
023    import org.apache.commons.beanutils.BeanUtils;
024    
025    // ------------------------------------------------------------------------ 78
026    
027    /**
028     * Base implementation of ProcessBean with default functionality.
029     * The only method that must be overridden is
030     * <code>Object execute(Object)</code>.
031     * :TODO: Change from BeanUtil.populate to copyProperties in 1.1
032     * version.
033     * @author Ted Husted
034     * @version $Revision: 155464 $ $Date: 2005-02-26 13:26:54 +0000 (Sat, 26 Feb 2005) $
035     */
036    public abstract class ProcessBeanBase implements ProcessBean {
037    
038    // ----------------------------------------------------------- Properties
039    
040    
041        /**
042         * The locale for this bean instance, if any.
043         */
044        private Locale locale = null;
045    
046    
047        public Locale getLocale() {
048            return this.locale;
049        }
050    
051    
052        public void setLocale(Locale locale) {
053            this.locale = locale;
054        }
055    
056    
057        /**
058         * The remoteNode for this bean instance, if any.
059         */
060        private Integer remoteNode = null;
061    
062    
063        public Integer getRemoteNode() {
064            return this.remoteNode;
065        }
066    
067    
068        public void setRemoteNode(Integer remoteNode) {
069            this.remoteNode = remoteNode;
070        }
071    
072    
073        /**
074         * Set the remoteNode using a String in
075         * the format usually given
076         * by the REMOTE_ADDR CGI variable, or
077         * ServletRequest.getRemoteAddr().
078         * NOTE: <b>not implemented; returns 0</b>.
079         * @return An Integer value based on RemoteAddr string.
080         */
081        public void setRemoteAddr(String remoteAddr) {
082    
083            setRemoteNode(new Integer(0)); // :FIXME: 
084    
085        }
086    
087    
088        /**
089         * Return the String representation
090         * of an IP address expressed
091         * as an Integer, into the format usually given
092         * by the REMOTE_ADDR CGI variable, or
093         * ServletRequest.getRemoteAddr().
094         * NOTE: <b>not implemented; returns zeros.</b>
095         * @return An Integer value based on RemoteAddr string.
096         */
097        public String getRemoteAddr() {
098    
099            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