
org.coode.oppl.function.ValuesVariableAtttribute Maven / Gradle / Ivy
package org.coode.oppl.function;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import org.coode.oppl.ConstraintSystem;
import org.coode.oppl.Variable;
import org.coode.oppl.bindingtree.BindingNode;
import org.semanticweb.owlapi.model.OWLObject;
/** @author Luigi Iannone
* @param
* type */
public class ValuesVariableAtttribute extends
VariableAttribute> {
/** @param variable
* variable */
public ValuesVariableAtttribute(Variable variable) {
super(variable, AttributeName.VALUES);
}
@Override
public P accept(OPPLFunctionVisitorEx
visitor) {
return visitor.visitValuesVariableAtttribute(this);
}
@Override
public void accept(OPPLFunctionVisitor visitor) {
visitor.visitValuesVariableAtttribute(this);
}
@Override
public ValueComputation> getValueComputation(
final ValueComputationParameters parameters) {
ValueComputation> valueComputation = new ValueComputation>() {
@SuppressWarnings("unchecked")
@Override
public Collection extends O> compute(
OPPLFunction extends Collection extends O>> opplFunction) {
ConstraintSystem constraintSystem = parameters.getConstraintSystem();
Set leaves = constraintSystem.getLeaves();
Set toReturn = null;
if (leaves != null) {
toReturn = new HashSet(leaves.size());
for (BindingNode bindingNode : leaves) {
OWLObject assignmentValue = bindingNode.getAssignmentValue(
ValuesVariableAtttribute.this.getVariable(),
new SimpleValueComputationParameters(parameters
.getConstraintSystem(), bindingNode, parameters
.getRuntimeExceptionHandler()));
if (assignmentValue != null) {
toReturn.add((O) assignmentValue);
}
}
}
return toReturn;
}
};
return valueComputation;
}
/** @param v
* v
* @param
* atribute type
* @return new value variable attribute */
public static
ValuesVariableAtttribute
getValuesVariableAtttribute(Variable
v) {
return new ValuesVariableAtttribute
(v);
}
}