/** * Creates a new real dynamic Variable given an {@link Variable} object. * @param var a given {@link Variable} object. * @return a new dynamic {@link Variable} object. */ public Variable newRealDynamicVariable(Variable var){ if (!var.isObservable()) { throw new IllegalArgumentException("A Real variable should be created from an observed variable"); } if (var.getStateSpaceType().getStateSpaceTypeEnum()!= StateSpaceTypeEnum.REAL) { throw new IllegalArgumentException("An Real variable should be created from a real variable"); } VariableBuilder builder = new VariableBuilder(var.getAttribute()); builder.setName(var.getName()+"_Real"); VariableImplementation varNew = new VariableImplementation(builder, nonInterfaceVariables.size()); if (mapping.containsKey(varNew.getName())) { throw new IllegalArgumentException("Attribute list contains duplicated names"); } this.mapping.put(varNew.getName(), varNew.getVarID()); nonInterfaceVariables.add(varNew); VariableImplementation interfaceVariable = VariableImplementation.newInterfaceVariable(var); varNew.setInterfaceVariable(interfaceVariable); interfaceVariables.add(varNew.getVarID(), interfaceVariable); return varNew; }
/** * {@inheritDoc} */ @Override public boolean equals(Object o) { if (this == o){ return true; } if (o == null || getClass() != o.getClass()){ return false; } Variable var = (Variable) o; return this.isInterfaceVariable()==var.isInterfaceVariable() && this.getVarID()==var.getVarID(); }
/** * Blocks this DynamicVariables. */ public void block(){ for (int i = 0; i < this.interfaceVariables.size(); i++) { VariableImplementation var = (VariableImplementation)this.interfaceVariables.get(i); var.setVarID(i+this.getNumberOfVars()); } }
/** * Creates a new dynamic Variable given a name, a distribution type, and a state space type. * @param name a given {@code String} that represents the name of the dynamic variable. * @param distributionTypeEnum a {@link DistributionTypeEnum} object. * @param stateSpaceType a {@link StateSpaceType} object. * @return a new dynamic {@link Variable} object. */ public Variable newDynamicVariable(String name, DistributionTypeEnum distributionTypeEnum, StateSpaceType stateSpaceType) { VariableBuilder variableBuilder = new VariableBuilder(); variableBuilder.setName(name); variableBuilder.setDistributionType(distributionTypeEnum); variableBuilder.setStateSpaceType(stateSpaceType); variableBuilder.setObservable(false); VariableImplementation var = new VariableImplementation(variableBuilder, nonInterfaceVariables.size()); if (mapping.containsKey(var.getName())) { throw new IllegalArgumentException("Attribute list contains duplicated names"); } this.mapping.put(var.getName(), var.getVarID()); nonInterfaceVariables.add(var); VariableImplementation interfaceVariable = VariableImplementation.newInterfaceVariable(var); var.setInterfaceVariable(interfaceVariable); interfaceVariables.add(var.getVarID(), interfaceVariable); return var; }
/** * Creates a new DynamicVariables object given a set of {@link Attributes}. * @param atts a set of {@link Attributes}. */ public DynamicVariables(Attributes atts) { this.nonInterfaceVariables = new ArrayList<>(); this.interfaceVariables = new ArrayList<>(); this.mapping = new ConcurrentHashMap<>(); for (Attribute att : atts.getListOfNonSpecialAttributes()) { VariableBuilder builder = new VariableBuilder(att); VariableImplementation var = new VariableImplementation(builder, nonInterfaceVariables.size()); if (mapping.containsKey(var.getName())) { throw new IllegalArgumentException("Attribute list contains duplicated names"); } this.mapping.put(var.getName(), var.getVarID()); nonInterfaceVariables.add(var.getVarID(), var); VariableImplementation interfaceVariable = VariableImplementation.newInterfaceVariable(var); var.setInterfaceVariable(interfaceVariable); interfaceVariables.add(var.getVarID(), interfaceVariable); } }
/** * Creates a new DynamicVariables object given a list of Attributes and their corresponding distribution types. * @param atts a set of {@link Attributes}. * @param typeDists a {@link java.util.HashMap} object that maps the Attributes to their distribution types. */ public DynamicVariables(Attributes atts, Map<Attribute, DistributionTypeEnum> typeDists) { this.nonInterfaceVariables = new ArrayList<>(); this.interfaceVariables = new ArrayList<>(); for (Attribute att : atts.getListOfNonSpecialAttributes()) { VariableBuilder builder; if (typeDists.containsKey(att)) { builder = new VariableBuilder(att, typeDists.get(att)); }else{ builder = new VariableBuilder(att); } VariableImplementation var = new VariableImplementation(builder, nonInterfaceVariables.size()); if (mapping.containsKey(var.getName())) { throw new IllegalArgumentException("Attribute list contains duplicated names"); } this.mapping.put(var.getName(), var.getVarID()); nonInterfaceVariables.add(var.getVarID(), var); VariableImplementation interfaceVariable = VariableImplementation.newInterfaceVariable(var); var.setInterfaceVariable(interfaceVariable); interfaceVariables.add(var.getVarID(), interfaceVariable); } }
/** * Creates a new dynamic Variable from a given Attribute. * @param att a given {@link Attribute}. * @return a new {@link Variable} object. */ public Variable newDynamicVariable(Attribute att) { VariableImplementation var = new VariableImplementation(new VariableBuilder(att), nonInterfaceVariables.size()); if (mapping.containsKey(var.getName())) { throw new IllegalArgumentException("Attribute list contains duplicated names"); } this.mapping.put(var.getName(), var.getVarID()); nonInterfaceVariables.add(var); VariableImplementation interfaceVariable = VariableImplementation.newInterfaceVariable(var); var.setInterfaceVariable(interfaceVariable); interfaceVariables.add(var.getVarID(), interfaceVariable); return var; }
/** * Creates a new dynamic Variable given an {@link Attribute} object and a distribution type. * @param att a given {@link Attribute}. * @param distributionTypeEnum a {@link DistributionTypeEnum} object. * @return a new dynamic {@link Variable} object. */ public Variable newDynamicVariable(Attribute att, DistributionTypeEnum distributionTypeEnum) { VariableBuilder variableBuilder = new VariableBuilder(att); variableBuilder.setDistributionType(distributionTypeEnum); VariableImplementation var = new VariableImplementation(variableBuilder, nonInterfaceVariables.size()); if (mapping.containsKey(var.getName())) { throw new IllegalArgumentException("Attribute list contains duplicated names"); } this.mapping.put(var.getName(), var.getVarID()); nonInterfaceVariables.add(var); VariableImplementation interfaceVariable = VariableImplementation.newInterfaceVariable(var); var.setInterfaceVariable(interfaceVariable); interfaceVariables.add(var.getVarID(), interfaceVariable); return var; }
/** * Sets a new set of attributes. It links current variables with this new set by matching * variable names with attributes names. * @param attributes an object of class {@link Attributes}. */ public void setAttributes(Attributes attributes){ for (Variable variable : nonInterfaceVariables) { VariableImplementation variableImplementation = (VariableImplementation)variable; variableImplementation.setAttribute(attributes.getAttributeByName(variable.getName())); } for (Variable variable : interfaceVariables) { VariableImplementation variableImplementation = (VariableImplementation)variable; variableImplementation.setAttribute(attributes.getAttributeByName(getVariableFromInterface(variable).getName())); } }
public static VariableImplementation newInterfaceVariable(Variable variable){ return new VariableImplementation(variable); }
public VariableImplementation(VariableBuilder builder, int varID) { this.name = builder.getName(); this.varID = varID; this.observable = builder.isObservable(); this.stateSpaceType = builder.getStateSpaceType(); this.distributionTypeEnum = builder.getDistributionType(); this.attribute = builder.getAttribute(); this.isInterfaceVariable = false; if (this.getStateSpaceType().getStateSpaceTypeEnum()== StateSpaceTypeEnum.FINITE_SET) { this.numberOfStates = ((FiniteStateSpace) this.stateSpaceType).getNumberOfStates(); } this.distributionType=distributionTypeEnum.newDistributionType(this); }
private VariableImplementation(Variable variable) { this.name = variable.getName()+INTERFACE_SUFFIX; this.varID = variable.getVarID(); this.observable = variable.isObservable(); this.stateSpaceType = variable.getStateSpaceType(); this.distributionTypeEnum = variable.getDistributionTypeEnum(); this.attribute = variable.getAttribute(); this.isInterfaceVariable = true; if (this.getStateSpaceType().getStateSpaceTypeEnum()== StateSpaceTypeEnum.FINITE_SET) { this.numberOfStates = ((FiniteStateSpace) this.stateSpaceType).getNumberOfStates(); } this.distributionType=distributionTypeEnum.newDistributionType(this); }
/** * {@inheritDoc} */ @Override public VariableBuilder getVariableBuilder(){ VariableBuilder variableBuilder = new VariableBuilder(); variableBuilder.setAttribute(this.getAttribute()); variableBuilder.setDistributionType(this.getDistributionTypeEnum()); variableBuilder.setName(this.getName()); variableBuilder.setObservable(this.observable); variableBuilder.setStateSpaceType(this.getStateSpaceType()); return variableBuilder; }