001 /*
002 * FormatConfiguration.java
003 *
004 * Copyright (C) 2005 Anupam Sengupta ([email protected])
005 *
006 * This program is free software; you can redistribute it and/or
007 * modify it under the terms of the GNU General Public License
008 * as published by the Free Software Foundation; either version 2
009 * of the License, or (at your option) any later version.
010 *
011 * This program is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014 * GNU General Public License for more details.
015 *
016 * You should have received a copy of the GNU General Public License
017 * along with this program; if not, write to the Free Software
018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
019 *
020 * Version: $Revision: 1.2 $
021 */
022 package net.sf.anupam.csv.formatters;
023
024 import org.apache.commons.lang.builder.EqualsBuilder;
025 import org.apache.commons.lang.builder.HashCodeBuilder;
026 import org.apache.commons.lang.builder.ToStringBuilder;
027 import org.apache.commons.lang.builder.CompareToBuilder;
028
029 /**
030 * FormatConfiguration.
031 *
032 * @author Anupam Sengupta
033 * @version $Revision: 1.2 $
034 * @since 1.5
035 */
036 public class FormatterConfiguration
037 implements Comparable<FormatterConfiguration> {
038
039 /**
040 * Name of this formatter.
041 */
042 private String formatterName;
043
044 /**
045 * Fully qualified class name of the formatter.
046 */
047 private String formatterClass;
048
049 /**
050 * Whether special formatter construction is to be performed by the factory
051 * methods.
052 */
053 private boolean constructionNeeded;
054
055 /**
056 * Constructor for FormatConfiguration.
057 */
058 public FormatterConfiguration() {
059 super();
060 }
061
062 /**
063 * Compares this formatter configuration to another configuration for ordering purposes.
064 * The comparision is based on the formatter name.
065 *
066 * @param other the other configuration to compare against
067 * @return <code>0</code> if the two configurations are equal, <code>-1</code> if
068 * this configuration ranks "lower", <code>+1</code> if this configuration ranks "higher"
069 * @see Comparable#compareTo(Object)
070 */
071 public int compareTo(final FormatterConfiguration other) {
072
073 return new CompareToBuilder()
074 .append(formatterName, other.formatterName).append(
075 formatterClass, other.formatterClass).toComparison();
076 }
077
078 /**
079 * Returns a string representation of this formatter configuration for
080 * <strong>debugging</strong> purposes only.
081 *
082 * @return a string representation of this formatter configuration
083 * @see Object#toString()
084 */
085 @Override
086 public String toString() {
087 return new ToStringBuilder(this).append("formatterName", formatterName)
088 .append("formatterClass", formatterClass).append(
089 "constructionNeeded", constructionNeeded).toString();
090 }
091
092 /**
093 * Computes the hash code for this formatter configuration. The has code is based on the
094 * formatter configuration's name.
095 *
096 * @return the hash code
097 * @see Object#hashCode()
098 */
099 @Override
100 public int hashCode() {
101 return new HashCodeBuilder().append(formatterName).append(
102 formatterClass).toHashCode();
103 }
104
105 /**
106 * Compares this formatter configuration to another configuration for equality. Equality
107 * test is based on the formatter configuration name.
108 *
109 * @param other the other configuration to compare to
110 * @return <code>true</code> if the configurations are equal, <code>false</code> other wise
111 * @see Object#equals(Object)
112 */
113 @Override
114 public boolean equals(final Object other) {
115 if (this == other) {
116 return true;
117 }
118 if (!(other instanceof FormatterConfiguration)) {
119 return false;
120 }
121
122 final FormatterConfiguration castOther = (FormatterConfiguration) other;
123 return new EqualsBuilder().append(formatterName,
124 castOther.formatterName).append(formatterClass,
125 castOther.formatterClass).isEquals();
126 }
127
128 /**
129 * Returns value of the formatName.
130 *
131 * @return Returns the formatName.
132 */
133 public String getFormatterName() {
134 return this.formatterName;
135 }
136
137 /**
138 * Sets value of the formatName.
139 *
140 * @param formatName The formatName to set.
141 */
142 public void setFormatterName(final String formatName) {
143 this.formatterName = formatName;
144 }
145
146 /**
147 * Returns value of the formatterClass.
148 *
149 * @return Returns the formatterClass.
150 */
151 public String getFormatterClass() {
152 return this.formatterClass;
153 }
154
155 /**
156 * Sets value of the formatterClass.
157 *
158 * @param formatterClass The formatterClass to set.
159 */
160 public void setFormatterClass(final String formatterClass) {
161 this.formatterClass = formatterClass;
162 }
163
164 /**
165 * Returns value of the constructionNeeded.
166 *
167 * @return Returns the constructionNeeded.
168 */
169 public boolean isConstructionNeeded() {
170 return this.constructionNeeded;
171 }
172
173 /**
174 * Sets value of the constructionNeeded.
175 *
176 * @param constructionNeeded The constructionNeeded to set.
177 */
178 public void setConstructionNeeded(final boolean constructionNeeded) {
179 this.constructionNeeded = constructionNeeded;
180 }
181
182 }