/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package photoSpreadParser.photoSpreadExpression;
import photoSpreadObjects.PhotoSpreadObject;
import photoSpreadParser.photoSpreadNormalizedExpression.PhotoSpreadNormalizedExpression;
import photoSpreadTable.PhotoSpreadCell;
import photoSpreadUtilities.TreeSetRandomSubsetIterable;
/**
*
* @author skandel
*/
public class PhotoSpreadCellRangeCondition extends PhotoSpreadCondition {
private PhotoSpreadCellRange _rhs;
public PhotoSpreadCellRangeCondition(String _lhs, String _compOp, PhotoSpreadCellRange _rhs) {
super(_lhs, _compOp);
this._rhs = _rhs;
}
public String getLhs() {
return _lhs;
}
public PhotoSpreadCellRange getRhs() {
return _rhs;
}
@Override
public String toString() {
return _lhs + " " + this._comparisionAsString + " " + _rhs.toString();
}
@Override
public String copyCondition(int rowOffset, int colOffset){
return _lhs + " " + this._comparisionAsString + " " + _rhs.copyCellRange(rowOffset, colOffset);
}
public boolean satisfiesCondition(PhotoSpreadObject object){
String value = object.getMetaData(_lhs);
return _compOp.satisfiesOperator(value, _rhs.evaluate(object.getCell()));
}
@Override
public boolean canForceObject(PhotoSpreadObject object) {
return super.canForceObject(object) && _rhs.evaluate(object.getCell()).size() <= 1;
}
@Override
public void forceObject(PhotoSpreadObject object) {
_compOp.forceObject(object, _lhs, _rhs.evaluate(object.getCell()));
}
@Override
public TreeSetRandomSubsetIterable<PhotoSpreadObject> evaluate(
PhotoSpreadCell cell) {
// TODO Auto-generated method stub
return null;
}
@Override
public PhotoSpreadNormalizedExpression normalize(PhotoSpreadCell cell) {
throw new RuntimeException("Normalize not implemented for PhotoSpreadCellRange");
}
}