001 /** 002 * Equal.java 003 * jCOLIBRI2 framework. 004 * @author Juan A. Recio-García. 005 * GAIA - Group for Artificial Intelligence Applications 006 * http://gaia.fdi.ucm.es 007 * 28/10/2007 008 */ 009 package jcolibri.method.retrieve.FilterBasedRetrieval.predicates; 010 011 import jcolibri.exception.NoApplicableFilterPredicateException; 012 013 /** 014 * Predicate that compares if the query object is more or equal than the case object. 015 * Only applicable to enums and numbers. 016 * @author Juan A. Recio-Garcia 017 * @author Developed at University College Cork (Ireland) in collaboration with Derek Bridge. 018 * @version 1.0 019 * @see jcolibri.method.retrieve.FilterBasedRetrieval.FilterBasedRetrievalMethod 020 * @see jcolibri.method.retrieve.FilterBasedRetrieval.FilterConfig 021 */ 022 public class QueryMoreOrEqual implements FilterPredicate 023 { 024 public boolean compute(Object caseObject, Object queryObject) throws NoApplicableFilterPredicateException 025 { 026 if((caseObject == null)&&(queryObject==null)) 027 return true; 028 else if(caseObject == null) 029 return false; 030 else if(queryObject == null) 031 return true; 032 else if (! ((caseObject instanceof java.lang.Number)||(caseObject instanceof Enum))) 033 throw new jcolibri.exception.NoApplicableFilterPredicateException(this.getClass(), caseObject.getClass()); 034 else if (! ((queryObject instanceof java.lang.Number)||(queryObject instanceof Enum))) 035 throw new jcolibri.exception.NoApplicableFilterPredicateException(this.getClass(), queryObject.getClass()); 036 else 037 { 038 double caseValue; 039 double queryValue; 040 if((caseObject instanceof Number)&&(queryObject instanceof Number)) 041 { 042 Number n1 = (Number) caseObject; 043 caseValue = n1.doubleValue(); 044 Number n2 = (Number) queryObject; 045 queryValue = n2.doubleValue(); 046 } 047 else 048 { 049 Enum enum1 = (Enum)caseObject; 050 caseValue = enum1.ordinal(); 051 Enum enum2 = (Enum)queryObject; 052 queryValue = enum2.ordinal(); 053 } 054 return queryValue>=caseValue; 055 } 056 } 057 058 }