001    /*
002     * Copyright 2002-2004 the original author or authors.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * 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, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.binding.form;
017    
018    import org.springframework.binding.validation.ValidationMessage;
019    import org.springframework.binding.validation.ValidationResultsModel;
020    import org.springframework.binding.validation.Validator;
021    
022    /**
023     * Sub-interface implemented by form models that can validate its own
024     * properties.
025     *
026     * @author Keith Donald
027     * @author Oliver Hutchison
028     */
029    public interface ValidatingFormModel extends ConfigurableFormModel, HierarchicalFormModel {
030    
031            public static final String VALIDATING_PROPERTY = "validating";
032    
033            /**
034             * Returns the ValidationResultsModel which encapsulates the set of
035             * validation messages currently active against this form model. Will be
036             * empty if validation is disabled.
037             */
038            ValidationResultsModel getValidationResults();
039    
040            /**
041             * Does this ValidatingFormModel or any of its children contain errors?
042             */
043            boolean getHasErrors();
044    
045            /**
046             * Is this form model currently validating?
047             */
048            boolean isValidating();
049    
050            /**
051             * Sets whether or not validation is currently enabled for this form model.
052             * If validation is enabled the form model will immediately validate all
053             * form properties. If validation is disabled all validation messages held
054             * by the ValidationResultsModel will be cleared.
055             */
056            void setValidating(boolean validating);
057    
058            /**
059             * Forces the form model to validate its self. If validation is disabled it
060             * does nothing.
061             */
062            void validate();
063    
064            /**
065             * Get the validator that will be used to validate the form model.
066             */
067            Validator getValidator();
068    
069            /**
070             * Set the validator that will be used to validate the form model.
071             */
072            void setValidator(Validator validator);
073    
074            /**
075             * Provide validation messages that are generated by a process separate from
076             * the standard Validator.
077             * <p>
078             * All error messages that are raised using this method must be cleared
079             * using the method {@link #cleanValdationMessage(ValidationMessage)} before
080             * the form model can be commited.
081             *
082             * @param validationMessage the message to raise
083             */
084            void raiseValidationMessage(ValidationMessage validationMessage);
085    
086            /**
087             * Clear validation messages that are generated by a process separate from
088             * the standard Validator.
089             *
090             * @param validationMessage the message to clear
091             */
092            void clearValidationMessage(ValidationMessage validationMessage);
093    
094    }