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 * TypeInfo.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: TypeInfo.java,v 1.2 2005/10/18 13:32:37 mungady Exp $ 036 * 037 * Changes 038 * ------- 039 * 21.06.2003 : Initial version 040 * 041 */ 042 043 package org.jfree.xml.generator.model; 044 045 /** 046 * Retains information about a type. 047 */ 048 public class TypeInfo { 049 050 /** The type name. */ 051 private String name; 052 053 /** The class. */ 054 private Class type; 055 056 /** A flag indicating whether or not the type can take a null value. */ 057 private boolean nullable; 058 059 /** ??. */ 060 private boolean constrained; 061 062 /** A description. */ 063 private String description; 064 065 /** Comments. */ 066 private Comments comments; 067 068 /** 069 * Creates a new instance. 070 * 071 * @param name the type name (<code>null</code> not permitted). 072 * @param type the class. 073 */ 074 public TypeInfo(final String name, final Class type) { 075 if (name == null) { 076 throw new NullPointerException("Name"); 077 } 078 this.name = name; 079 this.type = type; 080 } 081 082 /** 083 * Returns the class. 084 * 085 * @return The class. 086 */ 087 public Class getType() { 088 return this.type; 089 } 090 091 /** 092 * Returns the nullable status. 093 * 094 * @return A boolean. 095 */ 096 public boolean isNullable() { 097 return this.nullable; 098 } 099 100 /** 101 * Sets the nullable flag. 102 * 103 * @param nullable the flag. 104 */ 105 public void setNullable(final boolean nullable) { 106 this.nullable = nullable; 107 } 108 109 /** 110 * Returns <code>true</code> if the type is constrained, and <code>false</code> otherwise. 111 * 112 * @return A boolean. 113 */ 114 public boolean isConstrained() { 115 return this.constrained; 116 } 117 118 /** 119 * Sets the flag that indicates whether or not the type is constrained. 120 * 121 * @param constrained the flag. 122 */ 123 public void setConstrained(final boolean constrained) { 124 this.constrained = constrained; 125 } 126 127 /** 128 * Returns the type description. 129 * 130 * @return The type description. 131 */ 132 public String getDescription() { 133 return this.description; 134 } 135 136 /** 137 * Sets the type description. 138 * 139 * @param description the description. 140 */ 141 public void setDescription(final String description) { 142 this.description = description; 143 } 144 145 /** 146 * Returns the type name. 147 * 148 * @return The type name. 149 */ 150 public String getName() { 151 return this.name; 152 } 153 154 /** 155 * Returns the comments for this type info. 156 * 157 * @return The comments. 158 */ 159 public Comments getComments() { 160 return this.comments; 161 } 162 163 /** 164 * Sets the comments for this type info. 165 * 166 * @param comments the comments. 167 */ 168 public void setComments(final Comments comments) { 169 this.comments = comments; 170 } 171 /** 172 * Tests this object for equality with another object. 173 * 174 * @param o the other object. 175 * 176 * @return A boolean. 177 */ 178 public boolean equals(final Object o) { 179 if (this == o) { 180 return true; 181 } 182 if (!(o instanceof TypeInfo)) { 183 return false; 184 } 185 186 final TypeInfo typeInfo = (TypeInfo) o; 187 188 if (!this.name.equals(typeInfo.name)) { 189 return false; 190 } 191 if (!this.type.equals(typeInfo.type)) { 192 return false; 193 } 194 195 return true; 196 } 197 198 /** 199 * Returns a hash code for this object. 200 * 201 * @return A hash code. 202 */ 203 public int hashCode() { 204 int result; 205 result = this.name.hashCode(); 206 result = 29 * result + this.type.hashCode(); 207 result = 29 * result + (this.nullable ? 1 : 0); 208 result = 29 * result + (this.constrained ? 1 : 0); 209 result = 29 * result + (this.description != null ? this.description.hashCode() : 0); 210 return result; 211 } 212 213 }