ai.libs.jaicore.planning.classical.problems.ce.CEOperation Maven / Gradle / Ivy
package ai.libs.jaicore.planning.classical.problems.ce;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import ai.libs.jaicore.basic.StringUtil;
import ai.libs.jaicore.logic.fol.structure.CNFFormula;
import ai.libs.jaicore.logic.fol.structure.Monom;
import ai.libs.jaicore.logic.fol.structure.VariableParam;
import ai.libs.jaicore.planning.classical.problems.strips.Operation;
@SuppressWarnings("serial")
public class CEOperation extends Operation {
private final Map addLists;
private final Map deleteLists;
public CEOperation(final String name, final String params, final Monom precondition, final Map addLists, final Map deleteLists) {
this(name, Arrays.asList(StringUtil.explode(params, ",")).stream().map(s -> new VariableParam(s.trim())).collect(Collectors.toList()), precondition, addLists,
deleteLists);
}
public CEOperation(final String name, final List params, final Monom precondition, final Map addLists, final Map deleteLists) {
super(name, params, precondition);
this.addLists = addLists;
this.deleteLists = deleteLists;
}
public Map getAddLists() {
return this.addLists;
}
public Map getDeleteLists() {
return this.deleteLists;
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(this.addLists).append(this.deleteLists).toHashCode();
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (!super.equals(obj)) {
return false;
}
if (!(obj instanceof CEOperation)) {
return false;
}
CEOperation other = (CEOperation) obj;
return new EqualsBuilder().append(other.addLists, this.addLists).append(other.deleteLists, this.deleteLists).isEquals();
}
}