package innovimax.quixproc.datamodel.generator.csv;
import java.io.InputStreamReader;
import java.io.Reader;
import innovimax.quixproc.datamodel.QuiXCharStream;
import innovimax.quixproc.datamodel.event.AQuiXEvent;
import innovimax.quixproc.datamodel.generator.AGenerator;
import innovimax.quixproc.datamodel.stream.IQuiXStreamReader;
public abstract class ACSVGenerator extends AGenerator {
public Reader getReader(long size, Unit unit, Variation variation) {
return new InputStreamReader(getInputStream(size, unit, variation), this.currentCharset);
}
public static class SimpleCSVGenerator extends ACSVGenerator {
@Override
public IQuiXStreamReader getQuiXStreamReader() {
// TODO Auto-generated method stub
return null;
}
@Override
protected byte[] applyVariation(Variation variation, byte[][] bs, int pos) {
return bs[pos];
}
@Override
protected boolean notFinished(long current_size, int current_pattern, long total) {
return current_size < total;
}
@Override
protected int updatePattern(int current_pattern) {
return 0;
}
@Override
protected long updateSize(long current_size, int current_pattern) {
return current_size + this.patterns[current_pattern].length;
}
@Override
protected byte[] getEnd() {
return s2b("");
}
private final byte[][] patterns = { s2b("A,B,C\r\n") };
private final AQuiXEvent[][] patternsE = {
{ AQuiXEvent.getStartArray(), AQuiXEvent.getValueString(QuiXCharStream.fromSequence("A")),
AQuiXEvent.getValueString(QuiXCharStream.fromSequence("B")),
AQuiXEvent.getValueString(QuiXCharStream.fromSequence("C")), AQuiXEvent.getEndArray() } };
@Override
protected byte[][] getPatterns() {
return this.patterns;
}
@Override
protected byte[] getStart() {
return s2b("");
}
private final AQuiXEvent[] startE = { AQuiXEvent.getStartTable(), AQuiXEvent.getStartArray() };
private final AQuiXEvent[] endE = { AQuiXEvent.getEndArray(), AQuiXEvent.getEndTable() };
@Override
protected AQuiXEvent[] getEndEvent() {
return this.endE;
}
@Override
protected AQuiXEvent[][] getPatternsEvent() {
return this.patternsE;
}
@Override
protected AQuiXEvent[] getStartEvent() {
return this.startE;
}
@Override
protected boolean notFinishedEvent(long current_size, int current_pattern, long total) {
// TODO Auto-generated method stub
return false;
}
}
}