package edu.vt.marian.Document; import java.io.*; import java.net.*; import java.util.*; import edu.vt.marian.common.*; /** A "variable field" in a US MARC record that contains imprint data: that is, a 260 field. @author Robert France */ public class MarcImprintField extends PresentableMarcVarField { /** Labels for subfields reported in a long presentation (NOT USED: instead, all subfields are currently reported in a long presentation). */ private final static String title_labels = "abcdfklnpst"; /** Create a MarcImprintField object with no subfields. @param id -- the variable field id. @param xMap -- used to convert ANSEL to (e.g.) XML. @param debug -- used for debugging */ public MarcImprintField(int id, EntityMap xMap, Debug debug) { super(id, xMap, debug); isImprint = true; } /** "Short" presentation for a corporate name variable field. @param markupType see edu.vt.marian.common.DigInfObj @param out A BufferedWriter (presumably String or OutputStream) to present on. @return OK -- everything jake.
IO_ERROR or PARSE_ERROR -- problems. */ public int presentShort(int markupType, BufferedWriter out) throws IOException { int Err; switch ( markupType ) { default: debug.dumpTrace("MarcImprintField.presentShort(): Unexpected markup type " + markupType + ": treating as ASCII."); // Fall through: case DigInfObj.XML: case DigInfObj.SGML: case DigInfObj.HTML: case DigInfObj.ASCII: case DigInfObj.ANSEL: out.write('('); boolean seen_place = false; boolean seen_publisher = false; Enumeration subfld = subfields.elements(); try { while ( true ) { MarcSubField sf = (MarcSubField) subfld.nextElement(); switch ( sf.getLabel() ) { case 'a': if (seen_publisher) { out.write("; "); seen_publisher = false; } else if (seen_place) { out.write(", "); } seen_place = true; if ( (Err = sf.present(markupType, out)) != ReturnCodes.OK ) return( Err ); break; case 'b': if (seen_place) { out.write(": "); } else if (seen_publisher) { out.write(", "); } seen_place = false; seen_publisher = true; if ( (Err = sf.present(markupType, out)) != ReturnCodes.OK ) return( Err ); break; case 'c': if (seen_place || seen_publisher) { out.write(", "); } if ( (Err = sf.present(markupType, out)) != ReturnCodes.OK ) return( Err ); break; default: } // end -- switch } } catch( NoSuchElementException e) {}; } return( ReturnCodes.OK ); } /** "Long" presentation for a conference name variable field. @param markupType see edu.vt.marian.common.DigInfObj @param out A BufferedWriter (presumably String or OutputStream) to present on. @return OK -- everything jake.
IO_ERROR or PARSE_ERROR -- problems. */ public int presentLong(int markupType, BufferedWriter out) throws IOException { int Err; switch ( markupType ) { case DigInfObj.XML: // Use default. case DigInfObj.SGML: return( super.presentLong(markupType, out) ); default: debug.dumpTrace("MarcImprintField.presentLong(): Unexpected markup type " + markupType + ": treating as ASCII."); // Fall through: case DigInfObj.HTML: case DigInfObj.ASCII: //**DEVEL: This is not right. We should be at least case DigInfObj.ANSEL: //** as careful here as in presentShort(). Enumeration subfld = subfields.elements(); try { while ( true ) { MarcSubField sf = (MarcSubField) subfld.nextElement(); if ( (Err = sf.present(markupType, out)) != ReturnCodes.OK ) return( Err ); if ( subfld.hasMoreElements() ) out.write(" / "); } } catch( NoSuchElementException e) {}; return( ReturnCodes.OK ); } } }