/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package photoSpreadParser.photoSpreadNormalizedExpression;
import java.util.ArrayList;
import java.util.Iterator;
import photoSpreadObjects.PhotoSpreadObject;
import photoSpreadParser.photoSpreadExpression.PhotoSpreadCondition;
import photoSpreadTable.PhotoSpreadCell;
/**
*
* @author skandel
*/
public class PhotoSpreadNormalizedExpression {
ArrayList<PhotoSpreadNormalizedContainerExpression> _containerExpressions;
public PhotoSpreadNormalizedExpression(){
_containerExpressions = new ArrayList<PhotoSpreadNormalizedContainerExpression>();
}
public PhotoSpreadNormalizedExpression(PhotoSpreadCell cell){
this();
PhotoSpreadNormalizedContainerExpression ce = new PhotoSpreadNormalizedContainerExpression(cell);
_containerExpressions.add(ce);
}
public void union(PhotoSpreadNormalizedExpression other){
this._containerExpressions.addAll(other._containerExpressions);
}
@Override
public Object clone() throws CloneNotSupportedException {
PhotoSpreadNormalizedExpression ne = new PhotoSpreadNormalizedExpression();
///ne._containerExpressions = new ArrayList<PhotoSpreadNormalizedContainerExpession>();
Iterator<PhotoSpreadNormalizedContainerExpression> it = _containerExpressions.iterator();
while(it.hasNext()){
ne.addContainerExpression((PhotoSpreadNormalizedContainerExpression) it.next().clone());
}
return ne;
}
@Override
public String toString() {
return _containerExpressions.toString();
}
public void addContainerExpression(PhotoSpreadNormalizedContainerExpression ce){
_containerExpressions.add(ce);
}
public void addCondition(PhotoSpreadCondition condition){
Iterator<PhotoSpreadNormalizedContainerExpression> it = _containerExpressions.iterator();
while(it.hasNext()){
it.next().addCondition(condition);
}
}
public void addConditions(ArrayList<PhotoSpreadCondition> conditions){
Iterator<PhotoSpreadNormalizedContainerExpression> it = _containerExpressions.iterator();
while(it.hasNext()){
it.next().addConditions(conditions);
}
}
public PhotoSpreadCell forceObject(PhotoSpreadObject object, Boolean reEvaluateCell, Boolean reDrawTable){
if(_containerExpressions.size() == 1){
PhotoSpreadNormalizedContainerExpression ce = _containerExpressions.get(0);
if(ce.canForceObject(object)){
return ce.forceObject(object, reEvaluateCell, reDrawTable);
}
}
return null;
}
}