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;
}