org.jafer.record
Class MARCRecord

java.lang.Object
  extended by org.jafer.record.DataObject
      extended by org.jafer.record.MARCRecord

public class MARCRecord
extends DataObject

Serializes MARC record to XML (http://www.openarchives.org/OAI/1.1/oai_marc schema). Method getXML returns record node (created from supplied DOM document); method getBER builds ASN1External from XML and returns a BER object. Transformations etc. are managed by org.jafer.record.RecordFactory

Version:
1.0
Author:
Antony Corfield; Matthew Dovey; Colin Tatham

Field Summary
private  asn1.BEREncoding ber
           
private  char encoding
           
static char FIELD_DELIMITER
           
static java.lang.String MARC8
           
private static char MARC8_ENCODING
           
private  MARC8Unicode marc8Unicode
           
static java.lang.String[] OAI_ATTRIBUTE_NAMES
           
static java.lang.String OAI_NAMESPACE
           
static char RECORD_DELIMITER
           
private  org.w3c.dom.Node root
           
static char SUBFIELD_DELIMITER
           
static java.lang.String UTF8
           
private static char UTF8_ENCODING
           
 
Constructor Summary
MARCRecord(java.lang.String dbName, asn1.BEREncoding ber)
           
MARCRecord(java.lang.String dbName, org.w3c.dom.Node root)
           
 
Method Summary
private  int addFixField(java.io.ByteArrayOutputStream directory, java.io.ByteArrayOutputStream fieldData, int dataStartPos, org.w3c.dom.Node fixField)
           
private  int addVarField(java.io.ByteArrayOutputStream directory, java.io.ByteArrayOutputStream fieldData, int dataStartPos, org.w3c.dom.Node varfield)
           
private  void buildLeader(java.io.ByteArrayOutputStream leader, org.w3c.dom.NamedNodeMap leaderAttributes, int recordLength, int baseAddress)
           
 asn1.BEREncoding getBER()
           
private  char getEncoding()
           
private  java.lang.String getEncodingAsString()
           
private  int getInt(byte[] bytes, int offset, int len)
           
private  java.lang.String getJavaIdentifierTag(java.lang.String s)
           
private  char getLeaderValue(org.w3c.dom.NamedNodeMap leaderAttributes, int leaderPos, char defaultValue)
           
private  java.lang.String getMARC8Value(org.w3c.dom.Node node)
           
private static java.lang.String getOAIAttributeName(int position)
           
private  java.lang.String getString(byte[] bytes, int offset, int len)
           
private  java.lang.String getString(java.io.ByteArrayOutputStream byteOut, int offset)
           
private  java.lang.String getString(java.io.ByteArrayOutputStream byteOut, int offset, int len)
           
private  org.w3c.dom.Node getSubFieldElement(org.w3c.dom.Document document, java.io.ByteArrayOutputStream byteOut)
           
 org.w3c.dom.Node getXML(org.w3c.dom.Document document)
           
private  void processField(org.w3c.dom.Document document, org.w3c.dom.Node field, java.io.ByteArrayInputStream byteIn)
           
private  void processRecord(java.io.ByteArrayOutputStream directory, java.io.ByteArrayOutputStream fieldData, org.w3c.dom.Node node)
           
private  void processRecord(org.w3c.dom.Document document, byte[] bytes, int baseAddress, int numFields)
           
private  void setEncoding(char encoding)
           
private  void setEncoding(java.lang.String encoding)
           
private  void write(java.io.ByteArrayOutputStream byteArray, int length, int value)
           
private  void write(java.io.ByteArrayOutputStream byteArray, java.lang.String data)
           
 
Methods inherited from class org.jafer.record.DataObject
getDatabaseName, getRecordSchema, getRecordSyntax, getXML
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

RECORD_DELIMITER

public static final char RECORD_DELIMITER

FIELD_DELIMITER

public static final char FIELD_DELIMITER

SUBFIELD_DELIMITER

public static final char SUBFIELD_DELIMITER

MARC8_ENCODING

private static final char MARC8_ENCODING

UTF8_ENCODING

private static final char UTF8_ENCODING

MARC8

public static final java.lang.String MARC8
See Also:
Constant Field Values

UTF8

public static final java.lang.String UTF8
See Also:
Constant Field Values

OAI_NAMESPACE

public static final java.lang.String OAI_NAMESPACE
See Also:
Constant Field Values

OAI_ATTRIBUTE_NAMES

public static final java.lang.String[] OAI_ATTRIBUTE_NAMES

root

private org.w3c.dom.Node root

ber

private asn1.BEREncoding ber

marc8Unicode

private MARC8Unicode marc8Unicode

encoding

private char encoding
Constructor Detail

MARCRecord

public MARCRecord(java.lang.String dbName,
                  asn1.BEREncoding ber)

MARCRecord

public MARCRecord(java.lang.String dbName,
                  org.w3c.dom.Node root)
Method Detail

setEncoding

private void setEncoding(java.lang.String encoding)

setEncoding

private void setEncoding(char encoding)

getEncodingAsString

private java.lang.String getEncodingAsString()

getEncoding

private char getEncoding()

getXML

public org.w3c.dom.Node getXML(org.w3c.dom.Document document)
                        throws RecordException
Overrides:
getXML in class DataObject
Throws:
RecordException

processRecord

private void processRecord(org.w3c.dom.Document document,
                           byte[] bytes,
                           int baseAddress,
                           int numFields)
                    throws java.io.IOException,
                           JaferException
Throws:
java.io.IOException
JaferException

processField

private void processField(org.w3c.dom.Document document,
                          org.w3c.dom.Node field,
                          java.io.ByteArrayInputStream byteIn)
                   throws java.io.IOException,
                          JaferException
Throws:
java.io.IOException
JaferException

getSubFieldElement

private org.w3c.dom.Node getSubFieldElement(org.w3c.dom.Document document,
                                            java.io.ByteArrayOutputStream byteOut)
                                     throws java.io.IOException,
                                            JaferException
Throws:
java.io.IOException
JaferException

getString

private java.lang.String getString(byte[] bytes,
                                   int offset,
                                   int len)

getJavaIdentifierTag

private java.lang.String getJavaIdentifierTag(java.lang.String s)
                                       throws java.io.IOException
Throws:
java.io.IOException

getString

private java.lang.String getString(java.io.ByteArrayOutputStream byteOut,
                                   int offset,
                                   int len)

getString

private java.lang.String getString(java.io.ByteArrayOutputStream byteOut,
                                   int offset)

getInt

private int getInt(byte[] bytes,
                   int offset,
                   int len)

getBER

public asn1.BEREncoding getBER()
                        throws RecordException
Overrides:
getBER in class DataObject
Throws:
RecordException

processRecord

private void processRecord(java.io.ByteArrayOutputStream directory,
                           java.io.ByteArrayOutputStream fieldData,
                           org.w3c.dom.Node node)
                    throws JaferException
Throws:
JaferException

addFixField

private int addFixField(java.io.ByteArrayOutputStream directory,
                        java.io.ByteArrayOutputStream fieldData,
                        int dataStartPos,
                        org.w3c.dom.Node fixField)
                 throws JaferException
Throws:
JaferException

addVarField

private int addVarField(java.io.ByteArrayOutputStream directory,
                        java.io.ByteArrayOutputStream fieldData,
                        int dataStartPos,
                        org.w3c.dom.Node varfield)
                 throws JaferException
Throws:
JaferException

buildLeader

private void buildLeader(java.io.ByteArrayOutputStream leader,
                         org.w3c.dom.NamedNodeMap leaderAttributes,
                         int recordLength,
                         int baseAddress)
                  throws JaferException
Throws:
JaferException

getLeaderValue

private char getLeaderValue(org.w3c.dom.NamedNodeMap leaderAttributes,
                            int leaderPos,
                            char defaultValue)
                     throws JaferException
Throws:
JaferException

write

private void write(java.io.ByteArrayOutputStream byteArray,
                   int length,
                   int value)

write

private void write(java.io.ByteArrayOutputStream byteArray,
                   java.lang.String data)

getMARC8Value

private java.lang.String getMARC8Value(org.w3c.dom.Node node)
                                throws JaferException
Throws:
JaferException

getOAIAttributeName

private static java.lang.String getOAIAttributeName(int position)