001: /**
002: * Copyright 2006 Webmedia Group Ltd.
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: **/package org.araneaframework.uilib.list.util;
016:
017: import java.math.BigDecimal;
018: import java.math.BigInteger;
019: import org.apache.commons.lang.Validate;
020: import org.araneaframework.uilib.form.Constraint;
021: import org.araneaframework.uilib.form.Control;
022: import org.araneaframework.uilib.form.Data;
023: import org.araneaframework.uilib.form.FormElement;
024: import org.araneaframework.uilib.form.FormWidget;
025: import org.araneaframework.uilib.form.constraint.AndConstraint;
026: import org.araneaframework.uilib.form.constraint.BaseCompositeConstraint;
027: import org.araneaframework.uilib.form.control.CheckboxControl;
028: import org.araneaframework.uilib.form.control.DateControl;
029: import org.araneaframework.uilib.form.control.DateTimeControl;
030: import org.araneaframework.uilib.form.control.FloatControl;
031: import org.araneaframework.uilib.form.control.NumberControl;
032: import org.araneaframework.uilib.form.control.TextControl;
033: import org.araneaframework.uilib.form.control.TimeControl;
034:
035: /**
036: * Form utils.
037: *
038: * @author <a href="mailto:rein@araneaframework.org">Rein Raudjärv</a>
039: *
040: * @see FormWidget
041: */
042: public class FormUtil {
043:
044: // Date
045:
046: public static Data createData(Class type) {
047: return new Data(type);
048: }
049:
050: // Controls
051:
052: public static Control createControl(Class type) {
053: Validate.notNull(type);
054:
055: if (String.class.equals(type)) {
056: return createTextControl();
057: }
058: if (Number.class.isAssignableFrom(type)) {
059: if (BigDecimal.class.isAssignableFrom(type)) {
060: return createFloatControl();
061: }
062: if (BigInteger.class.isAssignableFrom(type)
063: || Long.class.equals(type)
064: || Integer.class.equals(type)
065: || Short.class.equals(type)
066: || Byte.class.equals(type)) {
067: return createNumberControl();
068: }
069: return createFloatControl();
070: }
071: if (java.util.Date.class.isAssignableFrom(type)) {
072: if (java.util.Date.class.equals(type)
073: || java.sql.Date.class.isAssignableFrom(type)) {
074: return createDateControl();
075: }
076: if (java.sql.Time.class.isAssignableFrom(type)) {
077: return createTimeControl();
078: }
079: if (java.sql.Timestamp.class.isAssignableFrom(type)) {
080: return createDateTimeControl();
081: }
082: }
083: if (Boolean.class.equals(type)) {
084: return createCheckboxControl();
085: }
086: return createTextControl();
087: }
088:
089: public static Control createTextControl() {
090: return new TextControl();
091: }
092:
093: public static Control createNumberControl() {
094: return new NumberControl();
095: }
096:
097: public static Control createFloatControl() {
098: return new FloatControl();
099: }
100:
101: public static Control createDateControl() {
102: return new DateControl();
103: }
104:
105: public static Control createTimeControl() {
106: return new TimeControl();
107: }
108:
109: public static Control createDateTimeControl() {
110: return new DateTimeControl();
111: }
112:
113: public static Control createCheckboxControl() {
114: return new CheckboxControl();
115: }
116:
117: // Form elements
118:
119: public static FormElement createElement(String label,
120: Control control, Data data, boolean mandatory) {
121: FormElement result = new FormElement();
122: result.setLabel(label);
123: result.setMandatory(mandatory);
124: result.setControl(control);
125: result.setData(data);
126: return result;
127: }
128:
129: // Constraints
130:
131: /**
132: * Adds a constraint to a form.
133: *
134: * @param form
135: * form.
136: * @param constraint
137: * constraint.
138: */
139: public static void addConstraint(FormWidget form,
140: Constraint constraint) {
141: Constraint current = form.getConstraint();
142:
143: if (current == null) {
144: form.setConstraint(constraint);
145: } else if (current instanceof AndConstraint) {
146: ((AndConstraint) current).addConstraint(constraint);
147: } else {
148: BaseCompositeConstraint and = new AndConstraint();
149: and.addConstraint(current);
150: and.addConstraint(constraint);
151: form.setConstraint(and);
152: }
153: }
154: }
|