001    package org.apache.fulcrum.intake.xmlmodel;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one
005     * or more contributor license agreements.  See the NOTICE file
006     * distributed with this work for additional information
007     * regarding copyright ownership.  The ASF licenses this file
008     * to you under the Apache License, Version 2.0 (the
009     * "License"); you may not use this file except in compliance
010     * with the License.  You may obtain a copy of the License at
011     *
012     *   http://www.apache.org/licenses/LICENSE-2.0
013     *
014     * Unless required by applicable law or agreed to in writing,
015     * software distributed under the License is distributed on an
016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017     * KIND, either express or implied.  See the License for the
018     * specific language governing permissions and limitations
019     * under the License.
020     */
021    
022    import java.io.Serializable;
023    
024    import org.apache.fulcrum.intake.validator.Constraint;
025    
026    import org.xml.sax.Attributes;
027    
028    /**
029     * A Class for holding data about a constraint on a property.
030     *
031     * @author <a href="mailto:jmcnally@collab.net">John McNally</a>
032     * @author <a href="mailto:tv@apache.org">Thomas Vandahl</a>
033     * @version $Id: Rule.java 670328 2008-06-22 09:34:11Z tv $
034     */
035    public class Rule
036            implements Constraint, Serializable
037    {
038        /**
039         * Serial version id
040         */
041        private static final long serialVersionUID = -4059931768288150848L;
042    
043        private String name;
044        private String value;
045        private String message;
046        private XmlField parent;
047    
048        /**
049         * Default Constructor
050         */
051        public Rule()
052        {
053            //
054        }
055    
056        /**
057         * Imports a column from an XML specification
058         */
059        public void loadFromXML(Attributes attrib)
060        {
061            setName(attrib.getValue("name"));
062            setValue(attrib.getValue("value"));
063        }
064    
065        /**
066         * Set the name of the parameter
067         */
068        public void setName(String newName)
069        {
070            name = newName;
071        }
072    
073        /**
074         * Get the name of the parameter
075         */
076        public String getName()
077        {
078            return name;
079        }
080    
081        /**
082         * Set the value of the parameter
083         */
084        public void setValue(String newValue)
085        {
086            value = newValue;
087        }
088    
089        /**
090         * Get the value of the parameter
091         */
092        public String getValue()
093        {
094            return value;
095        }
096    
097        /**
098         * Set the error message
099         */
100        public void setMessage(String newMessage)
101        {
102            message = newMessage;
103        }
104    
105        /**
106         * Get the error message
107         */
108        public String getMessage()
109        {
110            return message;
111        }
112    
113        /**
114         * Set the parent Field of the rule
115         */
116        public void setField(XmlField parent)
117        {
118            this.parent = parent;
119        }
120    
121        /**
122         * Get the parent Field of the rule
123         */
124        public XmlField getField()
125        {
126            return parent;
127        }
128    
129        /**
130         * String representation of the column. This
131         * is an xml representation.
132         */
133        public String toString()
134        {
135            StringBuffer result = new StringBuffer(100);
136    
137            result.append("<rule name=\"" + name + "\"")
138                    .append(" value=\"" + value + "\"");
139    
140            if (message == null)
141            {
142                result.append(" />\n");
143            }
144            else
145            {
146                result.append(">")
147                        .append(message)
148                        .append("</rule>\n");
149            }
150    
151            return result.toString();
152        }
153    
154    }
155    
156    
157