001    /*--------------------------------------------------------------------------+
002    $Id: SimulinkConstraints.java 26285 2010-02-18 11:22:54Z juergens $
003    |                                                                          |
004    | Copyright 2005-2010 Technische Universitaet Muenchen                     |
005    |                                                                          |
006    | Licensed under the Apache License, Version 2.0 (the "License");          |
007    | you may not use this file except in compliance with the License.         |
008    | You may obtain a copy of the License at                                  |
009    |                                                                          |
010    |    http://www.apache.org/licenses/LICENSE-2.0                            |
011    |                                                                          |
012    | Unless required by applicable law or agreed to in writing, software      |
013    | distributed under the License is distributed on an "AS IS" BASIS,        |
014    | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
015    | See the License for the specific language governing permissions and      |
016    | limitations under the License.                                           |
017    +--------------------------------------------------------------------------*/
018    package edu.tum.cs.simulink.constraints;
019    
020    import edu.tum.cs.commons.constraint.ConstraintValidator;
021    import edu.tum.cs.commons.constraint.ConstraintViolationException;
022    import edu.tum.cs.simulink.model.SimulinkBlock;
023    import edu.tum.cs.simulink.model.SimulinkElementBase;
024    import edu.tum.cs.simulink.model.SimulinkLine;
025    import edu.tum.cs.simulink.model.SimulinkModel;
026    import edu.tum.cs.simulink.util.SimulinkModelWalker;
027    
028    /**
029     * Utility methods for validating the Simulink model. See package comment for
030     * further details.
031     * 
032     * @author deissenb
033     * @author $Author: juergens $
034     * @version $Rev: 26285 $
035     * @levd.rating GREEN Hash: DF337D5FD8A07AC0D575ECBE780A6C79
036     */
037    public class SimulinkConstraints {
038    
039            /** Check mandatory and optional constraints. */
040            public static void checkAllConstraints(SimulinkModel model)
041                            throws ConstraintViolationException {
042                    checkMandatoryConstraints(model);
043                    checkOptionalConstraints(model);
044            }
045    
046            /** Check mandatory constraints. */
047            public static void checkMandatoryConstraints(SimulinkModel model)
048                            throws ConstraintViolationException {
049                    ConstraintValidator validator = new ConstraintValidator();
050                    addMandatoryConstraints(validator);
051                    validator.validateMesh(model, new SimulinkModelWalker());
052            }
053    
054            /** Check optional constraints. */
055            public static void checkOptionalConstraints(SimulinkModel model)
056                            throws ConstraintViolationException {
057                    ConstraintValidator validator = new ConstraintValidator();
058                    addOptionalConstraints(validator);
059                    validator.validateMesh(model, new SimulinkModelWalker());
060            }
061    
062            /** Add optional mandatory to validator. */
063            public static void addMandatoryConstraints(ConstraintValidator validator) {
064                    validator.addConstraint(SimulinkElementBase.class,
065                                    new SimulinkElementNameConstraint());
066                    validator.addConstraint(SimulinkBlock.class,
067                                    new SimulinkBlockTypeConstraint());
068            }
069    
070            /** Add optional constraints to validator. */
071            public static void addOptionalConstraints(ConstraintValidator validator) {
072                    validator.addConstraint(SimulinkLine.class,
073                                    new SimulinkLineConstraint());
074            }
075    
076    }