package elw.vo; import org.codehaus.jackson.annotate.JsonIgnore; import java.util.Map; public class Criteria implements IdNamed, Cloneable { private String id; public String getId() { return id; } public void setId(String id) { this.id = id; } private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } private String powDef = ""; public String getPowDef() { return powDef; } public void setPowDef(String powDef) { this.powDef = powDef; } private int powMax = 1; public int getPowMax() { return powMax; } public void setPowMax(int powMax) { this.powMax = powMax; } private String ratio = "1.0"; public String getRatio() { return ratio; } public void setRatio(String ratio) { this.ratio = ratio; } public boolean auto() { return (powDef != null && powDef.contains("$")) || (ratio != null && ratio.contains("$")); } public Integer resolvePowDef(Map<String, Double> vars) { if (powDef.startsWith("$")) { if (vars != null) { for (String var : vars.keySet()) { if (powDef.trim().equalsIgnoreCase(var)) { return vars.get(var).intValue(); } } } return null; } return Integer.parseInt(powDef); } public Double resolveRatio(Map<String, Double> vars) { if (ratio.startsWith("$")) { if (vars != null) { for (String var : vars.keySet()) { if (ratio.trim().equalsIgnoreCase(var)) { return vars.get(var); } } } return null; } return Double.parseDouble(ratio); } @JsonIgnore public int[] getPows() { final int[] pows = new int[powMax + 1]; for (int i = 0; i < pows.length; i++) { pows[i] = i; } return pows; } @Override public Criteria clone() throws CloneNotSupportedException { final Criteria clone = (Criteria) super.clone(); // nothing else to do here return clone; } }