Changes to MARC4J 2.4

MARC4J 2.4 is a minor release providing some bug fixes and some new functionality.

- Added MarcPermissiveStreamReader which is more capable of reading records that contain structural or
  encoding errors, and is capable of translating the records to UTF-8 as they are read.
- Added ErrorHandler which is used for tracking and reporting structural or encoding errors 
  encountered by the MarcPermissiveStreamReader.
- Added MarcDirStreamReader which iterates over all of the MARC record files in a given directory.
- Modified MarcStreamReader so that if an exception is thrown for an error in one record you can
  choose to catch the exception, discard the erroneous record and continue reading from the input file.
- Modified AnselToUnicode to fix some problems that would occur when trying to handle Chinese characters,
  to fix an infinite loop problem that would occur sometimes when extraneous characters appear within a
  MARC8 character set escape sequence, and made many changes to support the MarcPermissiveStreamReader
  to report and try to recover from encoding errors in the records being read.
- Modified CodeTable (which is used by AnselToUnicode) so that rather than reading and parsing a large 
  XML file to create the hash tables for mapping MARC8 to Unicode at runtime, the parsing is done once
  at compile time, and a class that handles the mapping directly via switch statements is automatically 
  generated.
- Made minor changes to the MarcXmlReader so that if an exception occurs in the MarcXmlParserThread that
  it starts, the exception is passed to the MarcXmlReader rather than simply hanging the parser thread.
- Added PermissiveReaderExample which demonstrates how to use the MarcPermissiveReader to examine and/or
  validate records for structural or encoding errors.  
  

Changes to MARC4J 2.3.1

MARC4J 2.3.1 is a minor release with some encoding fixes

- Fixed encoding bug in MarcStreamReader: now sets ISO8859_1 as default as alternative for MARC-8 and 
  UNIMARC encoding alternative. For MARC 21 the leader is checked: space is ISO 8859_1 and a is UTF-8.
  When an encoding is provided in the MarcStreamReader constructor, this encoding overrides 
  the default encoding and the leader encoding value.
- MarcXmlDriver: when converting from MARC-8 to UTF-8 character coding scheme in leader (pos. 9) is set to 'a'.
- XmlMarcDriver: when converting from UTF-8 to MARC-8 character coding scheme in leader (pos. 9) is set to space.

Changes to MARC4J 2.3

MARC4J 2.3 is a minor release mainly providing a bug fix in MarcXmlWriter.

- Fixed bug in MarcXmlWriter. Changed second indicator attribute from ind1 to ind2 in SAX qualified name parameter. 
  This bug created two ind1 attributes for a datafield in JDK 1.5 environments.
- Added creation of default leader value to the MarcFactory.newRecord() method
- Moved test classes to org.marc4j.test package
- Added new examples in org.marc4j.samples package
- Removed org.marc4j.samples classes from marc4j.jar

Changes to MARC4J 2.2

MARC4J 2.2 is a minor release providing some bug fixes and some new functionality.

There is a very short time between release 2.1 and 2.2, but during the writing of the 
tutorial I fixed some small errors.
 
Most important is the addition of a samples package. There is now also an extensive
tutorial available on MARc4J. Check the Documentation section at 
http://marc4j.tigris.org.

- Fixed encoding issue in MarcXmlWriter. The default constructor did not use the default UTF-8 encoding.
- Added the Comparable interface to VariableField
- Implemented compareTo in VariableFieldImpl
- Added sorting using the comparable implementation in Record when adding fields so that they appear in the right order
- Added a package org.marc4j.samples containing sample programs
- Added getters and setters for id in the record model to enable persistency models like Hibernate
- Created an extensive tuorial on MARC4J

Bas Peters (August 4, 2006)

Changes to MARC4J 2.1

MARC4J 2.1 is a minor release providing some bug fixes and some new functionality.
Most important are properly support for non latin-1 encodings in MarcXStreamWriter and
extensive code examples in the Javadoc for the org.marc4j.marc package.

- Fixed bug in MarcXmlParserThreat that thread hangs if underlying XML parser throws Exception
- Fixed MarcStreamWriter to properly support non-latin-1 encodings
- Created more extensive Javadoc documentation for org.marc4j.marc package with many examples
- Changed methods in MarcXmlWriter from private to protected to enable subclassing
- Implemented find() methods in Record, VariableField and Subfield
- Updated command-line usage text for MarcXmlDriver and XmlMarcDriver to include supported conversion encodings
- Added newRecord methods in MarcFactory that take a leader or leader string value as parameter
- Other minor Javadoc documentation changes

Bas Peters (July 30, 2006)
