1 19 package org.netbeans.lib.jmi.query.mof; 20 21 import java.util.Comparator ; 22 23 import javax.jmi.model.*; 24 import javax.jmi.reflect.RefFeatured; 25 26 import org.netbeans.lib.jmi.query.*; 27 28 32 public class FeatureFilter extends ValueFilter { 33 34 35 protected String featureName; 36 37 38 private javax.jmi.model.Feature feature = null; 39 private javax.jmi.model.MofClass metaClazz = null; 40 41 public FeatureFilter(Query query, String featureName, Object value) { 42 super( query, value ); 43 this.featureName = featureName; 44 } 45 46 public FeatureFilter(Query query, String featureName, Object value, Comparator comparator ) { 47 super( query, value, comparator ); 48 this.featureName = featureName; 49 } 50 51 protected boolean accept( Object object ) { 52 53 if ( object instanceof RefFeatured ) { 54 resolveFeature( (RefFeatured)object ); 55 56 if ( feature == null ) { 57 return false; 58 } 59 Object featureValue = ((RefFeatured)object).refGetValue( (javax.jmi.model.StructuralFeature) feature ); 60 61 62 return super.accept( featureValue ); 63 } 64 else { 65 return false; 66 } 67 } 68 69 70 73 private void resolveFeature( RefFeatured refFeatured ) { 74 javax.jmi.model.MofClass clazz = (javax.jmi.model.MofClass)refFeatured.refMetaObject(); 75 76 77 78 if ( metaClazz == null || !metaClazz.equals( clazz ) || feature != null) { 79 metaClazz = null; 80 feature = null; 81 82 try { 83 metaClazz = clazz; 84 85 ModelElement me = clazz.lookupElementExtended( featureName ); 86 if ( me instanceof Feature ) { 87 feature = (Feature) me; 88 } 89 } 90 catch( NameNotFoundException e ) { 91 } 93 } 94 } 95 96 } 97 | Popular Tags |