Mega Code Archive

 
Categories / Java Tutorial / Apache Common
 

ToString Builder for Derived Class

/*   * ========================================================================  *   * Copyright 2005 Tim O'Brien.  *  * Licensed under the Apache License, Version 2.0 (the "License");  * you may not use this file except in compliance with the License.  * You may obtain a copy of the License at  *   *   http://www.apache.org/licenses/LICENSE-2.0  *   * Unless required by applicable law or agreed to in writing, software  * distributed under the License is distributed on an "AS IS" BASIS,  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  * See the License for the specific language governing permissions and  * limitations under the License.  *   * ========================================================================  */ import java.math.BigDecimal; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import org.apache.commons.lang.builder.CompareToBuilder; import org.apache.commons.lang.builder.ReflectionToStringBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; public class MainClass {   public static void main(String[] pArgs) throws Exception {     // Create a State     State va = new State("VA", "Virginia");     // Create a Birth Date     Calendar calendar = new GregorianCalendar();     calendar.set(Calendar.YEAR, 1743);     calendar.set(Calendar.MONTH, Calendar.APRIL);     calendar.set(Calendar.DAY_OF_MONTH, 13);     Date dob = calendar.getTime();     BigDecimal moneyRaised = new BigDecimal(293829292.93);     // Create a Political Candidate     PoliticalCandidate candidate = new PoliticalCandidate("Jefferson", "Thomas", dob, moneyRaised,         va);     System.out.println(candidate);     // Create a Political Candidate     PoliticalCandidate candidate2 = new PoliticalCandidate("Jefferson", "Martha", null, null, null);     // Create a Political Candidate     PoliticalCandidate candidate3 = new PoliticalCandidate("Jefferson", "Martha", dob, null, va);     System.out.println("Two Jeffersons are still different (should be > 0): "         + candidate.compareTo(candidate2));     System.out.println("Two Jeffersons are still different (should be < 0): "         + candidate2.compareTo(candidate));     System.out.println("Two Martha Js are the same (should be zero): "         + candidate2.compareTo(candidate3));   } } class State {   private String abbreviation;   private String name;   public State() {   }   public State(String abbreviation, String name) {     this.abbreviation = abbreviation;     this.name = name;   }   public String getAbbreviation() {     return abbreviation;   }   public void setAbbreviation(String abbreviation) {     this.abbreviation = abbreviation;   }   public String getName() {     return name;   }   public void setName(String name) {     this.name = name;   }   public String toString() {     return ReflectionToStringBuilder.reflectionToString(this);   } } /*  * ========================================================================  *   * Copyright 2005 Tim O'Brien.  *   * Licensed under the Apache License, Version 2.0 (the "License"); you may not  * use this file except in compliance with the License. You may obtain a copy of  * the License at  *   * http://www.apache.org/licenses/LICENSE-2.0  *   * Unless required by applicable law or agreed to in writing, software  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the  * License for the specific language governing permissions and limitations under  * the License.  *   * ========================================================================  */ class PoliticalCandidate implements Comparable {   private String lastName;   private String firstName;   private Date dateOfBirth;   private BigDecimal moneyRaised;   private State state;   public PoliticalCandidate() {   }   public PoliticalCandidate(String lastName, String firstName, Date dateOfBirth,       BigDecimal moneyRaised, State state) {     this.lastName = lastName;     this.firstName = firstName;     this.dateOfBirth = dateOfBirth;     this.moneyRaised = moneyRaised;     this.state = state;   }   public String getLastName() {     return lastName;   }   public void setLastName(String lastName) {     this.lastName = lastName;   }   public String getFirstName() {     return firstName;   }   public void setFirstName(String firstName) {     this.firstName = firstName;   }   public Date getDateOfBirth() {     return dateOfBirth;   }   public void setDateOfBirth(Date dateOfBirth) {     this.dateOfBirth = dateOfBirth;   }   public BigDecimal getMoneyRaised() {     return moneyRaised;   }   public void setMoneyRaised(BigDecimal moneyRaised) {     this.moneyRaised = moneyRaised;   }   public State getState() {     return state;   }   public void setState(State state) {     this.state = state;   }   /*    * public String toString() { return    * ReflectionToStringBuilder.reflectionToString(this); }    */   /*    * // get/set methods are omitted for brevity... public String toString() {    * return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) .append(    * "lastName", lastName ) .append( "firstName", firstName ) .toString(); }    */   /*    * // get/set methods are omitted for brevity... public String toString() {    * return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE) .append(    * "lastName", lastName ) .append( "firstName", firstName ) .toString(); }    */   /*    * // get/set methods are omitted for brevity... public String toString() {    * return new ToStringBuilder(this, ToStringStyle.NO_FIELD_NAMES_STYLE)    * .append( "lastName", lastName ) .append( "firstName", firstName )    * .toString(); }    */   // get/set methods are omitted for brevity...   public String toString() {     return new ToStringBuilder(this, ToStringStyle.SIMPLE_STYLE).append("lastName", lastName)         .append("firstName", firstName).toString();   }   /*    * (non-Javadoc)    *     * @see java.lang.Comparable#compareTo(java.lang.Object)    */   // A compare to which mimics the behavior of equals()   public int compareTo(Object o) {     int compare = -1; // By default return less-than     if (o != null && PoliticalCandidate.class.isAssignableFrom(o.getClass())) {       PoliticalCandidate pc = (PoliticalCandidate) o;       compare = (new CompareToBuilder().append(firstName, pc.firstName).append(lastName,           pc.lastName)).toComparison();     }     return compare;   } } Jefferson,Thomas Two Jeffersons are still different (should be 0): 7 Two Jeffersons are still different (should be