package plan.dom; import java.util.*; /** Represents a shipping software product. */ public class Software extends DefaultFeatureListImplementation implements FeatureList { Software(String name) { this.name = name; } public String getName() { return name; } /** Suggests a release of this software product. * @param capacity the number of person-days of coding effort available to work on the release * @return a Release containing a suggested list of features */ public Release planRelease(double capacity) { double inplan = 0.0; sortFeatures(ReverseFeaturePlanningOrder.get()); Release r = new Release(); for (Iterator i = featureIterator(); i.hasNext(); ) { Feature f = (Feature)i.next(); if (inplan + f.getSizing() <= capacity) { r.addFeature(f); inplan += f.getSizing(); } } return r; } /** The FeatureList label is the name of the Software product. */ public String getLabel() { return name; } private String name; }