/*
* Copyright 2005-2015 by BerryWorks Software, LLC. All rights reserved.
*
* This file is part of EDIReader. You may obtain a license for its use directly from
* BerryWorks Software, and you may also choose to use this software under the terms of the
* GPL version 3. Other products in the EDIReader software suite are available only by licensing
* with BerryWorks. Only those files bearing the GPL statement below are available under the GPL.
*
* EDIReader is free software: you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* EDIReader is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with EDIReader. If not,
* see <http://www.gnu.org/licenses/>.
*/
package com.berryworks.edireader.benchmark;
import com.berryworks.edireader.EDIReader;
import com.berryworks.edireader.EDIReaderFactory;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler;
import java.io.PipedReader;
import java.io.PipedWriter;
import java.io.Writer;
public class AnsiUnitOfWork extends BenchmarkUnitOfWork {
@Override
public void run() {
if (getSessionCounter() == null)
throw new RuntimeException("SessionCounter net set");
PipedReader pipedReader;
PipedWriter pipedWriter = new PipedWriter();
try {
pipedReader = new PipedReader(pipedWriter);
generateContent(pipedWriter);
InputSource inputSource = new InputSource(pipedReader);
EDIReader reader = EDIReaderFactory.createEDIReader(inputSource);
reader.setContentHandler(new DefaultHandler());
reader.parse(inputSource);
int charCount = reader.getTokenizer().getCharCount();
getCharCounter().add(charCount);
} catch (Exception e) {
throw new RuntimeException("caught exception", e);
}
getSessionCounter().stop();
}
private void generateContent(Writer writer) {
EDITestData generator = new EDITestData();
generator.setWriter(writer);
generator.setInterchangeKCs(getInterchangeKCs());
new Thread(generator).start();
}
}