package de.gaalop.gapp.importing.parallelObjects;
import java.util.LinkedList;
/**
* Represents a product of ParallelObjects
* @author Christian Steinmetz
*/
public class Product extends ParallelObject {
private LinkedList<ParallelObject> factors;
public Product() {
factors = new LinkedList<ParallelObject>();
}
public Product(LinkedList<ParallelObject> factors) {
this.factors = factors;
}
public LinkedList<ParallelObject> getFactors() {
return factors;
}
public void setFactors(LinkedList<ParallelObject> factors) {
this.factors = factors;
}
@Override
public Object accept(ParallelObjectVisitor visitor, Object arg) {
return visitor.visitProduct(this, arg);
}
/**
* Adds a factor to the factors list
* @param factor The factor to be added
*/
public void add(ParallelObject factor) {
factors.add(factor);
}
/**
* Adds all factors of a product to the factors list
* @param product The product
*/
public void add(Product product) {
this.factors.addAll(product.getFactors());
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder((isNegated() ? "!" : "") + "(");
for (ParallelObject obj : factors) {
sb.append(obj.toString());
sb.append(" *");
}
if (factors.size() >= 1) {
sb.delete(sb.length() - 2, sb.length());
}
sb.append(")");
return sb.toString();
}
@Override
public boolean isTerminal() {
return false;
}
}