package com.ricebridge.xmlman.in.test;
import com.ricebridge.xmlman.*;
import com.ricebridge.xmlman.in.*;
import junit.framework.*;
import org.jostraca.util.*;
import java.util.regex.*;
import java.util.*;
import java.io.*;
public class TestUtil {
static Pattern regex_wcw = Pattern.compile("\\s*,\\s*");
public static final void print( String pMsg ) {
}
public static String dataToString( List pData ) {
return dataToString( pData, false );
}
public static String dataToString( List pData, boolean pTrim ) {
StringBuffer sb = new StringBuffer();
for( Iterator rI = pData.iterator(); rI.hasNext(); ) {
String[] row = (String[]) rI.next();
String rowstr = Arrays.asList( row ).toString();
if( pTrim ) {
Matcher m = regex_wcw.matcher( rowstr );
rowstr = m.replaceAll( ", " );
}
sb.append( rowstr + "\n" );
}
return sb.toString();
}
public static String formatPathList( List pPaths ) {
StringBuffer sb = new StringBuffer();
for( Iterator pI = pPaths.iterator(); pI.hasNext(); ) {
sb.append( pI.next()+"\n" );
}
return sb.toString();
}
public static void testRecords( String pRelativeXmlFilePath,
ArrayList pRecordSpecList, ArrayList pRecordDataList,
TestCase pTestCase ) throws Exception
{
XmlSpec xs = null;
testRecords( pRelativeXmlFilePath, xs, pRecordSpecList, pRecordDataList, pTestCase );
}
public static void testRecords( String pRelativeXmlFilePath, XmlSpec pXmlSpec,
ArrayList pRecordSpecList, ArrayList pRecordDataList,
TestCase pTestCase )
throws Exception
{
ArrayList xsl = new ArrayList();
for( int sI = 0; sI < pRecordDataList.size(); sI++ ) {
xsl.add( pXmlSpec );
}
testRecords( pRelativeXmlFilePath, xsl, pRecordSpecList, pRecordDataList, pTestCase );
}
public static void testRecords( String pRelativeXmlFilePath, ArrayList pXmlSpecList,
ArrayList pRecordSpecList, ArrayList pRecordDataList,
TestCase pTestCase )
throws Exception
{
XmlSpec defaultxs = new XmlSpec();
for( int rsI = 0; rsI < pRecordSpecList.size(); rsI++ ) {
XmlInputHandler xmlh = new XmlInputHandler();
RecordSpec rs = (RecordSpec) pRecordSpecList.get(rsI);
System.out.println( rs );
XmlSpec xs = (XmlSpec) pXmlSpecList.get(rsI);
if( null != xs ) {
xmlh.setXmlSpec( xs );
}
else {
xmlh.setXmlSpec( defaultxs );
}
StringArrayRecordListener rl = new StringArrayRecordListener();
xmlh.prepare( rs );
xmlh.setRecordListener( rl );
File xmlfile = findFile( pRelativeXmlFilePath );
xmlh.loadSaxFile(xmlfile );
List recs = rl.getRecords();
System.out.println( "RECS:\n"+dataToString(recs) );
pTestCase.assertEquals( rs+dataToString((List)pRecordDataList.get(rsI)), rs+dataToString(recs) );
}
}
public static void testRecordSpec( RecordSpec pRecordSpec ) {
StringArrayRecordListener rl = new StringArrayRecordListener();
XmlInputHandler xmlh = new XmlInputHandler();
xmlh.prepare( pRecordSpec );
xmlh.setRecordListener( rl );
}
public static String toString( List pTargetPathList ) {
StringBuffer sb = new StringBuffer();
for( Iterator tpI = pTargetPathList.iterator(); tpI.hasNext(); ) {
sb.append( ((TargetPath)tpI.next()).toString(false)+", " );
}
return sb.toString();
}
public static String makeURI( File pFile ) {
String uri = pFile.getAbsolutePath();
if( !uri.startsWith("/") ) { uri = "/"+uri; }
uri = "file://"+uri;
uri = uri.replace('\\','/');
return uri;
}
public static ExprWalker makeExprWalker() {
return new ExprWalker( new HashMap(), new HashMap(), CoreDef.RICEBRIDGE_NAMESPACE_PREFIX, true );
}
public static NameInfo makeNameInfo() {
return new NameInfo("","","",true);
}
public static NameInfo makeNameInfo( String pLocalName ) {
return new NameInfo( pLocalName, pLocalName, "", true );
}
public static NameInfo makeNameInfo( String pLocalName, String pNamespaceURI ) {
return new NameInfo( pLocalName, "", pNamespaceURI, true );
}
public static File findFile( String pName ) throws Exception {
File file = null;
try {
file = FileUtil.findFile( pName );
}
catch( Exception e ) {
file = new File( "/ricebridge/dev/xmlman/trunk/src", pName );
}
return file;
}
}