package splar.core.constraints;
import splar.core.fm.FeatureTreeNode;
public class BooleanVariable implements BooleanVariableInterface {
private String name;
private int value;
private boolean isImmutable;
private BooleanVariableInterface propagationVar = null;
private boolean state; // true-positive, false-negative
public BooleanVariable( String name ) {
this.name = name;
value = -1;
isImmutable = false;
}
public BooleanVariable( String name, int value ) {
this.name = name;
this.value = value;
}
public void setState(boolean state) {
this.state = state;
}
public boolean isPositive() {
return state;
}
public void setImmutable(boolean immutable) {
isImmutable = immutable;
}
public boolean isImmutable() {
return isImmutable;
}
public String getID() {
return name;
}
public void assignValue(int value, BooleanVariableInterface propagationVar) {
if ( !isImmutable ) {
this.value = value;
this.propagationVar = propagationVar;
}
}
public boolean isPropagation() {
return (propagationVar != null);
}
public BooleanVariableInterface getPropagationVariable() {
return propagationVar;
}
public void assignValue(int value){
if ( !isImmutable ) {
this.value = value;
propagationVar = null;
}
}
public int getValue() {
return value;
}
public boolean isInstantiated() {
return value != -1;
}
public void resetValue() {
if ( !isImmutable ) {
value = -1;
}
}
private Object attachedData;
public void attachData(Object object) {
attachedData= object;
}
public Object getAttachedData() {
return attachedData;
}
public void resetAttachedData() {
attachedData = null;
}
public int hashCode() {
return getID().hashCode();
}
public boolean equals(Object var) {
if ( var == null )
return false;
// if ( var instanceof FeatureTreeNode ) {
// return name.equals(((FeatureTreeNode)var).getID());
// }
return getID().equals(((BooleanVariableInterface)var).getID());
}
public String toString() {
return name + ": " + value;
}
}