001: /*
002: * Copyright 2004, 2005, 2006 Odysseus Software GmbH
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: package de.odysseus.calyxo.forms;
017:
018: import java.util.Iterator;
019:
020: import javax.servlet.http.HttpServletRequest;
021:
022: import de.odysseus.calyxo.base.Message;
023:
024: /**
025: * A form input result represents the validation result of a form input.
026: *
027: * @see de.odysseus.calyxo.forms.FormInput
028: * @author Christoph Beck
029: */
030: public interface FormInputResult {
031: /**
032: * Get corresponding form input
033: */
034: public FormInput getFormInput();
035:
036: /**
037: * Get corresponding form data property, if not null
038: */
039: public String getProperty();
040:
041: /**
042: * Answer array size for array inputs, 1 for scalar inputs
043: */
044: public int getSize();
045:
046: /**
047: * Get the validated value.
048: * The result is undefined for invalid results.
049: * For array inputs, this method returns an array.
050: */
051: public Object getValue();
052:
053: /**
054: * Get the validated value for specified index.
055: * The result is undefined for invalid results.
056: * For scalar inputs, this method returns the validated value for
057: * index <code>0</code> and <code>null</code> otherwise.
058: */
059: public Object getValue(int index);
060:
061: /**
062: * Get the input value.
063: * For array inputs, this method returns a string array.
064: * For scalar inputs, this method returns a string.
065: */
066: public Object getInputValue();
067:
068: /**
069: * Get the input value for specified index.
070: * The result is undefined for invalid results.
071: * For scalar inputs, this method returns the input value for
072: * index <code>0</code> and <code>null</code> otherwise.
073: */
074: public String getInputValue(int index);
075:
076: /**
077: * true iff validation succeeded.
078: * For array-inputs, all inputs must be valid
079: */
080: public boolean isValid();
081:
082: /**
083: * true iff validation succeeded for specified index
084: */
085: public boolean isValid(int index);
086:
087: /**
088: * Get error message for specified index.
089: * If validation for the specified index succeeded, return <code>null</code>.
090: */
091: public Message getMessage(int index);
092:
093: /**
094: * Get error message.
095: * For array inputs, return the first (smallest index) message.
096: */
097: public Message getFirstMessage();
098:
099: /**
100: * Get {@link Message} second to last error messages.
101: * For scalar inputs, return an empty iterator.
102: */
103: public Iterator getLastMessages();
104:
105: /**
106: * Format property.
107: * The formatted value answered here is used to be presented to
108: * the user again. Usually, this is the user input itself for invalid
109: * values and the user input in "canonical form" for valid inputs.
110: * @param request the request we process
111: * @return if this is an array input, an array of strings; a string else
112: */
113: public Object format(HttpServletRequest request);
114:
115: /**
116: * Format indexed property.
117: * The formatted value answered here is used to be presented to
118: * the user again. Usually, this is the user input itself for invalid
119: * values and the user input in "canonical form" for valid inputs.
120: * @param request the request we process
121: * @param index
122: * @return formatted value
123: */
124: public String format(HttpServletRequest request, int index);
125:
126: /**
127: * Populate forma data.
128: * @param bean the form data to be populated
129: * @throws Exception if property access fails
130: */
131: public void populate(FormData bean) throws Exception;
132:
133: /**
134: * Answer true iff this input result should be treated "relaxed".
135: * No visual feedback should be given to the user, if a relaxed
136: * field is invalid.
137: */
138: public boolean isRelaxed();
139:
140: /**
141: * Anwer true iff the input corrensponding to this input result has
142: * been "ignored". If so, the input has not been validated at all.
143: */
144: public boolean isIgnored();
145: }
|