Friday, 14th October 2011
Follow WikiJava on twitter now. @Wikijava

Predicate Chain ( Chaining of two or more predicate's )

From WikiJava

Jump to: navigation, search



This page is or contains a derivative version of a portion of this GFDL content
The article was originally sourced from Ganesh Gowtham.

Ganesh Gowtham's Website

Contents

The Code

package com.googelcode.jpractices.common;
 
import org.apache.commons.lang.builder.ToStringBuilder;
 
/**
 * Copyright 2009 @ jPractices v 1.0
 * @SVN URL : http://jpractices.googlecode.com
 * @author Ganesh Gowtham
 * @Homepage : http://sites.google.com/site/ganeshgowtham
 */
 
public class Person {
  private String firstName;
 
  private String lastName;
 
  private int salary;
 
  public Person(String firstName, String lastName, int salary) {
    super();
    this.firstName = firstName;
    this.lastName = lastName;
    this.salary = salary;
  }
 
  public String getFirstName() {
    return firstName;
  }
 
  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }
 
  public String getLastName() {
    return lastName;
  }
 
  public void setLastName(String lastName) {
    this.lastName = lastName;
  }
 
  public int getSalary() {
    return salary;
  }
 
  public void setSalary(int salary) {
    this.salary = salary;
  }
 
  @Override
  public String toString() {
    return ToStringBuilder.reflectionToString(this);
  }
}
package com.googelcode.jpractices;
 
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
 
import org.apache.commons.beanutils.BeanPredicate;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.PredicateUtils;
import org.apache.commons.collections.functors.EqualPredicate;
 
import com.googelcode.jpractices.common.Person;
 
/**
 * Copyright 2009 @ jPractices v 1.0
 * @SVN URL : http://jpractices.googlecode.com
 * @author Ganesh Gowtham
 * @Homepage : http://sites.google.com/site/ganeshgowtham
 */
 
public class PredicateChainExample {
  List<Person> personList = new ArrayList<Person>();
 
  /**
   * Basic method which creates the list of person object's
   *
   */
  void setUpData() {
    personList.add(new Person("ganesh", "gowtham", 35000));
    personList.add(new Person("shekhar", "katare", 45000));
    personList.add(new Person("boopathi", "sivalingam", 36000));
    personList.add(new Person("ganesh", "dummy", 45000));
  }
 
  /**
   *
   * Here we are adding multiple predicate
   * filters the collection so that final person object will contain
   * firstName as "ganesh" & lastName as "gowtham"
   */
  void filterDataUsingMultipleCriteria() {
    EqualPredicate firstNameEqlPredicate = new EqualPredicate("ganesh");
    BeanPredicate firtsNameBeanPredicate = new BeanPredicate("firstName", firstNameEqlPredicate);
    EqualPredicate lastNameEqlPredicate2 = new EqualPredicate("gowtham");
    BeanPredicate lastNameBeanPredicate2 = new BeanPredicate("lastName", 
lastNameEqlPredicate2);
    Predicate[] allPredicateArray = { firtsNameBeanPredicate, lastNameBeanPredicate2 };
    Predicate allPredicate = PredicateUtils.allPredicate(allPredicateArray);
    Collection<Person> filteredCollection = CollectionUtils.select(personList, allPredicate);
 
    for (Person person : filteredCollection) {
      System.out.println(person);
    }
  }
 
  public static void main(String[] args) {
    PredicateChainExample chainExample = new PredicateChainExample();
    chainExample.setUpData();
    chainExample.filterDataUsingMultipleCriteria();
  }
}

References about api

Apache Beanutils
Apache Collections

Comments from the users

To be notified via mail on the updates of this discussion you can login and click on watch at the top of the page


Comments on wikijava are disabled now, cause excessive spam.