Newer
Older
DesignCraft / src / main / java / models / deltaAlgebra / DeltaSum.java
package models.deltaAlgebra;

import java.util.ArrayList;
import java.util.List;

public class DeltaSum extends DeltaCombination {
    private List<DeltaExpression> components;

    public DeltaSum(DeltaExpression left, DeltaExpression right) {
        this.components = new ArrayList<>();
        this.components.add(left);
        this.components.add(right);
    }

    public DeltaSum(List<DeltaExpression> components) {
        this.components = components;
    }

    public DeltaSum add(DeltaExpression expression) {
        components.add(expression);
        return this;
    }

    @Override
    public List<Delta> decompose() {
        List<Delta> deltas = new ArrayList<>();
        for (DeltaExpression component : components) {
            deltas.addAll(component.decompose());
        }
        return deltas;
    }

    @Override
    public DeltaSum copy() {
        return new DeltaSum(new ArrayList<>(components));
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || !(o instanceof DeltaSum)) return false;
        DeltaSum another = (DeltaSum) o;
        return components.equals(another.components);
    }

    @Override
    public int hashCode() {
        return components.hashCode();
    }

    public String toString() {
        String str = "";
        String operator = "";
        for (DeltaExpression component : components) {
            str += operator + component.toString();
            operator = " + ";
        }
        return str;
    }
}