001    /* ========================================================================
002     * JCommon : a free general purpose class library for the Java(tm) platform
003     * ========================================================================
004     *
005     * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
006     * 
007     * Project Info:  http://www.jfree.org/jcommon/index.html
008     *
009     * This library is free software; you can redistribute it and/or modify it 
010     * under the terms of the GNU Lesser General Public License as published by 
011     * the Free Software Foundation; either version 2.1 of the License, or 
012     * (at your option) any later version.
013     *
014     * This library is distributed in the hope that it will be useful, but 
015     * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
016     * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
017     * License for more details.
018     *
019     * You should have received a copy of the GNU Lesser General Public
020     * License along with this library; if not, write to the Free Software
021     * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
022     * USA.  
023     *
024     * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
025     * in the United States and other countries.]
026     * 
027     * -----------------
028     * PropertyType.java
029     * -----------------
030     * (C)opyright 2003, 2004, by Thomas Morgner and Contributors.
031     *
032     * Original Author:  Thomas Morgner;
033     * Contributor(s):   David Gilbert (for Object Refinery Limited);
034     *
035     * $Id: PropertyType.java,v 1.2 2005/10/18 13:32:37 mungady Exp $
036     *
037     * Changes 
038     * -------
039     * 12-Nov-2003 : Initial version (TM);
040     * 26-Nov-2003 : Updated header and Javadocs (DG);
041     * 
042     */
043     
044    package org.jfree.xml.generator.model;
045    
046    /**
047     * An enumeration over the defined property types.
048     * <p>
049     * Attribute types are mapped into xml attributes - this is used for
050     * primitive data or enumeration classes.
051     * <p>
052     * Element types are used to define complex classes, a new xml tag will
053     * be introduced for every element type.
054     * <p>
055     * The lookup properties are defined elsewhere and are referenced using
056     * the defined name during the class building process. 
057     */
058    public final class PropertyType {
059        
060        /** A property that is described using an attribute in the XML. */
061        public static final PropertyType ATTRIBUTE = new PropertyType("ATTRIBUTE");
062        
063        /** A property that is described using an XML element. */
064        public static final PropertyType ELEMENT = new PropertyType("ELEMENT");
065        
066        /** A property that is... */
067        public static final PropertyType LOOKUP = new PropertyType("LOOKUP");
068    
069        /** The property type name. */
070        private final String myName; // for debug only
071    
072        /**
073         * Private constructor prevents new types being created.
074         * 
075         * @param name  the type name.
076         */
077        private PropertyType(final String name) {
078            this.myName = name;
079        }
080    
081        /**
082         * Returns a string representing the type.
083         * 
084         * @return a string.
085         */
086        public String toString() {
087            return this.myName;
088        }
089        
090    }