package edu.vt.marian.Document; import java.io.*; import java.net.*; import java.util.*; import edu.vt.marian.common.*; /** Unit tester for MarcDocument (and thus MarcRecord) class. @author Robert France */ public class MarcDocumentTester { static String docFile = "/u1/marian/data/marc/file14f.mrc"; static String mapFile = "ansel_uni_comb.map"; public static void main(String argv[]) throws Exception { int Err; Debug debug = new Debug("debug.conf", "trace.log", false); EntityMap testMap = new EntityMap(debug); try { BufferedReader inFile = new BufferedReader(new FileReader(mapFile)); testMap.load(inFile); } catch (IOException e) { System.err.println("Cannot load table."); } BufferedReader in; try { in = new BufferedReader(new FileReader(docFile)); } catch (Exception e) { System.err.println("Cannot open test file '" + docFile + "'."); return; } /* PrintWriter pw = new PrintWriter(System.out); BufferedWriter bw = new BufferedWriter(pw); */ int numDocs = 0; /* try { while( true ) { MarcDocument doc = new MarcDocument(5104, testMap, debug); if ( (Err = doc.setFromTapeFormat(in)) != ReturnCodes.OK) { System.out.println("Error (" + Err + ") on setFromTapeFormat()."); continue; } System.out.println("

 

"); System.out.println("

Example #" + ++numDocs + ":

"); System.out.println("

MARIAN \"Long Description\" (in ASCII):

"); System.out.println("
");
			if ( (Err = doc.presentLong(DigInfObj.ASCII, bw)) != ReturnCodes.OK)
			{
				System.out.println("Error (" + Err + ") on presentLong().");
			}
			bw.newLine();
			bw.flush();
			System.out.println("
"); System.out.println("

 

"); System.out.println("

(In HTML:)

"); if ( (Err = doc.presentLong(DigInfObj.HTML, bw)) != ReturnCodes.OK) { System.out.println("Error (" + Err + ") on presentAsHtml()."); } bw.newLine(); bw.flush(); System.out.println("

 

"); System.out.println("

In OAI XML:

"); System.out.println("
");
			if ( (Err = doc.presentAsXml(bw)) != ReturnCodes.OK)
			{
				System.out.println("Error (" + Err + ") on presentAsXml().");
			}
			System.out.println("
"); bw.newLine(); bw.newLine(); bw.flush(); */ try { while( true ) { MarcDocument doc = new MarcDocument(5104, testMap, debug); if ( (Err = doc.setFromTapeFormat(in)) != ReturnCodes.OK) { System.out.println("Error (" + Err + ") on setFromTapeFormat()."); continue; } numDocs++; StringWriter sw = new StringWriter(); BufferedWriter bw = new BufferedWriter(sw); if ( (Err = doc.presentAsTapeFormat(bw)) != ReturnCodes.OK) { System.err.println("Error (" + Err + ") on presentAsTapeFormat(), doc #" + numDocs + "."); } bw.flush(); String tapeFormat = sw.toString(); MarcDocument doc2 = new MarcDocument(5104, testMap, debug); if ( (Err = doc2.setFromTapeFormat(tapeFormat)) != ReturnCodes.OK) { System.out.println("Error (" + Err + ") on second setFromTapeFormat()."); continue; } StringWriter sw2 = new StringWriter(); BufferedWriter bw2 = new BufferedWriter(sw2); if ( (Err = doc2.presentAsTapeFormat(bw2)) != ReturnCodes.OK) { System.err.println("Error (" + Err + ") on second presentAsTapeFormat(), doc #" + numDocs + "."); } bw2.flush(); String tapeFormat2 = sw2.toString(); if ( (Err = tapeFormat.compareTo(tapeFormat2)) != 0) { System.err.println("Comparison off (" + Err + ") on doc #" + numDocs + "."); } StringWriter sw3 = new StringWriter(); BufferedWriter bw3 = new BufferedWriter(sw3); if ( (Err = doc2.presentAsXml(bw3)) != ReturnCodes.OK) { System.err.println("Error (" + Err + ") on presentAsXml(), doc #" + numDocs + "."); } bw3.flush(); String xmlFormat = sw3.toString(); // System.err.println(xmlFormat); StringReader sr = new StringReader(xmlFormat); BufferedReader bsr = new BufferedReader(sr); MarcDocument doc3 = new MarcDocument(5104, testMap, debug); if ( (Err = doc3.setFromXml(bsr)) != ReturnCodes.OK) { System.out.println("Error (" + Err + ") on setFromXml()."); continue; } StringWriter sw4 = new StringWriter(); BufferedWriter bw4 = new BufferedWriter(sw4); if ( (Err = doc3.presentAsTapeFormat(bw4)) != ReturnCodes.OK) { System.err.println("Error (" + Err + ") on third presentAsTapeFormat(), doc #" + numDocs + "."); } bw4.flush(); String tapeFormat4 = sw4.toString(); if ( (Err = tapeFormat.compareTo(tapeFormat4)) != 0) { System.err.println("Comparison #2 off (" + Err + ") on doc #" + numDocs + "."); System.err.println(tapeFormat); System.err.println(tapeFormat4); } if (numDocs%1000 == 0) System.err.println("Processed " + numDocs + " documents."); } } catch (EOFException e) { } System.err.println("End of File."); } }