package org.example;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.drools.planner.api.domain.entity.PlanningEntity;
import org.drools.planner.api.domain.variable.PlanningVariable;
import org.drools.planner.api.domain.variable.ValueRange;
import org.drools.planner.api.domain.variable.ValueRangeType;
@PlanningEntity(difficultyComparatorClass = ItemDifficultyComparator.class)
public class Item {
private String name;
private int price;
private Bucket bucket;
public Item () {
}
public Item (String name, int price) {
this.name = name;
this.price = price;
}
@PlanningVariable()
@ValueRange(type = ValueRangeType.FROM_SOLUTION_PROPERTY, solutionProperty = "bucketList")
public Bucket getBucket() {
return bucket;
}
public void setBucket(Bucket bucket) {
this.bucket = bucket;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public boolean isInCart() {
return bucket == null ? false : bucket.isCart();
}
public Item clone() {
Item clone = new Item();
clone.name = name;
clone.price = price;
clone.bucket = bucket;
return clone;
}
public boolean solutionEquals(Object o) {
if (this == o) {
return true;
} else if (o instanceof Item) {
Item other = (Item) o;
return new EqualsBuilder()
.append(bucket, other.bucket)
.isEquals();
} else {
return false;
}
}
public int solutionHashCode() {
return new HashCodeBuilder()
.append(bucket)
.toHashCode();
}
}