1 27 package ch.ethz.prose.filter; 28 29 class ObjectTypeFilter extends ObjectFilter 30 { 31 32 final static int SUBCLASS_INHERITANCE = 1; 33 final static int SUPERCLASS_INHERITANCE = 2; 34 final static int NO_INHERITANCE = 3; 35 private Class superClass; 36 private int inheritanceType; 37 38 ObjectTypeFilter(int extractionMode,Class superCls,int inhType) 39 { 40 super(extractionMode); 41 this.superClass = superCls; 42 this.inheritanceType = inhType; 43 } 44 45 protected boolean doIsSpecialObject(Object target) 46 { 47 if (target == null) 48 return false; 49 switch(inheritanceType) 50 { 51 case SUBCLASS_INHERITANCE: 52 return superClass.isAssignableFrom(target.getClass()); 53 case SUPERCLASS_INHERITANCE: 54 return target.getClass().isAssignableFrom(superClass); 55 case NO_INHERITANCE: 56 return superClass.equals(target); 57 default: 58 throw new Error ("Illegal state: inheritanceType"); 59 } 60 } 61 } 62 63 64 | Popular Tags |