/** * Copyright (c) 2009-2011, The HATS Consortium. All rights reserved. * This file is licensed under the terms of the Modified BSD License. */ package abs.backend.java.lib.runtime; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import abs.backend.java.codegeneration.dynamic.DynamicException; import abs.backend.java.lib.runtime.metaABS.Product; public class ABSDynamicProduct extends ABSDynamicObject { public ABSDynamicProduct() { super(Product.singleton()); } protected String name; private Set<ABSDynamicFeature> features = new HashSet<ABSDynamicFeature>(); private Map<ABSDynamicProduct,ABSDynamicReconfiguration> reconfigurations = new HashMap<ABSDynamicProduct,ABSDynamicReconfiguration>(); public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<ABSDynamicFeature> getFeatures() { return features; } public void setFeatures(Set<ABSDynamicFeature> features) { this.features = features; } public void addFeature(ABSDynamicFeature feature) { features.add(feature); } public void addFeature(String name) { ABSDynamicFeature f = new ABSDynamicFeature(); f.setName(name); features.add(f); } public Set<ABSDynamicProduct> getConfigurableProducts() { return reconfigurations.keySet(); } public void addReconfiguration(ABSDynamicProduct targetP, ABSDynamicReconfiguration recf) { reconfigurations.put(targetP, recf); } public ABSDynamicReconfiguration getReconfiguration(ABSDynamicProduct targetP) { if (! reconfigurations.containsKey(targetP)) return reconfigurations.get(targetP); else throw new DynamicException("The product " + name + " cannot be reconfigured into product " + targetP.getName() + "."); } }