001 // Copyright 2005-2006 Ferdinand Prantl <prantl@users.sourceforge.net>
002 // Copyright 2001-2004 The Apache Software Foundation
003 // All rights reserved.
004 //
005 // Licensed under the Apache License, Version 2.0 (the "License");
006 // you may not use this file except in compliance with the License.
007 // You may obtain a copy of the License at
008 //
009 // http://www.apache.org/licenses/LICENSE-2.0
010 //
011 // Unless required by applicable law or agreed to in writing, software
012 // distributed under the License is distributed on an "AS IS" BASIS,
013 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 // See the License for the specific language governing permissions and
015 // limitations under the License.
016 //
017 // See http://ant-eclipse.sourceforge.net for the most recent version
018 // and more information.
019
020 package prantl.ant.eclipse;
021
022 import org.apache.tools.ant.BuildException;
023
024 /**
025 * Configures name and value of a variable in a preferences file under the directory
026 * <tt>.settings</tt>. Both attributes <tt>name</tt> and <tt>value</tt> are
027 * mandatory.
028 *
029 * @since Ant-Eclipse 1.0
030 * @author Ferdinand Prantl <prantl@users.sourceforge.net>
031 */
032 public class VariableElement {
033
034 private PreferencesElement preferences = null;
035
036 private String name = null;
037
038 private String value = null;
039
040 /**
041 * Creates a new instance of the variable element.
042 *
043 * @param parent
044 * The parent preferences element of this variable one.
045 * @since Ant-Eclipse 1.0
046 */
047 public VariableElement(PreferencesElement parent) {
048 preferences = parent;
049 }
050
051 /**
052 * Returns the name of the configuration variable. The name must not be <tt>null</tt>,
053 * it is a mandatory attribute.
054 *
055 * @return The name of the configuration variable or <tt>null</tt> if having not
056 * been set.
057 */
058 public String getName() {
059 return name;
060 }
061
062 /**
063 * Returns the value of the configuration variable. The value must not be
064 * <tt>null</tt>, it is a mandatory attribute.
065 *
066 * @return The value of the configuration variable or <tt>null</tt> if having not
067 * been set.
068 */
069 public String getValue() {
070 return value;
071 }
072
073 /**
074 * Sets the name of the configuration variable.
075 *
076 * @param name
077 * A name of the configuration variable.
078 * @since Ant-Eclipse 1.0
079 */
080 public void setName(String name) {
081 preferences.validateVariableName(name);
082 this.name = name;
083 }
084
085 /**
086 * Sets the value of the configuration variable.
087 *
088 * @param value
089 * A value of the configuration variable.
090 * @since Ant-Eclipse 1.0
091 */
092 public void setValue(String value) {
093 this.value = value;
094 }
095
096 /**
097 * Performs the validation of the element at the time when the whole build file was
098 * parsed checking the content of the element and possibly adding mandatory variables
099 * with default settings.
100 *
101 * @since Ant-Eclipse 1.0
102 */
103 public void validate() {
104 if (name == null)
105 throw new BuildException(
106 "The mandatory attribute \"name\" was missing in an element \"variable\".");
107 if (value == null)
108 throw new BuildException(
109 "The mandatory attribute \"value\" was missing in an element \"variable\".");
110 }
111
112 }