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 LoadResultSetTest extends TestCase {
public LoadResultSetTest( String pName ) {
super( pName );
}
public static TestSuite suite() {
return new TestSuite( LoadResultSetTest.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"},
new String[] {"Name","Foo","Bar"} );
ResultSet resultset = xmlManager.loadResultSet( xmlFile, rs );
ResultSetMetaData rsmd = resultset.getMetaData();
int numCols = rsmd.getColumnCount();
StringBuffer sb = new StringBuffer();
for( int col = 1; col <= numCols; col++ ) {
sb.append( rsmd.getColumnName(col) + (col<numCols?", ":"\n") );
}
sb.append( "---\n" );
while( resultset.next() ) {
for( int col = 1; col <= numCols; col++ ) {
sb.append( resultset.getString(col) + (col<numCols?", ":"\n") );
}
}
assertEquals( "Name, Foo, Bar\n---\nr1, f1, b1\nr2, f2, b2\nr3, f3, b3\n", sb.toString() );
XmlSpec xs = xmlManager.getXmlSpec();
xs.setProperty("ResultSet.dataHasHeaders", true);
resultset = xmlManager.loadResultSet( xmlFile, rs );
assertEquals( "r2,f2,b2|r3,f3,b3|", canon(resultset) );
assertEquals( "r1,f1,b1,", heads(resultset) );
}
public void testSingle() throws Exception {
String loadcanon = "b1,q1|b2,q2|";
String loadheads = "Name,Que,";
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"} );
ResultSet resultset = xmlManager.loadResultSet( xmlFile, rs );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
resultset = xmlManager.loadResultSet( xmlFile.getAbsolutePath(), rs );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
InputStream is = new FileInputStream( xmlFile );
resultset = xmlManager.loadResultSet( is, rs );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
is.close();
InputStream fis = new FileInputStream( xmlFile );
InputSource isrc = new InputSource( fis );
resultset = xmlManager.loadResultSet( isrc, rs );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
fis.close();
resultset = xmlManager.loadResultSetFromURI( TestUtil.makeURI(xmlFile), rs );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
resultset = xmlManager.loadResultSetFromString( FileUtil.readFile(xmlFile), rs );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
}
public void testMultiple() throws Exception {
String loadcanon = "b,b1,q1|b,b2,q2|f,f1,z1|";
String loadheads = "Type,Name,Value,";
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 );
ResultSet resultset = xmlManager.loadResultSet( xmlFile, rs );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
resultset = xmlManager.loadResultSet( xmlFile.getAbsolutePath(), rs );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
InputStream is = new FileInputStream( xmlFile );
resultset = xmlManager.loadResultSet( is, rs );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
is.close();
InputStream fis = new FileInputStream( xmlFile );
InputSource isrc = new InputSource( fis );
resultset = xmlManager.loadResultSet( isrc, rs );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
fis.close();
resultset = xmlManager.loadResultSetFromURI( TestUtil.makeURI(xmlFile), rs );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
resultset = xmlManager.loadResultSetFromString( FileUtil.readFile(xmlFile), rs );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
xmlManager = new XmlManager(rs);
resultset = xmlManager.loadResultSet( xmlFile );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
resultset = xmlManager.loadResultSet( xmlFile.getAbsolutePath() );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
is = new FileInputStream( xmlFile );
resultset = xmlManager.loadResultSet( is );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
is.close();
fis = new FileInputStream( xmlFile );
isrc = new InputSource( fis );
resultset = xmlManager.loadResultSet( isrc );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
fis.close();
resultset = xmlManager.loadResultSetFromURI( TestUtil.makeURI(xmlFile) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
resultset = xmlManager.loadResultSetFromString( FileUtil.readFile(xmlFile) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
}
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 = "b1,q1|b2,q2|";
String loadcanon2 = "2b1,2q1|2b2,2q2|2b3,2q3|";
String loadcanon3 = "3b1,3q1|3b2,3q2|3b3,3q3|3b4,3q4|";
String loadcanon = loadcanon1;
ResultSet resultset = xmlManager.loadResultSet( xmlFile );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
resultset = xmlManager.loadResultSet( xmlFile );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
resultset = xmlManager.loadResultSet( xmlFile );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
resultset = xmlManager.loadResultSet( xmlFile );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
resultset = xmlManager.loadResultSet( xmlFile.getAbsolutePath() );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
resultset = xmlManager.loadResultSet( xmlFile.getAbsolutePath() );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
resultset = xmlManager.loadResultSet( xmlFile.getAbsolutePath() );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
resultset = xmlManager.loadResultSet( xmlFile.getAbsolutePath() );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
InputStream is = new FileInputStream( xmlFile );
resultset = xmlManager.loadResultSet( is );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
is.close();
is = new FileInputStream( xmlFile );
resultset = xmlManager.loadResultSet( is );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
is.close();
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
is = new FileInputStream( xmlFile );
resultset = xmlManager.loadResultSet( is );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
is.close();
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
is = new FileInputStream( xmlFile );
resultset = xmlManager.loadResultSet( is );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
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 );
resultset = xmlManager.loadResultSet( isrc );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
fis.close();
fis = new FileInputStream( xmlFile );
isrc = new InputSource( fis );
resultset = xmlManager.loadResultSet( isrc );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
fis.close();
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
fis = new FileInputStream( xmlFile );
isrc = new InputSource( fis );
resultset = xmlManager.loadResultSet( isrc );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
fis.close();
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
fis = new FileInputStream( xmlFile );
isrc = new InputSource( fis );
resultset = xmlManager.loadResultSet( isrc );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
fis.close();
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
resultset = xmlManager.loadResultSetFromURI( TestUtil.makeURI( xmlFile ) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
resultset = xmlManager.loadResultSetFromURI( TestUtil.makeURI( xmlFile ) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
resultset = xmlManager.loadResultSetFromURI( TestUtil.makeURI( xmlFile ) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
resultset = xmlManager.loadResultSetFromURI( TestUtil.makeURI( xmlFile ) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
resultset = xmlManager.loadResultSetFromString( FileUtil.readFile(xmlFile) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
resultset = xmlManager.loadResultSetFromString( FileUtil.readFile(xmlFile) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
resultset = xmlManager.loadResultSetFromString( FileUtil.readFile(xmlFile) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
resultset = xmlManager.loadResultSetFromString( FileUtil.readFile(xmlFile) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
}
private String canon( ResultSet pResultSet ) throws Exception {
StringBuffer sb = new StringBuffer();
ResultSetMetaData rsmd = pResultSet.getMetaData();
int numCols = rsmd.getColumnCount();
while( pResultSet.next() ) {
for( int col = 1; col <= numCols; col++ ) {
sb.append( pResultSet.getString(col) + (col<numCols?",":"|") );
}
}
return sb.toString();
}
private String heads( ResultSet pResultSet ) throws Exception {
StringBuffer sb = new StringBuffer();
ResultSetMetaData rsmd = pResultSet.getMetaData();
int numCols = rsmd.getColumnCount();
for( int col = 1; col <= numCols; col++ ) {
sb.append( rsmd.getColumnName(col) + "," );
}
return sb.toString();
}
}