001    /**
002     * Copyright 2005-2011 The Kuali Foundation
003     *
004     * Licensed under the Educational Community 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.opensource.org/licenses/ecl2.php
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    package org.kuali.rice.ksb.messaging.web;
017    
018    import org.apache.commons.beanutils.ConversionException;
019    import org.apache.commons.beanutils.ConvertUtils;
020    import org.apache.commons.beanutils.Converter;
021    import org.apache.struts.action.ActionForm;
022    import org.kuali.rice.core.api.util.KeyValue;
023    import org.kuali.rice.ksb.messaging.PersistedMessageBO;
024    import org.kuali.rice.ksb.util.CodeTranslator;
025    
026    import java.sql.Timestamp;
027    import java.util.ArrayList;
028    import java.util.Collection;
029    import java.util.List;
030    
031    
032    /**
033     * Struts ActionForm for the {@link MessageQueueAction}.
034     *
035     * @author Kuali Rice Team (rice.collab@kuali.org)
036     */
037    public class MessageQueueForm extends ActionForm {
038    
039        private static final long serialVersionUID = -247925603792980036L;
040        public static final int DEFAULT_MAX_ROWS = 1000;
041        public static final int DEFAULT_PAGE_SIZE = 100;
042    
043        private int maxRows = DEFAULT_MAX_ROWS;
044        private int pageSize = DEFAULT_PAGE_SIZE;
045        private Long messageId;
046        private String methodToCall = "";
047        private Collection<PersistedMessageBO> messageQueueRows;
048        private String showEdit;
049        private String command;
050        private PersistedMessageBO messageQueueFromDatabase;
051        private PersistedMessageBO messageQueueFromForm;
052        private String newQueueDate;
053        private String existingQueueDate;
054        private String ipAddress;
055    
056        //  filter stuff
057        private String routeQueueIdFilter;
058        private String serviceNameFilter;
059        private String applicationIdFilter;
060        private String queueStatusFilter;
061        private String ipNumberFilter;
062        private String value1Filter;
063        private String value2Filter;
064        private String filterApplied;
065    
066        private Integer maxMessageFetcherMessages = Integer.valueOf(50);
067    
068        private String myIpAddress;
069        private String myApplicationId;
070        private String messagePersistence;
071        private String messageDelivery;
072        private String messageOff;
073        private List<KeyValue> ipAddresses = new ArrayList<KeyValue>();
074    
075        static {
076            ConvertUtils.register(new SqlTimestampConverter(), Timestamp.class);
077        }
078    
079        public MessageQueueForm() {
080            messageQueueFromForm = new PersistedMessageBO();
081            maxRows = DEFAULT_MAX_ROWS;
082            pageSize = DEFAULT_PAGE_SIZE;
083        }
084    
085        public String getRouteQueueStatusLabel(String statusCode) {
086            return CodeTranslator.getRouteQueueStatusLabel(statusCode);
087        }
088    
089        public String getMethodToCall() {
090            return methodToCall;
091        }
092    
093        public void setMethodToCall(String methodToCall) {
094            this.methodToCall = methodToCall;
095        }
096    
097        public Long getMessageId() {
098            return messageId;
099        }
100    
101        public void setMessageId(Long routeQueueId) {
102            this.messageId = routeQueueId;
103        }
104    
105        public Collection<PersistedMessageBO> getMessageQueueRows() {
106            return messageQueueRows;
107        }
108    
109        public void setMessageQueueRows(Collection<PersistedMessageBO> routeQueueRows) {
110            this.messageQueueRows = routeQueueRows;
111        }
112    
113        public int getMessageQueueRowsSize() {
114            if (messageQueueRows == null) {
115                return 0;
116            }
117            return messageQueueRows.size();
118        }
119    
120        public String getCommand() {
121            return command;
122        }
123    
124        public void setCommand(String command) {
125            this.command = command;
126        }
127    
128        public PersistedMessageBO getMessageQueueFromDatabase() {
129            return messageQueueFromDatabase;
130        }
131    
132        public void setMessageQueueFromDatabase(PersistedMessageBO existingRouteQueue) {
133            this.messageQueueFromDatabase = existingRouteQueue;
134        }
135    
136        public PersistedMessageBO getMessageQueueFromForm() {
137            return messageQueueFromForm;
138        }
139    
140        public void setMessageQueueFromForm(PersistedMessageBO routeQueue) {
141            this.messageQueueFromForm = routeQueue;
142        }
143    
144        public String getShowEdit() {
145            return showEdit;
146        }
147    
148        public void setShowEdit(String showEdit) {
149            this.showEdit = showEdit;
150        }
151    
152        public String getExistingQueueDate() {
153            return existingQueueDate;
154        }
155    
156        public void setExistingQueueDate(String existingQueueDate) {
157            this.existingQueueDate = existingQueueDate;
158        }
159    
160        public String getNewQueueDate() {
161            return newQueueDate;
162        }
163    
164        public void setNewQueueDate(String newQueueDate) {
165            this.newQueueDate = newQueueDate;
166        }
167    
168        public int getMaxRows() {
169            return maxRows;
170        }
171    
172        public void setMaxRows(int maxRows) {
173            this.maxRows = maxRows;
174        }
175    
176        public int getPageSize() {
177            return this.pageSize;
178        }
179    
180        public void setPageSize(int pageSize) {
181            this.pageSize = pageSize;
182        }
183    
184        /**
185         * @return the ipNumberFilter
186         */
187        public String getIpNumberFilter() {
188          return ipNumberFilter;
189        }
190    
191        /**
192         * @param ipNumberFilter the ipNumberFilter to set
193         */
194        public void setIpNumberFilter(String ipNumberFilter) {
195          this.ipNumberFilter = ipNumberFilter;
196        }
197    
198        /**
199         * @return the applicationIdFilter
200         */
201        public String getApplicationIdFilter() {
202          return applicationIdFilter;
203        }
204    
205        /**
206         * @param applicationIdFilter the applicationIdFilter to set
207         */
208        public void setApplicationIdFilter(String applicationIdFilter) {
209          this.applicationIdFilter = applicationIdFilter;
210        }
211    
212        /**
213         * @return the queueStatusFilter
214         */
215        public String getQueueStatusFilter() {
216          return queueStatusFilter;
217        }
218    
219        /**
220         * @param queueStatusFilter the queueStatusFilter to set
221         */
222        public void setQueueStatusFilter(String queueStatusFilter) {
223          this.queueStatusFilter = queueStatusFilter;
224        }
225    
226        /**
227         * @return the serviceNameFilter
228         */
229        public String getServiceNameFilter() {
230          return serviceNameFilter;
231        }
232    
233        /**
234         * @param serviceNameFilter the serviceNameFilter to set
235         */
236        public void setServiceNameFilter(String serviceNameFilter) {
237          this.serviceNameFilter = serviceNameFilter;
238        }
239    
240        /**
241         * @return the filterApplied
242         */
243        public String getFilterApplied() {
244          return filterApplied;
245        }
246    
247        /**
248         * @param filterApplied the filterApplied to set
249         */
250        public void setFilterApplied(String filterApplied) {
251          this.filterApplied = filterApplied;
252        }
253    
254        public String getRouteQueueIdFilter() {
255            return this.routeQueueIdFilter;
256        }
257    
258        public void setRouteQueueIdFilter(String messageIdFilter) {
259            this.routeQueueIdFilter = messageIdFilter;
260        }
261    
262        public String getValue1Filter() {
263            return this.value1Filter;
264        }
265    
266        public void setValue1Filter(String value1Filter) {
267            this.value1Filter = value1Filter;
268        }
269    
270        public String getValue2Filter() {
271            return this.value2Filter;
272        }
273    
274        public void setValue2Filter(String value2Filter) {
275            this.value2Filter = value2Filter;
276        }
277    
278        public List<KeyValue> getIpAddresses() {
279            return this.ipAddresses;
280        }
281    
282        public void setIpAddresses(List<KeyValue> ipAddresses) {
283            this.ipAddresses = ipAddresses;
284        }
285    
286        public String getIpAddress() {
287            return this.ipAddress;
288        }
289    
290        public void setIpAddress(String ipAddress) {
291            this.ipAddress = ipAddress;
292        }
293    
294        public Integer getMaxMessageFetcherMessages() {
295            return this.maxMessageFetcherMessages;
296        }
297    
298        public void setMaxMessageFetcherMessages(Integer maxMessageFetcherMessages) {
299            this.maxMessageFetcherMessages = maxMessageFetcherMessages;
300        }
301    
302        public String getMyIpAddress() {
303            return this.myIpAddress;
304        }
305    
306        public void setMyIpAddress(String myIpAddress) {
307            this.myIpAddress = myIpAddress;
308        }
309    
310        public String getMyApplicationId() {
311            return this.myApplicationId;
312        }
313    
314        public void setMyApplicationId(String myApplicationId) {
315            this.myApplicationId = myApplicationId;
316        }
317    
318        public String getMessageDelivery() {
319            return this.messageDelivery;
320        }
321    
322        public void setMessageDelivery(String messageDelivery) {
323            this.messageDelivery = messageDelivery;
324        }
325    
326        public String getMessageOff() {
327            return this.messageOff;
328        }
329    
330        public void setMessageOff(String messageOff) {
331            this.messageOff = messageOff;
332        }
333    
334        public String getMessagePersistence() {
335            return this.messagePersistence;
336        }
337    
338        public void setMessagePersistence(String messagePersistence) {
339            this.messagePersistence = messagePersistence;
340        }
341    
342        /**
343         * Converts an incoming object to a timestamp.
344         *
345         * Adapted from org.apache.commons.beanutils.converters.SqlTimestampConverter
346         */
347        public static class SqlTimestampConverter implements Converter {
348    
349            /**
350             * Create a {@link org.apache.commons.beanutils.Converter} that will throw a {@link org.apache.commons.beanutils.ConversionException}
351             * if a conversion error occurs.
352             */
353            public SqlTimestampConverter() {
354                this.defaultValue = null;
355                this.useDefault = true;
356            }
357    
358            /**
359             * Create a {@link org.apache.commons.beanutils.Converter} that will return the specified default value
360             * if a conversion error occurs.
361             *
362             * @param defaultValue The default value to be returned
363             */
364            public SqlTimestampConverter(Object defaultValue) {
365                this.defaultValue = defaultValue;
366                this.useDefault = true;
367            }
368    
369            // ----------------------------------------------------- Instance Variables
370    
371            /**
372             * The default value specified to our Constructor, if any.
373             */
374            private Object defaultValue = null;
375    
376            /**
377             * Should we return the default value on conversion errors?
378             */
379            private boolean useDefault = true;
380    
381            // --------------------------------------------------------- Public Methods
382    
383            /**
384             * Convert the specified input object into an output object of the
385             * specified type.
386             *
387             * @param type Data type to which this value should be converted
388             * @param value The input value to be converted
389             *
390             * @exception org.apache.commons.beanutils.ConversionException if conversion cannot be performed
391             *  successfully
392             */
393            public Object convert(Class type, Object value) {
394                if (value == null) {
395                    if (useDefault) {
396                        return (defaultValue);
397                    } else {
398                        throw new ConversionException("No value specified");
399                    }
400                }
401    
402                if (value instanceof Timestamp) {
403                    return (value);
404                }
405    
406                try {
407                    return (Timestamp.valueOf(value.toString()));
408                } catch (Exception e) {
409                    if (useDefault) {
410                        return (defaultValue);
411                    } else {
412                        throw new ConversionException(e);
413                    }
414                }
415            }
416    
417        }
418    }