package com.ricebridge.xmlman.test;
import com.ricebridge.xmlman.*;
import com.ricebridge.xmlman.in.*;
import com.ricebridge.xmlman.in.test.*;
import com.ricebridge.xmlman.log.*;
import org.jostraca.util.*;
import junit.framework.*;
import junit.textui.*;
import org.xml.sax.InputSource;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
import java.util.*;
import java.io.*;
import java.sql.*;
public class LoadRecordListenerTest extends TestCase {
public LoadRecordListenerTest( String pName ) {
super( pName );
}
public static TestSuite suite() {
return new TestSuite( LoadRecordListenerTest.class );
}
public static void main( String[] pArgs ) {
TestRunner.run( suite() );
}
public void testExample() throws Exception {
File xmlFile = TestUtil.findFile( "com/ricebridge/xmlman/test/example.xml" );
XmlManager xmlManager = new XmlManager();
RecordSpec rs = new RecordSpec( "/root/record", new String[] {"@name","foo","bar"} );
SimpleRecordListener srl = new SimpleRecordListener();
xmlManager.load( xmlFile, rs, srl );
assertEquals( "1:[r1, f1, b1] 2:[r2, f2, b2] 3:[r3, f3, b3] ", srl.getData() );
}
public void testSingle() throws Exception {
String loadcanon = "1:[b1, q1] 2:[b2, q2] ";
File xmlFile = null;
xmlFile = TestUtil.findFile( "com/ricebridge/xmlman/test/load.xml" );
XmlManager xmlManager = new XmlManager();
RecordSpec rs = new RecordSpec( "/foo/bar",
new String[] {"@name","que"},
new String[] {"Name","Que"} );
SimpleRecordListener srl = new SimpleRecordListener();
xmlManager.load( xmlFile, rs, srl );
assertEquals( loadcanon, canon(srl) );
srl = new SimpleRecordListener();
xmlManager.load( xmlFile.getAbsolutePath(), rs, srl );
assertEquals( loadcanon, canon(srl) );
srl = new SimpleRecordListener();
InputStream is = new FileInputStream( xmlFile );
xmlManager.load( is, rs, srl );
assertEquals( loadcanon, canon(srl) );
is.close();
srl = new SimpleRecordListener();
InputStream fis = new FileInputStream( xmlFile );
InputSource isrc = new InputSource( fis );
xmlManager.load( isrc, rs, srl );
assertEquals( loadcanon, canon(srl) );
fis.close();
srl = new SimpleRecordListener();
xmlManager.loadFromURI( TestUtil.makeURI(xmlFile), rs, srl );
assertEquals( loadcanon, canon(srl) );
srl = new SimpleRecordListener();
xmlManager.loadFromString( FileUtil.readFile(xmlFile), rs, srl );
assertEquals( loadcanon, canon(srl) );
}
public void testMultiple() throws Exception {
String loadcanon = "1:[b, b1, q1] 2:[b, b2, q2] 1:[f, f1, z1] ";
File xmlFile = null;
xmlFile = TestUtil.findFile( "com/ricebridge/xmlman/test/load.xml" );
XmlManager xmlManager = new XmlManager();
RecordSpec rs_b = new RecordSpec( "/foo/bar",
new String[] {"'b'","@name","que"},
new String[] {"Type","Name","Value"} );
RecordSpec rs_f = new RecordSpec( "/foo/far",
new String[] {"'f'","@name","zoo"},
new String[] {"These","Headers","Ignored"} );
RecordSpec rs = new RecordSpec( rs_b, rs_f );
SimpleRecordListener srl = new SimpleRecordListener();
xmlManager.load( xmlFile, rs, srl );
assertEquals( loadcanon, canon(srl) );
srl = new SimpleRecordListener();
xmlManager.load( xmlFile.getAbsolutePath(), rs, srl );
assertEquals( loadcanon, canon(srl) );
srl = new SimpleRecordListener();
InputStream is = new FileInputStream( xmlFile );
xmlManager.load( is, rs, srl );
assertEquals( loadcanon, canon(srl) );
is.close();
srl = new SimpleRecordListener();
InputStream fis = new FileInputStream( xmlFile );
InputSource isrc = new InputSource( fis );
xmlManager.load( isrc, rs, srl );
assertEquals( loadcanon, canon(srl) );
fis.close();
srl = new SimpleRecordListener();
xmlManager.loadFromURI( TestUtil.makeURI(xmlFile), rs, srl );
assertEquals( loadcanon, canon(srl) );
srl = new SimpleRecordListener();
xmlManager.loadFromString( FileUtil.readFile(xmlFile), rs, srl );
assertEquals( loadcanon, canon(srl) );
xmlManager = new XmlManager(rs);
srl = new SimpleRecordListener();
xmlManager.load( xmlFile, srl );
assertEquals( loadcanon, canon(srl) );
srl = new SimpleRecordListener();
xmlManager.load( xmlFile.getAbsolutePath(), rs, srl );
assertEquals( loadcanon, canon(srl) );
srl = new SimpleRecordListener();
is = new FileInputStream( xmlFile );
xmlManager.load( is, srl );
assertEquals( loadcanon, canon(srl) );
is.close();
srl = new SimpleRecordListener();
fis = new FileInputStream( xmlFile );
isrc = new InputSource( fis );
xmlManager.load( isrc, srl );
assertEquals( loadcanon, canon(srl) );
fis.close();
srl = new SimpleRecordListener();
xmlManager.loadFromURI( TestUtil.makeURI(xmlFile), srl );
assertEquals( loadcanon, canon(srl) );
srl = new SimpleRecordListener();
xmlManager.loadFromString( FileUtil.readFile(xmlFile), srl );
assertEquals( loadcanon, canon(srl) );
}
public void testRepeat() throws Exception {
String loadheads = "Name,Que,";
String fileprefix = "com/ricebridge/xmlman/test/";
File xmlFile = null;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
RecordSpec rs = new RecordSpec( "/foo/bar",
new String[] {"@name","que"},
new String[] {"Name","Que"} );
XmlManager xmlManager = new XmlManager(rs);
String loadcanon1 = "1:[b1, q1] 2:[b2, q2] ";
String loadcanon2 = "1:[2b1, 2q1] 2:[2b2, 2q2] 3:[2b3, 2q3] ";
String loadcanon3 = "1:[3b1, 3q1] 2:[3b2, 3q2] 3:[3b3, 3q3] 4:[3b4, 3q4] ";
SimpleRecordListener srl = new SimpleRecordListener();
String loadcanon = loadcanon1;
xmlManager.load( xmlFile, srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
xmlManager.load( xmlFile, srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
xmlManager.load( xmlFile, srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
xmlManager.load( xmlFile, srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
xmlManager.load( xmlFile.getAbsolutePath(), srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
xmlManager.load( xmlFile.getAbsolutePath(), srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
xmlManager.load( xmlFile.getAbsolutePath(), srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
xmlManager.load( xmlFile.getAbsolutePath(), srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
InputStream is = new FileInputStream( xmlFile );
xmlManager.load( is, srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
is.close();
is = new FileInputStream( xmlFile );
xmlManager.load( is, srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
is.close();
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
is = new FileInputStream( xmlFile );
xmlManager.load( is, srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
is.close();
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
is = new FileInputStream( xmlFile );
xmlManager.load( is, srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
is.close();
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
FileInputStream fis = new FileInputStream( xmlFile );
InputSource isrc = new InputSource( fis );
xmlManager.load( isrc, srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
fis.close();
fis = new FileInputStream( xmlFile );
isrc = new InputSource( fis );
xmlManager.load( isrc, srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
fis.close();
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
fis = new FileInputStream( xmlFile );
isrc = new InputSource( fis );
xmlManager.load( isrc, srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
fis.close();
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
fis = new FileInputStream( xmlFile );
isrc = new InputSource( fis );
xmlManager.load( isrc, srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
fis.close();
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
xmlManager.loadFromURI( TestUtil.makeURI( xmlFile ), srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
xmlManager.loadFromURI( TestUtil.makeURI( xmlFile ), srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
xmlManager.loadFromURI( TestUtil.makeURI( xmlFile ), srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
xmlManager.loadFromURI( TestUtil.makeURI( xmlFile ), srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
xmlManager.loadFromString( FileUtil.readFile(xmlFile), srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
xmlManager.loadFromString( FileUtil.readFile(xmlFile), srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
xmlManager.loadFromString( FileUtil.readFile(xmlFile), srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
xmlManager.loadFromString( FileUtil.readFile(xmlFile), srl );
assertEquals( loadcanon, canon(srl) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
}
private String canon( SimpleRecordListener pSimpleRecordListener ) throws Exception {
return pSimpleRecordListener.getData();
}
public static class SimpleRecordListener extends RecordListenerSupport {
StringBuffer sb = null;
protected void startProcessImpl() {
sb = new StringBuffer();
}
protected BadRecord handleRecordImpl( String[] pRecord, long pRecordNumber ) {
sb.append( pRecordNumber+":"+Arrays.asList( pRecord )+" " );
return null;
}
public String getData() {
return sb.toString();
}
}
}