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 javax.swing.table.TableModel;
import java.util.*;
import java.io.*;
public class LoadTableModelTest extends TestCase {
public LoadTableModelTest( String pName ) {
super( pName );
}
public static TestSuite suite() {
return new TestSuite( LoadTableModelTest.class );
}
public static void main( String[] pArgs ) {
TestRunner.run( suite() );
}
public void testExample() throws Exception {
File xmlFile = null;
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"} );
TableModel tm = xmlManager.loadTableModel( xmlFile, rs );
int numCols = tm.getColumnCount();
int numRows = tm.getRowCount();
StringBuffer sb = new StringBuffer();
for( int col = 0; col < numCols; col++ ) {
sb.append( tm.getColumnName(col) + (col<numCols-1?", ":"\n") );
}
sb.append( "---\n" );
for( int row = 0; row < numRows; row++ ) {
for( int col = 0; col < numCols; col++ ) {
sb.append( tm.getValueAt(row,col) + (col<numCols-1?", ":"\n") );
}
}
assertEquals( "Name, Foo, Bar\n---\nr1, f1, b1\nr2, f2, b2\nr3, f3, b3\n", sb.toString() );
XmlSpec xs = xmlManager.getXmlSpec();
xs.setProperty("TableModel.dataHasHeaders", true);
tm = xmlManager.loadTableModel( xmlFile, rs );
assertEquals( "r2,f2,b2|r3,f3,b3|", canon(tm) );
assertEquals( "r1,f1,b1,", heads(tm) );
}
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"} );
TableModel tm = xmlManager.loadTableModel( xmlFile, rs );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
tm = xmlManager.loadTableModel( xmlFile.getAbsolutePath(), rs );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
InputStream is = new FileInputStream( xmlFile );
tm = xmlManager.loadTableModel( is, rs );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
is.close();
InputStream fis = new FileInputStream( xmlFile );
InputSource isrc = new InputSource( fis );
tm = xmlManager.loadTableModel( isrc, rs );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
fis.close();
tm = xmlManager.loadTableModelFromURI( TestUtil.makeURI(xmlFile), rs );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
tm = xmlManager.loadTableModelFromString( FileUtil.readFile(xmlFile), rs );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
}
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 );
TableModel tm = xmlManager.loadTableModel( xmlFile, rs );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
tm = xmlManager.loadTableModel( xmlFile.getAbsolutePath(), rs );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
InputStream is = new FileInputStream( xmlFile );
tm = xmlManager.loadTableModel( is, rs );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
is.close();
InputStream fis = new FileInputStream( xmlFile );
InputSource isrc = new InputSource( fis );
tm = xmlManager.loadTableModel( isrc, rs );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
fis.close();
tm = xmlManager.loadTableModelFromURI( TestUtil.makeURI(xmlFile), rs );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
tm = xmlManager.loadTableModelFromString( FileUtil.readFile(xmlFile), rs );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
xmlManager = new XmlManager( rs );
tm = xmlManager.loadTableModel( xmlFile );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
tm = xmlManager.loadTableModel( xmlFile.getAbsolutePath() );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
is = new FileInputStream( xmlFile );
tm = xmlManager.loadTableModel( is );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
is.close();
fis = new FileInputStream( xmlFile );
isrc = new InputSource( fis );
tm = xmlManager.loadTableModel( isrc );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
fis.close();
tm = xmlManager.loadTableModelFromURI( TestUtil.makeURI(xmlFile) );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
tm = xmlManager.loadTableModelFromString( FileUtil.readFile(xmlFile) );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
}
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;
TableModel tm = xmlManager.loadTableModel( xmlFile );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
tm = xmlManager.loadTableModel( xmlFile );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
tm = xmlManager.loadTableModel( xmlFile );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
tm = xmlManager.loadTableModel( xmlFile );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
tm = xmlManager.loadTableModel( xmlFile.getAbsolutePath() );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
tm = xmlManager.loadTableModel( xmlFile.getAbsolutePath() );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
tm = xmlManager.loadTableModel( xmlFile.getAbsolutePath() );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
tm = xmlManager.loadTableModel( xmlFile.getAbsolutePath() );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
InputStream is = new FileInputStream( xmlFile );
tm = xmlManager.loadTableModel( is );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
is.close();
is = new FileInputStream( xmlFile );
tm = xmlManager.loadTableModel( is );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
is.close();
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
is = new FileInputStream( xmlFile );
tm = xmlManager.loadTableModel( is );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
is.close();
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
is = new FileInputStream( xmlFile );
tm = xmlManager.loadTableModel( is );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
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 );
tm = xmlManager.loadTableModel( isrc );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
fis.close();
fis = new FileInputStream( xmlFile );
isrc = new InputSource( fis );
tm = xmlManager.loadTableModel( isrc );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
fis.close();
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
fis = new FileInputStream( xmlFile );
isrc = new InputSource( fis );
tm = xmlManager.loadTableModel( isrc );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
fis.close();
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
fis = new FileInputStream( xmlFile );
isrc = new InputSource( fis );
tm = xmlManager.loadTableModel( isrc );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
fis.close();
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
tm = xmlManager.loadTableModelFromURI( TestUtil.makeURI( xmlFile ) );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
tm = xmlManager.loadTableModelFromURI( TestUtil.makeURI( xmlFile ) );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
tm = xmlManager.loadTableModelFromURI( TestUtil.makeURI( xmlFile ) );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
tm = xmlManager.loadTableModelFromURI( TestUtil.makeURI( xmlFile ) );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon1;
xmlFile = TestUtil.findFile( fileprefix+"load.xml" );
tm = xmlManager.loadTableModelFromString( FileUtil.readFile(xmlFile) );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
tm = xmlManager.loadTableModelFromString( FileUtil.readFile(xmlFile) );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 2, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon2;
xmlFile = TestUtil.findFile( fileprefix+"load02.xml" );
tm = xmlManager.loadTableModelFromString( FileUtil.readFile(xmlFile) );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 3, xmlManager.getStats().getTotalRecords() );
loadcanon = loadcanon3;
xmlFile = TestUtil.findFile( fileprefix+"load03.xml" );
tm = xmlManager.loadTableModelFromString( FileUtil.readFile(xmlFile) );
assertEquals( loadcanon, canon(tm) );
assertEquals( loadheads, heads(tm) );
assertEquals( 4, xmlManager.getStats().getTotalRecords() );
}
private String canon( TableModel pTableModel ) throws Exception {
StringBuffer sb = new StringBuffer();
int numCols = pTableModel.getColumnCount();
int numRows = pTableModel.getRowCount();
for( int row = 0; row < numRows; row++ ) {
for( int col = 0; col < numCols; col++ ) {
sb.append( pTableModel.getValueAt(row,col) + (col<numCols-1?",":"|") );
}
}
return sb.toString();
}
private String heads( TableModel pTableModel ) throws Exception {
StringBuffer sb = new StringBuffer();
int numCols = pTableModel.getColumnCount();
for( int col = 0; col < numCols; col++ ) {
sb.append( pTableModel.getColumnName(col) + "," );
}
return sb.toString();
}
}