content: /* ========================================================================
   * JCommon : a free general purpose class library for the Java(tm) platform
   * ========================================================================
   *
   * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
   * 
   * Project Info:  http://www.jfree.org/jcommon/index.html
   *
   * This library is free software; you can redistribute it and/or modify it 
   * under the terms of the GNU Lesser General Public License as published by 
   * the Free Software Foundation; either version 2.1 of the License, or 
   * (at your option) any later version.
   *
   * This library is distributed in the hope that it will be useful, but 
   * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
   * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
   * License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this library; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
   * USA.  
   *
   * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
   * in the United States and other countries.]
   * 
   * -----------------
   * PropertyInfo.java
   * -----------------
   * (C)opyright 2003, 2004, by Thomas Morgner and Contributors.
   *
   * Original Author:  Thomas Morgner;
   * Contributor(s):   David Gilbert (for Object Refinery Limited);
   *
   * $Id: PropertyInfo.java,v 1.2 2005/10/18 13:32:37 mungady Exp $
   *
   * Changes 
   * -------
   * 21-Jun-2003 : Initial version (TM)
   *  
   */
  
  package org.jfree.xml.generator.model;
  
  /**
   * Information about a property.
   */
  public class PropertyInfo extends TypeInfo {
  
      /** Preserve? */
      private boolean preserve;
      
      /** Is there a read method available? */
      private boolean readMethodAvailable;
      
      /** Is there a write method available? */
      private boolean writeMethodAvailable;
  
      /** The property type - indicates how the property is described in XML. */
      private PropertyType propertyType;
      
      /** The XML name. */
      private String xmlName;
      
      /** The XML handler. */
      private String xmlHandler;
  
      /**
       * Creates a new info object for a property.
       * 
       * @param name  the property name.
       * @param type  the class.
       */
      public PropertyInfo(final String name, final Class type) {
          super(name, type);
          this.propertyType = PropertyType.ELEMENT;
      }
  
      /**
       * Returns the preserve flag.
       * 
       * @return the preserve flag.
       */
      public boolean isPreserve() {
          return this.preserve;
      }
  
      /**
       * Sets the preserve flag.
       * 
       * @param preserve  the preserve flag.
       */
      public void setPreserve(final boolean preserve) {
          this.preserve = preserve;
      }
  
      /**
       * Returns the property type.  This describes how the property is handled in XML.
       * 
       * @return the property type.
       */
      public PropertyType getPropertyType() {
          return this.propertyType;
      }
  
      /**
       * Sets the property type.
       * 
       * @param propertyType  the type (<code>null</code> not permitted).
       */
      public void setPropertyType(final PropertyType propertyType) {
          if (propertyType == null) {
              throw new NullPointerException();
          }
          this.propertyType = propertyType;
      }
  
      /**
       * Returns the XML handler.
       * 
       * @return the XML handler.
       */
      public String getXmlHandler() {
          return this.xmlHandler;
      }
  
      /**
       * Sets the XML handler.
       * 
       * @param xmlHandler  the fully qualified class name for the attribute handler.
       */
      public void setXmlHandler(final String xmlHandler) {
          this.xmlHandler = xmlHandler;
      }
  
      /**
       * Returns the XML name.
       * 
       * @return the XML name.
       */
      public String getXmlName() {
          return this.xmlName;
      }
  
      /**
       * Sets the XML name.
       * 
       * @param xmlName  the XML name.
       */
      public void setXmlName(final String xmlName) {
          this.xmlName = xmlName;
      }
  
      /**
       * Returns <code>true</code> if there is a read method available, and <code>false</code> 
       * otherwise.
       * 
       * @return a boolean.
       */
      public boolean isReadMethodAvailable() {
          return this.readMethodAvailable;
      }
  
      /**
       * Sets a flag indicating whether or not there is a read method for this property.
       * 
       * @param readMethodAvailable  the new value of the flag.
       */
      public void setReadMethodAvailable(final boolean readMethodAvailable) {
          this.readMethodAvailable = readMethodAvailable;
      }
  
      /**
       * Returns <code>true</code> if there is a write method available, and <code>false</code> 
       * otherwise.
       * 
       * @return a boolean.
       */
      public boolean isWriteMethodAvailable() {
          return this.writeMethodAvailable;
      }
  
      /**
       * Sets a flag indicating whether or not there is a write method for this property.
       * 
       * @param writeMethodAvailable  the new value of the flag.
       */
      public void setWriteMethodAvailable(final boolean writeMethodAvailable) {
          this.writeMethodAvailable = writeMethodAvailable;
      }
      
  }
  