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 Marc856Field 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 Marc856Field(int id, EntityMap xMap, Debug debug)
{
super(id, xMap, debug);
}
/**
"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("Marc856Field.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:
// Go for the URL only. Should all be ASCII characters anyway.
Enumeration subfld = subfields.elements();
try { while ( true )
{
MarcSubField sf = (MarcSubField) subfld.nextElement();
if ( sf.getLabel() == 'u' )
{
if ( (Err = sf.present(markupType, out)) != ReturnCodes.OK )
return( Err );
break;
}
} } 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
{
Enumeration subfld = subfields.elements();
boolean closeAnchor;
int Err;
switch ( markupType )
{
case DigInfObj.XML: // Use default.
case DigInfObj.SGML:
return( super.presentLong(markupType, out) );
case DigInfObj.HTML:
try { while ( true )
{
MarcSubField sf = (MarcSubField) subfld.nextElement();
closeAnchor = false;
switch ( sf.getLabel() )
{
case 'a':
out.write("HostName: ");
break;
case 'b':
out.write("AccessNumber: ");
break;
case 'c':
out.write("Compression: ");
break;
case 'd':
out.write("Path: ");
break;
case 'f':
out.write("FileName: ");
break;
case 'g':
out.write("URN: ");
break;
case 'h':
out.write("UserName: ");
break;
case 'i':
out.write("Instruction: ");
break;
case 'p':
out.write("Port: ");
break;
case 'q':
out.write("Format: ");
break;
case 's':
out.write("FileSize: ");
break;
case 'u':
// Build URL.
out.write("URL: ");
closeAnchor = true;
break;
default:
out.write("|" + sf.getLabel() + "|: ");
}
if ( (Err = sf.present(markupType, out)) != ReturnCodes.OK )
return( Err );
if ( closeAnchor )
out.write("");
if ( subfld.hasMoreElements() )
out.write(" ");
} } catch( NoSuchElementException e) {};
return( ReturnCodes.OK );
default:
debug.dumpTrace("Marc856Field.presentLong(): Unexpected markup type " +
markupType + ": treating as ASCII.");
// Fall through:
case DigInfObj.ASCII: //**DEVEL: This is not right. We should be at least
case DigInfObj.ANSEL: //** as careful here as in presentShort().
try { while ( true )
{
MarcSubField sf = (MarcSubField) subfld.nextElement();
switch ( sf.getLabel() )
{
case 'a':
out.write("HostName: ");
break;
case 'b':
out.write("AccessNumber: ");
break;
case 'c':
out.write("Compression: ");
break;
case 'd':
out.write("Path: ");
break;
case 'f':
out.write("FileName: ");
break;
case 'g':
out.write("URN: ");
break;
case 'h':
out.write("UserName: ");
break;
case 'i':
out.write("Instruction: ");
break;
case 'p':
out.write("Port: ");
break;
case 'q':
out.write("Format: ");
break;
case 's':
out.write("FileSize: ");
break;
case 'u':
out.write("URL: ");
break;
default:
out.write("|" + sf.getLabel() + "|:");
}
if ( (Err = sf.present(markupType, out)) != ReturnCodes.OK )
return( Err );
if ( subfld.hasMoreElements() )
out.write(" ");
} } catch( NoSuchElementException e) {};
return( ReturnCodes.OK );
}
}
}