package plan.dom; import java.util.*; /** Default implementation of FeatureList minus the getLabel() method */ abstract class DefaultFeatureListImplementation implements FeatureList { /** Get an Iterator over the features. * @return the requested Iterator */ public Iterator featureIterator() { return features.iterator(); } /** Add the indicated feature to the list. * @param f the feature to add */ public void addFeature(Feature f) { features.add(f); } /** Sort features according to the order given by the Feature Comparator. * @param comapre a Comparator for features. */ protected void sortFeatures(Comparator compare) { Collections.sort(features,compare); } /** Remove all features in the other list from this one.] * @param other the feature list to substract from this one */ protected void subtract(DefaultFeatureListImplementation other) { this.features.removeAll(other.features); } /** Returns the number of features broken out by priority. * @param p if null, all features, else only features of the given priority * @return the count of the specified features */ public int numFeatures(Priority p) { int n = 0; for (Iterator i = features.iterator(); i.hasNext(); ) { Feature f = (Feature)i.next(); if( p==null || f.getPriority().equals(p) ) n++; } return n; } /** Returns the total sizing of features broken out by priority. * @param p if null, all features, else only features of the given priority * @return the total of the sizings of the specified features */ public double totalSizingOfFeatures(Priority p) { double s = 0.0; for (Iterator i = features.iterator(); i.hasNext(); ) { Feature f = (Feature)i.next(); if( p==null || f.getPriority().equals(p)) s += f.getSizing(); } return s; } private Vector features = new Vector(); }