BeanUtilsExampleV4.java Source code

Java tutorial

Introduction

Here is the source code for BeanUtilsExampleV4.java

Source

    import org.apache.commons.beanutils.Converter;
    import org.apache.commons.beanutils.PropertyUtils;
    import org.apache.commons.beanutils.BeanUtilsBean;
    import org.apache.commons.beanutils.ConvertUtilsBean;
    import org.apache.commons.beanutils.PropertyUtilsBean;
    import org.apache.commons.beanutils.ConversionException;

    import java.util.Map;

public class BeanUtilsExampleV4 {
  public static void main(String args[]) throws Exception {
      BeanUtilsExampleV4 diff = new BeanUtilsExampleV4();
      Actor actor = diff.prepareData();

      ConvertUtilsBean convertUtilsBean = new ConvertUtilsBean();
      convertUtilsBean.deregister(String.class);
      convertUtilsBean.register(new MyStringConverter(), String.class);

      convertUtilsBean.deregister(Long.class);
      convertUtilsBean.register(new MyLongConverter(), Long.class);
      convertUtilsBean.register(new MyLongConverter(), Long.TYPE);

      BeanUtilsBean beanUtilsBean =
        new BeanUtilsBean(convertUtilsBean, new PropertyUtilsBean());

      System.err.println("==== Values before calling describe ==== ");
      System.err.println("By PropertyUtils: " +
        PropertyUtils.getProperty(actor, "name"));
      System.err.println("By BeanUtils: " +
        beanUtilsBean.getProperty(actor, "name"));
      System.err.println(beanUtilsBean.getProperty(actor, "worth"));

      Map describedData = beanUtilsBean.describe(actor);

      // check the map
      System.err.println("==== Values in Map ==== ");
      System.err.println(describedData.get("name"));
      System.err.println(describedData.get("worth"));

      // create a new Actor Bean
      Actor newActor = new Actor();
      beanUtilsBean.populate(newActor, describedData);

      System.err.println("==== Values after calling populate ==== ");
      System.err.println(beanUtilsBean.getProperty(newActor, "name"));
      System.err.println(beanUtilsBean.getProperty(newActor, "worth"));

  }

  private Actor prepareData() {
      Actor actor = new Actor();
      actor.setName("Michael Caine");
      actor.setGender(1);
      actor.setWorth(10000000);
      return actor;
   }
}

    class MyStringConverter implements Converter {
        public Object convert(Class type, Object value) {
            if (value == null) {
                return (String) null;
            } else {
                return (value.toString().replaceAll("\\s", ""));
            }
        }
    }

class MyLongConverter implements Converter {

   private Object defaultValue;
   private boolean useDefault;

  public MyLongConverter() {
      this(true, new Long(0));
   }

   public MyLongConverter(boolean useDefault, Object defaultValue) {
      this.useDefault = useDefault;
      this.defaultValue = defaultValue;
   }

   public Object convert(Class type, Object value) {
      if(value == null) {
         if(useDefault) {
            return defaultValue;
         } else {
            throw new ConversionException("No default value specified");
         }
      }

      if(value instanceof Long) {
         return new Long(((Long)value).longValue() + 1000);
      } else {
         try {
            return new Long(new Long(value.toString()).longValue() + 1000);
         } catch (Exception e) {
            System.err.println(e);
            if(useDefault) {
               return defaultValue;
            } else {
               throw new ConversionException(e);
            }
         }
      }

   }
}

    ------------------------------------------------------------------------

import java.util.Map;
    import java.util.List;
    import java.util.Date;

public class Movie {
   public Movie() {
   }

   public Date getDateOfRelease() { return this.dateOfRelease; }
   public void setDateOfRelease(Date dateOfRelease) {
      this.dateOfRelease = dateOfRelease;
   }

   public String getTitle() { return this.title; }
   public void setTitle(String title) {this.title = title; }

  public Person getDirector() { return this.director; }
  public void setDirector(Person director) { this.director = director; }

   public List getActors() { return this.actors; }
   public void setActors(List actors) { this.actors= actors; }

   public String[] getKeywords() { return this.keywords; }
   public void setKeyWords(String[] keywords) { this.keywords = keywords; }

   public Map getGenre() { return this.genre; }
   public void setGenre(Map genre) { this.genre = genre; }

   private Date dateOfRelease;
   private String title;
   private Person director;

   private List actors;
   private String[] keywords;

   private Map genre;
}------------------------------------------------------------------------

import java.util.Map;

    import org.apache.commons.lang.builder.EqualsBuilder;
    import org.apache.commons.lang.builder.HashCodeBuilder;
    import org.apache.commons.lang.builder.ToStringBuilder;

public class Person {
  public Person() {
  }

  public String getName() {
      return this.name == null ? "NoName" : this.name; }
  public void setName(String name) { this.name = name; }

  public int getGender() { return this.gender; }
  public void setGender(int gender) {  // 0 - Indeterminate, 1 - Male, 2 - Female
      this.gender = (gender > 2 || gender < 0) ? 0 : gender; }

   public Map getContactNumber() { return this.contactNumber; }
   public void setContactNumber(Map contactNumber) {
      this.contactNumber = contactNumber;
   }

   /**public boolean equals(Object o) {
      if(o == this) return true;
      if(!(o instanceof Person)) return false;
      Person otherPerson = (Person)o;
      if(otherPerson.getName().equals(this.name) &&
         otherPerson.getGender() == this.gender) return true;

      return false;
   }*/

   public boolean equals(Object o) {
      if(!(o instanceof Person)) return false;

      Person otherPerson = (Person)o;
      return new EqualsBuilder()
                 .append(name, otherPerson.getName())
                 .append(gender, otherPerson.getGender())
                 .isEquals();
   }

   public int hashCode() {
      return new HashCodeBuilder(7, 51)
                 .append(name)
                 .append(gender)
                 .append(contactNumber)
                 .toHashCode();
   }

   public String toString() {
      return new ToStringBuilder(this)
                      .append("Name", name)
                      .append("Gender", gender)
                      .append("Contact Details", contactNumber)
                      .toString();
   }

  private String name;
  private int gender;
  private Map contactNumber;
}------------------------------------------------------------------------

import java.util.List;

public class Actor extends Person {
  public Actor() {
  }

  public List getMovieCredits() { return this.movieCredits; }
  public void setMovieCredits(List movieCredits) {
      this.movieCredits = movieCredits;
   }

   public long getWorth() { return this.worth; }
   public void setWorth(long worth) { this.worth = worth; }

  private List movieCredits;
  private long worth;
}