org.sfm.csv.impl.DelegateDelayedCellSetterFactory Maven / Gradle / Ivy
package org.sfm.csv.impl;
import org.sfm.utils.RowHandler;
public class DelegateDelayedCellSetterFactory implements DelayedCellSetterFactory {
private final DelegateMarkerDelayedCellSetter marker;
private final CsvMapperCellConsumer> handler;
private final int cellIndex;
protected P value;
public DelegateDelayedCellSetterFactory(DelegateMarkerDelayedCellSetter marker, int cellIndex) {
this.marker = marker;
this.handler = ((CsvMapperImpl)marker.getMapper()).newCellConsumer(new RowHandler
() {
@Override
public void handle(P t) throws Exception {
DelegateDelayedCellSetterFactory.this.value = t;
}
});
this.cellIndex = cellIndex;
}
public DelegateDelayedCellSetterFactory(
DelegateMarkerDelayedCellSetter marker,
CsvMapperCellConsumer> bhandler, int cellIndex) {
this.handler = bhandler;
this.marker = marker;
this.cellIndex = cellIndex;
}
public CsvMapperCellConsumer> getCellHandler() {
return handler;
}
@Override
public DelayedCellSetter newCellSetter() {
return new DelayedCellSetter() {
@Override
public P getValue() {
return value;
}
@Override
public void set(T t) throws Exception {
marker.getSetter().set(t, value);
}
@Override
public boolean isSettable() {
return marker.getSetter() != null;
}
public void set(char[] chars, int offset, int length, ParsingContext parsingContext)
throws Exception {
handler.newCell(chars, offset, length, cellIndex);
}
};
}
}