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 * MultiplexMappingInfo.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: MultiplexMappingInfo.java,v 1.2 2005/10/18 13:32:37 mungady Exp $ 036 * 037 * Changes 038 * ------- 039 * 16-Nov-2003 : Initial version 040 * 041 */ 042 043package org.jfree.xml.generator.model; 044 045import java.util.Arrays; 046 047/** 048 * Defines the multiplex entries for a certain base class. Multiplexers are 049 * used to select a specific handler if more than one class will match the 050 * property type. 051 * <p> 052 * Multiplexers override automatic mappings and can be redefined using manual 053 * mappings. 054 */ 055public class MultiplexMappingInfo { 056 057 /** The base class. */ 058 private Class baseClass; 059 060 /** The type attribute. */ 061 private String typeAttribute; 062 063 /** The child classes. */ 064 private TypeInfo[] childClasses; 065 066 /** The comments. */ 067 private Comments comments; 068 069 /** The source. */ 070 private String source; 071 072 /** 073 * Creates a new instance for the specified class. 074 * 075 * @param baseClass the base class. 076 */ 077 public MultiplexMappingInfo(final Class baseClass) { 078 this(baseClass, "type"); 079 } 080 081 /** 082 * Creates a new instance for the specified class. 083 * 084 * @param baseClass the base class (<code>null</code> not permitted). 085 * @param typeAttribute the type attribute (<code>null</code> not permitted). 086 */ 087 public MultiplexMappingInfo(final Class baseClass, final String typeAttribute) { 088 if (baseClass == null) { 089 throw new NullPointerException("BaseClass"); 090 } 091 if (typeAttribute == null) { 092 throw new NullPointerException("TypeAttribute"); 093 } 094 this.baseClass = baseClass; 095 this.typeAttribute = typeAttribute; 096 } 097 098 /** 099 * Returns the base class. 100 * 101 * @return The base class. 102 */ 103 public Class getBaseClass() { 104 return this.baseClass; 105 } 106 107 /** 108 * Returns the type attribute. 109 * 110 * @return The type attribute. 111 */ 112 public String getTypeAttribute() { 113 return this.typeAttribute; 114 } 115 116 /** 117 * Returns the child classes. 118 * 119 * @return The child classes. 120 */ 121 public TypeInfo[] getChildClasses() { 122 return this.childClasses; 123 } 124 125 /** 126 * Sets the child classes. 127 * 128 * @param childClasses the child classes. 129 */ 130 public void setChildClasses(final TypeInfo[] childClasses) { 131 this.childClasses = childClasses; 132 } 133 134 /** 135 * Returns the comments. 136 * 137 * @return The comments. 138 */ 139 public Comments getComments() { 140 return this.comments; 141 } 142 143 /** 144 * Sets the comments. 145 * 146 * @param comments the comments. 147 */ 148 public void setComments(final Comments comments) { 149 this.comments = comments; 150 } 151 152 /** 153 * Returns the source. 154 * 155 * @return The source. 156 */ 157 public String getSource() { 158 return this.source; 159 } 160 161 /** 162 * Sets the source. 163 * 164 * @param source the source. 165 */ 166 public void setSource(final String source) { 167 this.source = source; 168 } 169 170 /** 171 * Tests this object for equality with another object. 172 * 173 * @param o the other object. 174 * 175 * @return A boolean. 176 */ 177 public boolean equals(final Object o) { 178 if (this == o) { 179 return true; 180 } 181 if (!(o instanceof MultiplexMappingInfo)) { 182 return false; 183 } 184 185 final MultiplexMappingInfo multiplexMappingInfo = (MultiplexMappingInfo) o; 186 187 if (!this.baseClass.equals(multiplexMappingInfo.baseClass)) { 188 return false; 189 } 190 if (!Arrays.equals(this.childClasses, multiplexMappingInfo.childClasses)) { 191 return false; 192 } 193 if (!this.typeAttribute.equals(multiplexMappingInfo.typeAttribute)) { 194 return false; 195 } 196 197 return true; 198 } 199 200 /** 201 * Returns a hash code for this object. 202 * 203 * @return A hash code. 204 */ 205 public int hashCode() { 206 int result; 207 result = this.baseClass.hashCode(); 208 result = 29 * result + this.typeAttribute.hashCode(); 209 return result; 210 } 211 212}