/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package reportgen.formatter.extended.range.cross;
import java.util.Set;
import reportgen.formatter.extended.range.RangeProcessor;
import java.util.HashMap;
import java.util.Map;
import reportgen.utils.ReportException;
import reportgen.formatter.extended.Factory;
import reportgen.ren.report.extendedformat.range.RangeOrderList;
import reportgen.ren.report.extendedformat.range.cross.ColRowRangeCrossReport;
import reportgen.ren.report.extendedformat.range.cross.CrossReport;
import reportgen.ren.report.extendedformat.range.cross.CrossReportColumn;
/**
* Диапазонный процессор. Имеет ссылку на диапазон расширенного форматирования.
*
*
* @author axe
*/
public class CrossReportProcessorInner
extends RangeProcessor<ColRowRangeCrossReport, RangeProcessor> {
private final int rowIndex;
/**
*
* @param dataRange
* @param table
*/
public CrossReportProcessorInner(RangeProcessor parent, ColRowRangeCrossReport dataRange,
int rowIndex, long originalPosition) throws ReportException {
super(parent, dataRange, originalPosition);
this.rowIndex = rowIndex;
inner.addAll(Factory.getProcessors(range.getInner(), this));
}
@Override
public RangeOrderList getOrders() {
return range.getOrders();
}
@Override
protected Map getLocalModel() throws ReportException {
HashMap<CrossReportColumn, Object> model = new HashMap<CrossReportColumn, Object>();
CrossReport crossReport = range.getCrossReport();
for(int i=0; i<crossReport.getColumnCount(); i++) {
CrossReportColumn column = new CrossReportColumn(crossReport, i);
model.put(column, crossReport.getSubReport().getColValue(i, rowIndex));
}
return model;
}
@Override
protected boolean isFit(Map model) throws ReportException {
return range.getCrossCriteria().getValue(model).equals(Boolean.TRUE);
}
@Override
protected boolean checkExternalLinks(Set<RangeProcessor> fit) {
return true;
}
}