From fa7e8c01ac0a2009caeca46135a0df80da2c2d52 Mon Sep 17 00:00:00 2001 From: Dennis Schafroth Date: Tue, 3 Jan 2012 13:50:57 +0100 Subject: [PATCH] Original 2.4. With additional eclipse .project/classpath and git ignore --- .classpath | 8 + .gitignore | 3 + .project | 23 + LICENSE.marc4j | 504 +++++++ LICENSE.normalizer | 34 + apidoc/allclasses-frame.html | 124 ++ apidoc/allclasses-noframe.html | 124 ++ apidoc/constant-values.html | 302 ++++ apidoc/deprecated-list.html | 142 ++ apidoc/help-doc.html | 219 +++ apidoc/index-all.html | 1537 ++++++++++++++++++++ apidoc/index.html | 37 + apidoc/org/marc4j/Constants.html | 376 +++++ apidoc/org/marc4j/ErrorHandler.Error.html | 376 +++++ apidoc/org/marc4j/ErrorHandler.html | 614 ++++++++ apidoc/org/marc4j/MarcDirStreamReader.html | 428 ++++++ apidoc/org/marc4j/MarcException.html | 290 ++++ apidoc/org/marc4j/MarcPermissiveStreamReader.html | 459 ++++++ apidoc/org/marc4j/MarcReader.html | 244 ++++ apidoc/org/marc4j/MarcStreamReader.html | 335 +++++ apidoc/org/marc4j/MarcStreamWriter.html | 398 +++++ apidoc/org/marc4j/MarcWriter.html | 286 ++++ apidoc/org/marc4j/MarcXmlHandler.html | 542 +++++++ apidoc/org/marc4j/MarcXmlParser.html | 295 ++++ apidoc/org/marc4j/MarcXmlParserThread.html | 432 ++++++ apidoc/org/marc4j/MarcXmlReader.html | 487 +++++++ apidoc/org/marc4j/MarcXmlWriter.html | 988 +++++++++++++ apidoc/org/marc4j/RecordStack.html | 356 +++++ apidoc/org/marc4j/class-use/Constants.html | 140 ++ .../org/marc4j/class-use/ErrorHandler.Error.html | 140 ++ apidoc/org/marc4j/class-use/ErrorHandler.html | 239 +++ .../org/marc4j/class-use/MarcDirStreamReader.html | 140 ++ apidoc/org/marc4j/class-use/MarcException.html | 177 +++ .../class-use/MarcPermissiveStreamReader.html | 140 ++ apidoc/org/marc4j/class-use/MarcReader.html | 204 +++ apidoc/org/marc4j/class-use/MarcStreamReader.html | 140 ++ apidoc/org/marc4j/class-use/MarcStreamWriter.html | 140 ++ apidoc/org/marc4j/class-use/MarcWriter.html | 184 +++ apidoc/org/marc4j/class-use/MarcXmlHandler.html | 174 +++ apidoc/org/marc4j/class-use/MarcXmlParser.html | 140 ++ .../org/marc4j/class-use/MarcXmlParserThread.html | 140 ++ apidoc/org/marc4j/class-use/MarcXmlReader.html | 140 ++ apidoc/org/marc4j/class-use/MarcXmlWriter.html | 140 ++ apidoc/org/marc4j/class-use/RecordStack.html | 188 +++ apidoc/org/marc4j/converter/CharConverter.html | 315 ++++ .../marc4j/converter/class-use/CharConverter.html | 299 ++++ .../org/marc4j/converter/impl/AnselToUnicode.html | 501 +++++++ apidoc/org/marc4j/converter/impl/CodeTable.html | 381 +++++ .../marc4j/converter/impl/CodeTableGenerated.html | 291 ++++ .../marc4j/converter/impl/CodeTableGenerator.html | 299 ++++ .../marc4j/converter/impl/CodeTableHandler.html | 425 ++++++ .../marc4j/converter/impl/CodeTableInterface.html | 231 +++ .../marc4j/converter/impl/CodeTableTracker.html | 415 ++++++ .../marc4j/converter/impl/Iso5426ToUnicode.html | 280 ++++ .../marc4j/converter/impl/Iso6937ToUnicode.html | 280 ++++ .../marc4j/converter/impl/ReverseCodeTable.html | 405 ++++++ .../converter/impl/ReverseCodeTableHandler.html | 426 ++++++ .../org/marc4j/converter/impl/UnicodeToAnsel.html | 367 +++++ .../marc4j/converter/impl/UnicodeToIso5426.html | 284 ++++ .../marc4j/converter/impl/UnicodeToIso6937.html | 284 ++++ .../converter/impl/class-use/AnselToUnicode.html | 140 ++ .../marc4j/converter/impl/class-use/CodeTable.html | 179 +++ .../impl/class-use/CodeTableGenerated.html | 140 ++ .../impl/class-use/CodeTableGenerator.html | 140 ++ .../converter/impl/class-use/CodeTableHandler.html | 140 ++ .../impl/class-use/CodeTableInterface.html | 217 +++ .../converter/impl/class-use/CodeTableTracker.html | 186 +++ .../converter/impl/class-use/Iso5426ToUnicode.html | 140 ++ .../converter/impl/class-use/Iso6937ToUnicode.html | 140 ++ .../converter/impl/class-use/ReverseCodeTable.html | 176 +++ .../impl/class-use/ReverseCodeTableHandler.html | 140 ++ .../converter/impl/class-use/UnicodeToAnsel.html | 140 ++ .../converter/impl/class-use/UnicodeToIso5426.html | 140 ++ .../converter/impl/class-use/UnicodeToIso6937.html | 140 ++ .../org/marc4j/converter/impl/package-frame.html | 67 + .../org/marc4j/converter/impl/package-summary.html | 253 ++++ apidoc/org/marc4j/converter/impl/package-tree.html | 163 +++ apidoc/org/marc4j/converter/impl/package-use.html | 188 +++ apidoc/org/marc4j/converter/package-frame.html | 32 + apidoc/org/marc4j/converter/package-summary.html | 169 +++ apidoc/org/marc4j/converter/package-tree.html | 149 ++ apidoc/org/marc4j/converter/package-use.html | 185 +++ apidoc/org/marc4j/marc/ControlField.html | 267 ++++ apidoc/org/marc4j/marc/DataField.html | 471 ++++++ apidoc/org/marc4j/marc/IllegalAddException.html | 275 ++++ apidoc/org/marc4j/marc/Leader.html | 801 ++++++++++ apidoc/org/marc4j/marc/MarcFactory.html | 586 ++++++++ apidoc/org/marc4j/marc/Record.html | 718 +++++++++ apidoc/org/marc4j/marc/Subfield.html | 380 +++++ apidoc/org/marc4j/marc/VariableField.html | 346 +++++ apidoc/org/marc4j/marc/class-use/ControlField.html | 275 ++++ apidoc/org/marc4j/marc/class-use/DataField.html | 243 ++++ .../marc4j/marc/class-use/IllegalAddException.html | 140 ++ apidoc/org/marc4j/marc/class-use/Leader.html | 301 ++++ apidoc/org/marc4j/marc/class-use/MarcFactory.html | 205 +++ apidoc/org/marc4j/marc/class-use/Record.html | 371 +++++ apidoc/org/marc4j/marc/class-use/Subfield.html | 337 +++++ .../org/marc4j/marc/class-use/VariableField.html | 310 ++++ apidoc/org/marc4j/marc/impl/ControlFieldImpl.html | 480 ++++++ apidoc/org/marc4j/marc/impl/DataFieldImpl.html | 672 +++++++++ apidoc/org/marc4j/marc/impl/LeaderImpl.html | 897 ++++++++++++ apidoc/org/marc4j/marc/impl/MarcFactoryImpl.html | 591 ++++++++ apidoc/org/marc4j/marc/impl/RecordImpl.html | 834 +++++++++++ apidoc/org/marc4j/marc/impl/SubfieldImpl.html | 506 +++++++ apidoc/org/marc4j/marc/impl/VariableFieldImpl.html | 371 +++++ apidoc/org/marc4j/marc/impl/Verifier.html | 276 ++++ .../marc/impl/class-use/ControlFieldImpl.html | 140 ++ .../marc4j/marc/impl/class-use/DataFieldImpl.html | 140 ++ .../org/marc4j/marc/impl/class-use/LeaderImpl.html | 140 ++ .../marc/impl/class-use/MarcFactoryImpl.html | 140 ++ .../org/marc4j/marc/impl/class-use/RecordImpl.html | 140 ++ .../marc4j/marc/impl/class-use/SubfieldImpl.html | 140 ++ .../marc/impl/class-use/VariableFieldImpl.html | 184 +++ .../org/marc4j/marc/impl/class-use/Verifier.html | 140 ++ apidoc/org/marc4j/marc/impl/package-frame.html | 46 + apidoc/org/marc4j/marc/impl/package-summary.html | 197 +++ apidoc/org/marc4j/marc/impl/package-tree.html | 159 ++ apidoc/org/marc4j/marc/impl/package-use.html | 166 +++ apidoc/org/marc4j/marc/package-frame.html | 64 + apidoc/org/marc4j/marc/package-summary.html | 339 +++++ apidoc/org/marc4j/marc/package-tree.html | 173 +++ apidoc/org/marc4j/marc/package-use.html | 276 ++++ apidoc/org/marc4j/package-frame.html | 78 + apidoc/org/marc4j/package-summary.html | 256 ++++ apidoc/org/marc4j/package-tree.html | 171 +++ apidoc/org/marc4j/package-use.html | 219 +++ apidoc/org/marc4j/util/MarcXmlDriver.html | 308 ++++ apidoc/org/marc4j/util/XmlMarcDriver.html | 316 ++++ .../org/marc4j/util/class-use/MarcXmlDriver.html | 140 ++ .../org/marc4j/util/class-use/XmlMarcDriver.html | 140 ++ apidoc/org/marc4j/util/package-frame.html | 34 + apidoc/org/marc4j/util/package-summary.html | 173 +++ apidoc/org/marc4j/util/package-tree.html | 149 ++ apidoc/org/marc4j/util/package-use.html | 140 ++ apidoc/overview-frame.html | 52 + apidoc/overview-summary.html | 217 +++ apidoc/overview-tree.html | 201 +++ apidoc/package-list | 6 + apidoc/resources/inherit.gif | Bin 0 -> 57 bytes apidoc/serialized-form.html | 559 +++++++ apidoc/stylesheet.css | 29 + build.bat | 27 + build.properties | 7 + build.xml | 136 ++ lib/normalizer.jar | Bin 0 -> 351456 bytes overview.html | 36 + 146 files changed, 38007 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 LICENSE.marc4j create mode 100644 LICENSE.normalizer create mode 100644 apidoc/allclasses-frame.html create mode 100644 apidoc/allclasses-noframe.html create mode 100644 apidoc/constant-values.html create mode 100644 apidoc/deprecated-list.html create mode 100644 apidoc/help-doc.html create mode 100644 apidoc/index-all.html create mode 100644 apidoc/index.html create mode 100644 apidoc/org/marc4j/Constants.html create mode 100644 apidoc/org/marc4j/ErrorHandler.Error.html create mode 100644 apidoc/org/marc4j/ErrorHandler.html create mode 100644 apidoc/org/marc4j/MarcDirStreamReader.html create mode 100644 apidoc/org/marc4j/MarcException.html create mode 100644 apidoc/org/marc4j/MarcPermissiveStreamReader.html create mode 100644 apidoc/org/marc4j/MarcReader.html create mode 100644 apidoc/org/marc4j/MarcStreamReader.html create mode 100644 apidoc/org/marc4j/MarcStreamWriter.html create mode 100644 apidoc/org/marc4j/MarcWriter.html create mode 100644 apidoc/org/marc4j/MarcXmlHandler.html create mode 100644 apidoc/org/marc4j/MarcXmlParser.html create mode 100644 apidoc/org/marc4j/MarcXmlParserThread.html create mode 100644 apidoc/org/marc4j/MarcXmlReader.html create mode 100644 apidoc/org/marc4j/MarcXmlWriter.html create mode 100644 apidoc/org/marc4j/RecordStack.html create mode 100644 apidoc/org/marc4j/class-use/Constants.html create mode 100644 apidoc/org/marc4j/class-use/ErrorHandler.Error.html create mode 100644 apidoc/org/marc4j/class-use/ErrorHandler.html create mode 100644 apidoc/org/marc4j/class-use/MarcDirStreamReader.html create mode 100644 apidoc/org/marc4j/class-use/MarcException.html create mode 100644 apidoc/org/marc4j/class-use/MarcPermissiveStreamReader.html create mode 100644 apidoc/org/marc4j/class-use/MarcReader.html create mode 100644 apidoc/org/marc4j/class-use/MarcStreamReader.html create mode 100644 apidoc/org/marc4j/class-use/MarcStreamWriter.html create mode 100644 apidoc/org/marc4j/class-use/MarcWriter.html create mode 100644 apidoc/org/marc4j/class-use/MarcXmlHandler.html create mode 100644 apidoc/org/marc4j/class-use/MarcXmlParser.html create mode 100644 apidoc/org/marc4j/class-use/MarcXmlParserThread.html create mode 100644 apidoc/org/marc4j/class-use/MarcXmlReader.html create mode 100644 apidoc/org/marc4j/class-use/MarcXmlWriter.html create mode 100644 apidoc/org/marc4j/class-use/RecordStack.html create mode 100644 apidoc/org/marc4j/converter/CharConverter.html create mode 100644 apidoc/org/marc4j/converter/class-use/CharConverter.html create mode 100644 apidoc/org/marc4j/converter/impl/AnselToUnicode.html create mode 100644 apidoc/org/marc4j/converter/impl/CodeTable.html create mode 100644 apidoc/org/marc4j/converter/impl/CodeTableGenerated.html create mode 100644 apidoc/org/marc4j/converter/impl/CodeTableGenerator.html create mode 100644 apidoc/org/marc4j/converter/impl/CodeTableHandler.html create mode 100644 apidoc/org/marc4j/converter/impl/CodeTableInterface.html create mode 100644 apidoc/org/marc4j/converter/impl/CodeTableTracker.html create mode 100644 apidoc/org/marc4j/converter/impl/Iso5426ToUnicode.html create mode 100644 apidoc/org/marc4j/converter/impl/Iso6937ToUnicode.html create mode 100644 apidoc/org/marc4j/converter/impl/ReverseCodeTable.html create mode 100644 apidoc/org/marc4j/converter/impl/ReverseCodeTableHandler.html create mode 100644 apidoc/org/marc4j/converter/impl/UnicodeToAnsel.html create mode 100644 apidoc/org/marc4j/converter/impl/UnicodeToIso5426.html create mode 100644 apidoc/org/marc4j/converter/impl/UnicodeToIso6937.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/AnselToUnicode.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/CodeTable.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/CodeTableGenerated.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/CodeTableGenerator.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/CodeTableHandler.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/CodeTableInterface.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/CodeTableTracker.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/Iso5426ToUnicode.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/Iso6937ToUnicode.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/ReverseCodeTable.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/ReverseCodeTableHandler.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/UnicodeToAnsel.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/UnicodeToIso5426.html create mode 100644 apidoc/org/marc4j/converter/impl/class-use/UnicodeToIso6937.html create mode 100644 apidoc/org/marc4j/converter/impl/package-frame.html create mode 100644 apidoc/org/marc4j/converter/impl/package-summary.html create mode 100644 apidoc/org/marc4j/converter/impl/package-tree.html create mode 100644 apidoc/org/marc4j/converter/impl/package-use.html create mode 100644 apidoc/org/marc4j/converter/package-frame.html create mode 100644 apidoc/org/marc4j/converter/package-summary.html create mode 100644 apidoc/org/marc4j/converter/package-tree.html create mode 100644 apidoc/org/marc4j/converter/package-use.html create mode 100644 apidoc/org/marc4j/marc/ControlField.html create mode 100644 apidoc/org/marc4j/marc/DataField.html create mode 100644 apidoc/org/marc4j/marc/IllegalAddException.html create mode 100644 apidoc/org/marc4j/marc/Leader.html create mode 100644 apidoc/org/marc4j/marc/MarcFactory.html create mode 100644 apidoc/org/marc4j/marc/Record.html create mode 100644 apidoc/org/marc4j/marc/Subfield.html create mode 100644 apidoc/org/marc4j/marc/VariableField.html create mode 100644 apidoc/org/marc4j/marc/class-use/ControlField.html create mode 100644 apidoc/org/marc4j/marc/class-use/DataField.html create mode 100644 apidoc/org/marc4j/marc/class-use/IllegalAddException.html create mode 100644 apidoc/org/marc4j/marc/class-use/Leader.html create mode 100644 apidoc/org/marc4j/marc/class-use/MarcFactory.html create mode 100644 apidoc/org/marc4j/marc/class-use/Record.html create mode 100644 apidoc/org/marc4j/marc/class-use/Subfield.html create mode 100644 apidoc/org/marc4j/marc/class-use/VariableField.html create mode 100644 apidoc/org/marc4j/marc/impl/ControlFieldImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/DataFieldImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/LeaderImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/MarcFactoryImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/RecordImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/SubfieldImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/VariableFieldImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/Verifier.html create mode 100644 apidoc/org/marc4j/marc/impl/class-use/ControlFieldImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/class-use/DataFieldImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/class-use/LeaderImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/class-use/MarcFactoryImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/class-use/RecordImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/class-use/SubfieldImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/class-use/VariableFieldImpl.html create mode 100644 apidoc/org/marc4j/marc/impl/class-use/Verifier.html create mode 100644 apidoc/org/marc4j/marc/impl/package-frame.html create mode 100644 apidoc/org/marc4j/marc/impl/package-summary.html create mode 100644 apidoc/org/marc4j/marc/impl/package-tree.html create mode 100644 apidoc/org/marc4j/marc/impl/package-use.html create mode 100644 apidoc/org/marc4j/marc/package-frame.html create mode 100644 apidoc/org/marc4j/marc/package-summary.html create mode 100644 apidoc/org/marc4j/marc/package-tree.html create mode 100644 apidoc/org/marc4j/marc/package-use.html create mode 100644 apidoc/org/marc4j/package-frame.html create mode 100644 apidoc/org/marc4j/package-summary.html create mode 100644 apidoc/org/marc4j/package-tree.html create mode 100644 apidoc/org/marc4j/package-use.html create mode 100644 apidoc/org/marc4j/util/MarcXmlDriver.html create mode 100644 apidoc/org/marc4j/util/XmlMarcDriver.html create mode 100644 apidoc/org/marc4j/util/class-use/MarcXmlDriver.html create mode 100644 apidoc/org/marc4j/util/class-use/XmlMarcDriver.html create mode 100644 apidoc/org/marc4j/util/package-frame.html create mode 100644 apidoc/org/marc4j/util/package-summary.html create mode 100644 apidoc/org/marc4j/util/package-tree.html create mode 100644 apidoc/org/marc4j/util/package-use.html create mode 100644 apidoc/overview-frame.html create mode 100644 apidoc/overview-summary.html create mode 100644 apidoc/overview-tree.html create mode 100644 apidoc/package-list create mode 100644 apidoc/resources/inherit.gif create mode 100644 apidoc/serialized-form.html create mode 100644 apidoc/stylesheet.css create mode 100644 build.bat create mode 100644 build.properties create mode 100644 build.xml create mode 100644 lib/normalizer.jar create mode 100644 overview.html diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..bac2b65 --- /dev/null +++ b/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c8d0bbd --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +bin/ +target/ +marc4j.jar diff --git a/.project b/.project new file mode 100644 index 0000000..e121975 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + marc4j + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jdt.core.javanature + + diff --git a/LICENSE.marc4j b/LICENSE.marc4j new file mode 100644 index 0000000..cbee875 --- /dev/null +++ b/LICENSE.marc4j @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/LICENSE.normalizer b/LICENSE.normalizer new file mode 100644 index 0000000..f57f6ea --- /dev/null +++ b/LICENSE.normalizer @@ -0,0 +1,34 @@ + + + +ICU4J license - ICU4J 1.3.1 and later + + + +

ICU4J license - ICU4J 1.3.1 and later

+ +

COPYRIGHT AND PERMISSION NOTICE

+ +

+Copyright (c) 1995-2001 International Business Machines Corporation and others +

+

+All rights reserved. +

+

+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. +

+

+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +

+

+Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. +

+ +
+ +All trademarks and registered trademarks mentioned herein are the property of their respective owners. + + + diff --git a/apidoc/allclasses-frame.html b/apidoc/allclasses-frame.html new file mode 100644 index 0000000..12193d5 --- /dev/null +++ b/apidoc/allclasses-frame.html @@ -0,0 +1,124 @@ + + + + + + +All Classes (MARC4J API) + + + + + + + + + + +All Classes +
+ + + + + +
AnselToUnicode +
+CharConverter +
+CodeTable +
+CodeTableGenerated +
+CodeTableGenerator +
+CodeTableHandler +
+CodeTableInterface +
+CodeTableTracker +
+Constants +
+ControlField +
+ControlFieldImpl +
+DataField +
+DataFieldImpl +
+ErrorHandler +
+IllegalAddException +
+Iso5426ToUnicode +
+Iso6937ToUnicode +
+Leader +
+LeaderImpl +
+MarcDirStreamReader +
+MarcException +
+MarcFactory +
+MarcFactoryImpl +
+MarcPermissiveStreamReader +
+MarcReader +
+MarcStreamReader +
+MarcStreamWriter +
+MarcWriter +
+MarcXmlDriver +
+MarcXmlHandler +
+MarcXmlParser +
+MarcXmlParserThread +
+MarcXmlReader +
+MarcXmlWriter +
+Record +
+RecordImpl +
+RecordStack +
+ReverseCodeTable +
+ReverseCodeTableHandler +
+Subfield +
+SubfieldImpl +
+UnicodeToAnsel +
+UnicodeToIso5426 +
+UnicodeToIso6937 +
+VariableField +
+VariableFieldImpl +
+Verifier +
+XmlMarcDriver +
+
+ + + diff --git a/apidoc/allclasses-noframe.html b/apidoc/allclasses-noframe.html new file mode 100644 index 0000000..b45f6da --- /dev/null +++ b/apidoc/allclasses-noframe.html @@ -0,0 +1,124 @@ + + + + + + +All Classes (MARC4J API) + + + + + + + + + + +All Classes +
+ + + + + +
AnselToUnicode +
+CharConverter +
+CodeTable +
+CodeTableGenerated +
+CodeTableGenerator +
+CodeTableHandler +
+CodeTableInterface +
+CodeTableTracker +
+Constants +
+ControlField +
+ControlFieldImpl +
+DataField +
+DataFieldImpl +
+ErrorHandler +
+IllegalAddException +
+Iso5426ToUnicode +
+Iso6937ToUnicode +
+Leader +
+LeaderImpl +
+MarcDirStreamReader +
+MarcException +
+MarcFactory +
+MarcFactoryImpl +
+MarcPermissiveStreamReader +
+MarcReader +
+MarcStreamReader +
+MarcStreamWriter +
+MarcWriter +
+MarcXmlDriver +
+MarcXmlHandler +
+MarcXmlParser +
+MarcXmlParserThread +
+MarcXmlReader +
+MarcXmlWriter +
+Record +
+RecordImpl +
+RecordStack +
+ReverseCodeTable +
+ReverseCodeTableHandler +
+Subfield +
+SubfieldImpl +
+UnicodeToAnsel +
+UnicodeToIso5426 +
+UnicodeToIso6937 +
+VariableField +
+VariableFieldImpl +
+Verifier +
+XmlMarcDriver +
+
+ + + diff --git a/apidoc/constant-values.html b/apidoc/constant-values.html new file mode 100644 index 0000000..90f91e7 --- /dev/null +++ b/apidoc/constant-values.html @@ -0,0 +1,302 @@ + + + + + + +Constant Field Values (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Constant Field Values

+
+
+Contents + + + + + + +
+org.marc4j.*
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
org.marc4j.Constants
+public static final intBLANK32
+public static final intFT30
+public static final StringISO5426_ENCODING"ISO5426"
+public static final StringISO6937_ENCODING"ISO6937"
+public static final StringMARC_8_ENCODING"MARC8"
+public static final StringMARCXML_NS_URI"http://www.loc.gov/MARC21/slim"
+public static final intRT29
+public static final intUS31
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
org.marc4j.ErrorHandler
+public static final intERROR_TYPO1
+public static final intFATAL4
+public static final intINFO0
+public static final intMAJOR_ERROR3
+public static final intMINOR_ERROR2
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
org.marc4j.MarcXmlWriter
+protected static final StringCOLLECTION"collection"
+protected static final StringCONTROL_FIELD"controlfield"
+protected static final StringDATA_FIELD"datafield"
+protected static final StringLEADER"leader"
+protected static final StringRECORD"record"
+protected static final StringSUBFIELD"subfield"
+ +

+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/deprecated-list.html b/apidoc/deprecated-list.html new file mode 100644 index 0000000..5d6da59 --- /dev/null +++ b/apidoc/deprecated-list.html @@ -0,0 +1,142 @@ + + + + + + +Deprecated List (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Deprecated API

+
+
+Contents
    +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/help-doc.html b/apidoc/help-doc.html new file mode 100644 index 0000000..d30a0c3 --- /dev/null +++ b/apidoc/help-doc.html @@ -0,0 +1,219 @@ + + + + + + +API Help (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+How This API Document Is Organized

+
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

+Overview

+
+ +

+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+

+Package

+
+ +

+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

    +
  • Interfaces (italic)
  • Classes
  • Enums
  • Exceptions
  • Errors
  • Annotation Types
+
+

+Class/Interface

+
+ +

+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description +

    +

  • Nested Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary +

    +

  • Field Detail
  • Constructor Detail
  • Method Detail
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+ +

+Annotation Type

+
+ +

+Each annotation type has its own separate page with the following sections:

    +
  • Annotation Type declaration
  • Annotation Type description
  • Required Element Summary
  • Optional Element Summary
  • Element Detail
+
+ +

+Enum

+
+ +

+Each enum has its own separate page with the following sections:

    +
  • Enum declaration
  • Enum description
  • Enum Constant Summary
  • Enum Constant Detail
+
+

+Use

+
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+

+Tree (Class Hierarchy)

+
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
+
+

+Deprecated API

+
+The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+

+Index

+
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+

+Prev/Next

+These links take you to the next or previous class, interface, package, or related page.

+Frames/No Frames

+These links show and hide the HTML frames. All pages are available with or without frames. +

+

+Serialized Form

+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description. +

+

+Constant Field Values

+The Constant Field Values page lists the static final fields and their values. +

+ + +This help file applies to API documentation generated using the standard doclet. + +
+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/index-all.html b/apidoc/index-all.html new file mode 100644 index 0000000..2f8d6d8 --- /dev/null +++ b/apidoc/index-all.html @@ -0,0 +1,1537 @@ + + + + + + +Index (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +A B C D E F G H I L M N O P R S T U V W X
+

+A

+
+
addError(String, String, String, int, String) - +Method in class org.marc4j.ErrorHandler +
Logs an error message using the stated severity level. +
addError(int, String) - +Method in class org.marc4j.ErrorHandler +
Logs an error message using the stated severity level. +
addSubfield(Subfield) - +Method in interface org.marc4j.marc.DataField +
Adds a Subfield. +
addSubfield(int, Subfield) - +Method in interface org.marc4j.marc.DataField +
Inserts a Subfield at the specified position. +
addSubfield(Subfield) - +Method in class org.marc4j.marc.impl.DataFieldImpl +
Adds a Subfield. +
addSubfield(int, Subfield) - +Method in class org.marc4j.marc.impl.DataFieldImpl +
Inserts a Subfield at the specified position. +
addVariableField(VariableField) - +Method in class org.marc4j.marc.impl.RecordImpl +
Adds a VariableField being a ControlField + or DataField. +
addVariableField(VariableField) - +Method in interface org.marc4j.marc.Record +
Adds a VariableField. +
AnselToUnicode - Class in org.marc4j.converter.impl
+ A utility to convert MARC-8 data to non-precomposed UCS/Unicode.
AnselToUnicode() - +Constructor for class org.marc4j.converter.impl.AnselToUnicode +
Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables. +
AnselToUnicode(boolean) - +Constructor for class org.marc4j.converter.impl.AnselToUnicode +
Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables. +
AnselToUnicode(ErrorHandler) - +Constructor for class org.marc4j.converter.impl.AnselToUnicode +
Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables. +
AnselToUnicode(ErrorHandler, boolean) - +Constructor for class org.marc4j.converter.impl.AnselToUnicode +
Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables. +
AnselToUnicode(String) - +Constructor for class org.marc4j.converter.impl.AnselToUnicode +
Constructs an instance with the specified pathname. +
AnselToUnicode(InputStream) - +Constructor for class org.marc4j.converter.impl.AnselToUnicode +
Constructs an instance with the specified input stream. +
+
+

+B

+
+
BLANK - +Static variable in class org.marc4j.Constants +
BLANK +
+
+

+C

+
+
characters(char[], int, int) - +Method in class org.marc4j.converter.impl.CodeTableHandler +
  +
characters(char[], int, int) - +Method in class org.marc4j.converter.impl.ReverseCodeTableHandler +
  +
characters(char[], int, int) - +Method in class org.marc4j.MarcXmlHandler +
  +
CharConverter - Class in org.marc4j.converter
Extend this class to create a character converter.
CharConverter() - +Constructor for class org.marc4j.converter.CharConverter +
  +
charset - +Static variable in class org.marc4j.converter.impl.ReverseCodeTable +
  +
charsets - +Static variable in class org.marc4j.converter.impl.CodeTable +
  +
close() - +Method in class org.marc4j.MarcStreamWriter +
Closes the writer. +
close() - +Method in interface org.marc4j.MarcWriter +
Closes the writer. +
close() - +Method in class org.marc4j.MarcXmlWriter +
  +
CodeTable - Class in org.marc4j.converter.impl
+ CodeTable defines a data structure to facilitate + AnselToUnicode character conversion.
CodeTable(InputStream) - +Constructor for class org.marc4j.converter.impl.CodeTable +
  +
CodeTable(String) - +Constructor for class org.marc4j.converter.impl.CodeTable +
  +
CodeTable(URI) - +Constructor for class org.marc4j.converter.impl.CodeTable +
  +
CodeTableGenerated - Class in org.marc4j.converter.impl
An implementation of CodeTableInterface that is used in converting MARC8 + data to UTF8 data, that doesn't rely on any data files or resources or data structures + + Warning: This file is generated by running the main routine in the file CodeTableGenerator.java + Warning: Do not edit this file, or all edits will be lost at the next build.
CodeTableGenerated() - +Constructor for class org.marc4j.converter.impl.CodeTableGenerated +
  +
CodeTableGenerator - Class in org.marc4j.converter.impl
Invoked at build time to generate a java source file (named CodeTableGenerated.java) + which when compiled will implement the CodeTableInterface (primarily through switch statements) + and which can be used be the AnselToUnicode converter instead of this class, and which will + produce the same results as the object CodeTable.
CodeTableGenerator(InputStream) - +Constructor for class org.marc4j.converter.impl.CodeTableGenerator +
  +
CodeTableHandler - Class in org.marc4j.converter.impl
+ CodeTableHandler is a SAX2 ContentHandler that + builds a data structure to facilitate AnselToUnicode character conversion.
CodeTableHandler() - +Constructor for class org.marc4j.converter.impl.CodeTableHandler +
  +
codeTableHash(Character) - +Method in class org.marc4j.converter.impl.ReverseCodeTable +
  +
CodeTableInterface - Interface in org.marc4j.converter.impl
 
CodeTableTracker - Class in org.marc4j.converter.impl
A utility to convert UCS/Unicode data to MARC-8.
CodeTableTracker() - +Constructor for class org.marc4j.converter.impl.CodeTableTracker +
  +
COLLECTION - +Static variable in class org.marc4j.MarcXmlWriter +
  +
combining - +Static variable in class org.marc4j.converter.impl.CodeTable +
  +
combining - +Static variable in class org.marc4j.converter.impl.ReverseCodeTable +
  +
compareTo(Object) - +Method in class org.marc4j.marc.impl.VariableFieldImpl +
  +
Constants - Class in org.marc4j
Defines constant values.
CONTROL_FIELD - +Static variable in class org.marc4j.MarcXmlWriter +
  +
ControlField - Interface in org.marc4j.marc
Represents a control field in a MARC record.
ControlFieldImpl - Class in org.marc4j.marc.impl
Represents a control field in a MARC record.
ControlFieldImpl() - +Constructor for class org.marc4j.marc.impl.ControlFieldImpl +
Creates a new ControlField. +
ControlFieldImpl(String) - +Constructor for class org.marc4j.marc.impl.ControlFieldImpl +
Creates a new ControlField and sets the tag name. +
ControlFieldImpl(String, String) - +Constructor for class org.marc4j.marc.impl.ControlFieldImpl +
Creates a new ControlField and sets the tag name and the + data element. +
convert(char[]) - +Method in class org.marc4j.converter.CharConverter +
The method that needs to be implemented in a subclass to create a CharConverter. +
convert(byte[]) - +Method in class org.marc4j.converter.CharConverter +
Alternate method for performing a character conversion. +
convert(String) - +Method in class org.marc4j.converter.CharConverter +
Alternate method for performing a character conversion. +
convert(char[]) - +Method in class org.marc4j.converter.impl.AnselToUnicode +
+ Converts MARC-8 data to UCS/Unicode. +
convert(char[]) - +Method in class org.marc4j.converter.impl.Iso5426ToUnicode +
+ Converts UNIMARC (ISO 5426 charset) data to UCS/Unicode. +
convert(char[]) - +Method in class org.marc4j.converter.impl.Iso6937ToUnicode +
+ Converts ISO 6937 data to UCS/Unicode. +
convert(char[]) - +Method in class org.marc4j.converter.impl.UnicodeToAnsel +
Converts UCS/Unicode data to MARC-8. +
convert(char[]) - +Method in class org.marc4j.converter.impl.UnicodeToIso5426 +
+ Converts UCS/Unicode data to UNIMARC (ISO 5426 charset). +
convert(char[]) - +Method in class org.marc4j.converter.impl.UnicodeToIso6937 +
+ Converts UCS/Unicode data to ISO 6937. +
ct - +Variable in class org.marc4j.converter.impl.AnselToUnicode +
  +
curField - +Variable in class org.marc4j.ErrorHandler.Error +
  +
curRecordID - +Variable in class org.marc4j.ErrorHandler.Error +
  +
curSubfield - +Variable in class org.marc4j.ErrorHandler.Error +
  +
+
+

+D

+
+
DATA_FIELD - +Static variable in class org.marc4j.MarcXmlWriter +
  +
DataField - Interface in org.marc4j.marc
Represents a data field in a MARC record.
DataFieldImpl - Class in org.marc4j.marc.impl
Represents a data field in a MARC record.
DataFieldImpl() - +Constructor for class org.marc4j.marc.impl.DataFieldImpl +
Creates a new DataField. +
DataFieldImpl(String, char, char) - +Constructor for class org.marc4j.marc.impl.DataFieldImpl +
Creates a new DataField and sets the tag name and the + first and second indicator. +
+
+

+E

+
+
end() - +Method in class org.marc4j.RecordStack +
Called when the end of the document is reached. +
endDocument() - +Method in class org.marc4j.MarcXmlHandler +
  +
endElement(String, String, String) - +Method in class org.marc4j.converter.impl.CodeTableHandler +
  +
endElement(String, String, String) - +Method in class org.marc4j.converter.impl.ReverseCodeTableHandler +
  +
endElement(String, String, String) - +Method in class org.marc4j.MarcXmlHandler +
  +
endPrefixMapping(String) - +Method in class org.marc4j.MarcXmlHandler +
  +
ERROR_TYPO - +Static variable in class org.marc4j.ErrorHandler +
ERROR_TYPO indicates that an even less severe problem was found with the record, + such as the record leader ends with characters other than "4500" or a field tag + contains non-numeric characters the record contains a html-style entity reference + such as & or "e; which was replaced with the unescaped version. +
ErrorHandler - Class in org.marc4j
Defines and describes errors encountered in the processing a given MARC record.
ErrorHandler() - +Constructor for class org.marc4j.ErrorHandler +
  +
ErrorHandler.Error - Class in org.marc4j
 
ErrorHandler.Error(String, String, String, int, String) - +Constructor for class org.marc4j.ErrorHandler.Error +
  +
errorList - +Variable in class org.marc4j.converter.impl.AnselToUnicode +
  +
+
+

+F

+
+
FATAL - +Static variable in class org.marc4j.ErrorHandler +
FATAL is the most severe error, it is usually set in conjunction with throwing an + exception, generally no record is returned when a FATAL error occurs. +
find(String) - +Method in class org.marc4j.marc.impl.ControlFieldImpl +
  +
find(String) - +Method in class org.marc4j.marc.impl.DataFieldImpl +
  +
find(String) - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
find(String, String) - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
find(String[], String) - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
find(String) - +Method in class org.marc4j.marc.impl.SubfieldImpl +
  +
find(String) - +Method in interface org.marc4j.marc.Record +
Returns a List of VariableField objects that have a data element that + matches the given regular expression. +
find(String, String) - +Method in interface org.marc4j.marc.Record +
Returns a List of VariableField objects with the given tag that have a + data element that matches the given regular expression. +
find(String[], String) - +Method in interface org.marc4j.marc.Record +
Returns a List of VariableField objects with the given tags that have a + data element that matches the given regular expression. +
find(String) - +Method in interface org.marc4j.marc.Subfield +
Returns true if the given regular expression matches a subsequence of the + data element. +
find(String) - +Method in interface org.marc4j.marc.VariableField +
Returns true if the given regular expression matches a subsequence of a + data element within the variable field. +
FT - +Static variable in class org.marc4j.Constants +
FIELD TERMINATOR +
+
+

+G

+
+
g - +Variable in class org.marc4j.converter.impl.CodeTableTracker +
  +
getBaseAddressOfData() - +Method in class org.marc4j.marc.impl.LeaderImpl +
Returns the base address of data (positions 12-16). +
getBaseAddressOfData() - +Method in interface org.marc4j.marc.Leader +
Returns the base address of data (positions 12-16). +
getChar(int, int) - +Method in class org.marc4j.converter.impl.CodeTable +
  +
getChar(int, int) - +Method in class org.marc4j.converter.impl.CodeTableGenerated +
  +
getChar(int, int) - +Method in interface org.marc4j.converter.impl.CodeTableInterface +
  +
getChar(Character, CodeTableTracker) - +Static method in class org.marc4j.converter.impl.ReverseCodeTable +
  +
getCharCodingScheme() - +Method in class org.marc4j.marc.impl.LeaderImpl +
Returns the character coding scheme (position 09). +
getCharCodingScheme() - +Method in interface org.marc4j.marc.Leader +
Returns the character coding scheme (position 09). +
getCharSets() - +Method in class org.marc4j.converter.impl.CodeTableHandler +
  +
getCharSets() - +Method in class org.marc4j.converter.impl.ReverseCodeTableHandler +
  +
getCode() - +Method in class org.marc4j.marc.impl.SubfieldImpl +
  +
getCode() - +Method in interface org.marc4j.marc.Subfield +
Returns the data element identifier. +
getCombiningChars() - +Method in class org.marc4j.converter.impl.CodeTableHandler +
  +
getCombiningChars() - +Method in class org.marc4j.converter.impl.ReverseCodeTableHandler +
  +
getControlFields() - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
getControlFields() - +Method in interface org.marc4j.marc.Record +
Returns a list of control fields +
getControlNumber() - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
getControlNumber() - +Method in interface org.marc4j.marc.Record +
Returns the control number or null if no control number is + available. +
getControlNumberField() - +Method in class org.marc4j.marc.impl.RecordImpl +
Returns the control number field or null if no control + number field is available. +
getControlNumberField() - +Method in interface org.marc4j.marc.Record +
Returns the control number field or null if no control + number field is available. +
getConverter() - +Method in class org.marc4j.MarcStreamWriter +
Returns the character converter. +
getConverter() - +Method in interface org.marc4j.MarcWriter +
Returns the character converter. +
getConverter() - +Method in class org.marc4j.MarcXmlWriter +
Returns the character converter. +
getCurrent(byte) - +Method in class org.marc4j.converter.impl.CodeTableTracker +
  +
getData() - +Method in interface org.marc4j.marc.ControlField +
Returns the data element +
getData() - +Method in class org.marc4j.marc.impl.ControlFieldImpl +
  +
getData() - +Method in class org.marc4j.marc.impl.SubfieldImpl +
  +
getData() - +Method in interface org.marc4j.marc.Subfield +
Returns the data element. +
getDataElement(String) - +Method in class org.marc4j.MarcXmlWriter +
  +
getDataFields() - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
getDataFields() - +Method in interface org.marc4j.marc.Record +
Returns a list of data fields +
getEntryMap() - +Method in class org.marc4j.marc.impl.LeaderImpl +
Returns the entry map (positions 20-23). +
getEntryMap() - +Method in interface org.marc4j.marc.Leader +
Returns the entry map (positions 20-23). +
getErrors() - +Method in class org.marc4j.ErrorHandler +
Returns a list of all of the errors encountered in processing the current record. +
getId() - +Method in class org.marc4j.marc.impl.ControlFieldImpl +
  +
getId() - +Method in class org.marc4j.marc.impl.DataFieldImpl +
  +
getId() - +Method in class org.marc4j.marc.impl.LeaderImpl +
  +
getId() - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
getId() - +Method in class org.marc4j.marc.impl.SubfieldImpl +
  +
getId() - +Method in interface org.marc4j.marc.Leader +
Returns the identifier. +
getId() - +Method in interface org.marc4j.marc.Record +
Returns the identifier. +
getId() - +Method in interface org.marc4j.marc.Subfield +
Returns the identifier. +
getId() - +Method in interface org.marc4j.marc.VariableField +
Returns the identifier. +
getImplDefined1() - +Method in class org.marc4j.marc.impl.LeaderImpl +
Returns implementation defined values (positions 07-08). +
getImplDefined1() - +Method in interface org.marc4j.marc.Leader +
Returns implementation defined values (positions 07-08). +
getImplDefined2() - +Method in class org.marc4j.marc.impl.LeaderImpl +
Returns implementation defined values (positions 17-19). +
getImplDefined2() - +Method in interface org.marc4j.marc.Leader +
Returns implementation defined values (positions 17-19). +
getIndicator1() - +Method in interface org.marc4j.marc.DataField +
Returns the first indicator +
getIndicator1() - +Method in class org.marc4j.marc.impl.DataFieldImpl +
Returns the first indicator +
getIndicator2() - +Method in interface org.marc4j.marc.DataField +
Returns the second indicator +
getIndicator2() - +Method in class org.marc4j.marc.impl.DataFieldImpl +
Returns the second indicator +
getIndicatorCount() - +Method in class org.marc4j.marc.impl.LeaderImpl +
Returns the indicator count (positions 10). +
getIndicatorCount() - +Method in interface org.marc4j.marc.Leader +
Returns the indicator count (positions 10). +
getInputSource() - +Method in class org.marc4j.MarcXmlParserThread +
Returns the input stream. +
getLeader() - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
getLeader() - +Method in interface org.marc4j.marc.Record +
Returns the Leader. +
getMaxSeverity() - +Method in class org.marc4j.ErrorHandler +
Returns the highest error severity level encountered in processing the current record. +
getMBChar(int) - +Method in class org.marc4j.converter.impl.AnselToUnicode +
  +
getNext(byte) - +Method in class org.marc4j.converter.impl.CodeTableTracker +
  +
getPrevious(byte) - +Method in class org.marc4j.converter.impl.CodeTableTracker +
  +
getRecordLength() - +Method in class org.marc4j.marc.impl.LeaderImpl +
Returns the logical record length (positions 00-04). +
getRecordLength() - +Method in interface org.marc4j.marc.Leader +
Returns the logical record length (positions 00-04). +
getRecordStatus() - +Method in class org.marc4j.marc.impl.LeaderImpl +
Returns the record status (positions 05). +
getRecordStatus() - +Method in interface org.marc4j.marc.Leader +
Returns the record status (positions 05). +
getSubfield(char) - +Method in interface org.marc4j.marc.DataField +
Returns the first Subfield with the given code. +
getSubfield(char) - +Method in class org.marc4j.marc.impl.DataFieldImpl +
  +
getSubfieldCodeLength() - +Method in class org.marc4j.marc.impl.LeaderImpl +
Returns the subfield code length (position 11). +
getSubfieldCodeLength() - +Method in interface org.marc4j.marc.Leader +
Returns the subfield code length (position 11). +
getSubfields() - +Method in interface org.marc4j.marc.DataField +
Returns the list of Subfield objects. +
getSubfields(char) - +Method in interface org.marc4j.marc.DataField +
Returns the list of Subfield objects for the goven + subfield code. +
getSubfields() - +Method in class org.marc4j.marc.impl.DataFieldImpl +
Returns the list of Subfield objects. +
getSubfields(char) - +Method in class org.marc4j.marc.impl.DataFieldImpl +
  +
getTag() - +Method in class org.marc4j.marc.impl.VariableFieldImpl +
  +
getTag() - +Method in interface org.marc4j.marc.VariableField +
Returns the tag name. +
getTransformerHandler() - +Method in class org.marc4j.MarcXmlParserThread +
Returns the content handler to transform the source to MARCXML. +
getType() - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
getType() - +Method in interface org.marc4j.marc.Record +
Returns the type of record. +
getTypeOfRecord() - +Method in class org.marc4j.marc.impl.LeaderImpl +
Returns the record type (position 06). +
getTypeOfRecord() - +Method in interface org.marc4j.marc.Leader +
Returns the record type (position 06). +
getUnicodeNormalization() - +Method in class org.marc4j.MarcXmlWriter +
Returns true if this writer will perform Unicode normalization, false + otherwise. +
getVariableField(String) - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
getVariableField(String) - +Method in interface org.marc4j.marc.Record +
Returns the first instance of the variable field with the given tag. +
getVariableFields(String) - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
getVariableFields() - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
getVariableFields(String[]) - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
getVariableFields() - +Method in interface org.marc4j.marc.Record +
Returns a list of variable fields +
getVariableFields(String) - +Method in interface org.marc4j.marc.Record +
Returns a list of variable fields with the given tag. +
getVariableFields(String[]) - +Method in interface org.marc4j.marc.Record +
Returns a list of variable fields for the given tags. +
+
+

+H

+
+
hasControlNumberField(Collection) - +Static method in class org.marc4j.marc.impl.Verifier +
Returns true if the given Collection contains an instance of + a ControlField with a control number field tag (001). +
hasErrors() - +Method in class org.marc4j.ErrorHandler +
Returns true if any errors (or warnings) were encountered in processing the + current record. +
hasIndent() - +Method in class org.marc4j.MarcXmlWriter +
Returns true if indentation is active, false otherwise. +
hasNext() - +Method in class org.marc4j.MarcDirStreamReader +
Returns true if the iteration has more records, false otherwise. +
hasNext() - +Method in class org.marc4j.MarcPermissiveStreamReader +
Returns true if the iteration has more records, false otherwise. +
hasNext() - +Method in interface org.marc4j.MarcReader +
Returns true if the iteration has more records, false otherwise. +
hasNext() - +Method in class org.marc4j.MarcStreamReader +
Returns true if the iteration has more records, false otherwise. +
hasNext() - +Method in class org.marc4j.MarcXmlReader +
Returns true if the iteration has more records, false otherwise. +
hasNext() - +Method in class org.marc4j.RecordStack +
Returns true if there are more Record objects to expect, + false otherwise. +
+
+

+I

+
+
ignorableWhitespace(char[], int, int) - +Method in class org.marc4j.MarcXmlHandler +
  +
IllegalAddException - Exception in org.marc4j.marc
Thrown when the addition of the supplied object is illegal.
IllegalAddException(String) - +Constructor for exception org.marc4j.marc.IllegalAddException +
Creates a new Exception indicating that the addttion + of the supplied object is illegal. +
IllegalAddException(String, String) - +Constructor for exception org.marc4j.marc.IllegalAddException +
Creates a new Exception indicating that the addttion + of the supplied object is illegal. +
INFO - +Static variable in class org.marc4j.ErrorHandler +
INFO is used to pass information about the record translation process. +
inPreviousCharCodeTable(Character, CodeTableTracker) - +Static method in class org.marc4j.converter.impl.ReverseCodeTable +
  +
isCombining(int, int, int) - +Method in class org.marc4j.converter.impl.CodeTable +
  +
isCombining(int, int, int) - +Method in class org.marc4j.converter.impl.CodeTableGenerated +
  +
isCombining(int, int, int) - +Method in interface org.marc4j.converter.impl.CodeTableInterface +
  +
isCombining(Character) - +Method in class org.marc4j.converter.impl.ReverseCodeTable +
  +
isControlField(String) - +Static method in class org.marc4j.marc.impl.Verifier +
Returns true if the given String value identifies a tag for + a control field (001 through 009). +
isControlNumberField(String) - +Static method in class org.marc4j.marc.impl.Verifier +
Returns true if the given String value identifies a tag for + a control number field (001). +
ISO5426_ENCODING - +Static variable in class org.marc4j.Constants +
ISO5426 ENCODING +
Iso5426ToUnicode - Class in org.marc4j.converter.impl
+ A utility to convert UNIMARC data to UCS/Unicode.
Iso5426ToUnicode() - +Constructor for class org.marc4j.converter.impl.Iso5426ToUnicode +
  +
ISO6937_ENCODING - +Static variable in class org.marc4j.Constants +
ISO6937 ENCODING +
Iso6937ToUnicode - Class in org.marc4j.converter.impl
+ A utility to convert ISO 6937 data to UCS/Unicode.
Iso6937ToUnicode() - +Constructor for class org.marc4j.converter.impl.Iso6937ToUnicode +
  +
+
+

+L

+
+
Leader - Interface in org.marc4j.marc
Represents a record label in a MARC record.
LEADER - +Static variable in class org.marc4j.MarcXmlWriter +
  +
LeaderImpl - Class in org.marc4j.marc.impl
Represents a record label in a MARC record.
LeaderImpl() - +Constructor for class org.marc4j.marc.impl.LeaderImpl +
Default constructor. +
LeaderImpl(String) - +Constructor for class org.marc4j.marc.impl.LeaderImpl +
Creates a new leader from a String object. +
loadedMultibyte - +Variable in class org.marc4j.converter.impl.AnselToUnicode +
  +
+
+

+M

+
+
main(String[]) - +Static method in class org.marc4j.converter.impl.CodeTableGenerator +
  +
main(String[]) - +Static method in class org.marc4j.converter.impl.CodeTableHandler +
  +
main(String[]) - +Static method in class org.marc4j.converter.impl.ReverseCodeTableHandler +
  +
main(String[]) - +Static method in class org.marc4j.util.MarcXmlDriver +
Provides a static entry point. +
main(String[]) - +Static method in class org.marc4j.util.XmlMarcDriver +
Provides a static entry point. +
MAJOR_ERROR - +Static variable in class org.marc4j.ErrorHandler +
MAJOR_ERROR indicates that a serious problem existed with the record, such as a + malformed directory or an invalid subfield tag, or an encoding error where missing + data had to be inferred through some heuristic process. +
makeMultibyte(char, char, char) - +Method in class org.marc4j.converter.impl.AnselToUnicode +
  +
makePreviousCurrent() - +Method in class org.marc4j.converter.impl.CodeTableTracker +
  +
MARC_8_ENCODING - +Static variable in class org.marc4j.Constants +
MARC-8 ANSEL ENCODING +
MarcDirStreamReader - Class in org.marc4j
+ A Marc reader which instead of handling a single file of MARC records + it handles a directory, which it will scan for all .mrc files, and + iterate through all of them in turn.
MarcDirStreamReader(String) - +Constructor for class org.marc4j.MarcDirStreamReader +
Constructs an instance that traverses the directory specified in the parameter. +
MarcDirStreamReader(File) - +Constructor for class org.marc4j.MarcDirStreamReader +
Constructs an instance that traverses the directory specified in the parameter. +
MarcDirStreamReader(String, boolean, boolean) - +Constructor for class org.marc4j.MarcDirStreamReader +
Constructs an instance that traverses the directory specified in the parameter. +
MarcDirStreamReader(File, boolean, boolean) - +Constructor for class org.marc4j.MarcDirStreamReader +
Constructs an instance that traverses the directory specified in the parameter. +
MarcDirStreamReader(String, boolean, boolean, String) - +Constructor for class org.marc4j.MarcDirStreamReader +
Constructs an instance that traverses the directory specified in the parameter. +
MarcDirStreamReader(File, boolean, boolean, String) - +Constructor for class org.marc4j.MarcDirStreamReader +
Constructs an instance that traverses the directory specified in the parameter. +
MarcException - Exception in org.marc4j
Thrown in various situations by MARC4J; may contain a nested exception.
MarcException() - +Constructor for exception org.marc4j.MarcException +
Create a new MarcException with no detail mesage. +
MarcException(String) - +Constructor for exception org.marc4j.MarcException +
Create a new MarcException with the String + specified as an error message. +
MarcException(String, Throwable) - +Constructor for exception org.marc4j.MarcException +
Create a new MarcException with the given + Exception base cause and detail message. +
MarcFactory - Class in org.marc4j.marc
Factory for creating MARC record objects.
MarcFactory() - +Constructor for class org.marc4j.marc.MarcFactory +
  +
MarcFactoryImpl - Class in org.marc4j.marc.impl
Factory for creating MARC record objects.
MarcFactoryImpl() - +Constructor for class org.marc4j.marc.impl.MarcFactoryImpl +
Default constructor. +
MarcPermissiveStreamReader - Class in org.marc4j
An iterator over a collection of MARC records in ISO 2709 format, that is designed + to be able to handle MARC records that have errors in their structure or their encoding.
MarcPermissiveStreamReader(InputStream, boolean, boolean) - +Constructor for class org.marc4j.MarcPermissiveStreamReader +
Constructs an instance with the specified input stream with possible additional functionality + being enabled by setting permissive and/or convertToUTF8 to true. +
MarcPermissiveStreamReader(InputStream, ErrorHandler, boolean) - +Constructor for class org.marc4j.MarcPermissiveStreamReader +
Constructs an instance with the specified input stream with possible additional functionality + being enabled by passing in an ErrorHandler object and/or setting convertToUTF8 to true. +
MarcPermissiveStreamReader(InputStream, boolean, boolean, String) - +Constructor for class org.marc4j.MarcPermissiveStreamReader +
Constructs an instance with the specified input stream with possible additional functionality + being enabled by setting permissive and/or convertToUTF8 to true. +
MarcPermissiveStreamReader(InputStream, ErrorHandler, boolean, String) - +Constructor for class org.marc4j.MarcPermissiveStreamReader +
Constructs an instance with the specified input stream with possible additional functionality + being enabled by setting permissive and/or convertToUTF8 to true. +
MarcReader - Interface in org.marc4j
Implement this interface to provide an iterator over a collection of + Record objects.
MarcStreamReader - Class in org.marc4j
An iterator over a collection of MARC records in ISO 2709 format.
MarcStreamReader(InputStream) - +Constructor for class org.marc4j.MarcStreamReader +
Constructs an instance with the specified input stream. +
MarcStreamReader(InputStream, String) - +Constructor for class org.marc4j.MarcStreamReader +
Constructs an instance with the specified input stream. +
MarcStreamWriter - Class in org.marc4j
Class for writing MARC record objects in ISO 2709 format.
MarcStreamWriter(OutputStream) - +Constructor for class org.marc4j.MarcStreamWriter +
Constructs an instance and creates a Writer object with + the specified output stream. +
MarcStreamWriter(OutputStream, String) - +Constructor for class org.marc4j.MarcStreamWriter +
Constructs an instance and creates a Writer object with + the specified output stream and character encoding. +
MarcWriter - Interface in org.marc4j
Implement this interface to provide a writer for Record + objects.
MARCXML_NS_URI - +Static variable in class org.marc4j.Constants +
NS URI +
MarcXmlDriver - Class in org.marc4j.util
Provides a basic driver to convert MARC records to MARCXML.
MarcXmlDriver() - +Constructor for class org.marc4j.util.MarcXmlDriver +
  +
MarcXmlHandler - Class in org.marc4j
Creates Record objects from SAX events and pushes each item + onto the top of the RecordStack.
MarcXmlHandler(RecordStack) - +Constructor for class org.marc4j.MarcXmlHandler +
Default constructor. +
MarcXmlParser - Class in org.marc4j
Creates Record objects from SAX events and pushes each item + onto the top of the RecordStack.
MarcXmlParser(MarcXmlHandler) - +Constructor for class org.marc4j.MarcXmlParser +
Default constructor. +
MarcXmlParserThread - Class in org.marc4j
Extends Thread to produce Record objects from + MARCXML data.
MarcXmlParserThread(RecordStack) - +Constructor for class org.marc4j.MarcXmlParserThread +
Creates a new instance and registers the RecordQueue. +
MarcXmlParserThread(RecordStack, InputSource) - +Constructor for class org.marc4j.MarcXmlParserThread +
Creates a new instance and registers the RecordQueue and + the InputStream. +
MarcXmlReader - Class in org.marc4j
An iterator over a collection of MARC records in MARCXML format.
MarcXmlReader(InputStream) - +Constructor for class org.marc4j.MarcXmlReader +
Constructs an instance with the specified input stream. +
MarcXmlReader(InputSource) - +Constructor for class org.marc4j.MarcXmlReader +
Constructs an instance with the specified input source. +
MarcXmlReader(InputStream, String) - +Constructor for class org.marc4j.MarcXmlReader +
Constructs an instance with the specified input stream and stylesheet + location. +
MarcXmlReader(InputStream, Source) - +Constructor for class org.marc4j.MarcXmlReader +
Constructs an instance with the specified input stream and stylesheet + source. +
MarcXmlReader(InputSource, Source) - +Constructor for class org.marc4j.MarcXmlReader +
Constructs an instance with the specified input source and stylesheet + source. +
MarcXmlReader(InputStream, TransformerHandler) - +Constructor for class org.marc4j.MarcXmlReader +
Constructs an instance with the specified input stream and transformer + handler. +
MarcXmlReader(InputSource, TransformerHandler) - +Constructor for class org.marc4j.MarcXmlReader +
Constructs an instance with the specified input source and transformer + handler. +
MarcXmlWriter - Class in org.marc4j
Class for writing MARC record objects in MARCXML format.
MarcXmlWriter(OutputStream) - +Constructor for class org.marc4j.MarcXmlWriter +
Constructs an instance with the specified output stream. +
MarcXmlWriter(OutputStream, boolean) - +Constructor for class org.marc4j.MarcXmlWriter +
Constructs an instance with the specified output stream and indentation. +
MarcXmlWriter(OutputStream, String) - +Constructor for class org.marc4j.MarcXmlWriter +
Constructs an instance with the specified output stream and character + encoding. +
MarcXmlWriter(OutputStream, String, boolean) - +Constructor for class org.marc4j.MarcXmlWriter +
Constructs an instance with the specified output stream, character + encoding and indentation. +
MarcXmlWriter(Result) - +Constructor for class org.marc4j.MarcXmlWriter +
Constructs an instance with the specified result. +
MarcXmlWriter(Result, String) - +Constructor for class org.marc4j.MarcXmlWriter +
Constructs an instance with the specified stylesheet location and result. +
MarcXmlWriter(Result, Source) - +Constructor for class org.marc4j.MarcXmlWriter +
Constructs an instance with the specified stylesheet source and result. +
marshal() - +Method in class org.marc4j.marc.impl.LeaderImpl +
Creates a string object from this leader object. +
marshal() - +Method in interface org.marc4j.marc.Leader +
Creates a string object from this leader object. +
message - +Variable in class org.marc4j.ErrorHandler.Error +
  +
MINOR_ERROR - +Static variable in class org.marc4j.ErrorHandler +
MINOR_ERROR indicates that a less serious problem existed with the record, such as + a mismatch between the directory stated field sizes and the actual field sizes, + or an encoding error where extraneous data had to be discarded to correctly + interpret the data. +
+
+

+N

+
+
newControlField() - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
Returns a new control field instance. +
newControlField(String) - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
Creates a new control field with the given tag and returns the instance. +
newControlField(String, String) - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
Creates a new control field with the given tag and data and returns the + instance. +
newControlField() - +Method in class org.marc4j.marc.MarcFactory +
Returns a new control field instance. +
newControlField(String) - +Method in class org.marc4j.marc.MarcFactory +
Creates a new control field with the given tag and returns the instance. +
newControlField(String, String) - +Method in class org.marc4j.marc.MarcFactory +
Creates a new control field with the given tag and data and returns the + instance. +
newDataField() - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
Returns a new data field instance. +
newDataField(String, char, char) - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
Creates a new data field with the given tag and indicators and returns + the instance. +
newDataField() - +Method in class org.marc4j.marc.MarcFactory +
Returns a new data field instance. +
newDataField(String, char, char) - +Method in class org.marc4j.marc.MarcFactory +
Creates a new data field with the given tag and indicators and returns the + instance. +
newInstance() - +Static method in class org.marc4j.marc.MarcFactory +
Creates a new factory instance. +
newLeader() - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
Returns a new leader instance. +
newLeader(String) - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
Creates a new leader with the given String object. +
newLeader() - +Method in class org.marc4j.marc.MarcFactory +
Returns a new leader instance. +
newLeader(String) - +Method in class org.marc4j.marc.MarcFactory +
Creates a new leader with the given String object. +
newRecord() - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
Returns a new record instance with a default leader. +
newRecord(Leader) - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
  +
newRecord(String) - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
  +
newRecord() - +Method in class org.marc4j.marc.MarcFactory +
Returns a new record instance. +
newRecord(Leader) - +Method in class org.marc4j.marc.MarcFactory +
Returns a new record instance. +
newRecord(String) - +Method in class org.marc4j.marc.MarcFactory +
Returns a new record instance. +
newSubfield() - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
Returns a new subfield instance. +
newSubfield(char) - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
Creates a new subfield with the given identifier. +
newSubfield(char, String) - +Method in class org.marc4j.marc.impl.MarcFactoryImpl +
Creates a new subfield with the given identifier and data. +
newSubfield() - +Method in class org.marc4j.marc.MarcFactory +
Returns a new subfield instance. +
newSubfield(char) - +Method in class org.marc4j.marc.MarcFactory +
Creates a new subfield with the given identifier. +
newSubfield(char, String) - +Method in class org.marc4j.marc.MarcFactory +
Creates a new subfield with the given identifier and data. +
next() - +Method in class org.marc4j.MarcDirStreamReader +
Returns the next record in the iteration. +
next() - +Method in class org.marc4j.MarcPermissiveStreamReader +
Returns the next record in the iteration. +
next() - +Method in interface org.marc4j.MarcReader +
Returns the next record in the iteration. +
next() - +Method in class org.marc4j.MarcStreamReader +
Returns the next record in the iteration. +
next() - +Method in class org.marc4j.MarcXmlReader +
Returns the next record in the iteration. +
+
+

+O

+
+
org.marc4j - package org.marc4j
Classes to read and write MARC and MARCXML records.
org.marc4j.converter - package org.marc4j.converter
Interfaces for character conversions.
org.marc4j.converter.impl - package org.marc4j.converter.impl
Classes for byte and character conversions.
org.marc4j.marc - package org.marc4j.marc
Interfaces for the record object model.
org.marc4j.marc.impl - package org.marc4j.marc.impl
Default implementation of the MARC record object model.
org.marc4j.util - package org.marc4j.util
Provides some basic command-line utilities for converting MARC and MARCXML records.
+
+

+P

+
+
parse(InputSource) - +Method in class org.marc4j.MarcXmlParser +
Calls the parser. +
parse(InputSource, TransformerHandler) - +Method in class org.marc4j.MarcXmlParser +
Calls the parser and tries to transform the source into MARCXML using the + given stylesheet source before creating Record objects. +
passException(RuntimeException) - +Method in class org.marc4j.RecordStack +
Passes the exception to the thread where the MarcXMLReader is running, so that the next() call + that is blocked waiting for this thread, will receive the exception. +
pop() - +Method in class org.marc4j.RecordStack +
Removes the Record object from the stack and returns that + object. +
processingInstruction(String, String) - +Method in class org.marc4j.MarcXmlHandler +
  +
push(Record) - +Method in class org.marc4j.RecordStack +
Pushes a Record object on the stack. +
+
+

+R

+
+
rct - +Variable in class org.marc4j.converter.impl.UnicodeToAnsel +
  +
Record - Interface in org.marc4j.marc
Represents a MARC record.
RECORD - +Static variable in class org.marc4j.MarcXmlWriter +
  +
RecordImpl - Class in org.marc4j.marc.impl
Represents a MARC record.
RecordImpl() - +Constructor for class org.marc4j.marc.impl.RecordImpl +
Creates a new Record. +
RecordStack - Class in org.marc4j
Provides push and pop operations for + Record objects created by MarcXmlParser.
RecordStack() - +Constructor for class org.marc4j.RecordStack +
Default constuctor. +
removeSubfield(Subfield) - +Method in interface org.marc4j.marc.DataField +
Removes a Subfield. +
removeSubfield(Subfield) - +Method in class org.marc4j.marc.impl.DataFieldImpl +
Removes a Subfield. +
removeVariableField(VariableField) - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
removeVariableField(VariableField) - +Method in interface org.marc4j.marc.Record +
Removes a variable field from the collection. +
reset() - +Method in class org.marc4j.ErrorHandler +
Resets the list of errors to empty. +
ReverseCodeTable - Class in org.marc4j.converter.impl
+ ReverseCodeTable defines a data structure to facilitate + UnicodeToAnsel character conversion.
ReverseCodeTable(InputStream) - +Constructor for class org.marc4j.converter.impl.ReverseCodeTable +
  +
ReverseCodeTable(String) - +Constructor for class org.marc4j.converter.impl.ReverseCodeTable +
  +
ReverseCodeTable(URI) - +Constructor for class org.marc4j.converter.impl.ReverseCodeTable +
  +
ReverseCodeTableHandler - Class in org.marc4j.converter.impl
+ ReverseCodeTableHandler is a SAX2 ContentHandler + that builds a data structure to facilitate UnicodeToAnsel + character conversion.
ReverseCodeTableHandler() - +Constructor for class org.marc4j.converter.impl.ReverseCodeTableHandler +
  +
RT - +Static variable in class org.marc4j.Constants +
RECORD TERMINATOR +
run() - +Method in class org.marc4j.MarcXmlParserThread +
Creates a new MarcXmlHandler instance, registers the + RecordQueue and sends the InputStream to + the MarcXmlParser parser. +
+
+

+S

+
+
setBaseAddressOfData(int) - +Method in class org.marc4j.marc.impl.LeaderImpl +
Sets the base address of data (positions 12-16). +
setBaseAddressOfData(int) - +Method in interface org.marc4j.marc.Leader +
Sets the base address of data (positions 12-16). +
setCharCodingScheme(char) - +Method in class org.marc4j.marc.impl.LeaderImpl +
Sets the character encoding scheme (position 09). +
setCharCodingScheme(char) - +Method in interface org.marc4j.marc.Leader +
Sets the character encoding scheme (position 09). +
setCode(char) - +Method in class org.marc4j.marc.impl.SubfieldImpl +
  +
setCode(char) - +Method in interface org.marc4j.marc.Subfield +
Sets the data element identifier. +
setConverter(CharConverter) - +Method in class org.marc4j.MarcStreamWriter +
Sets the character converter. +
setConverter(CharConverter) - +Method in interface org.marc4j.MarcWriter +
Sets the character converter. +
setConverter(CharConverter) - +Method in class org.marc4j.MarcXmlWriter +
Sets the character converter. +
setCurrent(byte, Integer) - +Method in class org.marc4j.converter.impl.CodeTableTracker +
  +
setCurrentField(String) - +Method in class org.marc4j.ErrorHandler +
Sets the field tag to be stored for subsequent error messages that are logged +
setCurrentSubfield(String) - +Method in class org.marc4j.ErrorHandler +
Sets the subfield tag to be stored for subsequent error messages that are logged +
setData(String) - +Method in interface org.marc4j.marc.ControlField +
Sets the data element. +
setData(String) - +Method in class org.marc4j.marc.impl.ControlFieldImpl +
  +
setData(String) - +Method in class org.marc4j.marc.impl.SubfieldImpl +
  +
setData(String) - +Method in interface org.marc4j.marc.Subfield +
Sets the data element. +
setDocumentLocator(Locator) - +Method in class org.marc4j.converter.impl.CodeTableHandler +
+ Registers the SAX2 Locator object. +
setDocumentLocator(Locator) - +Method in class org.marc4j.converter.impl.ReverseCodeTableHandler +
+ Registers the SAX2 Locator object. +
setDocumentLocator(Locator) - +Method in class org.marc4j.MarcXmlHandler +
  +
setEntryMap(char[]) - +Method in class org.marc4j.marc.impl.LeaderImpl +
Sets the entry map (positions 20-23). +
setEntryMap(char[]) - +Method in interface org.marc4j.marc.Leader +
Sets the entry map (positions 20-23). +
setHandler(Result, Source) - +Method in class org.marc4j.MarcXmlWriter +
  +
setId(Long) - +Method in class org.marc4j.marc.impl.ControlFieldImpl +
  +
setId(Long) - +Method in class org.marc4j.marc.impl.DataFieldImpl +
  +
setId(Long) - +Method in class org.marc4j.marc.impl.LeaderImpl +
  +
setId(Long) - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
setId(Long) - +Method in class org.marc4j.marc.impl.SubfieldImpl +
  +
setId(Long) - +Method in interface org.marc4j.marc.Leader +
Sets the identifier. +
setId(Long) - +Method in interface org.marc4j.marc.Record +
Sets the identifier. +
setId(Long) - +Method in interface org.marc4j.marc.Subfield +
Sets the identifier. +
setId(Long) - +Method in interface org.marc4j.marc.VariableField +
Sets the identifier. +
setImplDefined1(char[]) - +Method in class org.marc4j.marc.impl.LeaderImpl +
Sets implementation defined values (position 07-08). +
setImplDefined1(char[]) - +Method in interface org.marc4j.marc.Leader +
Sets implementation defined values (position 07-08). +
setImplDefined2(char[]) - +Method in class org.marc4j.marc.impl.LeaderImpl +
Sets implementation defined values (positions 17-19). +
setImplDefined2(char[]) - +Method in interface org.marc4j.marc.Leader +
Sets implementation defined values (positions 17-19). +
setIndent(boolean) - +Method in class org.marc4j.MarcXmlWriter +
Activates or deactivates indentation. +
setIndicator1(char) - +Method in interface org.marc4j.marc.DataField +
Sets the first indicator. +
setIndicator1(char) - +Method in class org.marc4j.marc.impl.DataFieldImpl +
Sets the first indicator. +
setIndicator2(char) - +Method in interface org.marc4j.marc.DataField +
Sets the second indicator. +
setIndicator2(char) - +Method in class org.marc4j.marc.impl.DataFieldImpl +
Sets the second indicator. +
setIndicatorCount(int) - +Method in class org.marc4j.marc.impl.LeaderImpl +
Sets the indicator count (position 10). +
setIndicatorCount(int) - +Method in interface org.marc4j.marc.Leader +
Sets the indicator count (position 10). +
setInputSource(InputSource) - +Method in class org.marc4j.MarcXmlParserThread +
Sets the input stream. +
setLeader(Leader) - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
setLeader(Leader) - +Method in interface org.marc4j.marc.Record +
Sets the Leader. +
setNext(byte, Integer) - +Method in class org.marc4j.converter.impl.CodeTableTracker +
  +
setPrevious(byte, Integer) - +Method in class org.marc4j.converter.impl.CodeTableTracker +
  +
setRecordID(String) - +Method in class org.marc4j.ErrorHandler +
Sets the record ID to be stored for subsequent error messages that are logged + If any previous messages are stored for the current record that don't have a + stored record ID, set the value for those entries to this value also. +
setRecordLength(int) - +Method in class org.marc4j.marc.impl.LeaderImpl +
Sets the logical record length (positions 00-04). +
setRecordLength(int) - +Method in interface org.marc4j.marc.Leader +
Sets the logical record length (positions 00-04). +
setRecordStatus(char) - +Method in class org.marc4j.marc.impl.LeaderImpl +
Sets the record status (position 05). +
setRecordStatus(char) - +Method in interface org.marc4j.marc.Leader +
Sets the record status (position 05). +
setSubfieldCodeLength(int) - +Method in class org.marc4j.marc.impl.LeaderImpl +
Sets the subfield code length (position 11). +
setSubfieldCodeLength(int) - +Method in interface org.marc4j.marc.Leader +
Sets the subfield code length (position 11). +
setTag(String) - +Method in class org.marc4j.marc.impl.VariableFieldImpl +
  +
setTag(String) - +Method in interface org.marc4j.marc.VariableField +
Sets the tag name. +
setTransformerHandler(TransformerHandler) - +Method in class org.marc4j.MarcXmlParserThread +
Sets the content handler to transform the source to MARCXML. +
setType(String) - +Method in class org.marc4j.marc.impl.RecordImpl +
  +
setType(String) - +Method in interface org.marc4j.marc.Record +
Sets the type of record. +
setTypeOfRecord(char) - +Method in class org.marc4j.marc.impl.LeaderImpl +
Sets the type of record (position 06). +
setTypeOfRecord(char) - +Method in interface org.marc4j.marc.Leader +
Sets the type of record (position 06). +
setUnicodeNormalization(boolean) - +Method in class org.marc4j.MarcXmlWriter +
If set to true this writer will perform Unicode normalization on data + elements using normalization form C (NFC). +
severity - +Variable in class org.marc4j.ErrorHandler.Error +
  +
skippedEntity(String) - +Method in class org.marc4j.MarcXmlHandler +
  +
startDocument() - +Method in class org.marc4j.MarcXmlHandler +
  +
startElement(String, String, String, Attributes) - +Method in class org.marc4j.converter.impl.CodeTableHandler +
  +
startElement(String, String, String, Attributes) - +Method in class org.marc4j.converter.impl.ReverseCodeTableHandler +
  +
startElement(String, String, String, Attributes) - +Method in class org.marc4j.MarcXmlHandler +
  +
startPrefixMapping(String, String) - +Method in class org.marc4j.MarcXmlHandler +
  +
Subfield - Interface in org.marc4j.marc
Represents a subfield in a MARC record.
SUBFIELD - +Static variable in class org.marc4j.MarcXmlWriter +
  +
SubfieldImpl - Class in org.marc4j.marc.impl
Represents a subfield in a MARC record.
SubfieldImpl() - +Constructor for class org.marc4j.marc.impl.SubfieldImpl +
Creates a new Subfield. +
SubfieldImpl(char) - +Constructor for class org.marc4j.marc.impl.SubfieldImpl +
Creates a new Subfield and sets the data element + identifier. +
SubfieldImpl(char, String) - +Constructor for class org.marc4j.marc.impl.SubfieldImpl +
Creates a new Subfield and sets the data element + identifier and the data element. +
+
+

+T

+
+
toString() - +Method in class org.marc4j.ErrorHandler.Error +
Formats the error message for display +
toString() - +Method in class org.marc4j.marc.impl.ControlFieldImpl +
Returns a string representation of this control field. +
toString() - +Method in class org.marc4j.marc.impl.DataFieldImpl +
Returns a string representation of this data field. +
toString() - +Method in class org.marc4j.marc.impl.LeaderImpl +
Returns a string representation of this leader. +
toString() - +Method in class org.marc4j.marc.impl.RecordImpl +
Returns a string representation of this record. +
toString() - +Method in class org.marc4j.marc.impl.SubfieldImpl +
Returns a string representation of this subfield. +
toString() - +Method in class org.marc4j.marc.impl.VariableFieldImpl +
Returns a string representation of this variable field. +
toXml(Record) - +Method in class org.marc4j.MarcXmlWriter +
  +
+
+

+U

+
+
UnicodeToAnsel - Class in org.marc4j.converter.impl
+ A utility to convert UCS/Unicode data to MARC-8.
UnicodeToAnsel() - +Constructor for class org.marc4j.converter.impl.UnicodeToAnsel +
Creates a new instance and loads the MARC4J supplied Ansel/Unicode + conversion tables based on the official LC tables. +
UnicodeToAnsel(String) - +Constructor for class org.marc4j.converter.impl.UnicodeToAnsel +
Constructs an instance with the specified pathname. +
UnicodeToAnsel(InputStream) - +Constructor for class org.marc4j.converter.impl.UnicodeToAnsel +
Constructs an instance with the specified input stream. +
UnicodeToIso5426 - Class in org.marc4j.converter.impl
+ A utility to convert UCS/Unicode data to UNIMARC (ISO 5426 charset).
UnicodeToIso5426() - +Constructor for class org.marc4j.converter.impl.UnicodeToIso5426 +
  +
UnicodeToIso6937 - Class in org.marc4j.converter.impl
+ A utility to convert UCS/Unicode data to ISO 6937.
UnicodeToIso6937() - +Constructor for class org.marc4j.converter.impl.UnicodeToIso6937 +
  +
unmarshal(String) - +Method in class org.marc4j.marc.impl.LeaderImpl +
+ Creates a leader object from a string object. +
unmarshal(String) - +Method in interface org.marc4j.marc.Leader +
+ Creates a leader object from a string object. +
US - +Static variable in class org.marc4j.Constants +
SUBFIELD DELIMITER +
+
+

+V

+
+
VariableField - Interface in org.marc4j.marc
Represents a variable field in a MARC record.
VariableFieldImpl - Class in org.marc4j.marc.impl
Represents a variable field in a MARC record.
VariableFieldImpl() - +Constructor for class org.marc4j.marc.impl.VariableFieldImpl +
Creates a new VariableField. +
VariableFieldImpl(String) - +Constructor for class org.marc4j.marc.impl.VariableFieldImpl +
Creates a new VariableField and sets the tag name. +
Verifier - Class in org.marc4j.marc.impl
Handles MARC checks on tags, data elements and Record objects.
+
+

+W

+
+
write(Record) - +Method in class org.marc4j.MarcStreamWriter +
Writes a Record object to the writer. +
write(Record) - +Method in interface org.marc4j.MarcWriter +
Writes a single Record to the output stream. +
write(Record) - +Method in class org.marc4j.MarcXmlWriter +
Writes a Record object to the result. +
writeEndDocument() - +Method in class org.marc4j.MarcXmlWriter +
Writes the root end tag to the result. +
writeStartDocument() - +Method in class org.marc4j.MarcXmlWriter +
Writes the root start tag to the result. +
+
+

+X

+
+
XmlMarcDriver - Class in org.marc4j.util
Provides a driver to convert MARCXML records to MARC format.
XmlMarcDriver() - +Constructor for class org.marc4j.util.XmlMarcDriver +
  +
+
+A B C D E F G H I L M N O P R S T U V W X + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/index.html b/apidoc/index.html new file mode 100644 index 0000000..0b349a7 --- /dev/null +++ b/apidoc/index.html @@ -0,0 +1,37 @@ + + + + + + +MARC4J API + + + + + + + + + + + +<H2> +Frame Alert</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to<A HREF="overview-summary.html">Non-frame version.</A> + + + diff --git a/apidoc/org/marc4j/Constants.html b/apidoc/org/marc4j/Constants.html new file mode 100644 index 0000000..461c223 --- /dev/null +++ b/apidoc/org/marc4j/Constants.html @@ -0,0 +1,376 @@ + + + + + + +Constants (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class Constants

+
+java.lang.Object
+  extended by org.marc4j.Constants
+
+
+
+
public class Constants
extends Object
+ + +

+Defines constant values. +

+ +

+

+
Version:
+
$Revision: 1.1 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+static intBLANK + +
+          BLANK
+static intFT + +
+          FIELD TERMINATOR
+static StringISO5426_ENCODING + +
+          ISO5426 ENCODING
+static StringISO6937_ENCODING + +
+          ISO6937 ENCODING
+static StringMARC_8_ENCODING + +
+          MARC-8 ANSEL ENCODING
+static StringMARCXML_NS_URI + +
+          NS URI
+static intRT + +
+          RECORD TERMINATOR
+static intUS + +
+          SUBFIELD DELIMITER
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+RT

+
+public static final int RT
+
+
RECORD TERMINATOR +

+

+
See Also:
Constant Field Values
+
+
+ +

+FT

+
+public static final int FT
+
+
FIELD TERMINATOR +

+

+
See Also:
Constant Field Values
+
+
+ +

+US

+
+public static final int US
+
+
SUBFIELD DELIMITER +

+

+
See Also:
Constant Field Values
+
+
+ +

+BLANK

+
+public static final int BLANK
+
+
BLANK +

+

+
See Also:
Constant Field Values
+
+
+ +

+MARCXML_NS_URI

+
+public static final String MARCXML_NS_URI
+
+
NS URI +

+

+
See Also:
Constant Field Values
+
+
+ +

+MARC_8_ENCODING

+
+public static final String MARC_8_ENCODING
+
+
MARC-8 ANSEL ENCODING +

+

+
See Also:
Constant Field Values
+
+
+ +

+ISO5426_ENCODING

+
+public static final String ISO5426_ENCODING
+
+
ISO5426 ENCODING +

+

+
See Also:
Constant Field Values
+
+
+ +

+ISO6937_ENCODING

+
+public static final String ISO6937_ENCODING
+
+
ISO6937 ENCODING +

+

+
See Also:
Constant Field Values
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/ErrorHandler.Error.html b/apidoc/org/marc4j/ErrorHandler.Error.html new file mode 100644 index 0000000..c6436d5 --- /dev/null +++ b/apidoc/org/marc4j/ErrorHandler.Error.html @@ -0,0 +1,376 @@ + + + + + + +ErrorHandler.Error (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class ErrorHandler.Error

+
+java.lang.Object
+  extended by org.marc4j.ErrorHandler.Error
+
+
+
Enclosing class:
ErrorHandler
+
+
+
+
public class ErrorHandler.Error
extends Object
+ + +

+


+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+protected  StringcurField + +
+           
+protected  StringcurRecordID + +
+           
+protected  StringcurSubfield + +
+           
+protected  Stringmessage + +
+           
+protected  intseverity + +
+           
+  + + + + + + + + + + + +
+Constructor Summary
+protected ErrorHandler.Error(String recordID, + String field, + String subfield, + int severity, + String message) + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ StringtoString() + +
+          Formats the error message for display
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+curRecordID

+
+protected String curRecordID
+
+
+
+
+
+ +

+curField

+
+protected String curField
+
+
+
+
+
+ +

+curSubfield

+
+protected String curSubfield
+
+
+
+
+
+ +

+severity

+
+protected int severity
+
+
+
+
+
+ +

+message

+
+protected String message
+
+
+
+
+ + + + + + + + +
+Constructor Detail
+ +

+ErrorHandler.Error

+
+protected ErrorHandler.Error(String recordID,
+                             String field,
+                             String subfield,
+                             int severity,
+                             String message)
+
+
+ + + + + + + + +
+Method Detail
+ +

+toString

+
+public String toString()
+
+
Formats the error message for display +

+

+
Overrides:
toString in class Object
+
+
+ +
Returns:
String - a formatted representation of the error.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/ErrorHandler.html b/apidoc/org/marc4j/ErrorHandler.html new file mode 100644 index 0000000..abcb5e1 --- /dev/null +++ b/apidoc/org/marc4j/ErrorHandler.html @@ -0,0 +1,614 @@ + + + + + + +ErrorHandler (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class ErrorHandler

+
+java.lang.Object
+  extended by org.marc4j.ErrorHandler
+
+
+
+
public class ErrorHandler
extends Object
+ + +

+Defines and describes errors encountered in the processing a given MARC record. + Used in conjunction with the MarcPermissiveReader class. +

+ +

+

+
Version:
+
$Revision: 1.8 $
+
Author:
+
Robert Haschart
+
+
+ +

+ + + + + + + + + + + +
+Nested Class Summary
+ classErrorHandler.Error + +
+           
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+static intERROR_TYPO + +
+          ERROR_TYPO indicates that an even less severe problem was found with the record, + such as the record leader ends with characters other than "4500" or a field tag + contains non-numeric characters the record contains a html-style entity reference + such as & or "e; which was replaced with the unescaped version.
+static intFATAL + +
+          FATAL is the most severe error, it is usually set in conjunction with throwing an + exception, generally no record is returned when a FATAL error occurs.
+static intINFO + +
+          INFO is used to pass information about the record translation process.
+static intMAJOR_ERROR + +
+          MAJOR_ERROR indicates that a serious problem existed with the record, such as a + malformed directory or an invalid subfield tag, or an encoding error where missing + data had to be inferred through some heuristic process.
+static intMINOR_ERROR + +
+          MINOR_ERROR indicates that a less serious problem existed with the record, such as + a mismatch between the directory stated field sizes and the actual field sizes, + or an encoding error where extraneous data had to be discarded to correctly + interpret the data.
+  + + + + + + + + + + +
+Constructor Summary
ErrorHandler() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidaddError(int severity, + String message) + +
+          Logs an error message using the stated severity level.
+ voidaddError(String id, + String field, + String subfield, + int severity, + String message) + +
+          Logs an error message using the stated severity level.
+ ListgetErrors() + +
+          Returns a list of all of the errors encountered in processing the current record.
+ intgetMaxSeverity() + +
+          Returns the highest error severity level encountered in processing the current record.
+ booleanhasErrors() + +
+          Returns true if any errors (or warnings) were encountered in processing the + current record.
+ voidreset() + +
+          Resets the list of errors to empty.
+ voidsetCurrentField(String curField) + +
+          Sets the field tag to be stored for subsequent error messages that are logged
+ voidsetCurrentSubfield(String curSubfield) + +
+          Sets the subfield tag to be stored for subsequent error messages that are logged
+ voidsetRecordID(String recordID) + +
+          Sets the record ID to be stored for subsequent error messages that are logged + If any previous messages are stored for the current record that don't have a + stored record ID, set the value for those entries to this value also.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+FATAL

+
+public static final int FATAL
+
+
FATAL is the most severe error, it is usually set in conjunction with throwing an + exception, generally no record is returned when a FATAL error occurs. Although in + some instances (a record with a field > 9999 bytes long) a record will be returned + that can be used, but it cannot be written back out without causing an error. +

+

+
See Also:
Constant Field Values
+
+
+ +

+MAJOR_ERROR

+
+public static final int MAJOR_ERROR
+
+
MAJOR_ERROR indicates that a serious problem existed with the record, such as a + malformed directory or an invalid subfield tag, or an encoding error where missing + data had to be inferred through some heuristic process. This indicates that + although a record is returned, you cannot be sure that the record is not corrupted. +

+

+
See Also:
Constant Field Values
+
+
+ +

+MINOR_ERROR

+
+public static final int MINOR_ERROR
+
+
MINOR_ERROR indicates that a less serious problem existed with the record, such as + a mismatch between the directory stated field sizes and the actual field sizes, + or an encoding error where extraneous data had to be discarded to correctly + interpret the data. +

+

+
See Also:
Constant Field Values
+
+
+ +

+ERROR_TYPO

+
+public static final int ERROR_TYPO
+
+
ERROR_TYPO indicates that an even less severe problem was found with the record, + such as the record leader ends with characters other than "4500" or a field tag + contains non-numeric characters the record contains a html-style entity reference + such as & or "e; which was replaced with the unescaped version. +

+

+
See Also:
Constant Field Values
+
+
+ +

+INFO

+
+public static final int INFO
+
+
INFO is used to pass information about the record translation process. It does + not indicate an error. It usually will occur when a defaultEncoding value of "BESTGUESS" + is passed in. INFO statements are generated to indicate which character encoding was + determined to be the best fit for the data, and why. +

+

+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+ErrorHandler

+
+public ErrorHandler()
+
+
+ + + + + + + + +
+Method Detail
+ +

+hasErrors

+
+public boolean hasErrors()
+
+
Returns true if any errors (or warnings) were encountered in processing the + current record. Note that if only INFO level messages are encountered for a + given record, this method will return false. +

+

+ +
Returns:
boolean - The highest error severity level encountered for the current record.
+
+
+
+ +

+getMaxSeverity

+
+public int getMaxSeverity()
+
+
Returns the highest error severity level encountered in processing the current record. +

+

+ +
Returns:
int - The highest error severity level encountered for the current record.
+
+
+
+ +

+getErrors

+
+public List getErrors()
+
+
Returns a list of all of the errors encountered in processing the current record. +

+

+ +
Returns:
List - A list of all of the errors encountered for the current record.
+
+
+
+ +

+reset

+
+public void reset()
+
+
Resets the list of errors to empty. This should be called at the beginning of + processing of each record. +

+

+
+
+
+
+ +

+addError

+
+public void addError(String id,
+                     String field,
+                     String subfield,
+                     int severity,
+                     String message)
+
+
Logs an error message using the stated severity level. Uses the values passed + in id, field, and subfield to note the location of the error. +

+

+
Parameters:
id - - the record ID of the record currently being processed
field - - the tag of the field currently being processed
subfield - - the subfield tag of the subfield currently being processed
severity - - An indication of the relative severity of the error that was + encountered.
message - - A descriptive message about the error that was encountered.
+
+
+
+ +

+addError

+
+public void addError(int severity,
+                     String message)
+
+
Logs an error message using the stated severity level. Uses the values stored + in curRecordID, curField, and curSubfield to note the location of the error. +

+

+
Parameters:
severity - - An indication of the relative severity of the error that was + encountered.
message - - A descriptive message about the error that was encountered.
+
+
+
+ +

+setRecordID

+
+public void setRecordID(String recordID)
+
+
Sets the record ID to be stored for subsequent error messages that are logged + If any previous messages are stored for the current record that don't have a + stored record ID, set the value for those entries to this value also. +

+

+
Parameters:
recordID - - the record ID of the record currently being processed
+
+
+
+ +

+setCurrentField

+
+public void setCurrentField(String curField)
+
+
Sets the field tag to be stored for subsequent error messages that are logged +

+

+
Parameters:
curField - - the tag of the field currently being processed
+
+
+
+ +

+setCurrentSubfield

+
+public void setCurrentSubfield(String curSubfield)
+
+
Sets the subfield tag to be stored for subsequent error messages that are logged +

+

+
Parameters:
curSubfield - - the subfield tag of the subfield currently being processed
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/MarcDirStreamReader.html b/apidoc/org/marc4j/MarcDirStreamReader.html new file mode 100644 index 0000000..16959f2 --- /dev/null +++ b/apidoc/org/marc4j/MarcDirStreamReader.html @@ -0,0 +1,428 @@ + + + + + + +MarcDirStreamReader (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class MarcDirStreamReader

+
+java.lang.Object
+  extended by org.marc4j.MarcDirStreamReader
+
+
+
All Implemented Interfaces:
MarcReader
+
+
+
+
public class MarcDirStreamReader
extends Object
implements MarcReader
+ + +

+

+ A Marc reader which instead of handling a single file of MARC records + it handles a directory, which it will scan for all .mrc files, and + iterate through all of them in turn. +

+

+ +

+

+
Version:
+
$Revision: 1.2 $
+
Author:
+
Robert Haschart
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
MarcDirStreamReader(File dir) + +
+          Constructs an instance that traverses the directory specified in the parameter.
MarcDirStreamReader(File dir, + boolean permissive, + boolean convertToUTF8) + +
+          Constructs an instance that traverses the directory specified in the parameter.
MarcDirStreamReader(File dir, + boolean permissive, + boolean convertToUTF8, + String defaultEncoding) + +
+          Constructs an instance that traverses the directory specified in the parameter.
MarcDirStreamReader(String dirName) + +
+          Constructs an instance that traverses the directory specified in the parameter.
MarcDirStreamReader(String dirName, + boolean permissive, + boolean convertToUTF8) + +
+          Constructs an instance that traverses the directory specified in the parameter.
MarcDirStreamReader(String dirName, + boolean permissive, + boolean convertToUTF8, + String defaultEncoding) + +
+          Constructs an instance that traverses the directory specified in the parameter.
+  + + + + + + + + + + + + + + + +
+Method Summary
+ booleanhasNext() + +
+          Returns true if the iteration has more records, false otherwise.
+ Recordnext() + +
+          Returns the next record in the iteration.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+MarcDirStreamReader

+
+public MarcDirStreamReader(String dirName)
+
+
Constructs an instance that traverses the directory specified in the parameter. +

+

+
Parameters:
dirName - - The path of the directory from which to read all of the .mrc files
+
+
+ +

+MarcDirStreamReader

+
+public MarcDirStreamReader(File dir)
+
+
Constructs an instance that traverses the directory specified in the parameter. +

+

+
Parameters:
dir - - The path of the directory from which to read all of the .mrc files
+
+
+ +

+MarcDirStreamReader

+
+public MarcDirStreamReader(String dirName,
+                           boolean permissive,
+                           boolean convertToUTF8)
+
+
Constructs an instance that traverses the directory specified in the parameter. + Takes the values passed in for permissive and convertToUTF8 and passes them on + to each of the MarcPermissiveStreamReader that it creates. +

+

+
Parameters:
dirName - - The path of the directory from which to read all of the .mrc files
permissive - - Set to true to specify that reader should try to handle and recover + from errors in the input.
convertToUTF8 - - Set to true to specify that reader should convert the records + being read to UTF-8 encoding as they are being read.
+
+
+ +

+MarcDirStreamReader

+
+public MarcDirStreamReader(File dir,
+                           boolean permissive,
+                           boolean convertToUTF8)
+
+
Constructs an instance that traverses the directory specified in the parameter. + Takes the values passed in for permissive and convertToUTF8 and passes them on + to each of the MarcPermissiveStreamReader that it creates. +

+

+
Parameters:
dir - - The path of the directory from which to read all of the .mrc files
permissive - - Set to true to specify that reader should try to handle and recover + from errors in the input.
convertToUTF8 - - Set to true to specify that reader should convert the records + being read to UTF-8 encoding as they are being read.
+
+
+ +

+MarcDirStreamReader

+
+public MarcDirStreamReader(String dirName,
+                           boolean permissive,
+                           boolean convertToUTF8,
+                           String defaultEncoding)
+
+
Constructs an instance that traverses the directory specified in the parameter. + Takes the values passed in for permissive and convertToUTF8 and passes them on + to each of the MarcPermissiveStreamReader that it creates. +

+

+
Parameters:
dirName - - The path of the directory from which to read all of the .mrc files
permissive - - Set to true to specify that reader should try to handle and recover + from errors in the input.
convertToUTF8 - - Set to true to specify that reader should convert the records + being read to UTF-8 encoding as they are being read.
defaultEncoding - - Specifies the character encoding that the records being read + are presumed to be in..
+
+
+ +

+MarcDirStreamReader

+
+public MarcDirStreamReader(File dir,
+                           boolean permissive,
+                           boolean convertToUTF8,
+                           String defaultEncoding)
+
+
Constructs an instance that traverses the directory specified in the parameter. + Takes the values passed in for permissive and convertToUTF8 and passes them on + to each of the MarcPermissiveStreamReader that it creates. +

+

+
Parameters:
dir - - The path of the directory from which to read all of the .mrc files
permissive - - Set to true to specify that reader should try to handle and recover + from errors in the input.
convertToUTF8 - - Set to true to specify that reader should convert the records + being read to UTF-8 encoding as they are being read.
defaultEncoding - - Specifies the character encoding that the records being read + are presumed to be in..
+
+ + + + + + + + +
+Method Detail
+ +

+hasNext

+
+public boolean hasNext()
+
+
Returns true if the iteration has more records, false otherwise. +

+

+
Specified by:
hasNext in interface MarcReader
+
+
+
+
+
+
+ +

+next

+
+public Record next()
+
+
Returns the next record in the iteration. +

+

+
Specified by:
next in interface MarcReader
+
+
+ +
Returns:
Record - the record object
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/MarcException.html b/apidoc/org/marc4j/MarcException.html new file mode 100644 index 0000000..e8c62b8 --- /dev/null +++ b/apidoc/org/marc4j/MarcException.html @@ -0,0 +1,290 @@ + + + + + + +MarcException (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class MarcException

+
+java.lang.Object
+  extended by java.lang.Throwable
+      extended by java.lang.Exception
+          extended by java.lang.RuntimeException
+              extended by org.marc4j.MarcException
+
+
+
All Implemented Interfaces:
Serializable
+
+
+
+
public class MarcException
extends RuntimeException
+ + +

+Thrown in various situations by MARC4J; may contain a nested exception. +

+ +

+

+
Version:
+
$Revision: 1.1 $
+
Author:
+
Bas Peters
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + + + + +
+Constructor Summary
MarcException() + +
+          Create a new MarcException with no detail mesage.
MarcException(String message) + +
+          Create a new MarcException with the String + specified as an error message.
MarcException(String message, + Throwable ex) + +
+          Create a new MarcException with the given + Exception base cause and detail message.
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class java.lang.Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+MarcException

+
+public MarcException()
+
+
Create a new MarcException with no detail mesage. +

+

+
+ +

+MarcException

+
+public MarcException(String message)
+
+
Create a new MarcException with the String + specified as an error message. +

+

+
Parameters:
message - information about the cause of the exception
+
+
+ +

+MarcException

+
+public MarcException(String message,
+                     Throwable ex)
+
+
Create a new MarcException with the given + Exception base cause and detail message. +

+

+
Parameters:
message - information about the cause of the exception
ex - the nested exception that caused this exception
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/MarcPermissiveStreamReader.html b/apidoc/org/marc4j/MarcPermissiveStreamReader.html new file mode 100644 index 0000000..a90882c --- /dev/null +++ b/apidoc/org/marc4j/MarcPermissiveStreamReader.html @@ -0,0 +1,459 @@ + + + + + + +MarcPermissiveStreamReader (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class MarcPermissiveStreamReader

+
+java.lang.Object
+  extended by org.marc4j.MarcPermissiveStreamReader
+
+
+
All Implemented Interfaces:
MarcReader
+
+
+
+
public class MarcPermissiveStreamReader
extends Object
implements MarcReader
+ + +

+An iterator over a collection of MARC records in ISO 2709 format, that is designed + to be able to handle MARC records that have errors in their structure or their encoding. + If the permissive flag is set in the call to the constructor, or if a ErrorHandler object + is passed in as a parameter to the constructor, this reader will do its best to detect + and recover from a number of structural or encoding errors that can occur in a MARC record. + Note that if this reader is not set to read permissively, its will operate pretty much + identically to the MarcStreamReader class. + + Note that no attempt is made to validate the contents of the record at a semantic level. + This reader does not know and does not care whether the record has a 245 field, or if the + 008 field is the right length, but if the record claims to be UTF-8 or MARC8 encoded and + you are seeing gibberish in the output, or if the reader is throwing an exception in trying + to read a record, then this reader may be able to produce a usable record from the bad + data you have. + + The ability to directly translate the record to UTF-8 as it is being read in is useful in + cases where the UTF-8 version of the record will be used directly by the program that is + reading the MARC data, for instance if the marc records are to be indexed into a SOLR search + engine. Previously the MARC record could only be translated to UTF-8 as it was being written + out via a MarcStreamWriter or a MarcXmlWriter. + +

+ Example usage: + +

+ InputStream input = new FileInputStream("file.mrc");
+ MarcReader reader = new MarcPermissiveStreamReader(input, true, true);
+ while (reader.hasNext()) {
+     Record record = reader.next();
+     // Process record
+ }
+ 
+ +

+ Check the org.marc4j.marc package for examples about the use of + the Record object model. + Check the file org.marc4j.samples.PermissiveReaderExample.java for an + example about using the MarcPermissiveStreamReader in conjunction with the + ErrorHandler class to report errors encountered while processing records. +

+ +

+ When no encoding is given as an constructor argument the parser tries to + resolve the encoding by looking at the character coding scheme (leader + position 9) in MARC21 records. For UNIMARC records this position is not + defined. If the reader is operating in permissive mode and no encoding + is given as an constructor argument the reader will look at the leader, + and also at the data of the record to determine to the best of its ability + what character encoding scheme has been used to encode the data in a + particular MARC record. + +

+

+ +

+

+
Version:
+
$Revision: 1.3 $
+
Author:
+
Robert Haschart
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
MarcPermissiveStreamReader(InputStream input, + boolean permissive, + boolean convertToUTF8) + +
+          Constructs an instance with the specified input stream with possible additional functionality + being enabled by setting permissive and/or convertToUTF8 to true.
MarcPermissiveStreamReader(InputStream input, + boolean permissive, + boolean convertToUTF8, + String defaultEncoding) + +
+          Constructs an instance with the specified input stream with possible additional functionality + being enabled by setting permissive and/or convertToUTF8 to true.
MarcPermissiveStreamReader(InputStream input, + ErrorHandler errors, + boolean convertToUTF8) + +
+          Constructs an instance with the specified input stream with possible additional functionality + being enabled by passing in an ErrorHandler object and/or setting convertToUTF8 to true.
MarcPermissiveStreamReader(InputStream input, + ErrorHandler errors, + boolean convertToUTF8, + String defaultEncoding) + +
+          Constructs an instance with the specified input stream with possible additional functionality + being enabled by setting permissive and/or convertToUTF8 to true.
+  + + + + + + + + + + + + + + + +
+Method Summary
+ booleanhasNext() + +
+          Returns true if the iteration has more records, false otherwise.
+ Recordnext() + +
+          Returns the next record in the iteration.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+MarcPermissiveStreamReader

+
+public MarcPermissiveStreamReader(InputStream input,
+                                  boolean permissive,
+                                  boolean convertToUTF8)
+
+
Constructs an instance with the specified input stream with possible additional functionality + being enabled by setting permissive and/or convertToUTF8 to true. + + If permissive and convertToUTF8 are both set to false, it functions almost identically to the + MarcStreamReader class. +

+

+
+ +

+MarcPermissiveStreamReader

+
+public MarcPermissiveStreamReader(InputStream input,
+                                  ErrorHandler errors,
+                                  boolean convertToUTF8)
+
+
Constructs an instance with the specified input stream with possible additional functionality + being enabled by passing in an ErrorHandler object and/or setting convertToUTF8 to true. + + If errors and convertToUTF8 are both set to false, it functions almost identically to the + MarcStreamReader class. + + If an ErrorHandler object is passed in, that object will be used to log and track any errors + in the records as the records are decoded. After the next() function returns, you can query + to determine whether any errors were detected in the decoding process. + + See the file org.marc4j.samples.PermissiveReaderExample.java to see how this can be done. +

+

+
+ +

+MarcPermissiveStreamReader

+
+public MarcPermissiveStreamReader(InputStream input,
+                                  boolean permissive,
+                                  boolean convertToUTF8,
+                                  String defaultEncoding)
+
+
Constructs an instance with the specified input stream with possible additional functionality + being enabled by setting permissive and/or convertToUTF8 to true. + + If permissive and convertToUTF8 are both set to false, it functions almost identically to the + MarcStreamReader class. + + The parameter defaultEncoding is used to specify the character encoding that is used in the records + that will be read from the input stream. If permissive is set to true, you can specify "BESTGUESS" + as the default encoding, and the reader will attempt to determine the character encoding used in the + records being read from the input stream. This is especially useful if you are working with records + downloaded from an external source and the encoding is either unknown or the encoding is different from + what the records claim to be. +

+

+
+ +

+MarcPermissiveStreamReader

+
+public MarcPermissiveStreamReader(InputStream input,
+                                  ErrorHandler errors,
+                                  boolean convertToUTF8,
+                                  String defaultEncoding)
+
+
Constructs an instance with the specified input stream with possible additional functionality + being enabled by setting permissive and/or convertToUTF8 to true. + + If errors and convertToUTF8 are both set to false, it functions almost identically to the + MarcStreamReader class. + + The parameter defaultEncoding is used to specify the character encoding that is used in the records + that will be read from the input stream. If permissive is set to true, you can specify "BESTGUESS" + as the default encoding, and the reader will attempt to determine the character encoding used in the + records being read from the input stream. This is especially useful if you are working with records + downloaded from an external source and the encoding is either unknown or the encoding is different from + what the records claim to be. + + If an ErrorHandler object is passed in, that object will be used to log and track any errors + in the records as the records are decoded. After the next() function returns, you can query + to determine whether any errors were detected in the decoding process. + + See the file org.marc4j.samples.PermissiveReaderExample.java to see how this can be done. +

+

+ + + + + + + + +
+Method Detail
+ +

+hasNext

+
+public boolean hasNext()
+
+
Returns true if the iteration has more records, false otherwise. +

+

+
Specified by:
hasNext in interface MarcReader
+
+
+
+
+
+
+ +

+next

+
+public Record next()
+
+
Returns the next record in the iteration. +

+

+
Specified by:
next in interface MarcReader
+
+
+ +
Returns:
Record - the record object
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/MarcReader.html b/apidoc/org/marc4j/MarcReader.html new file mode 100644 index 0000000..284d4af --- /dev/null +++ b/apidoc/org/marc4j/MarcReader.html @@ -0,0 +1,244 @@ + + + + + + +MarcReader (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Interface MarcReader

+
+
All Known Implementing Classes:
MarcDirStreamReader, MarcPermissiveStreamReader, MarcStreamReader, MarcXmlReader
+
+
+
+
public interface MarcReader
+ + +

+Implement this interface to provide an iterator over a collection of + Record objects. + +

See the org.marc4j.marc package Javadoc for more information + about the Record object model.

+

+ +

+

+
Version:
+
$Revision: 1.19 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ booleanhasNext() + +
+          Returns true if the iteration has more records, false otherwise.
+ Recordnext() + +
+          Returns the next record in the iteration.
+  +

+ + + + + + + + +
+Method Detail
+ +

+hasNext

+
+boolean hasNext()
+
+
Returns true if the iteration has more records, false otherwise. +

+

+
+
+
+
+ +

+next

+
+Record next()
+
+
Returns the next record in the iteration. +

+

+ +
Returns:
Record - the record object
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/MarcStreamReader.html b/apidoc/org/marc4j/MarcStreamReader.html new file mode 100644 index 0000000..54ed1f7 --- /dev/null +++ b/apidoc/org/marc4j/MarcStreamReader.html @@ -0,0 +1,335 @@ + + + + + + +MarcStreamReader (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class MarcStreamReader

+
+java.lang.Object
+  extended by org.marc4j.MarcStreamReader
+
+
+
All Implemented Interfaces:
MarcReader
+
+
+
+
public class MarcStreamReader
extends Object
implements MarcReader
+ + +

+An iterator over a collection of MARC records in ISO 2709 format. +

+ Example usage: + +

+ InputStream input = new FileInputStream("file.mrc");
+ MarcReader reader = new MarcStreamReader(input);
+ while (reader.hasNext()) {
+     Record record = reader.next();
+     // Process record
+ }
+ 
+ +

+ Check the org.marc4j.marc package for examples about the use of + the Record object model. +

+ +

+ When no encoding is given as an constructor argument the parser tries to + resolve the encoding by looking at the character coding scheme (leader + position 9) in MARC21 records. For UNIMARC records this position is not + defined. +

+

+ +

+

+
Version:
+
$Revision: 1.11 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
MarcStreamReader(InputStream input) + +
+          Constructs an instance with the specified input stream.
MarcStreamReader(InputStream input, + String encoding) + +
+          Constructs an instance with the specified input stream.
+  + + + + + + + + + + + + + + + +
+Method Summary
+ booleanhasNext() + +
+          Returns true if the iteration has more records, false otherwise.
+ Recordnext() + +
+          Returns the next record in the iteration.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+MarcStreamReader

+
+public MarcStreamReader(InputStream input)
+
+
Constructs an instance with the specified input stream. +

+

+
+ +

+MarcStreamReader

+
+public MarcStreamReader(InputStream input,
+                        String encoding)
+
+
Constructs an instance with the specified input stream. +

+

+ + + + + + + + +
+Method Detail
+ +

+hasNext

+
+public boolean hasNext()
+
+
Returns true if the iteration has more records, false otherwise. +

+

+
Specified by:
hasNext in interface MarcReader
+
+
+
+
+
+
+ +

+next

+
+public Record next()
+
+
Returns the next record in the iteration. +

+

+
Specified by:
next in interface MarcReader
+
+
+ +
Returns:
Record - the record object
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/MarcStreamWriter.html b/apidoc/org/marc4j/MarcStreamWriter.html new file mode 100644 index 0000000..85586c9 --- /dev/null +++ b/apidoc/org/marc4j/MarcStreamWriter.html @@ -0,0 +1,398 @@ + + + + + + +MarcStreamWriter (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class MarcStreamWriter

+
+java.lang.Object
+  extended by org.marc4j.MarcStreamWriter
+
+
+
All Implemented Interfaces:
MarcWriter
+
+
+
+
public class MarcStreamWriter
extends Object
implements MarcWriter
+ + +

+Class for writing MARC record objects in ISO 2709 format. + +

+ The following example reads a file with MARCXML records and outputs the + record set in ISO 2709 format: +

+ +
+ InputStream input = new FileInputStream("marcxml.xml");
+ MarcXmlReader reader = new MarcXmlReader(input);
+ MarcWriter writer = new MarcStreamWriter(System.out);
+ while (reader.hasNext()) {
+     Record record = reader.next();
+     writer.write(record);
+ }
+ writer.close();
+ 
+ +

+ To convert characters like for example from UCS/Unicode to MARC-8 register + a CharConverter implementation: +

+ +
+ InputStream input = new FileInputStream("marcxml.xml");
+ MarcXmlReader reader = new MarcXmlReader(input);
+ MarcWriter writer = new MarcStreamWriter(System.out);
+ writer.setConverter(new UnicodeToAnsel());
+ while (reader.hasNext()) {
+     Record record = reader.next();
+     writer.write(record);
+ }
+ writer.close();
+ 
+

+ +

+

+
Version:
+
$Revision: 1.4 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
MarcStreamWriter(OutputStream out) + +
+          Constructs an instance and creates a Writer object with + the specified output stream.
MarcStreamWriter(OutputStream out, + String encoding) + +
+          Constructs an instance and creates a Writer object with + the specified output stream and character encoding.
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidclose() + +
+          Closes the writer.
+ CharConvertergetConverter() + +
+          Returns the character converter.
+ voidsetConverter(CharConverter converter) + +
+          Sets the character converter.
+ voidwrite(Record record) + +
+          Writes a Record object to the writer.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+MarcStreamWriter

+
+public MarcStreamWriter(OutputStream out)
+
+
Constructs an instance and creates a Writer object with + the specified output stream. +

+

+
+ +

+MarcStreamWriter

+
+public MarcStreamWriter(OutputStream out,
+                        String encoding)
+
+
Constructs an instance and creates a Writer object with + the specified output stream and character encoding. +

+

+ + + + + + + + +
+Method Detail
+ +

+getConverter

+
+public CharConverter getConverter()
+
+
Returns the character converter. +

+

+
Specified by:
getConverter in interface MarcWriter
+
+
+ +
Returns:
CharConverter the character converter
+
+
+
+ +

+setConverter

+
+public void setConverter(CharConverter converter)
+
+
Sets the character converter. +

+

+
Specified by:
setConverter in interface MarcWriter
+
+
+
Parameters:
converter - the character converter
+
+
+
+ +

+write

+
+public void write(Record record)
+
+
Writes a Record object to the writer. +

+

+
Specified by:
write in interface MarcWriter
+
+
+
Parameters:
record - - + the Record object
+
+
+
+ +

+close

+
+public void close()
+
+
Closes the writer. +

+

+
Specified by:
close in interface MarcWriter
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/MarcWriter.html b/apidoc/org/marc4j/MarcWriter.html new file mode 100644 index 0000000..bbd7aad --- /dev/null +++ b/apidoc/org/marc4j/MarcWriter.html @@ -0,0 +1,286 @@ + + + + + + +MarcWriter (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Interface MarcWriter

+
+
All Known Implementing Classes:
MarcStreamWriter, MarcXmlWriter
+
+
+
+
public interface MarcWriter
+ + +

+Implement this interface to provide a writer for Record + objects. + +

See the org.marc4j.marc package Javadoc for more information + about the Record object model.

+

+ +

+

+
Version:
+
$Revision: 1.2 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidclose() + +
+          Closes the writer.
+ CharConvertergetConverter() + +
+          Returns the character converter.
+ voidsetConverter(CharConverter converter) + +
+          Sets the character converter.
+ voidwrite(Record record) + +
+          Writes a single Record to the output stream.
+  +

+ + + + + + + + +
+Method Detail
+ +

+write

+
+void write(Record record)
+
+
Writes a single Record to the output stream. +

+

+
Parameters:
record - the Record object
+
+
+
+ +

+setConverter

+
+void setConverter(CharConverter converter)
+
+
Sets the character converter. +

+

+
Parameters:
converter - the character converter
+
+
+
+ +

+getConverter

+
+CharConverter getConverter()
+
+
Returns the character converter. +

+

+ +
Returns:
CharConverter the character converter
+
+
+
+ +

+close

+
+void close()
+
+
Closes the writer. +

+

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/MarcXmlHandler.html b/apidoc/org/marc4j/MarcXmlHandler.html new file mode 100644 index 0000000..b1d6222 --- /dev/null +++ b/apidoc/org/marc4j/MarcXmlHandler.html @@ -0,0 +1,542 @@ + + + + + + +MarcXmlHandler (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class MarcXmlHandler

+
+java.lang.Object
+  extended by org.marc4j.MarcXmlHandler
+
+
+
All Implemented Interfaces:
ContentHandler
+
+
+
+
public class MarcXmlHandler
extends Object
implements ContentHandler
+ + +

+Creates Record objects from SAX events and pushes each item + onto the top of the RecordStack. +

+ +

+

+
Version:
+
$Revision: 1.1 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
MarcXmlHandler(RecordStack queue) + +
+          Default constructor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidcharacters(char[] ch, + int start, + int length) + +
+           
+ voidendDocument() + +
+           
+ voidendElement(String uri, + String name, + String qName) + +
+           
+ voidendPrefixMapping(String prefix) + +
+           
+ voidignorableWhitespace(char[] data, + int offset, + int length) + +
+           
+ voidprocessingInstruction(String target, + String data) + +
+           
+ voidsetDocumentLocator(Locator locator) + +
+           
+ voidskippedEntity(String name) + +
+           
+ voidstartDocument() + +
+           
+ voidstartElement(String uri, + String name, + String qName, + Attributes atts) + +
+           
+ voidstartPrefixMapping(String prefix, + String uri) + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+MarcXmlHandler

+
+public MarcXmlHandler(RecordStack queue)
+
+
Default constructor. +

+

+
Parameters:
queue -
+
+ + + + + + + + +
+Method Detail
+ +

+startDocument

+
+public void startDocument()
+                   throws SAXException
+
+
+
Specified by:
startDocument in interface ContentHandler
+
+
+ +
Throws: +
SAXException
+
+
+
+ +

+startElement

+
+public void startElement(String uri,
+                         String name,
+                         String qName,
+                         Attributes atts)
+                  throws SAXException
+
+
+
Specified by:
startElement in interface ContentHandler
+
+
+ +
Throws: +
SAXException
+
+
+
+ +

+characters

+
+public void characters(char[] ch,
+                       int start,
+                       int length)
+                throws SAXException
+
+
+
Specified by:
characters in interface ContentHandler
+
+
+ +
Throws: +
SAXException
+
+
+
+ +

+endElement

+
+public void endElement(String uri,
+                       String name,
+                       String qName)
+                throws SAXException
+
+
+
Specified by:
endElement in interface ContentHandler
+
+
+ +
Throws: +
SAXException
+
+
+
+ +

+endDocument

+
+public void endDocument()
+                 throws SAXException
+
+
+
Specified by:
endDocument in interface ContentHandler
+
+
+ +
Throws: +
SAXException
+
+
+
+ +

+ignorableWhitespace

+
+public void ignorableWhitespace(char[] data,
+                                int offset,
+                                int length)
+                         throws SAXException
+
+
+
Specified by:
ignorableWhitespace in interface ContentHandler
+
+
+ +
Throws: +
SAXException
+
+
+
+ +

+endPrefixMapping

+
+public void endPrefixMapping(String prefix)
+                      throws SAXException
+
+
+
Specified by:
endPrefixMapping in interface ContentHandler
+
+
+ +
Throws: +
SAXException
+
+
+
+ +

+skippedEntity

+
+public void skippedEntity(String name)
+                   throws SAXException
+
+
+
Specified by:
skippedEntity in interface ContentHandler
+
+
+ +
Throws: +
SAXException
+
+
+
+ +

+setDocumentLocator

+
+public void setDocumentLocator(Locator locator)
+
+
+
Specified by:
setDocumentLocator in interface ContentHandler
+
+
+
+
+
+
+ +

+processingInstruction

+
+public void processingInstruction(String target,
+                                  String data)
+                           throws SAXException
+
+
+
Specified by:
processingInstruction in interface ContentHandler
+
+
+ +
Throws: +
SAXException
+
+
+
+ +

+startPrefixMapping

+
+public void startPrefixMapping(String prefix,
+                               String uri)
+                        throws SAXException
+
+
+
Specified by:
startPrefixMapping in interface ContentHandler
+
+
+ +
Throws: +
SAXException
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/MarcXmlParser.html b/apidoc/org/marc4j/MarcXmlParser.html new file mode 100644 index 0000000..89da5ef --- /dev/null +++ b/apidoc/org/marc4j/MarcXmlParser.html @@ -0,0 +1,295 @@ + + + + + + +MarcXmlParser (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class MarcXmlParser

+
+java.lang.Object
+  extended by org.marc4j.MarcXmlParser
+
+
+
+
public class MarcXmlParser
extends Object
+ + +

+Creates Record objects from SAX events and pushes each item + onto the top of the RecordStack. Used by + MarcXmlParserThread. + + This class requires a JAXP compliant XML parser and XSLT processor. The + underlying SAX2 parser should be namespace aware. +

+ +

+

+
Version:
+
$Revision: 1.2 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
MarcXmlParser(MarcXmlHandler handler) + +
+          Default constructor.
+  + + + + + + + + + + + + + + + +
+Method Summary
+ voidparse(InputSource input) + +
+          Calls the parser.
+ voidparse(InputSource input, + TransformerHandler th) + +
+          Calls the parser and tries to transform the source into MARCXML using the + given stylesheet source before creating Record objects.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+MarcXmlParser

+
+public MarcXmlParser(MarcXmlHandler handler)
+
+
Default constructor. +

+

+
Parameters:
handler - the MarcXmlHandler object
+
+ + + + + + + + +
+Method Detail
+ +

+parse

+
+public void parse(InputSource input)
+
+
Calls the parser. +

+

+
Parameters:
input - the input source
+
+
+
+ +

+parse

+
+public void parse(InputSource input,
+                  TransformerHandler th)
+
+
Calls the parser and tries to transform the source into MARCXML using the + given stylesheet source before creating Record objects. +

+

+
Parameters:
input - the input source
th - the transformation content handler
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/MarcXmlParserThread.html b/apidoc/org/marc4j/MarcXmlParserThread.html new file mode 100644 index 0000000..7cb412e --- /dev/null +++ b/apidoc/org/marc4j/MarcXmlParserThread.html @@ -0,0 +1,432 @@ + + + + + + +MarcXmlParserThread (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class MarcXmlParserThread

+
+java.lang.Object
+  extended by java.lang.Thread
+      extended by org.marc4j.MarcXmlParserThread
+
+
+
All Implemented Interfaces:
Runnable
+
+
+
+
public class MarcXmlParserThread
extends Thread
+ + +

+Extends Thread to produce Record objects from + MARCXML data. +

+ +

+

+
Version:
+
$Revision: 1.3 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + +
+Nested Class Summary
+ + + + + + + +
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
+  + + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
+  + + + + + + + + + + + + + +
+Constructor Summary
MarcXmlParserThread(RecordStack queue) + +
+          Creates a new instance and registers the RecordQueue.
MarcXmlParserThread(RecordStack queue, + InputSource input) + +
+          Creates a new instance and registers the RecordQueue and + the InputStream.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ InputSourcegetInputSource() + +
+          Returns the input stream.
+ TransformerHandlergetTransformerHandler() + +
+          Returns the content handler to transform the source to MARCXML.
+ voidrun() + +
+          Creates a new MarcXmlHandler instance, registers the + RecordQueue and sends the InputStream to + the MarcXmlParser parser.
+ voidsetInputSource(InputSource input) + +
+          Sets the input stream.
+ voidsetTransformerHandler(TransformerHandler th) + +
+          Sets the content handler to transform the source to MARCXML.
+ + + + + + + +
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+MarcXmlParserThread

+
+public MarcXmlParserThread(RecordStack queue)
+
+
Creates a new instance and registers the RecordQueue. +

+

+
Parameters:
queue - the record queue
+
+
+ +

+MarcXmlParserThread

+
+public MarcXmlParserThread(RecordStack queue,
+                           InputSource input)
+
+
Creates a new instance and registers the RecordQueue and + the InputStream. +

+

+
Parameters:
queue - the record queue
input - the input stream
+
+ + + + + + + + +
+Method Detail
+ +

+getTransformerHandler

+
+public TransformerHandler getTransformerHandler()
+
+
Returns the content handler to transform the source to MARCXML. +

+

+ +
Returns:
TransformerHandler - the transformation content handler
+
+
+
+ +

+setTransformerHandler

+
+public void setTransformerHandler(TransformerHandler th)
+
+
Sets the content handler to transform the source to MARCXML. +

+

+
Parameters:
th - - + the transformation content handler
+
+
+
+ +

+getInputSource

+
+public InputSource getInputSource()
+
+
Returns the input stream. +

+

+ +
Returns:
InputSource - the input source
+
+
+
+ +

+setInputSource

+
+public void setInputSource(InputSource input)
+
+
Sets the input stream. +

+

+
Parameters:
input - the input stream
+
+
+
+ +

+run

+
+public void run()
+
+
Creates a new MarcXmlHandler instance, registers the + RecordQueue and sends the InputStream to + the MarcXmlParser parser. +

+

+
Specified by:
run in interface Runnable
Overrides:
run in class Thread
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/MarcXmlReader.html b/apidoc/org/marc4j/MarcXmlReader.html new file mode 100644 index 0000000..5ca2b7e --- /dev/null +++ b/apidoc/org/marc4j/MarcXmlReader.html @@ -0,0 +1,487 @@ + + + + + + +MarcXmlReader (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class MarcXmlReader

+
+java.lang.Object
+  extended by org.marc4j.MarcXmlReader
+
+
+
All Implemented Interfaces:
MarcReader
+
+
+
+
public class MarcXmlReader
extends Object
implements MarcReader
+ + +

+An iterator over a collection of MARC records in MARCXML format. +

+ Basic usage: +

+ +
+ InputStream input = new FileInputStream("file.xml");
+ MarcReader reader = new MarcXmlReader(input);
+ while (reader.hasNext()) {
+   Record record = reader.next();
+   // Process record
+ }
+ 
+ +

Check the org.marc4j.marc package for examples about the use of + the Record object model.

+ +

+ You can also pre-process the source to create MARC XML from a different format + using an XSLT stylesheet. The following example creates an iterator over a + collection of MARC records in MARC XML format from a MODS source and outputs + MARC records in MARC21 format: +

+ +
+ InputStream in = new FileInputStream("modsfile.xml");
+ 
+ MarcStreamWriter writer = new MarcStreamWriter(System.out, Constants.MARC8);
+ MarcXmlReader reader = new MarcXmlReader(in, "http://www.loc.gov/standards/marcxml/xslt/MODS2MARC21slim.xsl");
+ while (reader.hasNext()) {
+   Record record = reader.next();
+   writer.write(record);
+ }
+ writer.close();
+ 
+

+ +

+

+
Version:
+
$Revision: 1.4 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
MarcXmlReader(InputSource input) + +
+          Constructs an instance with the specified input source.
MarcXmlReader(InputSource input, + Source stylesheet) + +
+          Constructs an instance with the specified input source and stylesheet + source.
MarcXmlReader(InputSource input, + TransformerHandler th) + +
+          Constructs an instance with the specified input source and transformer + handler.
MarcXmlReader(InputStream input) + +
+          Constructs an instance with the specified input stream.
MarcXmlReader(InputStream input, + Source stylesheet) + +
+          Constructs an instance with the specified input stream and stylesheet + source.
MarcXmlReader(InputStream input, + String stylesheetUrl) + +
+          Constructs an instance with the specified input stream and stylesheet + location.
MarcXmlReader(InputStream input, + TransformerHandler th) + +
+          Constructs an instance with the specified input stream and transformer + handler.
+  + + + + + + + + + + + + + + + +
+Method Summary
+ booleanhasNext() + +
+          Returns true if the iteration has more records, false otherwise.
+ Recordnext() + +
+          Returns the next record in the iteration.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+MarcXmlReader

+
+public MarcXmlReader(InputStream input)
+
+
Constructs an instance with the specified input stream. +

+

+
Parameters:
input - the input stream
+
+
+ +

+MarcXmlReader

+
+public MarcXmlReader(InputSource input)
+
+
Constructs an instance with the specified input source. +

+

+
Parameters:
input - the input source
+
+
+ +

+MarcXmlReader

+
+public MarcXmlReader(InputStream input,
+                     String stylesheetUrl)
+
+
Constructs an instance with the specified input stream and stylesheet + location. + + The stylesheet is used to transform the source file and should produce + valid MARC XML records. The result is then used to create + Record objects. +

+

+
Parameters:
input - the input stream
stylesheetUrl - the stylesheet location
+
+
+ +

+MarcXmlReader

+
+public MarcXmlReader(InputStream input,
+                     Source stylesheet)
+
+
Constructs an instance with the specified input stream and stylesheet + source. + + The stylesheet is used to transform the source file and should produce + valid MARCXML records. The result is then used to create + Record objects. +

+

+
Parameters:
input - the input stream
stylesheet - the stylesheet source
+
+
+ +

+MarcXmlReader

+
+public MarcXmlReader(InputSource input,
+                     Source stylesheet)
+
+
Constructs an instance with the specified input source and stylesheet + source. + + The stylesheet is used to transform the source file and should produce + valid MARCXML records. The result is then used to create + Record objects. +

+

+
Parameters:
input - the input source
stylesheet - the stylesheet source
+
+
+ +

+MarcXmlReader

+
+public MarcXmlReader(InputStream input,
+                     TransformerHandler th)
+
+
Constructs an instance with the specified input stream and transformer + handler. + + The TransformerHandler is used to + transform the source file and should produce valid MARCXML records. The + result is then used to create Record objects. A + TransformerHandler can be obtained from a + SAXTransformerFactory with either a + Source or + Templates object. +

+

+
Parameters:
input - the input stream
th - the transformation content handler
+
+
+ +

+MarcXmlReader

+
+public MarcXmlReader(InputSource input,
+                     TransformerHandler th)
+
+
Constructs an instance with the specified input source and transformer + handler. + + The TransformerHandler is used to + transform the source file and should produce valid MARCXML records. The + result is then used to create Record objects. A + TransformerHandler can be obtained from a + SAXTransformerFactory with either a + Source or + Templates object. +

+

+
Parameters:
input - the input source
th - the transformation content handler
+
+ + + + + + + + +
+Method Detail
+ +

+hasNext

+
+public boolean hasNext()
+
+
Returns true if the iteration has more records, false otherwise. +

+

+
Specified by:
hasNext in interface MarcReader
+
+
+ +
Returns:
boolean - true if the iteration has more records, false otherwise
+
+
+
+ +

+next

+
+public Record next()
+
+
Returns the next record in the iteration. +

+

+
Specified by:
next in interface MarcReader
+
+
+ +
Returns:
Record - the record object
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/MarcXmlWriter.html b/apidoc/org/marc4j/MarcXmlWriter.html new file mode 100644 index 0000000..f6c2731 --- /dev/null +++ b/apidoc/org/marc4j/MarcXmlWriter.html @@ -0,0 +1,988 @@ + + + + + + +MarcXmlWriter (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class MarcXmlWriter

+
+java.lang.Object
+  extended by org.marc4j.MarcXmlWriter
+
+
+
All Implemented Interfaces:
MarcWriter
+
+
+
+
public class MarcXmlWriter
extends Object
implements MarcWriter
+ + +

+Class for writing MARC record objects in MARCXML format. This class outputs a + SAX event stream to the given OutputStream  or + Result object. It can be used in a SAX + pipeline to postprocess the result. By default this class uses a nulll + transform. It is strongly recommended to use a dedicated XML serializer. + +

+ This class requires a JAXP compliant XML parser and XSLT processor. The + underlying SAX2 parser should be namespace aware. In addition this class + requires ICU4J to perform Unicode + normalization. A stripped down version of 2.6 originating from the XOM project is included in this + distribution. +

+

+ The following example reads a file with MARC records and writes MARCXML + records in UTF-8 encoding to the console: +

+ +
+  
+      InputStream input = new FileInputStream("input.mrc")
+      MarcReader reader = new MarcStreamReader(input);
+              
+      MarcWriter writer = new MarcXmlWriter(System.out, true);
+      while (reader.hasNext()) {
+          Record record = reader.next();
+          writer.write(record);
+      }
+      writer.close();
+   
+ 
+ +

+ To perform a character conversion like MARC-8 to UCS/Unicode register a + CharConverter: +

+ +
+ writer.setConverter(new AnselToUnicode());
+ 
+ +

+ In addition you can perform Unicode normalization. This is for example not + done by the MARC-8 to UCS/Unicode converter. With Unicode normalization text + is transformed into the canonical composed form. For example "a´bc" + is normalized to "ábc". To perform normalization set Unicode + normalization to true: +

+ +
+ writer.setUnicodeNormalization(true);
+ 
+ +

+ Please note that it's not garanteed to work if you try to convert normalized + Unicode back to MARC-8 encoding using + UnicodeToAnsel. +

+

+ This class provides very basic formatting options. For more advanced options + create an instance of this class with a + SAXResult containing a + ContentHandler derived from a dedicated XML + serializer. +

+ +

+ The following example uses + org.apache.xml.serialize.XMLSerializer to write MARC records + to XML using MARC-8 to UCS/Unicode conversion and Unicode normalization: +

+ +
+  
+      InputStream input = new FileInputStream("input.mrc")
+      MarcReader reader = new MarcStreamReader(input);
+                
+      OutputFormat format = new OutputFormat("xml","UTF-8", true);
+      OutputStream out = new FileOutputStream("output.xml");
+      XMLSerializer serializer = new XMLSerializer(out, format);
+      Result result = new SAXResult(serializer.asContentHandler());
+                
+      MarcXmlWriter writer = new MarcXmlWriter(result);
+      writer.setConverter(new AnselToUnicode());
+      while (reader.hasNext()) {
+          Record record = reader.next();
+          writer.write(record);
+      }
+      writer.close();
+   
+ 
+ +

+ You can post-process the result using a Source object pointing + to a stylesheet resource and a Result object to hold the + transformation result tree. The example below converts MARC to MARCXML and + transforms the result tree to MODS using the stylesheet provided by The + Library of Congress: +

+ +
+  
+      String stylesheetUrl = "http://www.loc.gov/standards/mods/v3/MARC21slim2MODS3.xsl";
+      Source stylesheet = new StreamSource(stylesheetUrl);
+         
+      Result result = new StreamResult(System.out);
+            
+      InputStream input = new FileInputStream("input.mrc")
+      MarcReader reader = new MarcStreamReader(input);
+      MarcXmlWriter writer = new MarcXmlWriter(result, stylesheet);
+      writer.setConverter(new AnselToUnicode());
+      while (reader.hasNext()) {
+          Record record = (Record) reader.next();
+          writer.write(record);
+      }
+      writer.close();
+   
+ 
+ +

+ It is also possible to write the result into a DOM Node: +

+ +
+  
+      InputStream input = new FileInputStream("input.mrc")
+      MarcReader reader = new MarcStreamReader(input);
+      DOMResult result = new DOMResult();
+      MarcXmlWriter writer = new MarcXmlWriter(result);
+      writer.setConverter(new AnselToUnicode());
+      while (reader.hasNext()) {
+          Record record = (Record) reader.next();
+          writer.write(record);
+      }
+      writer.close();
+         
+      Document doc = (Document) result.getNode();
+   
+ 
+

+ +

+

+
Version:
+
$Revision: 1.9 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Summary
+protected static StringCOLLECTION + +
+           
+protected static StringCONTROL_FIELD + +
+           
+protected static StringDATA_FIELD + +
+           
+protected static StringLEADER + +
+           
+protected static StringRECORD + +
+           
+protected static StringSUBFIELD + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
MarcXmlWriter(OutputStream out) + +
+          Constructs an instance with the specified output stream.
MarcXmlWriter(OutputStream out, + boolean indent) + +
+          Constructs an instance with the specified output stream and indentation.
MarcXmlWriter(OutputStream out, + String encoding) + +
+          Constructs an instance with the specified output stream and character + encoding.
MarcXmlWriter(OutputStream out, + String encoding, + boolean indent) + +
+          Constructs an instance with the specified output stream, character + encoding and indentation.
MarcXmlWriter(Result result) + +
+          Constructs an instance with the specified result.
MarcXmlWriter(Result result, + Source stylesheet) + +
+          Constructs an instance with the specified stylesheet source and result.
MarcXmlWriter(Result result, + String stylesheetUrl) + +
+          Constructs an instance with the specified stylesheet location and result.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidclose() + +
+          Closes the writer.
+ CharConvertergetConverter() + +
+          Returns the character converter.
+protected  char[]getDataElement(String data) + +
+           
+ booleangetUnicodeNormalization() + +
+          Returns true if this writer will perform Unicode normalization, false + otherwise.
+ booleanhasIndent() + +
+          Returns true if indentation is active, false otherwise.
+ voidsetConverter(CharConverter converter) + +
+          Sets the character converter.
+protected  voidsetHandler(Result result, + Source stylesheet) + +
+           
+ voidsetIndent(boolean indent) + +
+          Activates or deactivates indentation.
+ voidsetUnicodeNormalization(boolean normalize) + +
+          If set to true this writer will perform Unicode normalization on data + elements using normalization form C (NFC).
+protected  voidtoXml(Record record) + +
+           
+ voidwrite(Record record) + +
+          Writes a Record object to the result.
+protected  voidwriteEndDocument() + +
+          Writes the root end tag to the result.
+protected  voidwriteStartDocument() + +
+          Writes the root start tag to the result.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+CONTROL_FIELD

+
+protected static final String CONTROL_FIELD
+
+
+
See Also:
Constant Field Values
+
+
+ +

+DATA_FIELD

+
+protected static final String DATA_FIELD
+
+
+
See Also:
Constant Field Values
+
+
+ +

+SUBFIELD

+
+protected static final String SUBFIELD
+
+
+
See Also:
Constant Field Values
+
+
+ +

+COLLECTION

+
+protected static final String COLLECTION
+
+
+
See Also:
Constant Field Values
+
+
+ +

+RECORD

+
+protected static final String RECORD
+
+
+
See Also:
Constant Field Values
+
+
+ +

+LEADER

+
+protected static final String LEADER
+
+
+
See Also:
Constant Field Values
+
+ + + + + + + + +
+Constructor Detail
+ +

+MarcXmlWriter

+
+public MarcXmlWriter(OutputStream out)
+
+
Constructs an instance with the specified output stream. + + The default character encoding for UTF-8 is used. +

+

+ +
Throws: +
MarcException
+
+
+ +

+MarcXmlWriter

+
+public MarcXmlWriter(OutputStream out,
+                     boolean indent)
+
+
Constructs an instance with the specified output stream and indentation. + + The default character encoding for UTF-8 is used. +

+

+ +
Throws: +
MarcException
+
+
+ +

+MarcXmlWriter

+
+public MarcXmlWriter(OutputStream out,
+                     String encoding)
+
+
Constructs an instance with the specified output stream and character + encoding. +

+

+ +
Throws: +
MarcException
+
+
+ +

+MarcXmlWriter

+
+public MarcXmlWriter(OutputStream out,
+                     String encoding,
+                     boolean indent)
+
+
Constructs an instance with the specified output stream, character + encoding and indentation. +

+

+ +
Throws: +
MarcException
+
+
+ +

+MarcXmlWriter

+
+public MarcXmlWriter(Result result)
+
+
Constructs an instance with the specified result. +

+

+
Parameters:
result - +
Throws: +
SAXException
+
+
+ +

+MarcXmlWriter

+
+public MarcXmlWriter(Result result,
+                     String stylesheetUrl)
+
+
Constructs an instance with the specified stylesheet location and result. +

+

+
Parameters:
result - +
Throws: +
SAXException
+
+
+ +

+MarcXmlWriter

+
+public MarcXmlWriter(Result result,
+                     Source stylesheet)
+
+
Constructs an instance with the specified stylesheet source and result. +

+

+
Parameters:
result - +
Throws: +
SAXException
+
+ + + + + + + + +
+Method Detail
+ +

+close

+
+public void close()
+
+
Description copied from interface: MarcWriter
+
Closes the writer. +

+

+
Specified by:
close in interface MarcWriter
+
+
+
+
+
+
+ +

+getConverter

+
+public CharConverter getConverter()
+
+
Returns the character converter. +

+

+
Specified by:
getConverter in interface MarcWriter
+
+
+ +
Returns:
CharConverter the character converter
+
+
+
+ +

+setConverter

+
+public void setConverter(CharConverter converter)
+
+
Sets the character converter. +

+

+
Specified by:
setConverter in interface MarcWriter
+
+
+
Parameters:
converter - the character converter
+
+
+
+ +

+setUnicodeNormalization

+
+public void setUnicodeNormalization(boolean normalize)
+
+
If set to true this writer will perform Unicode normalization on data + elements using normalization form C (NFC). The default is false. + + The implementation used is ICU4J 2.6. This version is based on Unicode + 4.0. +

+

+
+
+
+
Parameters:
normalize - true if this writer performs Unicode normalization, false + otherwise
+
+
+
+ +

+getUnicodeNormalization

+
+public boolean getUnicodeNormalization()
+
+
Returns true if this writer will perform Unicode normalization, false + otherwise. +

+

+
+
+
+ +
Returns:
boolean - true if this writer performs Unicode normalization, + false otherwise.
+
+
+
+ +

+setHandler

+
+protected void setHandler(Result result,
+                          Source stylesheet)
+                   throws MarcException
+
+
+
+
+
+ +
Throws: +
MarcException
+
+
+
+ +

+writeStartDocument

+
+protected void writeStartDocument()
+
+
Writes the root start tag to the result. +

+

+
+
+
+ +
Throws: +
SAXException
+
+
+
+ +

+writeEndDocument

+
+protected void writeEndDocument()
+
+
Writes the root end tag to the result. +

+

+
+
+
+ +
Throws: +
SAXException
+
+
+
+ +

+write

+
+public void write(Record record)
+
+
Writes a Record object to the result. +

+

+
Specified by:
write in interface MarcWriter
+
+
+
Parameters:
record - - + the Record object +
Throws: +
SAXException
+
+
+
+ +

+hasIndent

+
+public boolean hasIndent()
+
+
Returns true if indentation is active, false otherwise. +

+

+
+
+
+ +
Returns:
boolean
+
+
+
+ +

+setIndent

+
+public void setIndent(boolean indent)
+
+
Activates or deactivates indentation. Default value is false. +

+

+
+
+
+
Parameters:
indent -
+
+
+
+ +

+toXml

+
+protected void toXml(Record record)
+              throws SAXException
+
+
+
+
+
+ +
Throws: +
SAXException
+
+
+
+ +

+getDataElement

+
+protected char[] getDataElement(String data)
+
+
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/RecordStack.html b/apidoc/org/marc4j/RecordStack.html new file mode 100644 index 0000000..7882283 --- /dev/null +++ b/apidoc/org/marc4j/RecordStack.html @@ -0,0 +1,356 @@ + + + + + + +RecordStack (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j +
+Class RecordStack

+
+java.lang.Object
+  extended by org.marc4j.RecordStack
+
+
+
+
public class RecordStack
extends Object
+ + +

+Provides push and pop operations for + Record objects created by MarcXmlParser. +

+ +

+

+
Version:
+
$Revision: 1.2 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
RecordStack() + +
+          Default constuctor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidend() + +
+          Called when the end of the document is reached.
+ booleanhasNext() + +
+          Returns true if there are more Record objects to expect, + false otherwise.
+ voidpassException(RuntimeException e) + +
+          Passes the exception to the thread where the MarcXMLReader is running, so that the next() call + that is blocked waiting for this thread, will receive the exception.
+ Recordpop() + +
+          Removes the Record object from the stack and returns that + object.
+ voidpush(Record record) + +
+          Pushes a Record object on the stack.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+RecordStack

+
+public RecordStack()
+
+
Default constuctor. +

+

+ + + + + + + + +
+Method Detail
+ +

+push

+
+public void push(Record record)
+
+
Pushes a Record object on the stack. +

+

+
Parameters:
record - the record object
+
+
+
+ +

+pop

+
+public Record pop()
+
+
Removes the Record object from the stack and returns that + object. +

+

+ +
Returns:
Record - the record object
+
+
+
+ +

+hasNext

+
+public boolean hasNext()
+
+
Returns true if there are more Record objects to expect, + false otherwise. +

+

+ +
Returns:
boolean
+
+
+
+ +

+passException

+
+public void passException(RuntimeException e)
+
+
Passes the exception to the thread where the MarcXMLReader is running, so that the next() call + that is blocked waiting for this thread, will receive the exception. +

+

+
+
+
+
+ +

+end

+
+public void end()
+
+
Called when the end of the document is reached. +

+

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/Constants.html b/apidoc/org/marc4j/class-use/Constants.html new file mode 100644 index 0000000..faa966c --- /dev/null +++ b/apidoc/org/marc4j/class-use/Constants.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.Constants (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.Constants

+
+No usage of org.marc4j.Constants +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/ErrorHandler.Error.html b/apidoc/org/marc4j/class-use/ErrorHandler.Error.html new file mode 100644 index 0000000..cba82ed --- /dev/null +++ b/apidoc/org/marc4j/class-use/ErrorHandler.Error.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.ErrorHandler.Error (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.ErrorHandler.Error

+
+No usage of org.marc4j.ErrorHandler.Error +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/ErrorHandler.html b/apidoc/org/marc4j/class-use/ErrorHandler.html new file mode 100644 index 0000000..8fa2253 --- /dev/null +++ b/apidoc/org/marc4j/class-use/ErrorHandler.html @@ -0,0 +1,239 @@ + + + + + + +Uses of Class org.marc4j.ErrorHandler (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.ErrorHandler

+
+ + + + + + + + + + + + + +
+Packages that use ErrorHandler
org.marc4jClasses to read and write MARC and MARCXML records. 
org.marc4j.converter.implClasses for byte and character conversions. 
+  +

+ + + + + +
+Uses of ErrorHandler in org.marc4j
+  +

+ + + + + + + + + + + +
Constructors in org.marc4j with parameters of type ErrorHandler
MarcPermissiveStreamReader(InputStream input, + ErrorHandler errors, + boolean convertToUTF8) + +
+          Constructs an instance with the specified input stream with possible additional functionality + being enabled by passing in an ErrorHandler object and/or setting convertToUTF8 to true.
MarcPermissiveStreamReader(InputStream input, + ErrorHandler errors, + boolean convertToUTF8, + String defaultEncoding) + +
+          Constructs an instance with the specified input stream with possible additional functionality + being enabled by setting permissive and/or convertToUTF8 to true.
+  +

+ + + + + +
+Uses of ErrorHandler in org.marc4j.converter.impl
+  +

+ + + + + + + + + +
Fields in org.marc4j.converter.impl declared as ErrorHandler
+protected  ErrorHandlerAnselToUnicode.errorList + +
+           
+  +

+ + + + + + + + + + + +
Constructors in org.marc4j.converter.impl with parameters of type ErrorHandler
AnselToUnicode(ErrorHandler errorList) + +
+          Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables.
AnselToUnicode(ErrorHandler errorList, + boolean loadMultibyte) + +
+          Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/MarcDirStreamReader.html b/apidoc/org/marc4j/class-use/MarcDirStreamReader.html new file mode 100644 index 0000000..c320aee --- /dev/null +++ b/apidoc/org/marc4j/class-use/MarcDirStreamReader.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.MarcDirStreamReader (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.MarcDirStreamReader

+
+No usage of org.marc4j.MarcDirStreamReader +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/MarcException.html b/apidoc/org/marc4j/class-use/MarcException.html new file mode 100644 index 0000000..904534e --- /dev/null +++ b/apidoc/org/marc4j/class-use/MarcException.html @@ -0,0 +1,177 @@ + + + + + + +Uses of Class org.marc4j.MarcException (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.MarcException

+
+ + + + + + + + + +
+Packages that use MarcException
org.marc4jClasses to read and write MARC and MARCXML records. 
+  +

+ + + + + +
+Uses of MarcException in org.marc4j
+  +

+ + + + + + + + + +
Methods in org.marc4j that throw MarcException
+protected  voidMarcXmlWriter.setHandler(Result result, + Source stylesheet) + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/MarcPermissiveStreamReader.html b/apidoc/org/marc4j/class-use/MarcPermissiveStreamReader.html new file mode 100644 index 0000000..8d48496 --- /dev/null +++ b/apidoc/org/marc4j/class-use/MarcPermissiveStreamReader.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.MarcPermissiveStreamReader (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.MarcPermissiveStreamReader

+
+No usage of org.marc4j.MarcPermissiveStreamReader +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/MarcReader.html b/apidoc/org/marc4j/class-use/MarcReader.html new file mode 100644 index 0000000..fe74969 --- /dev/null +++ b/apidoc/org/marc4j/class-use/MarcReader.html @@ -0,0 +1,204 @@ + + + + + + +Uses of Interface org.marc4j.MarcReader (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.marc4j.MarcReader

+
+ + + + + + + + + +
+Packages that use MarcReader
org.marc4jClasses to read and write MARC and MARCXML records. 
+  +

+ + + + + +
+Uses of MarcReader in org.marc4j
+  +

+ + + + + + + + + + + + + + + + + + + + + +
Classes in org.marc4j that implement MarcReader
+ classMarcDirStreamReader + +
+           + A Marc reader which instead of handling a single file of MARC records + it handles a directory, which it will scan for all .mrc files, and + iterate through all of them in turn.
+ classMarcPermissiveStreamReader + +
+          An iterator over a collection of MARC records in ISO 2709 format, that is designed + to be able to handle MARC records that have errors in their structure or their encoding.
+ classMarcStreamReader + +
+          An iterator over a collection of MARC records in ISO 2709 format.
+ classMarcXmlReader + +
+          An iterator over a collection of MARC records in MARCXML format.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/MarcStreamReader.html b/apidoc/org/marc4j/class-use/MarcStreamReader.html new file mode 100644 index 0000000..64cc4a3 --- /dev/null +++ b/apidoc/org/marc4j/class-use/MarcStreamReader.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.MarcStreamReader (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.MarcStreamReader

+
+No usage of org.marc4j.MarcStreamReader +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/MarcStreamWriter.html b/apidoc/org/marc4j/class-use/MarcStreamWriter.html new file mode 100644 index 0000000..471c750 --- /dev/null +++ b/apidoc/org/marc4j/class-use/MarcStreamWriter.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.MarcStreamWriter (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.MarcStreamWriter

+
+No usage of org.marc4j.MarcStreamWriter +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/MarcWriter.html b/apidoc/org/marc4j/class-use/MarcWriter.html new file mode 100644 index 0000000..317b6d1 --- /dev/null +++ b/apidoc/org/marc4j/class-use/MarcWriter.html @@ -0,0 +1,184 @@ + + + + + + +Uses of Interface org.marc4j.MarcWriter (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.marc4j.MarcWriter

+
+ + + + + + + + + +
+Packages that use MarcWriter
org.marc4jClasses to read and write MARC and MARCXML records. 
+  +

+ + + + + +
+Uses of MarcWriter in org.marc4j
+  +

+ + + + + + + + + + + + + +
Classes in org.marc4j that implement MarcWriter
+ classMarcStreamWriter + +
+          Class for writing MARC record objects in ISO 2709 format.
+ classMarcXmlWriter + +
+          Class for writing MARC record objects in MARCXML format.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/MarcXmlHandler.html b/apidoc/org/marc4j/class-use/MarcXmlHandler.html new file mode 100644 index 0000000..357c728 --- /dev/null +++ b/apidoc/org/marc4j/class-use/MarcXmlHandler.html @@ -0,0 +1,174 @@ + + + + + + +Uses of Class org.marc4j.MarcXmlHandler (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.MarcXmlHandler

+
+ + + + + + + + + +
+Packages that use MarcXmlHandler
org.marc4jClasses to read and write MARC and MARCXML records. 
+  +

+ + + + + +
+Uses of MarcXmlHandler in org.marc4j
+  +

+ + + + + + + + +
Constructors in org.marc4j with parameters of type MarcXmlHandler
MarcXmlParser(MarcXmlHandler handler) + +
+          Default constructor.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/MarcXmlParser.html b/apidoc/org/marc4j/class-use/MarcXmlParser.html new file mode 100644 index 0000000..8ddf5a2 --- /dev/null +++ b/apidoc/org/marc4j/class-use/MarcXmlParser.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.MarcXmlParser (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.MarcXmlParser

+
+No usage of org.marc4j.MarcXmlParser +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/MarcXmlParserThread.html b/apidoc/org/marc4j/class-use/MarcXmlParserThread.html new file mode 100644 index 0000000..7008405 --- /dev/null +++ b/apidoc/org/marc4j/class-use/MarcXmlParserThread.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.MarcXmlParserThread (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.MarcXmlParserThread

+
+No usage of org.marc4j.MarcXmlParserThread +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/MarcXmlReader.html b/apidoc/org/marc4j/class-use/MarcXmlReader.html new file mode 100644 index 0000000..6b6e017 --- /dev/null +++ b/apidoc/org/marc4j/class-use/MarcXmlReader.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.MarcXmlReader (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.MarcXmlReader

+
+No usage of org.marc4j.MarcXmlReader +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/MarcXmlWriter.html b/apidoc/org/marc4j/class-use/MarcXmlWriter.html new file mode 100644 index 0000000..0c91f07 --- /dev/null +++ b/apidoc/org/marc4j/class-use/MarcXmlWriter.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.MarcXmlWriter (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.MarcXmlWriter

+
+No usage of org.marc4j.MarcXmlWriter +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/class-use/RecordStack.html b/apidoc/org/marc4j/class-use/RecordStack.html new file mode 100644 index 0000000..3f13faf --- /dev/null +++ b/apidoc/org/marc4j/class-use/RecordStack.html @@ -0,0 +1,188 @@ + + + + + + +Uses of Class org.marc4j.RecordStack (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.RecordStack

+
+ + + + + + + + + +
+Packages that use RecordStack
org.marc4jClasses to read and write MARC and MARCXML records. 
+  +

+ + + + + +
+Uses of RecordStack in org.marc4j
+  +

+ + + + + + + + + + + + + + +
Constructors in org.marc4j with parameters of type RecordStack
MarcXmlHandler(RecordStack queue) + +
+          Default constructor.
MarcXmlParserThread(RecordStack queue) + +
+          Creates a new instance and registers the RecordQueue.
MarcXmlParserThread(RecordStack queue, + InputSource input) + +
+          Creates a new instance and registers the RecordQueue and + the InputStream.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/CharConverter.html b/apidoc/org/marc4j/converter/CharConverter.html new file mode 100644 index 0000000..bdb7cd3 --- /dev/null +++ b/apidoc/org/marc4j/converter/CharConverter.html @@ -0,0 +1,315 @@ + + + + + + +CharConverter (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter +
+Class CharConverter

+
+java.lang.Object
+  extended by org.marc4j.converter.CharConverter
+
+
+
Direct Known Subclasses:
AnselToUnicode, Iso5426ToUnicode, Iso6937ToUnicode, UnicodeToAnsel, UnicodeToIso5426, UnicodeToIso6937
+
+
+
+
public abstract class CharConverter
extends Object
+ + +

+Extend this class to create a character converter. +

+ +

+

+
Version:
+
$Revision: 1.3 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
CharConverter() + +
+           
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Stringconvert(byte[] dataElement) + +
+          Alternate method for performing a character conversion.
+abstract  Stringconvert(char[] dataElement) + +
+          The method that needs to be implemented in a subclass to create a CharConverter.
+ Stringconvert(String dataElement) + +
+          Alternate method for performing a character conversion.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+CharConverter

+
+public CharConverter()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convert

+
+public abstract String convert(char[] dataElement)
+
+
The method that needs to be implemented in a subclass to create a CharConverter. + Receives a data element extracted from a record as a array of characters, and + converts that data and returns the result as a String object. +

+

+
Parameters:
dataElement - the data to convert +
Returns:
String the conversion result
+
+
+
+ +

+convert

+
+public final String convert(byte[] dataElement)
+
+
Alternate method for performing a character conversion. Receives the incoming + as a byte array, converts the bytes to characters, and calls the above convert method + which must be implemented in the subclass. +

+

+
Parameters:
dataElement - the data to convert +
Returns:
String the conversion result
+
+
+
+ +

+convert

+
+public final String convert(String dataElement)
+
+
Alternate method for performing a character conversion. Receives the incoming + as a String, converts the String to a character array, and calls the above convert + method which must be implemented in the subclass. +

+

+
Parameters:
dataElement - the data to convert +
Returns:
String the conversion result
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/class-use/CharConverter.html b/apidoc/org/marc4j/converter/class-use/CharConverter.html new file mode 100644 index 0000000..9aaef13 --- /dev/null +++ b/apidoc/org/marc4j/converter/class-use/CharConverter.html @@ -0,0 +1,299 @@ + + + + + + +Uses of Class org.marc4j.converter.CharConverter (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.CharConverter

+
+ + + + + + + + + + + + + +
+Packages that use CharConverter
org.marc4jClasses to read and write MARC and MARCXML records. 
org.marc4j.converter.implClasses for byte and character conversions. 
+  +

+ + + + + +
+Uses of CharConverter in org.marc4j
+  +

+ + + + + + + + + + + + + + + + + +
Methods in org.marc4j that return CharConverter
+ CharConverterMarcXmlWriter.getConverter() + +
+          Returns the character converter.
+ CharConverterMarcWriter.getConverter() + +
+          Returns the character converter.
+ CharConverterMarcStreamWriter.getConverter() + +
+          Returns the character converter.
+  +

+ + + + + + + + + + + + + + + + + +
Methods in org.marc4j with parameters of type CharConverter
+ voidMarcXmlWriter.setConverter(CharConverter converter) + +
+          Sets the character converter.
+ voidMarcWriter.setConverter(CharConverter converter) + +
+          Sets the character converter.
+ voidMarcStreamWriter.setConverter(CharConverter converter) + +
+          Sets the character converter.
+  +

+ + + + + +
+Uses of CharConverter in org.marc4j.converter.impl
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Subclasses of CharConverter in org.marc4j.converter.impl
+ classAnselToUnicode + +
+           + A utility to convert MARC-8 data to non-precomposed UCS/Unicode.
+ classIso5426ToUnicode + +
+           + A utility to convert UNIMARC data to UCS/Unicode.
+ classIso6937ToUnicode + +
+           + A utility to convert ISO 6937 data to UCS/Unicode.
+ classUnicodeToAnsel + +
+           + A utility to convert UCS/Unicode data to MARC-8.
+ classUnicodeToIso5426 + +
+           + A utility to convert UCS/Unicode data to UNIMARC (ISO 5426 charset).
+ classUnicodeToIso6937 + +
+           + A utility to convert UCS/Unicode data to ISO 6937.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/AnselToUnicode.html b/apidoc/org/marc4j/converter/impl/AnselToUnicode.html new file mode 100644 index 0000000..d7dedee --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/AnselToUnicode.html @@ -0,0 +1,501 @@ + + + + + + +AnselToUnicode (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class AnselToUnicode

+
+java.lang.Object
+  extended by org.marc4j.converter.CharConverter
+      extended by org.marc4j.converter.impl.AnselToUnicode
+
+
+
+
public class AnselToUnicode
extends CharConverter
+ + +

+

+ A utility to convert MARC-8 data to non-precomposed UCS/Unicode. +

+ +

+ The MARC-8 to Unicode mapping used is the version with the March 2005 + revisions. +

+

+ +

+

+
Version:
+
$Revision: 1.5 $
+
Author:
+
Bas Peters, Corey Keith
+
+
+ +

+ + + + + + + + + + + + + + + + + + + +
+Field Summary
+protected  CodeTableInterfacect + +
+           
+protected  ErrorHandlererrorList + +
+           
+protected  booleanloadedMultibyte + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + +
+Constructor Summary
AnselToUnicode() + +
+          Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables.
AnselToUnicode(boolean loadMultibyte) + +
+          Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables.
AnselToUnicode(ErrorHandler errorList) + +
+          Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables.
AnselToUnicode(ErrorHandler errorList, + boolean loadMultibyte) + +
+          Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables.
AnselToUnicode(InputStream in) + +
+          Constructs an instance with the specified input stream.
AnselToUnicode(String pathname) + +
+          Constructs an instance with the specified pathname.
+  + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ Stringconvert(char[] data) + +
+           + Converts MARC-8 data to UCS/Unicode.
+ chargetMBChar(int ch) + +
+           
+ intmakeMultibyte(char c1, + char c2, + char c3) + +
+           
+ + + + + + + +
Methods inherited from class org.marc4j.converter.CharConverter
convert, convert
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+ct

+
+protected CodeTableInterface ct
+
+
+
+
+
+ +

+loadedMultibyte

+
+protected boolean loadedMultibyte
+
+
+
+
+
+ +

+errorList

+
+protected ErrorHandler errorList
+
+
+
+
+ + + + + + + + +
+Constructor Detail
+ +

+AnselToUnicode

+
+public AnselToUnicode()
+
+
Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables. +

+

+
+ +

+AnselToUnicode

+
+public AnselToUnicode(boolean loadMultibyte)
+
+
Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables. +

+

+
+ +

+AnselToUnicode

+
+public AnselToUnicode(ErrorHandler errorList)
+
+
Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables. +

+

+
+ +

+AnselToUnicode

+
+public AnselToUnicode(ErrorHandler errorList,
+                      boolean loadMultibyte)
+
+
Creates a new instance and loads the MARC4J supplied + conversion tables based on the official LC tables. +

+

+
+ +

+AnselToUnicode

+
+public AnselToUnicode(String pathname)
+
+
Constructs an instance with the specified pathname. + + Use this constructor to create an instance with a customized code table + mapping. The mapping file should follow the structure of LC's XML MARC-8 + to Unicode mapping (see: + http://www.loc.gov/marc/specifications/codetables.xml). +

+

+
+ +

+AnselToUnicode

+
+public AnselToUnicode(InputStream in)
+
+
Constructs an instance with the specified input stream. + + Use this constructor to create an instance with a customized code table + mapping. The mapping file should follow the structure of LC's XML MARC-8 + to Unicode mapping (see: + http://www.loc.gov/marc/specifications/codetables.xml). +

+

+ + + + + + + + +
+Method Detail
+ +

+convert

+
+public String convert(char[] data)
+
+

+ Converts MARC-8 data to UCS/Unicode. +

+

+

+
Specified by:
convert in class CharConverter
+
+
+
Parameters:
data - - the MARC-8 data in an array of char +
Returns:
String - the UCS/Unicode data
+
+
+
+ +

+makeMultibyte

+
+public int makeMultibyte(char c1,
+                         char c2,
+                         char c3)
+
+
+
+
+
+
+ +

+getMBChar

+
+public char getMBChar(int ch)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/CodeTable.html b/apidoc/org/marc4j/converter/impl/CodeTable.html new file mode 100644 index 0000000..00d8717 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/CodeTable.html @@ -0,0 +1,381 @@ + + + + + + +CodeTable (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class CodeTable

+
+java.lang.Object
+  extended by org.marc4j.converter.impl.CodeTable
+
+
+
All Implemented Interfaces:
CodeTableInterface
+
+
+
Direct Known Subclasses:
CodeTableGenerator
+
+
+
+
public class CodeTable
extends Object
implements CodeTableInterface
+ + +

+

+ CodeTable defines a data structure to facilitate + AnselToUnicode character conversion. +

+

+ +

+

+
Version:
+
$Revision: 1.4 $
+
Author:
+
Corey Keith
+
+
+ +

+ + + + + + + + + + + + + + + +
+Field Summary
+protected static HashMapcharsets + +
+           
+protected static HashMapcombining + +
+           
+  + + + + + + + + + + + + + + + + +
+Constructor Summary
CodeTable(InputStream byteStream) + +
+           
CodeTable(String filename) + +
+           
CodeTable(URI uri) + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+ chargetChar(int c, + int mode) + +
+           
+ booleanisCombining(int i, + int g0, + int g1) + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+charsets

+
+protected static HashMap charsets
+
+
+
+
+
+ +

+combining

+
+protected static HashMap combining
+
+
+
+
+ + + + + + + + +
+Constructor Detail
+ +

+CodeTable

+
+public CodeTable(InputStream byteStream)
+
+
+
+ +

+CodeTable

+
+public CodeTable(String filename)
+
+
+
+ +

+CodeTable

+
+public CodeTable(URI uri)
+
+
+ + + + + + + + +
+Method Detail
+ +

+isCombining

+
+public boolean isCombining(int i,
+                           int g0,
+                           int g1)
+
+
+
Specified by:
isCombining in interface CodeTableInterface
+
+
+
+
+
+
+ +

+getChar

+
+public char getChar(int c,
+                    int mode)
+
+
+
Specified by:
getChar in interface CodeTableInterface
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/CodeTableGenerated.html b/apidoc/org/marc4j/converter/impl/CodeTableGenerated.html new file mode 100644 index 0000000..d38af75 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/CodeTableGenerated.html @@ -0,0 +1,291 @@ + + + + + + +CodeTableGenerated (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class CodeTableGenerated

+
+java.lang.Object
+  extended by org.marc4j.converter.impl.CodeTableGenerated
+
+
+
All Implemented Interfaces:
CodeTableInterface
+
+
+
+
public class CodeTableGenerated
extends Object
implements CodeTableInterface
+ + +

+An implementation of CodeTableInterface that is used in converting MARC8 + data to UTF8 data, that doesn't rely on any data files or resources or data structures + + Warning: This file is generated by running the main routine in the file CodeTableGenerator.java + Warning: Do not edit this file, or all edits will be lost at the next build. +

+ +

+


+ +

+ + + + + + + + + + + +
+Constructor Summary
CodeTableGenerated() + +
+           
+  + + + + + + + + + + + + + + + +
+Method Summary
+ chargetChar(int c, + int mode) + +
+           
+ booleanisCombining(int i, + int g0, + int g1) + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+CodeTableGenerated

+
+public CodeTableGenerated()
+
+
+ + + + + + + + +
+Method Detail
+ +

+isCombining

+
+public boolean isCombining(int i,
+                           int g0,
+                           int g1)
+
+
+
Specified by:
isCombining in interface CodeTableInterface
+
+
+
+
+
+
+ +

+getChar

+
+public char getChar(int c,
+                    int mode)
+
+
+
Specified by:
getChar in interface CodeTableInterface
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/CodeTableGenerator.html b/apidoc/org/marc4j/converter/impl/CodeTableGenerator.html new file mode 100644 index 0000000..9d58e65 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/CodeTableGenerator.html @@ -0,0 +1,299 @@ + + + + + + +CodeTableGenerator (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class CodeTableGenerator

+
+java.lang.Object
+  extended by org.marc4j.converter.impl.CodeTable
+      extended by org.marc4j.converter.impl.CodeTableGenerator
+
+
+
All Implemented Interfaces:
CodeTableInterface
+
+
+
+
public class CodeTableGenerator
extends CodeTable
+ + +

+Invoked at build time to generate a java source file (named CodeTableGenerated.java) + which when compiled will implement the CodeTableInterface (primarily through switch statements) + and which can be used be the AnselToUnicode converter instead of this class, and which will + produce the same results as the object CodeTable. +
+ The following routines are only used in the code generation process, and are not available to + be called from within an application that uses Marc4j. +
+ The routines generated for converting MARC8 multibyte characters to unicode are + split into several routines to workaround a limitation in java that a method can only contain 64k of code when it is compiled. +

+ +

+

+
Version:
+
$Revision: 1.2 $
+
Author:
+
Robert Haschart
+
+
+ +

+ + + + + + + +
+Field Summary
+ + + + + + + +
Fields inherited from class org.marc4j.converter.impl.CodeTable
charsets, combining
+  + + + + + + + + + + +
+Constructor Summary
CodeTableGenerator(InputStream byteStream) + +
+           
+  + + + + + + + + + + + +
+Method Summary
+static voidmain(String[] args) + +
+           
+ + + + + + + +
Methods inherited from class org.marc4j.converter.impl.CodeTable
getChar, isCombining
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+CodeTableGenerator

+
+public CodeTableGenerator(InputStream byteStream)
+
+
+ + + + + + + + +
+Method Detail
+ +

+main

+
+public static void main(String[] args)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/CodeTableHandler.html b/apidoc/org/marc4j/converter/impl/CodeTableHandler.html new file mode 100644 index 0000000..7e321a5 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/CodeTableHandler.html @@ -0,0 +1,425 @@ + + + + + + +CodeTableHandler (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class CodeTableHandler

+
+java.lang.Object
+  extended by org.xml.sax.helpers.DefaultHandler
+      extended by org.marc4j.converter.impl.CodeTableHandler
+
+
+
All Implemented Interfaces:
ContentHandler, DTDHandler, EntityResolver, ErrorHandler
+
+
+
+
public class CodeTableHandler
extends DefaultHandler
+ + +

+

+ CodeTableHandler is a SAX2 ContentHandler that + builds a data structure to facilitate AnselToUnicode character conversion. +

+ +

+

+
Version:
+
$Revision: 1.2 $
+
Author:
+
Corey Keith
+
See Also:
DefaultHandler
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
CodeTableHandler() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidcharacters(char[] ch, + int start, + int length) + +
+           
+ voidendElement(String uri, + String name, + String qName) + +
+           
+ HashMapgetCharSets() + +
+           
+ HashMapgetCombiningChars() + +
+           
+static voidmain(String[] args) + +
+           
+ voidsetDocumentLocator(Locator locator) + +
+           + Registers the SAX2 Locator object.
+ voidstartElement(String uri, + String name, + String qName, + Attributes atts) + +
+           
+ + + + + + + +
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endDocument, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl, warning
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+CodeTableHandler

+
+public CodeTableHandler()
+
+
+ + + + + + + + +
+Method Detail
+ +

+getCharSets

+
+public HashMap getCharSets()
+
+
+
+
+
+
+ +

+getCombiningChars

+
+public HashMap getCombiningChars()
+
+
+
+
+
+
+ +

+setDocumentLocator

+
+public void setDocumentLocator(Locator locator)
+
+

+ Registers the SAX2 Locator object. +

+

+

+
Specified by:
setDocumentLocator in interface ContentHandler
Overrides:
setDocumentLocator in class DefaultHandler
+
+
+
Parameters:
locator - the Locatorobject
+
+
+
+ +

+startElement

+
+public void startElement(String uri,
+                         String name,
+                         String qName,
+                         Attributes atts)
+                  throws SAXParseException
+
+
+
Specified by:
startElement in interface ContentHandler
Overrides:
startElement in class DefaultHandler
+
+
+ +
Throws: +
SAXParseException
+
+
+
+ +

+characters

+
+public void characters(char[] ch,
+                       int start,
+                       int length)
+
+
+
Specified by:
characters in interface ContentHandler
Overrides:
characters in class DefaultHandler
+
+
+
+
+
+
+ +

+endElement

+
+public void endElement(String uri,
+                       String name,
+                       String qName)
+                throws SAXParseException
+
+
+
Specified by:
endElement in interface ContentHandler
Overrides:
endElement in class DefaultHandler
+
+
+ +
Throws: +
SAXParseException
+
+
+
+ +

+main

+
+public static void main(String[] args)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/CodeTableInterface.html b/apidoc/org/marc4j/converter/impl/CodeTableInterface.html new file mode 100644 index 0000000..4032393 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/CodeTableInterface.html @@ -0,0 +1,231 @@ + + + + + + +CodeTableInterface (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Interface CodeTableInterface

+
+
All Known Implementing Classes:
CodeTable, CodeTableGenerated, CodeTableGenerator
+
+
+
+
public interface CodeTableInterface
+ + +

+


+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ chargetChar(int c, + int mode) + +
+           
+ booleanisCombining(int i, + int g0, + int g1) + +
+           
+  +

+ + + + + + + + +
+Method Detail
+ +

+isCombining

+
+boolean isCombining(int i,
+                    int g0,
+                    int g1)
+
+
+
+
+
+
+ +

+getChar

+
+char getChar(int c,
+             int mode)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/CodeTableTracker.html b/apidoc/org/marc4j/converter/impl/CodeTableTracker.html new file mode 100644 index 0000000..eae5936 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/CodeTableTracker.html @@ -0,0 +1,415 @@ + + + + + + +CodeTableTracker (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class CodeTableTracker

+
+java.lang.Object
+  extended by org.marc4j.converter.impl.CodeTableTracker
+
+
+
+
public class CodeTableTracker
extends Object
+ + +

+

A utility to convert UCS/Unicode data to MARC-8.

+

+ +

+

+
Version:
+
$Revision: 1.1 $
+
Author:
+
Corey Keith
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+protected  Integer[][]g + +
+           
+  + + + + + + + + + + +
+Constructor Summary
CodeTableTracker() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ IntegergetCurrent(byte set) + +
+           
+ IntegergetNext(byte set) + +
+           
+ IntegergetPrevious(byte set) + +
+           
+ voidmakePreviousCurrent() + +
+           
+ voidsetCurrent(byte set, + Integer table) + +
+           
+ voidsetNext(byte set, + Integer table) + +
+           
+ voidsetPrevious(byte set, + Integer table) + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+g

+
+protected Integer[][] g
+
+
+
+
+ + + + + + + + +
+Constructor Detail
+ +

+CodeTableTracker

+
+public CodeTableTracker()
+
+
+ + + + + + + + +
+Method Detail
+ +

+makePreviousCurrent

+
+public void makePreviousCurrent()
+
+
+
+
+
+
+ +

+getPrevious

+
+public Integer getPrevious(byte set)
+
+
+
+
+
+
+ +

+getCurrent

+
+public Integer getCurrent(byte set)
+
+
+
+
+
+
+ +

+getNext

+
+public Integer getNext(byte set)
+
+
+
+
+
+
+ +

+setPrevious

+
+public void setPrevious(byte set,
+                        Integer table)
+
+
+
+
+
+
+ +

+setCurrent

+
+public void setCurrent(byte set,
+                       Integer table)
+
+
+
+
+
+
+ +

+setNext

+
+public void setNext(byte set,
+                    Integer table)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/Iso5426ToUnicode.html b/apidoc/org/marc4j/converter/impl/Iso5426ToUnicode.html new file mode 100644 index 0000000..ea82a0f --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/Iso5426ToUnicode.html @@ -0,0 +1,280 @@ + + + + + + +Iso5426ToUnicode (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class Iso5426ToUnicode

+
+java.lang.Object
+  extended by org.marc4j.converter.CharConverter
+      extended by org.marc4j.converter.impl.Iso5426ToUnicode
+
+
+
+
public class Iso5426ToUnicode
extends CharConverter
+ + +

+

+ A utility to convert UNIMARC data to UCS/Unicode. +

+

+ +

+

+
Version:
+
$Revision: 1.3 $
+
Author:
+
Bas Peters, Yves Pratter
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
Iso5426ToUnicode() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ Stringconvert(char[] data) + +
+           + Converts UNIMARC (ISO 5426 charset) data to UCS/Unicode.
+ + + + + + + +
Methods inherited from class org.marc4j.converter.CharConverter
convert, convert
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+Iso5426ToUnicode

+
+public Iso5426ToUnicode()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convert

+
+public String convert(char[] data)
+
+

+ Converts UNIMARC (ISO 5426 charset) data to UCS/Unicode. +

+

+

+
Specified by:
convert in class CharConverter
+
+
+
Parameters:
data - - the UNIMARC data in an array of char +
Returns:
String- the UCS/Unicode data
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/Iso6937ToUnicode.html b/apidoc/org/marc4j/converter/impl/Iso6937ToUnicode.html new file mode 100644 index 0000000..de6304f --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/Iso6937ToUnicode.html @@ -0,0 +1,280 @@ + + + + + + +Iso6937ToUnicode (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class Iso6937ToUnicode

+
+java.lang.Object
+  extended by org.marc4j.converter.CharConverter
+      extended by org.marc4j.converter.impl.Iso6937ToUnicode
+
+
+
+
public class Iso6937ToUnicode
extends CharConverter
+ + +

+

+ A utility to convert ISO 6937 data to UCS/Unicode. +

+

+ +

+

+
Version:
+
$Revision: 1.3 $
+
Author:
+
Bas Peters, Yves Pratter
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
Iso6937ToUnicode() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ Stringconvert(char[] data) + +
+           + Converts ISO 6937 data to UCS/Unicode.
+ + + + + + + +
Methods inherited from class org.marc4j.converter.CharConverter
convert, convert
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+Iso6937ToUnicode

+
+public Iso6937ToUnicode()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convert

+
+public String convert(char[] data)
+
+

+ Converts ISO 6937 data to UCS/Unicode. +

+

+

+
Specified by:
convert in class CharConverter
+
+
+
Parameters:
data - - the ISO 6937 data in an array of char +
Returns:
String- the UCS/Unicode data
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/ReverseCodeTable.html b/apidoc/org/marc4j/converter/impl/ReverseCodeTable.html new file mode 100644 index 0000000..8cda7ec --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/ReverseCodeTable.html @@ -0,0 +1,405 @@ + + + + + + +ReverseCodeTable (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class ReverseCodeTable

+
+java.lang.Object
+  extended by org.marc4j.converter.impl.ReverseCodeTable
+
+
+
+
public class ReverseCodeTable
extends Object
+ + +

+

+ ReverseCodeTable defines a data structure to facilitate + UnicodeToAnsel character conversion. +

+

+ +

+

+
Version:
+
$Revision: 1.2 $
+
Author:
+
Corey Keith
+
See Also:
DefaultHandler
+
+ +

+ + + + + + + + + + + + + + + +
+Field Summary
+protected static Hashtablecharset + +
+           
+protected static Vectorcombining + +
+           
+  + + + + + + + + + + + + + + + + +
+Constructor Summary
ReverseCodeTable(InputStream byteStream) + +
+           
ReverseCodeTable(String filename) + +
+           
ReverseCodeTable(URI uri) + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ HashtablecodeTableHash(Character c) + +
+           
+static chargetChar(Character c, + CodeTableTracker ctt) + +
+           
+static booleaninPreviousCharCodeTable(Character c, + CodeTableTracker ctt) + +
+           
+ booleanisCombining(Character c) + +
+           
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+charset

+
+protected static Hashtable charset
+
+
+
+
+
+ +

+combining

+
+protected static Vector combining
+
+
+
+
+ + + + + + + + +
+Constructor Detail
+ +

+ReverseCodeTable

+
+public ReverseCodeTable(InputStream byteStream)
+
+
+
+ +

+ReverseCodeTable

+
+public ReverseCodeTable(String filename)
+
+
+
+ +

+ReverseCodeTable

+
+public ReverseCodeTable(URI uri)
+
+
+ + + + + + + + +
+Method Detail
+ +

+isCombining

+
+public boolean isCombining(Character c)
+
+
+
+
+
+
+ +

+codeTableHash

+
+public Hashtable codeTableHash(Character c)
+
+
+
+
+
+
+ +

+inPreviousCharCodeTable

+
+public static boolean inPreviousCharCodeTable(Character c,
+                                              CodeTableTracker ctt)
+
+
+
+
+
+
+ +

+getChar

+
+public static char getChar(Character c,
+                           CodeTableTracker ctt)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/ReverseCodeTableHandler.html b/apidoc/org/marc4j/converter/impl/ReverseCodeTableHandler.html new file mode 100644 index 0000000..1885cd5 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/ReverseCodeTableHandler.html @@ -0,0 +1,426 @@ + + + + + + +ReverseCodeTableHandler (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class ReverseCodeTableHandler

+
+java.lang.Object
+  extended by org.xml.sax.helpers.DefaultHandler
+      extended by org.marc4j.converter.impl.ReverseCodeTableHandler
+
+
+
All Implemented Interfaces:
ContentHandler, DTDHandler, EntityResolver, ErrorHandler
+
+
+
+
public class ReverseCodeTableHandler
extends DefaultHandler
+ + +

+

+ ReverseCodeTableHandler is a SAX2 ContentHandler + that builds a data structure to facilitate UnicodeToAnsel + character conversion. +

+ +

+

+
Version:
+
$Revision: 1.2 $
+
Author:
+
Corey Keith
+
See Also:
DefaultHandler
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
ReverseCodeTableHandler() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidcharacters(char[] ch, + int start, + int length) + +
+           
+ voidendElement(String uri, + String name, + String qName) + +
+           
+ HashtablegetCharSets() + +
+           
+ VectorgetCombiningChars() + +
+           
+static voidmain(String[] args) + +
+           
+ voidsetDocumentLocator(Locator locator) + +
+           + Registers the SAX2 Locator object.
+ voidstartElement(String uri, + String name, + String qName, + Attributes atts) + +
+           
+ + + + + + + +
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endDocument, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl, warning
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+ReverseCodeTableHandler

+
+public ReverseCodeTableHandler()
+
+
+ + + + + + + + +
+Method Detail
+ +

+getCharSets

+
+public Hashtable getCharSets()
+
+
+
+
+
+
+ +

+getCombiningChars

+
+public Vector getCombiningChars()
+
+
+
+
+
+
+ +

+setDocumentLocator

+
+public void setDocumentLocator(Locator locator)
+
+

+ Registers the SAX2 Locator object. +

+

+

+
Specified by:
setDocumentLocator in interface ContentHandler
Overrides:
setDocumentLocator in class DefaultHandler
+
+
+
Parameters:
locator - the Locatorobject
+
+
+
+ +

+startElement

+
+public void startElement(String uri,
+                         String name,
+                         String qName,
+                         Attributes atts)
+                  throws SAXParseException
+
+
+
Specified by:
startElement in interface ContentHandler
Overrides:
startElement in class DefaultHandler
+
+
+ +
Throws: +
SAXParseException
+
+
+
+ +

+characters

+
+public void characters(char[] ch,
+                       int start,
+                       int length)
+
+
+
Specified by:
characters in interface ContentHandler
Overrides:
characters in class DefaultHandler
+
+
+
+
+
+
+ +

+endElement

+
+public void endElement(String uri,
+                       String name,
+                       String qName)
+                throws SAXParseException
+
+
+
Specified by:
endElement in interface ContentHandler
Overrides:
endElement in class DefaultHandler
+
+
+ +
Throws: +
SAXParseException
+
+
+
+ +

+main

+
+public static void main(String[] args)
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/UnicodeToAnsel.html b/apidoc/org/marc4j/converter/impl/UnicodeToAnsel.html new file mode 100644 index 0000000..e505174 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/UnicodeToAnsel.html @@ -0,0 +1,367 @@ + + + + + + +UnicodeToAnsel (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class UnicodeToAnsel

+
+java.lang.Object
+  extended by org.marc4j.converter.CharConverter
+      extended by org.marc4j.converter.impl.UnicodeToAnsel
+
+
+
+
public class UnicodeToAnsel
extends CharConverter
+ + +

+

+ A utility to convert UCS/Unicode data to MARC-8. +

+

+ The MARC-8 to Unicode mapping used is the version with the March 2005 + revisions. +

+

+ +

+

+
Version:
+
$Revision: 1.4 $
+
Author:
+
Bas Peters, Corey Keith
+
+
+ +

+ + + + + + + + + + + +
+Field Summary
+protected  ReverseCodeTablerct + +
+           
+  + + + + + + + + + + + + + + + + +
+Constructor Summary
UnicodeToAnsel() + +
+          Creates a new instance and loads the MARC4J supplied Ansel/Unicode + conversion tables based on the official LC tables.
UnicodeToAnsel(InputStream in) + +
+          Constructs an instance with the specified input stream.
UnicodeToAnsel(String pathname) + +
+          Constructs an instance with the specified pathname.
+  + + + + + + + + + + + +
+Method Summary
+ Stringconvert(char[] data) + +
+          Converts UCS/Unicode data to MARC-8.
+ + + + + + + +
Methods inherited from class org.marc4j.converter.CharConverter
convert, convert
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Field Detail
+ +

+rct

+
+protected ReverseCodeTable rct
+
+
+
+
+ + + + + + + + +
+Constructor Detail
+ +

+UnicodeToAnsel

+
+public UnicodeToAnsel()
+
+
Creates a new instance and loads the MARC4J supplied Ansel/Unicode + conversion tables based on the official LC tables. +

+

+
+ +

+UnicodeToAnsel

+
+public UnicodeToAnsel(String pathname)
+
+
Constructs an instance with the specified pathname. + + Use this constructor to create an instance with a customized code table + mapping. The mapping file should follow the structure of LC's XML MARC-8 + to Unicode mapping (see: + http://www.loc.gov/marc/specifications/codetables.xml). +

+

+
+ +

+UnicodeToAnsel

+
+public UnicodeToAnsel(InputStream in)
+
+
Constructs an instance with the specified input stream. + + Use this constructor to create an instance with a customized code table + mapping. The mapping file should follow the structure of LC's XML MARC-8 + to Unicode mapping (see: + http://www.loc.gov/marc/specifications/codetables.xml). +

+

+ + + + + + + + +
+Method Detail
+ +

+convert

+
+public String convert(char[] data)
+
+
Converts UCS/Unicode data to MARC-8. + +

+ A question mark (0x3F) is returned if there is no match. +

+

+

+
Specified by:
convert in class CharConverter
+
+
+
Parameters:
data - - the UCS/Unicode data in an array of char +
Returns:
String - the MARC-8 data
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/UnicodeToIso5426.html b/apidoc/org/marc4j/converter/impl/UnicodeToIso5426.html new file mode 100644 index 0000000..63cf7e7 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/UnicodeToIso5426.html @@ -0,0 +1,284 @@ + + + + + + +UnicodeToIso5426 (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class UnicodeToIso5426

+
+java.lang.Object
+  extended by org.marc4j.converter.CharConverter
+      extended by org.marc4j.converter.impl.UnicodeToIso5426
+
+
+
+
public class UnicodeToIso5426
extends CharConverter
+ + +

+

+ A utility to convert UCS/Unicode data to UNIMARC (ISO 5426 charset). +

+

+ +

+

+
Version:
+
$Revision: 1.3 $
+
Author:
+
Bas Peters, Yves Pratter
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
UnicodeToIso5426() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ Stringconvert(char[] data) + +
+           + Converts UCS/Unicode data to UNIMARC (ISO 5426 charset).
+ + + + + + + +
Methods inherited from class org.marc4j.converter.CharConverter
convert, convert
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+UnicodeToIso5426

+
+public UnicodeToIso5426()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convert

+
+public String convert(char[] data)
+
+

+ Converts UCS/Unicode data to UNIMARC (ISO 5426 charset). +

+ +

+ A question mark (0x3F) is returned if there is no match. +

+

+

+
Specified by:
convert in class CharConverter
+
+
+
Parameters:
data - - the UCS/Unicode data in an array of char +
Returns:
String- the UNIMARC (ISO 5426 charset) data
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/UnicodeToIso6937.html b/apidoc/org/marc4j/converter/impl/UnicodeToIso6937.html new file mode 100644 index 0000000..e378487 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/UnicodeToIso6937.html @@ -0,0 +1,284 @@ + + + + + + +UnicodeToIso6937 (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.converter.impl +
+Class UnicodeToIso6937

+
+java.lang.Object
+  extended by org.marc4j.converter.CharConverter
+      extended by org.marc4j.converter.impl.UnicodeToIso6937
+
+
+
+
public class UnicodeToIso6937
extends CharConverter
+ + +

+

+ A utility to convert UCS/Unicode data to ISO 6937. +

+

+ +

+

+
Version:
+
$Revision: 1.3 $
+
Author:
+
Bas Peters, Yves Pratter
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
UnicodeToIso6937() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+ Stringconvert(char[] data) + +
+           + Converts UCS/Unicode data to ISO 6937.
+ + + + + + + +
Methods inherited from class org.marc4j.converter.CharConverter
convert, convert
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+UnicodeToIso6937

+
+public UnicodeToIso6937()
+
+
+ + + + + + + + +
+Method Detail
+ +

+convert

+
+public String convert(char[] data)
+
+

+ Converts UCS/Unicode data to ISO 6937. +

+ +

+ A question mark (0x3F) is returned if there is no match. +

+

+

+
Specified by:
convert in class CharConverter
+
+
+
Parameters:
data - - the UCS/Unicode data in an array of char +
Returns:
String- the ISO 6937 data
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/AnselToUnicode.html b/apidoc/org/marc4j/converter/impl/class-use/AnselToUnicode.html new file mode 100644 index 0000000..3b3bda7 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/AnselToUnicode.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.AnselToUnicode (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.AnselToUnicode

+
+No usage of org.marc4j.converter.impl.AnselToUnicode +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/CodeTable.html b/apidoc/org/marc4j/converter/impl/class-use/CodeTable.html new file mode 100644 index 0000000..99c720c --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/CodeTable.html @@ -0,0 +1,179 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.CodeTable (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.CodeTable

+
+ + + + + + + + + +
+Packages that use CodeTable
org.marc4j.converter.implClasses for byte and character conversions. 
+  +

+ + + + + +
+Uses of CodeTable in org.marc4j.converter.impl
+  +

+ + + + + + + + + +
Subclasses of CodeTable in org.marc4j.converter.impl
+ classCodeTableGenerator + +
+          Invoked at build time to generate a java source file (named CodeTableGenerated.java) + which when compiled will implement the CodeTableInterface (primarily through switch statements) + and which can be used be the AnselToUnicode converter instead of this class, and which will + produce the same results as the object CodeTable.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/CodeTableGenerated.html b/apidoc/org/marc4j/converter/impl/class-use/CodeTableGenerated.html new file mode 100644 index 0000000..b9bcfa9 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/CodeTableGenerated.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.CodeTableGenerated (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.CodeTableGenerated

+
+No usage of org.marc4j.converter.impl.CodeTableGenerated +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/CodeTableGenerator.html b/apidoc/org/marc4j/converter/impl/class-use/CodeTableGenerator.html new file mode 100644 index 0000000..5cb78e2 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/CodeTableGenerator.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.CodeTableGenerator (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.CodeTableGenerator

+
+No usage of org.marc4j.converter.impl.CodeTableGenerator +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/CodeTableHandler.html b/apidoc/org/marc4j/converter/impl/class-use/CodeTableHandler.html new file mode 100644 index 0000000..1455309 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/CodeTableHandler.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.CodeTableHandler (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.CodeTableHandler

+
+No usage of org.marc4j.converter.impl.CodeTableHandler +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/CodeTableInterface.html b/apidoc/org/marc4j/converter/impl/class-use/CodeTableInterface.html new file mode 100644 index 0000000..6926068 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/CodeTableInterface.html @@ -0,0 +1,217 @@ + + + + + + +Uses of Interface org.marc4j.converter.impl.CodeTableInterface (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.marc4j.converter.impl.CodeTableInterface

+
+ + + + + + + + + +
+Packages that use CodeTableInterface
org.marc4j.converter.implClasses for byte and character conversions. 
+  +

+ + + + + +
+Uses of CodeTableInterface in org.marc4j.converter.impl
+  +

+ + + + + + + + + + + + + + + + + +
Classes in org.marc4j.converter.impl that implement CodeTableInterface
+ classCodeTable + +
+           + CodeTable defines a data structure to facilitate + AnselToUnicode character conversion.
+ classCodeTableGenerated + +
+          An implementation of CodeTableInterface that is used in converting MARC8 + data to UTF8 data, that doesn't rely on any data files or resources or data structures + + Warning: This file is generated by running the main routine in the file CodeTableGenerator.java + Warning: Do not edit this file, or all edits will be lost at the next build.
+ classCodeTableGenerator + +
+          Invoked at build time to generate a java source file (named CodeTableGenerated.java) + which when compiled will implement the CodeTableInterface (primarily through switch statements) + and which can be used be the AnselToUnicode converter instead of this class, and which will + produce the same results as the object CodeTable.
+  +

+ + + + + + + + + +
Fields in org.marc4j.converter.impl declared as CodeTableInterface
+protected  CodeTableInterfaceAnselToUnicode.ct + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/CodeTableTracker.html b/apidoc/org/marc4j/converter/impl/class-use/CodeTableTracker.html new file mode 100644 index 0000000..6f1fe94 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/CodeTableTracker.html @@ -0,0 +1,186 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.CodeTableTracker (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.CodeTableTracker

+
+ + + + + + + + + +
+Packages that use CodeTableTracker
org.marc4j.converter.implClasses for byte and character conversions. 
+  +

+ + + + + +
+Uses of CodeTableTracker in org.marc4j.converter.impl
+  +

+ + + + + + + + + + + + + +
Methods in org.marc4j.converter.impl with parameters of type CodeTableTracker
+static charReverseCodeTable.getChar(Character c, + CodeTableTracker ctt) + +
+           
+static booleanReverseCodeTable.inPreviousCharCodeTable(Character c, + CodeTableTracker ctt) + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/Iso5426ToUnicode.html b/apidoc/org/marc4j/converter/impl/class-use/Iso5426ToUnicode.html new file mode 100644 index 0000000..ce6538c --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/Iso5426ToUnicode.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.Iso5426ToUnicode (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.Iso5426ToUnicode

+
+No usage of org.marc4j.converter.impl.Iso5426ToUnicode +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/Iso6937ToUnicode.html b/apidoc/org/marc4j/converter/impl/class-use/Iso6937ToUnicode.html new file mode 100644 index 0000000..0621846 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/Iso6937ToUnicode.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.Iso6937ToUnicode (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.Iso6937ToUnicode

+
+No usage of org.marc4j.converter.impl.Iso6937ToUnicode +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/ReverseCodeTable.html b/apidoc/org/marc4j/converter/impl/class-use/ReverseCodeTable.html new file mode 100644 index 0000000..e848416 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/ReverseCodeTable.html @@ -0,0 +1,176 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.ReverseCodeTable (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.ReverseCodeTable

+
+ + + + + + + + + +
+Packages that use ReverseCodeTable
org.marc4j.converter.implClasses for byte and character conversions. 
+  +

+ + + + + +
+Uses of ReverseCodeTable in org.marc4j.converter.impl
+  +

+ + + + + + + + + +
Fields in org.marc4j.converter.impl declared as ReverseCodeTable
+protected  ReverseCodeTableUnicodeToAnsel.rct + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/ReverseCodeTableHandler.html b/apidoc/org/marc4j/converter/impl/class-use/ReverseCodeTableHandler.html new file mode 100644 index 0000000..6e042b9 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/ReverseCodeTableHandler.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.ReverseCodeTableHandler (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.ReverseCodeTableHandler

+
+No usage of org.marc4j.converter.impl.ReverseCodeTableHandler +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/UnicodeToAnsel.html b/apidoc/org/marc4j/converter/impl/class-use/UnicodeToAnsel.html new file mode 100644 index 0000000..6f2cc15 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/UnicodeToAnsel.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.UnicodeToAnsel (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.UnicodeToAnsel

+
+No usage of org.marc4j.converter.impl.UnicodeToAnsel +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/UnicodeToIso5426.html b/apidoc/org/marc4j/converter/impl/class-use/UnicodeToIso5426.html new file mode 100644 index 0000000..1ba5784 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/UnicodeToIso5426.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.UnicodeToIso5426 (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.UnicodeToIso5426

+
+No usage of org.marc4j.converter.impl.UnicodeToIso5426 +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/class-use/UnicodeToIso6937.html b/apidoc/org/marc4j/converter/impl/class-use/UnicodeToIso6937.html new file mode 100644 index 0000000..423e53c --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/class-use/UnicodeToIso6937.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.converter.impl.UnicodeToIso6937 (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.converter.impl.UnicodeToIso6937

+
+No usage of org.marc4j.converter.impl.UnicodeToIso6937 +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/package-frame.html b/apidoc/org/marc4j/converter/impl/package-frame.html new file mode 100644 index 0000000..dc24c31 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/package-frame.html @@ -0,0 +1,67 @@ + + + + + + +org.marc4j.converter.impl (MARC4J API) + + + + + + + + + + + +org.marc4j.converter.impl + + + + +
+Interfaces  + +
+CodeTableInterface
+ + + + + + +
+Classes  + +
+AnselToUnicode +
+CodeTable +
+CodeTableGenerated +
+CodeTableGenerator +
+CodeTableHandler +
+CodeTableTracker +
+Iso5426ToUnicode +
+Iso6937ToUnicode +
+ReverseCodeTable +
+ReverseCodeTableHandler +
+UnicodeToAnsel +
+UnicodeToIso5426 +
+UnicodeToIso6937
+ + + + diff --git a/apidoc/org/marc4j/converter/impl/package-summary.html b/apidoc/org/marc4j/converter/impl/package-summary.html new file mode 100644 index 0000000..76787dd --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/package-summary.html @@ -0,0 +1,253 @@ + + + + + + +org.marc4j.converter.impl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.marc4j.converter.impl +

+Classes for byte and character conversions. +

+See: +
+          Description +

+ + + + + + + + + +
+Interface Summary
CodeTableInterface 
+  + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
AnselToUnicode + A utility to convert MARC-8 data to non-precomposed UCS/Unicode.
CodeTable + CodeTable defines a data structure to facilitate + AnselToUnicode character conversion.
CodeTableGeneratedAn implementation of CodeTableInterface that is used in converting MARC8 + data to UTF8 data, that doesn't rely on any data files or resources or data structures + + Warning: This file is generated by running the main routine in the file CodeTableGenerator.java + Warning: Do not edit this file, or all edits will be lost at the next build.
CodeTableGeneratorInvoked at build time to generate a java source file (named CodeTableGenerated.java) + which when compiled will implement the CodeTableInterface (primarily through switch statements) + and which can be used be the AnselToUnicode converter instead of this class, and which will + produce the same results as the object CodeTable.
CodeTableHandler + CodeTableHandler is a SAX2 ContentHandler that + builds a data structure to facilitate AnselToUnicode character conversion.
CodeTableTrackerA utility to convert UCS/Unicode data to MARC-8.
Iso5426ToUnicode + A utility to convert UNIMARC data to UCS/Unicode.
Iso6937ToUnicode + A utility to convert ISO 6937 data to UCS/Unicode.
ReverseCodeTable + ReverseCodeTable defines a data structure to facilitate + UnicodeToAnsel character conversion.
ReverseCodeTableHandler + ReverseCodeTableHandler is a SAX2 ContentHandler + that builds a data structure to facilitate UnicodeToAnsel + character conversion.
UnicodeToAnsel + A utility to convert UCS/Unicode data to MARC-8.
UnicodeToIso5426 + A utility to convert UCS/Unicode data to UNIMARC (ISO 5426 charset).
UnicodeToIso6937 + A utility to convert UCS/Unicode data to ISO 6937.
+  + +

+

+Package org.marc4j.converter.impl Description +

+ +

+

Classes for byte and character conversions.

+

+ +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/package-tree.html b/apidoc/org/marc4j/converter/impl/package-tree.html new file mode 100644 index 0000000..28a3d81 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/package-tree.html @@ -0,0 +1,163 @@ + + + + + + +org.marc4j.converter.impl Class Hierarchy (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.marc4j.converter.impl +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/impl/package-use.html b/apidoc/org/marc4j/converter/impl/package-use.html new file mode 100644 index 0000000..1b04053 --- /dev/null +++ b/apidoc/org/marc4j/converter/impl/package-use.html @@ -0,0 +1,188 @@ + + + + + + +Uses of Package org.marc4j.converter.impl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.marc4j.converter.impl

+
+ + + + + + + + + +
+Packages that use org.marc4j.converter.impl
org.marc4j.converter.implClasses for byte and character conversions. 
+  +

+ + + + + + + + + + + + + + + + + +
+Classes in org.marc4j.converter.impl used by org.marc4j.converter.impl
CodeTable + +
+           + CodeTable defines a data structure to facilitate + AnselToUnicode character conversion.
CodeTableInterface + +
+           
CodeTableTracker + +
+          A utility to convert UCS/Unicode data to MARC-8.
ReverseCodeTable + +
+           + ReverseCodeTable defines a data structure to facilitate + UnicodeToAnsel character conversion.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/package-frame.html b/apidoc/org/marc4j/converter/package-frame.html new file mode 100644 index 0000000..41bc5f3 --- /dev/null +++ b/apidoc/org/marc4j/converter/package-frame.html @@ -0,0 +1,32 @@ + + + + + + +org.marc4j.converter (MARC4J API) + + + + + + + + + + + +org.marc4j.converter + + + + +
+Classes  + +
+CharConverter
+ + + + diff --git a/apidoc/org/marc4j/converter/package-summary.html b/apidoc/org/marc4j/converter/package-summary.html new file mode 100644 index 0000000..62247c9 --- /dev/null +++ b/apidoc/org/marc4j/converter/package-summary.html @@ -0,0 +1,169 @@ + + + + + + +org.marc4j.converter (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.marc4j.converter +

+Interfaces for character conversions. +

+See: +
+          Description +

+ + + + + + + + + +
+Class Summary
CharConverterExtend this class to create a character converter.
+  + +

+

+Package org.marc4j.converter Description +

+ +

+

Interfaces for character conversions.

+

+ +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/package-tree.html b/apidoc/org/marc4j/converter/package-tree.html new file mode 100644 index 0000000..c881c02 --- /dev/null +++ b/apidoc/org/marc4j/converter/package-tree.html @@ -0,0 +1,149 @@ + + + + + + +org.marc4j.converter Class Hierarchy (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.marc4j.converter +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/converter/package-use.html b/apidoc/org/marc4j/converter/package-use.html new file mode 100644 index 0000000..e7aa6f4 --- /dev/null +++ b/apidoc/org/marc4j/converter/package-use.html @@ -0,0 +1,185 @@ + + + + + + +Uses of Package org.marc4j.converter (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.marc4j.converter

+
+ + + + + + + + + + + + + +
+Packages that use org.marc4j.converter
org.marc4jClasses to read and write MARC and MARCXML records. 
org.marc4j.converter.implClasses for byte and character conversions. 
+  +

+ + + + + + + + +
+Classes in org.marc4j.converter used by org.marc4j
CharConverter + +
+          Extend this class to create a character converter.
+  +

+ + + + + + + + +
+Classes in org.marc4j.converter used by org.marc4j.converter.impl
CharConverter + +
+          Extend this class to create a character converter.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/ControlField.html b/apidoc/org/marc4j/marc/ControlField.html new file mode 100644 index 0000000..63e565c --- /dev/null +++ b/apidoc/org/marc4j/marc/ControlField.html @@ -0,0 +1,267 @@ + + + + + + +ControlField (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc +
+Interface ControlField

+
+
All Superinterfaces:
Comparable, Serializable, VariableField
+
+
+
All Known Implementing Classes:
ControlFieldImpl
+
+
+
+
public interface ControlField
extends VariableField
+ + +

+Represents a control field in a MARC record. +

+ +

+

+
Version:
+
$Revision: 1.8 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + + + +
+Method Summary
+ StringgetData() + +
+          Returns the data element
+ voidsetData(String data) + +
+          Sets the data element.
+ + + + + + + +
Methods inherited from interface org.marc4j.marc.VariableField
find, getId, getTag, setId, setTag
+ + + + + + + +
Methods inherited from interface java.lang.Comparable
compareTo
+  +

+ + + + + + + + +
+Method Detail
+ +

+getData

+
+String getData()
+
+
Returns the data element +

+

+
+
+
+ +
Returns:
String - the data element
+
+
+
+ +

+setData

+
+void setData(String data)
+
+
Sets the data element. +

+

+
+
+
+
Parameters:
data - the data element
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/DataField.html b/apidoc/org/marc4j/marc/DataField.html new file mode 100644 index 0000000..848ae46 --- /dev/null +++ b/apidoc/org/marc4j/marc/DataField.html @@ -0,0 +1,471 @@ + + + + + + +DataField (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc +
+Interface DataField

+
+
All Superinterfaces:
Comparable, Serializable, VariableField
+
+
+
All Known Implementing Classes:
DataFieldImpl
+
+
+
+
public interface DataField
extends VariableField
+ + +

+Represents a data field in a MARC record. +

+ +

+

+
Version:
+
$Revision: 1.9 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidaddSubfield(int index, + Subfield subfield) + +
+          Inserts a Subfield at the specified position.
+ voidaddSubfield(Subfield subfield) + +
+          Adds a Subfield.
+ chargetIndicator1() + +
+          Returns the first indicator
+ chargetIndicator2() + +
+          Returns the second indicator
+ SubfieldgetSubfield(char code) + +
+          Returns the first Subfield with the given code.
+ ListgetSubfields() + +
+          Returns the list of Subfield objects.
+ ListgetSubfields(char code) + +
+          Returns the list of Subfield objects for the goven + subfield code.
+ voidremoveSubfield(Subfield subfield) + +
+          Removes a Subfield.
+ voidsetIndicator1(char ind1) + +
+          Sets the first indicator.
+ voidsetIndicator2(char ind2) + +
+          Sets the second indicator.
+ + + + + + + +
Methods inherited from interface org.marc4j.marc.VariableField
find, getId, getTag, setId, setTag
+ + + + + + + +
Methods inherited from interface java.lang.Comparable
compareTo
+  +

+ + + + + + + + +
+Method Detail
+ +

+getIndicator1

+
+char getIndicator1()
+
+
Returns the first indicator +

+

+
+
+
+ +
Returns:
char - the first indicator
+
+
+
+ +

+setIndicator1

+
+void setIndicator1(char ind1)
+
+
Sets the first indicator. +

+

+
+
+
+
Parameters:
ind1 - the first indicator
+
+
+
+ +

+getIndicator2

+
+char getIndicator2()
+
+
Returns the second indicator +

+

+
+
+
+ +
Returns:
char - the second indicator
+
+
+
+ +

+setIndicator2

+
+void setIndicator2(char ind2)
+
+
Sets the second indicator. +

+

+
+
+
+
Parameters:
ind2 - the second indicator
+
+
+
+ +

+getSubfields

+
+List getSubfields()
+
+
Returns the list of Subfield objects. +

+

+
+
+
+ +
Returns:
List - the list of Subfield objects
+
+
+
+ +

+getSubfields

+
+List getSubfields(char code)
+
+
Returns the list of Subfield objects for the goven + subfield code. +

+

+
+
+
+
Parameters:
code - the subfield code +
Returns:
List - the list of Subfield objects
+
+
+
+ +

+getSubfield

+
+Subfield getSubfield(char code)
+
+
Returns the first Subfield with the given code. +

+

+
+
+
+
Parameters:
code - the subfield code +
Returns:
Subfield - the subfield object or null if no subfield is found
+
+
+
+ +

+addSubfield

+
+void addSubfield(Subfield subfield)
+
+
Adds a Subfield. +

+

+
+
+
+
Parameters:
subfield - the Subfield object +
Throws: +
IllegalAddException - when the parameter is not a Subfield instance
+
+
+
+ +

+addSubfield

+
+void addSubfield(int index,
+                 Subfield subfield)
+
+
Inserts a Subfield at the specified position. +

+

+
+
+
+
Parameters:
index - the position within the list
subfield - the Subfield object +
Throws: +
IllegalAddException - when the parameter is not a Subfield instance
+
+
+
+ +

+removeSubfield

+
+void removeSubfield(Subfield subfield)
+
+
Removes a Subfield. +

+

+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/IllegalAddException.html b/apidoc/org/marc4j/marc/IllegalAddException.html new file mode 100644 index 0000000..3d58437 --- /dev/null +++ b/apidoc/org/marc4j/marc/IllegalAddException.html @@ -0,0 +1,275 @@ + + + + + + +IllegalAddException (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc +
+Class IllegalAddException

+
+java.lang.Object
+  extended by java.lang.Throwable
+      extended by java.lang.Exception
+          extended by java.lang.RuntimeException
+              extended by java.lang.IllegalArgumentException
+                  extended by org.marc4j.marc.IllegalAddException
+
+
+
All Implemented Interfaces:
Serializable
+
+
+
+
public class IllegalAddException
extends IllegalArgumentException
+ + +

+Thrown when the addition of the supplied object is illegal. +

+ +

+

+
Version:
+
$Revision: 1.7 $
+
Author:
+
Bas Peters
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
IllegalAddException(String className) + +
+          Creates a new Exception indicating that the addttion + of the supplied object is illegal.
IllegalAddException(String className, + String reason) + +
+          Creates a new Exception indicating that the addttion + of the supplied object is illegal.
+  + + + + + + + +
+Method Summary
+ + + + + + + +
Methods inherited from class java.lang.Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+IllegalAddException

+
+public IllegalAddException(String className)
+
+
Creates a new Exception indicating that the addttion + of the supplied object is illegal. +

+

+
Parameters:
className - the class name
+
+
+ +

+IllegalAddException

+
+public IllegalAddException(String className,
+                           String reason)
+
+
Creates a new Exception indicating that the addttion + of the supplied object is illegal. +

+

+
Parameters:
className - the class name
reason - the reason why the exception is thrown
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/Leader.html b/apidoc/org/marc4j/marc/Leader.html new file mode 100644 index 0000000..727a1ca --- /dev/null +++ b/apidoc/org/marc4j/marc/Leader.html @@ -0,0 +1,801 @@ + + + + + + +Leader (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc +
+Interface Leader

+
+
All Superinterfaces:
Serializable
+
+
+
All Known Implementing Classes:
LeaderImpl
+
+
+
+
public interface Leader
extends Serializable
+ + +

+Represents a record label in a MARC record. +

+ +

+

+
Version:
+
$Revision: 1.15 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ intgetBaseAddressOfData() + +
+          Returns the base address of data (positions 12-16).
+ chargetCharCodingScheme() + +
+          Returns the character coding scheme (position 09).
+ char[]getEntryMap() + +
+          Returns the entry map (positions 20-23).
+ LonggetId() + +
+          Returns the identifier.
+ char[]getImplDefined1() + +
+          Returns implementation defined values (positions 07-08).
+ char[]getImplDefined2() + +
+          Returns implementation defined values (positions 17-19).
+ intgetIndicatorCount() + +
+          Returns the indicator count (positions 10).
+ intgetRecordLength() + +
+          Returns the logical record length (positions 00-04).
+ chargetRecordStatus() + +
+          Returns the record status (positions 05).
+ intgetSubfieldCodeLength() + +
+          Returns the subfield code length (position 11).
+ chargetTypeOfRecord() + +
+          Returns the record type (position 06).
+ Stringmarshal() + +
+          Creates a string object from this leader object.
+ voidsetBaseAddressOfData(int baseAddressOfData) + +
+          Sets the base address of data (positions 12-16).
+ voidsetCharCodingScheme(char charCodingScheme) + +
+          Sets the character encoding scheme (position 09).
+ voidsetEntryMap(char[] entryMap) + +
+          Sets the entry map (positions 20-23).
+ voidsetId(Long id) + +
+          Sets the identifier.
+ voidsetImplDefined1(char[] implDefined1) + +
+          Sets implementation defined values (position 07-08).
+ voidsetImplDefined2(char[] implDefined2) + +
+          Sets implementation defined values (positions 17-19).
+ voidsetIndicatorCount(int indicatorCount) + +
+          Sets the indicator count (position 10).
+ voidsetRecordLength(int recordLength) + +
+          Sets the logical record length (positions 00-04).
+ voidsetRecordStatus(char recordStatus) + +
+          Sets the record status (position 05).
+ voidsetSubfieldCodeLength(int subfieldCodeLength) + +
+          Sets the subfield code length (position 11).
+ voidsetTypeOfRecord(char typeOfRecord) + +
+          Sets the type of record (position 06).
+ voidunmarshal(String ldr) + +
+           + Creates a leader object from a string object.
+  +

+ + + + + + + + +
+Method Detail
+ +

+setId

+
+void setId(Long id)
+
+
Sets the identifier. + +

+ The purpose of this identifier is to provide an identifier for + persistency. +

+

+
+
+
+
Parameters:
id - the identifier
+
+
+
+ +

+getId

+
+Long getId()
+
+
Returns the identifier. +

+

+
+
+
+ +
Returns:
Long - the identifier
+
+
+
+ +

+setRecordLength

+
+void setRecordLength(int recordLength)
+
+
Sets the logical record length (positions 00-04). +

+

+
+
+
+
Parameters:
recordLength - integer representing the record length
+
+
+
+ +

+setRecordStatus

+
+void setRecordStatus(char recordStatus)
+
+
Sets the record status (position 05). +

+

+
+
+
+
Parameters:
recordStatus - character representing the record status
+
+
+
+ +

+setTypeOfRecord

+
+void setTypeOfRecord(char typeOfRecord)
+
+
Sets the type of record (position 06). +

+

+
+
+
+
Parameters:
typeOfRecord - character representing the type of record
+
+
+
+ +

+setImplDefined1

+
+void setImplDefined1(char[] implDefined1)
+
+
Sets implementation defined values (position 07-08). +

+

+
+
+
+
Parameters:
implDefined1 - character array representing the implementation defined data
+
+
+
+ +

+setCharCodingScheme

+
+void setCharCodingScheme(char charCodingScheme)
+
+
Sets the character encoding scheme (position 09). +

+

+
+
+
+
Parameters:
charCodingScheme - character representing the character encoding
+
+
+
+ +

+setIndicatorCount

+
+void setIndicatorCount(int indicatorCount)
+
+
Sets the indicator count (position 10). +

+

+
+
+
+
Parameters:
indicatorCount - integer representing the number of indicators present in a + data field
+
+
+
+ +

+setSubfieldCodeLength

+
+void setSubfieldCodeLength(int subfieldCodeLength)
+
+
Sets the subfield code length (position 11). +

+

+
+
+
+
Parameters:
subfieldCodeLength - integer representing the subfield code length
+
+
+
+ +

+setBaseAddressOfData

+
+void setBaseAddressOfData(int baseAddressOfData)
+
+
Sets the base address of data (positions 12-16). +

+

+
+
+
+
Parameters:
baseAddressOfData - integer representing the base address of data
+
+
+
+ +

+setImplDefined2

+
+void setImplDefined2(char[] implDefined2)
+
+
Sets implementation defined values (positions 17-19). +

+

+
+
+
+
Parameters:
implDefined2 - character array representing the implementation defined data
+
+
+
+ +

+setEntryMap

+
+void setEntryMap(char[] entryMap)
+
+
Sets the entry map (positions 20-23). +

+

+
+
+
+
Parameters:
entryMap - character array representing the entry map
+
+
+
+ +

+getRecordLength

+
+int getRecordLength()
+
+
Returns the logical record length (positions 00-04). +

+

+
+
+
+ +
Returns:
int- the record length
+
+
+
+ +

+getRecordStatus

+
+char getRecordStatus()
+
+
Returns the record status (positions 05). +

+

+
+
+
+ +
Returns:
char- the record status
+
+
+
+ +

+getTypeOfRecord

+
+char getTypeOfRecord()
+
+
Returns the record type (position 06). +

+

+
+
+
+ +
Returns:
char- the record type
+
+
+
+ +

+getImplDefined1

+
+char[] getImplDefined1()
+
+
Returns implementation defined values (positions 07-08). +

+

+
+
+
+ +
Returns:
char[]- implementation defined values
+
+
+
+ +

+getCharCodingScheme

+
+char getCharCodingScheme()
+
+
Returns the character coding scheme (position 09). +

+

+
+
+
+ +
Returns:
char- the character coding scheme
+
+
+
+ +

+getIndicatorCount

+
+int getIndicatorCount()
+
+
Returns the indicator count (positions 10). +

+

+
+
+
+ +
Returns:
int- the indicator count
+
+
+
+ +

+getSubfieldCodeLength

+
+int getSubfieldCodeLength()
+
+
Returns the subfield code length (position 11). +

+

+
+
+
+ +
Returns:
int- the subfield code length
+
+
+
+ +

+getBaseAddressOfData

+
+int getBaseAddressOfData()
+
+
Returns the base address of data (positions 12-16). +

+

+
+
+
+ +
Returns:
int- the base address of data
+
+
+
+ +

+getImplDefined2

+
+char[] getImplDefined2()
+
+
Returns implementation defined values (positions 17-19). +

+

+
+
+
+ +
Returns:
char[]- implementation defined values
+
+
+
+ +

+getEntryMap

+
+char[] getEntryMap()
+
+
Returns the entry map (positions 20-23). +

+

+
+
+
+ +
Returns:
char[]- the entry map
+
+
+
+ +

+unmarshal

+
+void unmarshal(String ldr)
+
+

+ Creates a leader object from a string object. +

+ +

+ Indicator count and subfield code length are defaulted to 2 if they are + not integer values. +

+

+

+
+
+
+
Parameters:
ldr - the leader
+
+
+
+ +

+marshal

+
+String marshal()
+
+
Creates a string object from this leader object. +

+

+
+
+
+ +
Returns:
String - the string object from this leader object
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/MarcFactory.html b/apidoc/org/marc4j/marc/MarcFactory.html new file mode 100644 index 0000000..3d07266 --- /dev/null +++ b/apidoc/org/marc4j/marc/MarcFactory.html @@ -0,0 +1,586 @@ + + + + + + +MarcFactory (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc +
+Class MarcFactory

+
+java.lang.Object
+  extended by org.marc4j.marc.MarcFactory
+
+
+
Direct Known Subclasses:
MarcFactoryImpl
+
+
+
+
public abstract class MarcFactory
extends Object
+ + +

+Factory for creating MARC record objects. +

+ You can use MarcFactory to create records from scratch: + +

+ 
+  MarcFactory factory = MarcFactory.newInstance();
+  Record record = factory.newRecord();
+  ControlField cf = factory.newControlField("001");
+  record.addVariableField(cf);
+  etc...
+  
+ 
+

+ +

+

+
Version:
+
$Revision: 1.2 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + +
+Constructor Summary
+protected MarcFactory() + +
+           
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+abstract  ControlFieldnewControlField() + +
+          Returns a new control field instance.
+abstract  ControlFieldnewControlField(String tag) + +
+          Creates a new control field with the given tag and returns the instance.
+abstract  ControlFieldnewControlField(String tag, + String data) + +
+          Creates a new control field with the given tag and data and returns the + instance.
+abstract  DataFieldnewDataField() + +
+          Returns a new data field instance.
+abstract  DataFieldnewDataField(String tag, + char ind1, + char ind2) + +
+          Creates a new data field with the given tag and indicators and returns the + instance.
+static MarcFactorynewInstance() + +
+          Creates a new factory instance.
+abstract  LeadernewLeader() + +
+          Returns a new leader instance.
+abstract  LeadernewLeader(String ldr) + +
+          Creates a new leader with the given String object.
+abstract  RecordnewRecord() + +
+          Returns a new record instance.
+abstract  RecordnewRecord(Leader leader) + +
+          Returns a new record instance.
+abstract  RecordnewRecord(String leader) + +
+          Returns a new record instance.
+abstract  SubfieldnewSubfield() + +
+          Returns a new subfield instance.
+abstract  SubfieldnewSubfield(char code) + +
+          Creates a new subfield with the given identifier.
+abstract  SubfieldnewSubfield(char code, + String data) + +
+          Creates a new subfield with the given identifier and data.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+MarcFactory

+
+protected MarcFactory()
+
+
+ + + + + + + + +
+Method Detail
+ +

+newInstance

+
+public static MarcFactory newInstance()
+
+
Creates a new factory instance. The implementation class to load is the + first found in the following locations: +
    +
  1. the org.marc4j.marc.MarcFactory system property
  2. +
  3. the above named property value in the + $JAVA_HOME/lib/marc4j.properties file
  4. +
  5. the class name specified in the + META-INF/services/org.marc4j.marc.MarcFactory system + resource
  6. +
  7. the default factory class
  8. +
+

+

+
+
+
+
+ +

+newControlField

+
+public abstract ControlField newControlField()
+
+
Returns a new control field instance. +

+

+ +
Returns:
ControlField
+
+
+
+ +

+newControlField

+
+public abstract ControlField newControlField(String tag)
+
+
Creates a new control field with the given tag and returns the instance. +

+

+ +
Returns:
ControlField
+
+
+
+ +

+newControlField

+
+public abstract ControlField newControlField(String tag,
+                                             String data)
+
+
Creates a new control field with the given tag and data and returns the + instance. +

+

+ +
Returns:
ControlField
+
+
+
+ +

+newDataField

+
+public abstract DataField newDataField()
+
+
Returns a new data field instance. +

+

+ +
Returns:
DataField
+
+
+
+ +

+newDataField

+
+public abstract DataField newDataField(String tag,
+                                       char ind1,
+                                       char ind2)
+
+
Creates a new data field with the given tag and indicators and returns the + instance. +

+

+ +
Returns:
DataField
+
+
+
+ +

+newLeader

+
+public abstract Leader newLeader()
+
+
Returns a new leader instance. +

+

+ +
Returns:
Leader
+
+
+
+ +

+newLeader

+
+public abstract Leader newLeader(String ldr)
+
+
Creates a new leader with the given String object. +

+

+ +
Returns:
Leader
+
+
+
+ +

+newRecord

+
+public abstract Record newRecord()
+
+
Returns a new record instance. +

+

+ +
Returns:
Record
+
+
+
+ +

+newRecord

+
+public abstract Record newRecord(Leader leader)
+
+
Returns a new record instance. +

+

+ +
Returns:
Record
+
+
+
+ +

+newRecord

+
+public abstract Record newRecord(String leader)
+
+
Returns a new record instance. +

+

+ +
Returns:
Record
+
+
+
+ +

+newSubfield

+
+public abstract Subfield newSubfield()
+
+
Returns a new subfield instance. +

+

+ +
Returns:
Leader
+
+
+
+ +

+newSubfield

+
+public abstract Subfield newSubfield(char code)
+
+
Creates a new subfield with the given identifier. +

+

+ +
Returns:
Subfield
+
+
+
+ +

+newSubfield

+
+public abstract Subfield newSubfield(char code,
+                                     String data)
+
+
Creates a new subfield with the given identifier and data. +

+

+ +
Returns:
Subfield
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/Record.html b/apidoc/org/marc4j/marc/Record.html new file mode 100644 index 0000000..61785fa --- /dev/null +++ b/apidoc/org/marc4j/marc/Record.html @@ -0,0 +1,718 @@ + + + + + + +Record (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc +
+Interface Record

+
+
All Superinterfaces:
Serializable
+
+
+
All Known Implementing Classes:
RecordImpl
+
+
+
+
public interface Record
extends Serializable
+ + +

+Represents a MARC record. +

+ +

+

+
Version:
+
$Revision: 1.12 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidaddVariableField(VariableField field) + +
+          Adds a VariableField.
+ Listfind(String pattern) + +
+          Returns a List of VariableField objects that have a data element that + matches the given regular expression.
+ Listfind(String[] tag, + String pattern) + +
+          Returns a List of VariableField objects with the given tags that have a + data element that matches the given regular expression.
+ Listfind(String tag, + String pattern) + +
+          Returns a List of VariableField objects with the given tag that have a + data element that matches the given regular expression.
+ ListgetControlFields() + +
+          Returns a list of control fields
+ StringgetControlNumber() + +
+          Returns the control number or null if no control number is + available.
+ ControlFieldgetControlNumberField() + +
+          Returns the control number field or null if no control + number field is available.
+ ListgetDataFields() + +
+          Returns a list of data fields
+ LonggetId() + +
+          Returns the identifier.
+ LeadergetLeader() + +
+          Returns the Leader.
+ StringgetType() + +
+          Returns the type of record.
+ VariableFieldgetVariableField(String tag) + +
+          Returns the first instance of the variable field with the given tag.
+ ListgetVariableFields() + +
+          Returns a list of variable fields
+ ListgetVariableFields(String tag) + +
+          Returns a list of variable fields with the given tag.
+ ListgetVariableFields(String[] tag) + +
+          Returns a list of variable fields for the given tags.
+ voidremoveVariableField(VariableField field) + +
+          Removes a variable field from the collection.
+ voidsetId(Long id) + +
+          Sets the identifier.
+ voidsetLeader(Leader leader) + +
+          Sets the Leader.
+ voidsetType(String type) + +
+          Sets the type of record.
+  +

+ + + + + + + + +
+Method Detail
+ +

+setId

+
+void setId(Long id)
+
+
Sets the identifier. + +

+ The purpose of this identifier is to provide an identifier for + persistency. +

+

+
+
+
+
Parameters:
id - the identifier
+
+
+
+ +

+getId

+
+Long getId()
+
+
Returns the identifier. +

+

+
+
+
+ +
Returns:
Long - the identifier
+
+
+
+ +

+setType

+
+void setType(String type)
+
+
Sets the type of record. +

+

+
+
+
+
Parameters:
type - the type of record
+
+
+
+ +

+getType

+
+String getType()
+
+
Returns the type of record. +

+

+
+
+
+ +
Returns:
String - the type of record
+
+
+
+ +

+addVariableField

+
+void addVariableField(VariableField field)
+
+
Adds a VariableField. +

+

+
+
+
+
Parameters:
field - the VariableField +
Throws: +
IllegalAddException - when the parameter is not a VariableField + instance
+
+
+
+ +

+removeVariableField

+
+void removeVariableField(VariableField field)
+
+
Removes a variable field from the collection. +

+

+
+
+
+
Parameters:
field - the variable field
+
+
+
+ +

+getVariableFields

+
+List getVariableFields()
+
+
Returns a list of variable fields +

+

+
+
+
+ +
Returns:
List - the variable fields
+
+
+
+ +

+getControlFields

+
+List getControlFields()
+
+
Returns a list of control fields +

+

+
+
+
+ +
Returns:
List - the control fields
+
+
+
+ +

+getDataFields

+
+List getDataFields()
+
+
Returns a list of data fields +

+

+
+
+
+ +
Returns:
List - the data fields
+
+
+
+ +

+getControlNumberField

+
+ControlField getControlNumberField()
+
+
Returns the control number field or null if no control + number field is available. +

+

+
+
+
+ +
Returns:
ControlField - the control number field
+
+
+
+ +

+getControlNumber

+
+String getControlNumber()
+
+
Returns the control number or null if no control number is + available. + + This method returns the data for a ControlField with tag + 001. +

+

+
+
+
+ +
Returns:
String - the control number
+
+
+
+ +

+getVariableField

+
+VariableField getVariableField(String tag)
+
+
Returns the first instance of the variable field with the given tag. +

+

+
+
+
+ +
Returns:
VariableField - the variable field
+
+
+
+ +

+getVariableFields

+
+List getVariableFields(String tag)
+
+
Returns a list of variable fields with the given tag. +

+

+
+
+
+ +
Returns:
List - the variable fields
+
+
+
+ +

+getVariableFields

+
+List getVariableFields(String[] tag)
+
+
Returns a list of variable fields for the given tags. + +

+ For example: + +

+ String tags = { "100", "245", "260", "300" };
+ 
+ List fields = record.getVariableFields(tags);
+ 
+

+

+
+
+
+ +
Returns:
List - the variable fields
+
+
+
+ +

+getLeader

+
+Leader getLeader()
+
+
Returns the Leader. +

+

+
+
+
+ +
Returns:
Leader - the Leader
+
+
+
+ +

+setLeader

+
+void setLeader(Leader leader)
+
+
Sets the Leader. +

+

+
+
+
+
Parameters:
leader - the Leader
+
+
+
+ +

+find

+
+List find(String pattern)
+
+
Returns a List of VariableField objects that have a data element that + matches the given regular expression. + +

+ See Pattern for more information about Java + regular expressions. +

+

+

+
+
+
+
Parameters:
pattern - the regular expression +
Returns:
List - the result list
+
+
+
+ +

+find

+
+List find(String tag,
+          String pattern)
+
+
Returns a List of VariableField objects with the given tag that have a + data element that matches the given regular expression. + +

+ See Pattern for more information about Java + regular expressions. +

+

+

+
+
+
+
Parameters:
tag - the tag value
pattern - the regular expression +
Returns:
List - the result list
+
+
+
+ +

+find

+
+List find(String[] tag,
+          String pattern)
+
+
Returns a List of VariableField objects with the given tags that have a + data element that matches the given regular expression. + +

+ See Pattern for more information about Java + regular expressions. +

+

+

+
+
+
+
Parameters:
tag - the tag values
pattern - the regular expression +
Returns:
List - the result list
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/Subfield.html b/apidoc/org/marc4j/marc/Subfield.html new file mode 100644 index 0000000..03691c6 --- /dev/null +++ b/apidoc/org/marc4j/marc/Subfield.html @@ -0,0 +1,380 @@ + + + + + + +Subfield (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc +
+Interface Subfield

+
+
All Superinterfaces:
Serializable
+
+
+
All Known Implementing Classes:
SubfieldImpl
+
+
+
+
public interface Subfield
extends Serializable
+ + +

+Represents a subfield in a MARC record. +

+ +

+

+
Version:
+
$Revision: 1.11 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ booleanfind(String pattern) + +
+          Returns true if the given regular expression matches a subsequence of the + data element.
+ chargetCode() + +
+          Returns the data element identifier.
+ StringgetData() + +
+          Returns the data element.
+ LonggetId() + +
+          Returns the identifier.
+ voidsetCode(char code) + +
+          Sets the data element identifier.
+ voidsetData(String data) + +
+          Sets the data element.
+ voidsetId(Long id) + +
+          Sets the identifier.
+  +

+ + + + + + + + +
+Method Detail
+ +

+setId

+
+void setId(Long id)
+
+
Sets the identifier. + +

+ The purpose of this identifier is to provide an identifier for + persistency. +

+

+
+
+
+
Parameters:
id - the identifier
+
+
+
+ +

+getId

+
+Long getId()
+
+
Returns the identifier. +

+

+
+
+
+ +
Returns:
Long - the identifier
+
+
+
+ +

+getCode

+
+char getCode()
+
+
Returns the data element identifier. +

+

+
+
+
+ +
Returns:
char - the data element identifier
+
+
+
+ +

+setCode

+
+void setCode(char code)
+
+
Sets the data element identifier. +

+

+
+
+
+
Parameters:
code - the data element identifier
+
+
+
+ +

+getData

+
+String getData()
+
+
Returns the data element. +

+

+
+
+
+ +
Returns:
String - the data element
+
+
+
+ +

+setData

+
+void setData(String data)
+
+
Sets the data element. +

+

+
+
+
+
Parameters:
data - the data element
+
+
+
+ +

+find

+
+boolean find(String pattern)
+
+
Returns true if the given regular expression matches a subsequence of the + data element. + + See (@link java.util.regex.Pattern} for regular expressions. +

+

+
+
+
+
Parameters:
pattern - the regular expression +
Returns:
true if the pattern matches, false othewise
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/VariableField.html b/apidoc/org/marc4j/marc/VariableField.html new file mode 100644 index 0000000..9101f36 --- /dev/null +++ b/apidoc/org/marc4j/marc/VariableField.html @@ -0,0 +1,346 @@ + + + + + + +VariableField (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc +
+Interface VariableField

+
+
All Superinterfaces:
Comparable, Serializable
+
+
+
All Known Subinterfaces:
ControlField, DataField
+
+
+
All Known Implementing Classes:
ControlFieldImpl, DataFieldImpl, VariableFieldImpl
+
+
+
+
public interface VariableField
extends Serializable, Comparable
+ + +

+Represents a variable field in a MARC record. +

+ +

+

+
Version:
+
$Revision: 1.10 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ booleanfind(String pattern) + +
+          Returns true if the given regular expression matches a subsequence of a + data element within the variable field.
+ LonggetId() + +
+          Returns the identifier.
+ StringgetTag() + +
+          Returns the tag name.
+ voidsetId(Long id) + +
+          Sets the identifier.
+ voidsetTag(String tag) + +
+          Sets the tag name.
+ + + + + + + +
Methods inherited from interface java.lang.Comparable
compareTo
+  +

+ + + + + + + + +
+Method Detail
+ +

+setId

+
+void setId(Long id)
+
+
Sets the identifier. + +

+ The purpose of this identifier is to provide an identifier for + persistency. +

+

+
+
+
+
Parameters:
id - the identifier
+
+
+
+ +

+getId

+
+Long getId()
+
+
Returns the identifier. +

+

+
+
+
+ +
Returns:
Long - the identifier
+
+
+
+ +

+getTag

+
+String getTag()
+
+
Returns the tag name. +

+

+
+
+
+ +
Returns:
String - the tag name
+
+
+
+ +

+setTag

+
+void setTag(String tag)
+
+
Sets the tag name. +

+

+
+
+
+
Parameters:
tag - the tag name
+
+
+
+ +

+find

+
+boolean find(String pattern)
+
+
Returns true if the given regular expression matches a subsequence of a + data element within the variable field. + +

+ See Pattern for more information about Java + regular expressions. +

+

+

+
+
+
+
Parameters:
pattern - the regular expression +
Returns:
true if the pattern matches, false othewise
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/class-use/ControlField.html b/apidoc/org/marc4j/marc/class-use/ControlField.html new file mode 100644 index 0000000..32cf348 --- /dev/null +++ b/apidoc/org/marc4j/marc/class-use/ControlField.html @@ -0,0 +1,275 @@ + + + + + + +Uses of Interface org.marc4j.marc.ControlField (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.marc4j.marc.ControlField

+
+ + + + + + + + + + + + + +
+Packages that use ControlField
org.marc4j.marcInterfaces for the record object model. 
org.marc4j.marc.implDefault implementation of the MARC record object model. 
+  +

+ + + + + +
+Uses of ControlField in org.marc4j.marc
+  +

+ + + + + + + + + + + + + + + + + + + + + +
Methods in org.marc4j.marc that return ControlField
+ ControlFieldRecord.getControlNumberField() + +
+          Returns the control number field or null if no control + number field is available.
+abstract  ControlFieldMarcFactory.newControlField() + +
+          Returns a new control field instance.
+abstract  ControlFieldMarcFactory.newControlField(String tag) + +
+          Creates a new control field with the given tag and returns the instance.
+abstract  ControlFieldMarcFactory.newControlField(String tag, + String data) + +
+          Creates a new control field with the given tag and data and returns the + instance.
+  +

+ + + + + +
+Uses of ControlField in org.marc4j.marc.impl
+  +

+ + + + + + + + + +
Classes in org.marc4j.marc.impl that implement ControlField
+ classControlFieldImpl + +
+          Represents a control field in a MARC record.
+  +

+ + + + + + + + + + + + + + + + + + + + + +
Methods in org.marc4j.marc.impl that return ControlField
+ ControlFieldRecordImpl.getControlNumberField() + +
+          Returns the control number field or null if no control + number field is available.
+ ControlFieldMarcFactoryImpl.newControlField() + +
+          Returns a new control field instance.
+ ControlFieldMarcFactoryImpl.newControlField(String tag) + +
+          Creates a new control field with the given tag and returns the instance.
+ ControlFieldMarcFactoryImpl.newControlField(String tag, + String data) + +
+          Creates a new control field with the given tag and data and returns the + instance.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/class-use/DataField.html b/apidoc/org/marc4j/marc/class-use/DataField.html new file mode 100644 index 0000000..00a6868 --- /dev/null +++ b/apidoc/org/marc4j/marc/class-use/DataField.html @@ -0,0 +1,243 @@ + + + + + + +Uses of Interface org.marc4j.marc.DataField (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.marc4j.marc.DataField

+
+ + + + + + + + + + + + + +
+Packages that use DataField
org.marc4j.marcInterfaces for the record object model. 
org.marc4j.marc.implDefault implementation of the MARC record object model. 
+  +

+ + + + + +
+Uses of DataField in org.marc4j.marc
+  +

+ + + + + + + + + + + + + +
Methods in org.marc4j.marc that return DataField
+abstract  DataFieldMarcFactory.newDataField() + +
+          Returns a new data field instance.
+abstract  DataFieldMarcFactory.newDataField(String tag, + char ind1, + char ind2) + +
+          Creates a new data field with the given tag and indicators and returns the + instance.
+  +

+ + + + + +
+Uses of DataField in org.marc4j.marc.impl
+  +

+ + + + + + + + + +
Classes in org.marc4j.marc.impl that implement DataField
+ classDataFieldImpl + +
+          Represents a data field in a MARC record.
+  +

+ + + + + + + + + + + + + +
Methods in org.marc4j.marc.impl that return DataField
+ DataFieldMarcFactoryImpl.newDataField() + +
+          Returns a new data field instance.
+ DataFieldMarcFactoryImpl.newDataField(String tag, + char ind1, + char ind2) + +
+          Creates a new data field with the given tag and indicators and returns + the instance.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/class-use/IllegalAddException.html b/apidoc/org/marc4j/marc/class-use/IllegalAddException.html new file mode 100644 index 0000000..2fabd3a --- /dev/null +++ b/apidoc/org/marc4j/marc/class-use/IllegalAddException.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.marc.IllegalAddException (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.marc.IllegalAddException

+
+No usage of org.marc4j.marc.IllegalAddException +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/class-use/Leader.html b/apidoc/org/marc4j/marc/class-use/Leader.html new file mode 100644 index 0000000..9ff3b3b --- /dev/null +++ b/apidoc/org/marc4j/marc/class-use/Leader.html @@ -0,0 +1,301 @@ + + + + + + +Uses of Interface org.marc4j.marc.Leader (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.marc4j.marc.Leader

+
+ + + + + + + + + + + + + +
+Packages that use Leader
org.marc4j.marcInterfaces for the record object model. 
org.marc4j.marc.implDefault implementation of the MARC record object model. 
+  +

+ + + + + +
+Uses of Leader in org.marc4j.marc
+  +

+ + + + + + + + + + + + + + + + + +
Methods in org.marc4j.marc that return Leader
+ LeaderRecord.getLeader() + +
+          Returns the Leader.
+abstract  LeaderMarcFactory.newLeader() + +
+          Returns a new leader instance.
+abstract  LeaderMarcFactory.newLeader(String ldr) + +
+          Creates a new leader with the given String object.
+  +

+ + + + + + + + + + + + + +
Methods in org.marc4j.marc with parameters of type Leader
+abstract  RecordMarcFactory.newRecord(Leader leader) + +
+          Returns a new record instance.
+ voidRecord.setLeader(Leader leader) + +
+          Sets the Leader.
+  +

+ + + + + +
+Uses of Leader in org.marc4j.marc.impl
+  +

+ + + + + + + + + +
Classes in org.marc4j.marc.impl that implement Leader
+ classLeaderImpl + +
+          Represents a record label in a MARC record.
+  +

+ + + + + + + + + + + + + + + + + +
Methods in org.marc4j.marc.impl that return Leader
+ LeaderRecordImpl.getLeader() + +
+           
+ LeaderMarcFactoryImpl.newLeader() + +
+          Returns a new leader instance.
+ LeaderMarcFactoryImpl.newLeader(String ldr) + +
+          Creates a new leader with the given String object.
+  +

+ + + + + + + + + + + + + +
Methods in org.marc4j.marc.impl with parameters of type Leader
+ RecordMarcFactoryImpl.newRecord(Leader leader) + +
+           
+ voidRecordImpl.setLeader(Leader leader) + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/class-use/MarcFactory.html b/apidoc/org/marc4j/marc/class-use/MarcFactory.html new file mode 100644 index 0000000..48000dd --- /dev/null +++ b/apidoc/org/marc4j/marc/class-use/MarcFactory.html @@ -0,0 +1,205 @@ + + + + + + +Uses of Class org.marc4j.marc.MarcFactory (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.marc.MarcFactory

+
+ + + + + + + + + + + + + +
+Packages that use MarcFactory
org.marc4j.marcInterfaces for the record object model. 
org.marc4j.marc.implDefault implementation of the MARC record object model. 
+  +

+ + + + + +
+Uses of MarcFactory in org.marc4j.marc
+  +

+ + + + + + + + + +
Methods in org.marc4j.marc that return MarcFactory
+static MarcFactoryMarcFactory.newInstance() + +
+          Creates a new factory instance.
+  +

+ + + + + +
+Uses of MarcFactory in org.marc4j.marc.impl
+  +

+ + + + + + + + + +
Subclasses of MarcFactory in org.marc4j.marc.impl
+ classMarcFactoryImpl + +
+          Factory for creating MARC record objects.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/class-use/Record.html b/apidoc/org/marc4j/marc/class-use/Record.html new file mode 100644 index 0000000..43292fb --- /dev/null +++ b/apidoc/org/marc4j/marc/class-use/Record.html @@ -0,0 +1,371 @@ + + + + + + +Uses of Interface org.marc4j.marc.Record (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.marc4j.marc.Record

+
+ + + + + + + + + + + + + + + + + +
+Packages that use Record
org.marc4jClasses to read and write MARC and MARCXML records. 
org.marc4j.marcInterfaces for the record object model. 
org.marc4j.marc.implDefault implementation of the MARC record object model. 
+  +

+ + + + + +
+Uses of Record in org.marc4j
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Methods in org.marc4j that return Record
+ RecordMarcXmlReader.next() + +
+          Returns the next record in the iteration.
+ RecordMarcStreamReader.next() + +
+          Returns the next record in the iteration.
+ RecordMarcReader.next() + +
+          Returns the next record in the iteration.
+ RecordMarcPermissiveStreamReader.next() + +
+          Returns the next record in the iteration.
+ RecordMarcDirStreamReader.next() + +
+          Returns the next record in the iteration.
+ RecordRecordStack.pop() + +
+          Removes the Record object from the stack and returns that + object.
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Methods in org.marc4j with parameters of type Record
+ voidRecordStack.push(Record record) + +
+          Pushes a Record object on the stack.
+protected  voidMarcXmlWriter.toXml(Record record) + +
+           
+ voidMarcXmlWriter.write(Record record) + +
+          Writes a Record object to the result.
+ voidMarcWriter.write(Record record) + +
+          Writes a single Record to the output stream.
+ voidMarcStreamWriter.write(Record record) + +
+          Writes a Record object to the writer.
+  +

+ + + + + +
+Uses of Record in org.marc4j.marc
+  +

+ + + + + + + + + + + + + + + + + +
Methods in org.marc4j.marc that return Record
+abstract  RecordMarcFactory.newRecord() + +
+          Returns a new record instance.
+abstract  RecordMarcFactory.newRecord(Leader leader) + +
+          Returns a new record instance.
+abstract  RecordMarcFactory.newRecord(String leader) + +
+          Returns a new record instance.
+  +

+ + + + + +
+Uses of Record in org.marc4j.marc.impl
+  +

+ + + + + + + + + +
Classes in org.marc4j.marc.impl that implement Record
+ classRecordImpl + +
+          Represents a MARC record.
+  +

+ + + + + + + + + + + + + + + + + +
Methods in org.marc4j.marc.impl that return Record
+ RecordMarcFactoryImpl.newRecord() + +
+          Returns a new record instance with a default leader.
+ RecordMarcFactoryImpl.newRecord(Leader leader) + +
+           
+ RecordMarcFactoryImpl.newRecord(String leader) + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/class-use/Subfield.html b/apidoc/org/marc4j/marc/class-use/Subfield.html new file mode 100644 index 0000000..6b02cb3 --- /dev/null +++ b/apidoc/org/marc4j/marc/class-use/Subfield.html @@ -0,0 +1,337 @@ + + + + + + +Uses of Interface org.marc4j.marc.Subfield (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.marc4j.marc.Subfield

+
+ + + + + + + + + + + + + +
+Packages that use Subfield
org.marc4j.marcInterfaces for the record object model. 
org.marc4j.marc.implDefault implementation of the MARC record object model. 
+  +

+ + + + + +
+Uses of Subfield in org.marc4j.marc
+  +

+ + + + + + + + + + + + + + + + + + + + + +
Methods in org.marc4j.marc that return Subfield
+ SubfieldDataField.getSubfield(char code) + +
+          Returns the first Subfield with the given code.
+abstract  SubfieldMarcFactory.newSubfield() + +
+          Returns a new subfield instance.
+abstract  SubfieldMarcFactory.newSubfield(char code) + +
+          Creates a new subfield with the given identifier.
+abstract  SubfieldMarcFactory.newSubfield(char code, + String data) + +
+          Creates a new subfield with the given identifier and data.
+  +

+ + + + + + + + + + + + + + + + + +
Methods in org.marc4j.marc with parameters of type Subfield
+ voidDataField.addSubfield(int index, + Subfield subfield) + +
+          Inserts a Subfield at the specified position.
+ voidDataField.addSubfield(Subfield subfield) + +
+          Adds a Subfield.
+ voidDataField.removeSubfield(Subfield subfield) + +
+          Removes a Subfield.
+  +

+ + + + + +
+Uses of Subfield in org.marc4j.marc.impl
+  +

+ + + + + + + + + +
Classes in org.marc4j.marc.impl that implement Subfield
+ classSubfieldImpl + +
+          Represents a subfield in a MARC record.
+  +

+ + + + + + + + + + + + + + + + + + + + + +
Methods in org.marc4j.marc.impl that return Subfield
+ SubfieldDataFieldImpl.getSubfield(char code) + +
+           
+ SubfieldMarcFactoryImpl.newSubfield() + +
+          Returns a new subfield instance.
+ SubfieldMarcFactoryImpl.newSubfield(char code) + +
+          Creates a new subfield with the given identifier.
+ SubfieldMarcFactoryImpl.newSubfield(char code, + String data) + +
+          Creates a new subfield with the given identifier and data.
+  +

+ + + + + + + + + + + + + + + + + +
Methods in org.marc4j.marc.impl with parameters of type Subfield
+ voidDataFieldImpl.addSubfield(int index, + Subfield subfield) + +
+          Inserts a Subfield at the specified position.
+ voidDataFieldImpl.addSubfield(Subfield subfield) + +
+          Adds a Subfield.
+ voidDataFieldImpl.removeSubfield(Subfield subfield) + +
+          Removes a Subfield.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/class-use/VariableField.html b/apidoc/org/marc4j/marc/class-use/VariableField.html new file mode 100644 index 0000000..971a6e5 --- /dev/null +++ b/apidoc/org/marc4j/marc/class-use/VariableField.html @@ -0,0 +1,310 @@ + + + + + + +Uses of Interface org.marc4j.marc.VariableField (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Interface
org.marc4j.marc.VariableField

+
+ + + + + + + + + + + + + +
+Packages that use VariableField
org.marc4j.marcInterfaces for the record object model. 
org.marc4j.marc.implDefault implementation of the MARC record object model. 
+  +

+ + + + + +
+Uses of VariableField in org.marc4j.marc
+  +

+ + + + + + + + + + + + + +
Subinterfaces of VariableField in org.marc4j.marc
+ interfaceControlField + +
+          Represents a control field in a MARC record.
+ interfaceDataField + +
+          Represents a data field in a MARC record.
+  +

+ + + + + + + + + +
Methods in org.marc4j.marc that return VariableField
+ VariableFieldRecord.getVariableField(String tag) + +
+          Returns the first instance of the variable field with the given tag.
+  +

+ + + + + + + + + + + + + +
Methods in org.marc4j.marc with parameters of type VariableField
+ voidRecord.addVariableField(VariableField field) + +
+          Adds a VariableField.
+ voidRecord.removeVariableField(VariableField field) + +
+          Removes a variable field from the collection.
+  +

+ + + + + +
+Uses of VariableField in org.marc4j.marc.impl
+  +

+ + + + + + + + + + + + + + + + + +
Classes in org.marc4j.marc.impl that implement VariableField
+ classControlFieldImpl + +
+          Represents a control field in a MARC record.
+ classDataFieldImpl + +
+          Represents a data field in a MARC record.
+ classVariableFieldImpl + +
+          Represents a variable field in a MARC record.
+  +

+ + + + + + + + + +
Methods in org.marc4j.marc.impl that return VariableField
+ VariableFieldRecordImpl.getVariableField(String tag) + +
+           
+  +

+ + + + + + + + + + + + + +
Methods in org.marc4j.marc.impl with parameters of type VariableField
+ voidRecordImpl.addVariableField(VariableField field) + +
+          Adds a VariableField being a ControlField + or DataField.
+ voidRecordImpl.removeVariableField(VariableField field) + +
+           
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/ControlFieldImpl.html b/apidoc/org/marc4j/marc/impl/ControlFieldImpl.html new file mode 100644 index 0000000..43c52f0 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/ControlFieldImpl.html @@ -0,0 +1,480 @@ + + + + + + +ControlFieldImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc.impl +
+Class ControlFieldImpl

+
+java.lang.Object
+  extended by org.marc4j.marc.impl.VariableFieldImpl
+      extended by org.marc4j.marc.impl.ControlFieldImpl
+
+
+
All Implemented Interfaces:
Serializable, Comparable, ControlField, VariableField
+
+
+
+
public class ControlFieldImpl
extends VariableFieldImpl
implements ControlField
+ + +

+Represents a control field in a MARC record. +

+ +

+

+
Version:
+
$Revision: 1.4 $
+
Author:
+
Bas Peters
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + + + + +
+Constructor Summary
ControlFieldImpl() + +
+          Creates a new ControlField.
ControlFieldImpl(String tag) + +
+          Creates a new ControlField and sets the tag name.
ControlFieldImpl(String tag, + String data) + +
+          Creates a new ControlField and sets the tag name and the + data element.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ booleanfind(String pattern) + +
+          Returns true if the given regular expression matches a subsequence of a + data element within the variable field.
+ StringgetData() + +
+          Returns the data element
+ LonggetId() + +
+          Returns the identifier.
+ voidsetData(String data) + +
+          Sets the data element.
+ voidsetId(Long id) + +
+          Sets the identifier.
+ StringtoString() + +
+          Returns a string representation of this control field.
+ + + + + + + +
Methods inherited from class org.marc4j.marc.impl.VariableFieldImpl
compareTo, getTag, setTag
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+ + + + + + + +
Methods inherited from interface org.marc4j.marc.VariableField
getTag, setTag
+ + + + + + + +
Methods inherited from interface java.lang.Comparable
compareTo
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+ControlFieldImpl

+
+public ControlFieldImpl()
+
+
Creates a new ControlField. +

+

+
+ +

+ControlFieldImpl

+
+public ControlFieldImpl(String tag)
+
+
Creates a new ControlField and sets the tag name. +

+

+
+ +

+ControlFieldImpl

+
+public ControlFieldImpl(String tag,
+                        String data)
+
+
Creates a new ControlField and sets the tag name and the + data element. +

+

+ + + + + + + + +
+Method Detail
+ +

+setData

+
+public void setData(String data)
+
+
Description copied from interface: ControlField
+
Sets the data element. +

+

+
Specified by:
setData in interface ControlField
+
+
+
Parameters:
data - the data element
+
+
+
+ +

+getData

+
+public String getData()
+
+
Description copied from interface: ControlField
+
Returns the data element +

+

+
Specified by:
getData in interface ControlField
+
+
+ +
Returns:
String - the data element
+
+
+
+ +

+toString

+
+public String toString()
+
+
Returns a string representation of this control field. + +

+ Example: + +

+     001 12883376
+ 
+

+

+
Overrides:
toString in class VariableFieldImpl
+
+
+ +
Returns:
String - a string representation of this control field
+
+
+
+ +

+find

+
+public boolean find(String pattern)
+
+
Description copied from interface: VariableField
+
Returns true if the given regular expression matches a subsequence of a + data element within the variable field. + +

+ See Pattern for more information about Java + regular expressions. +

+

+

+
Specified by:
find in interface VariableField
+
+
+
Parameters:
pattern - the regular expression +
Returns:
true if the pattern matches, false othewise
+
+
+
+ +

+setId

+
+public void setId(Long id)
+
+
Description copied from interface: VariableField
+
Sets the identifier. + +

+ The purpose of this identifier is to provide an identifier for + persistency. +

+

+
Specified by:
setId in interface VariableField
+
+
+
Parameters:
id - the identifier
+
+
+
+ +

+getId

+
+public Long getId()
+
+
Description copied from interface: VariableField
+
Returns the identifier. +

+

+
Specified by:
getId in interface VariableField
+
+
+ +
Returns:
Long - the identifier
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/DataFieldImpl.html b/apidoc/org/marc4j/marc/impl/DataFieldImpl.html new file mode 100644 index 0000000..5ea5942 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/DataFieldImpl.html @@ -0,0 +1,672 @@ + + + + + + +DataFieldImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc.impl +
+Class DataFieldImpl

+
+java.lang.Object
+  extended by org.marc4j.marc.impl.VariableFieldImpl
+      extended by org.marc4j.marc.impl.DataFieldImpl
+
+
+
All Implemented Interfaces:
Serializable, Comparable, DataField, VariableField
+
+
+
+
public class DataFieldImpl
extends VariableFieldImpl
implements DataField
+ + +

+Represents a data field in a MARC record. +

+ +

+

+
Version:
+
$Revision: 1.6 $
+
Author:
+
Bas Peters
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
DataFieldImpl() + +
+          Creates a new DataField.
DataFieldImpl(String tag, + char ind1, + char ind2) + +
+          Creates a new DataField and sets the tag name and the + first and second indicator.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidaddSubfield(int index, + Subfield subfield) + +
+          Inserts a Subfield at the specified position.
+ voidaddSubfield(Subfield subfield) + +
+          Adds a Subfield.
+ booleanfind(String pattern) + +
+          Returns true if the given regular expression matches a subsequence of a + data element within the variable field.
+ LonggetId() + +
+          Returns the identifier.
+ chargetIndicator1() + +
+          Returns the first indicator
+ chargetIndicator2() + +
+          Returns the second indicator
+ SubfieldgetSubfield(char code) + +
+          Returns the first Subfield with the given code.
+ ListgetSubfields() + +
+          Returns the list of Subfield objects.
+ ListgetSubfields(char code) + +
+          Returns the list of Subfield objects for the goven + subfield code.
+ voidremoveSubfield(Subfield subfield) + +
+          Removes a Subfield.
+ voidsetId(Long id) + +
+          Sets the identifier.
+ voidsetIndicator1(char ind1) + +
+          Sets the first indicator.
+ voidsetIndicator2(char ind2) + +
+          Sets the second indicator.
+ StringtoString() + +
+          Returns a string representation of this data field.
+ + + + + + + +
Methods inherited from class org.marc4j.marc.impl.VariableFieldImpl
compareTo, getTag, setTag
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+ + + + + + + +
Methods inherited from interface org.marc4j.marc.VariableField
getTag, setTag
+ + + + + + + +
Methods inherited from interface java.lang.Comparable
compareTo
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+DataFieldImpl

+
+public DataFieldImpl()
+
+
Creates a new DataField. +

+

+
+ +

+DataFieldImpl

+
+public DataFieldImpl(String tag,
+                     char ind1,
+                     char ind2)
+
+
Creates a new DataField and sets the tag name and the + first and second indicator. +

+

+
Parameters:
tag - the tag name
ind1 - the first indicator
ind2 - the second indicator
+
+ + + + + + + + +
+Method Detail
+ +

+setIndicator1

+
+public void setIndicator1(char ind1)
+
+
Sets the first indicator. +

+

+
Specified by:
setIndicator1 in interface DataField
+
+
+
Parameters:
ind1 - the first indicator
+
+
+
+ +

+getIndicator1

+
+public char getIndicator1()
+
+
Returns the first indicator +

+

+
Specified by:
getIndicator1 in interface DataField
+
+
+ +
Returns:
char - the first indicator
+
+
+
+ +

+setIndicator2

+
+public void setIndicator2(char ind2)
+
+
Sets the second indicator. +

+

+
Specified by:
setIndicator2 in interface DataField
+
+
+
Parameters:
ind2 - the second indicator
+
+
+
+ +

+getIndicator2

+
+public char getIndicator2()
+
+
Returns the second indicator +

+

+
Specified by:
getIndicator2 in interface DataField
+
+
+ +
Returns:
char - the second indicator
+
+
+
+ +

+addSubfield

+
+public void addSubfield(Subfield subfield)
+
+
Adds a Subfield. +

+

+
Specified by:
addSubfield in interface DataField
+
+
+
Parameters:
subfield - the Subfield object +
Throws: +
IllegalAddException - when the parameter is not a Subfield instance
+
+
+
+ +

+addSubfield

+
+public void addSubfield(int index,
+                        Subfield subfield)
+
+
Inserts a Subfield at the specified position. +

+

+
Specified by:
addSubfield in interface DataField
+
+
+
Parameters:
index - the position within the list
subfield - the Subfield object +
Throws: +
IllegalAddException - when the parameter is not a Subfield instance
+
+
+
+ +

+removeSubfield

+
+public void removeSubfield(Subfield subfield)
+
+
Removes a Subfield. +

+

+
Specified by:
removeSubfield in interface DataField
+
+
+
+
+
+
+ +

+getSubfields

+
+public List getSubfields()
+
+
Returns the list of Subfield objects. +

+

+
Specified by:
getSubfields in interface DataField
+
+
+ +
Returns:
List - the list of Subfield objects
+
+
+
+ +

+getSubfields

+
+public List getSubfields(char code)
+
+
Description copied from interface: DataField
+
Returns the list of Subfield objects for the goven + subfield code. +

+

+
Specified by:
getSubfields in interface DataField
+
+
+
Parameters:
code - the subfield code +
Returns:
List - the list of Subfield objects
+
+
+
+ +

+getSubfield

+
+public Subfield getSubfield(char code)
+
+
Description copied from interface: DataField
+
Returns the first Subfield with the given code. +

+

+
Specified by:
getSubfield in interface DataField
+
+
+
Parameters:
code - the subfield code +
Returns:
Subfield - the subfield object or null if no subfield is found
+
+
+
+ +

+find

+
+public boolean find(String pattern)
+
+
Description copied from interface: VariableField
+
Returns true if the given regular expression matches a subsequence of a + data element within the variable field. + +

+ See Pattern for more information about Java + regular expressions. +

+

+

+
Specified by:
find in interface VariableField
+
+
+
Parameters:
pattern - the regular expression +
Returns:
true if the pattern matches, false othewise
+
+
+
+ +

+toString

+
+public String toString()
+
+
Returns a string representation of this data field. + +

+ Example: + +

+    245 10$aSummerland /$cMichael Chabon.
+ 
+

+

+
Overrides:
toString in class VariableFieldImpl
+
+
+ +
Returns:
String - a string representation of this data field
+
+
+
+ +

+setId

+
+public void setId(Long id)
+
+
Description copied from interface: VariableField
+
Sets the identifier. + +

+ The purpose of this identifier is to provide an identifier for + persistency. +

+

+
Specified by:
setId in interface VariableField
+
+
+
Parameters:
id - the identifier
+
+
+
+ +

+getId

+
+public Long getId()
+
+
Description copied from interface: VariableField
+
Returns the identifier. +

+

+
Specified by:
getId in interface VariableField
+
+
+ +
Returns:
Long - the identifier
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/LeaderImpl.html b/apidoc/org/marc4j/marc/impl/LeaderImpl.html new file mode 100644 index 0000000..5425cbc --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/LeaderImpl.html @@ -0,0 +1,897 @@ + + + + + + +LeaderImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc.impl +
+Class LeaderImpl

+
+java.lang.Object
+  extended by org.marc4j.marc.impl.LeaderImpl
+
+
+
All Implemented Interfaces:
Serializable, Leader
+
+
+
+
public class LeaderImpl
extends Object
implements Leader
+ + +

+Represents a record label in a MARC record. +

+ +

+

+
Version:
+
$Revision: 1.3 $
+
Author:
+
Bas Peters
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
LeaderImpl() + +
+          Default constructor.
LeaderImpl(String ldr) + +
+          Creates a new leader from a String object.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ intgetBaseAddressOfData() + +
+          Returns the base address of data (positions 12-16).
+ chargetCharCodingScheme() + +
+          Returns the character coding scheme (position 09).
+ char[]getEntryMap() + +
+          Returns the entry map (positions 20-23).
+ LonggetId() + +
+          Returns the identifier.
+ char[]getImplDefined1() + +
+          Returns implementation defined values (positions 07-08).
+ char[]getImplDefined2() + +
+          Returns implementation defined values (positions 17-19).
+ intgetIndicatorCount() + +
+          Returns the indicator count (positions 10).
+ intgetRecordLength() + +
+          Returns the logical record length (positions 00-04).
+ chargetRecordStatus() + +
+          Returns the record status (positions 05).
+ intgetSubfieldCodeLength() + +
+          Returns the subfield code length (position 11).
+ chargetTypeOfRecord() + +
+          Returns the record type (position 06).
+ Stringmarshal() + +
+          Creates a string object from this leader object.
+ voidsetBaseAddressOfData(int baseAddressOfData) + +
+          Sets the base address of data (positions 12-16).
+ voidsetCharCodingScheme(char charCodingScheme) + +
+          Sets the character encoding scheme (position 09).
+ voidsetEntryMap(char[] entryMap) + +
+          Sets the entry map (positions 20-23).
+ voidsetId(Long id) + +
+          Sets the identifier.
+ voidsetImplDefined1(char[] implDefined1) + +
+          Sets implementation defined values (position 07-08).
+ voidsetImplDefined2(char[] implDefined2) + +
+          Sets implementation defined values (positions 17-19).
+ voidsetIndicatorCount(int indicatorCount) + +
+          Sets the indicator count (position 10).
+ voidsetRecordLength(int recordLength) + +
+          Sets the logical record length (positions 00-04).
+ voidsetRecordStatus(char recordStatus) + +
+          Sets the record status (position 05).
+ voidsetSubfieldCodeLength(int subfieldCodeLength) + +
+          Sets the subfield code length (position 11).
+ voidsetTypeOfRecord(char typeOfRecord) + +
+          Sets the type of record (position 06).
+ StringtoString() + +
+          Returns a string representation of this leader.
+ voidunmarshal(String ldr) + +
+           + Creates a leader object from a string object.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+LeaderImpl

+
+public LeaderImpl()
+
+
Default constructor. +

+

+
+ +

+LeaderImpl

+
+public LeaderImpl(String ldr)
+
+
Creates a new leader from a String object. +

+

+
Parameters:
ldr - the leader string value
+
+ + + + + + + + +
+Method Detail
+ +

+setRecordLength

+
+public void setRecordLength(int recordLength)
+
+
Sets the logical record length (positions 00-04). +

+

+
Specified by:
setRecordLength in interface Leader
+
+
+
Parameters:
recordLength - integer representing the record length
+
+
+
+ +

+setRecordStatus

+
+public void setRecordStatus(char recordStatus)
+
+
Sets the record status (position 05). +

+

+
Specified by:
setRecordStatus in interface Leader
+
+
+
Parameters:
recordStatus - character representing the record status
+
+
+
+ +

+setTypeOfRecord

+
+public void setTypeOfRecord(char typeOfRecord)
+
+
Sets the type of record (position 06). +

+

+
Specified by:
setTypeOfRecord in interface Leader
+
+
+
Parameters:
typeOfRecord - character representing the type of record
+
+
+
+ +

+setImplDefined1

+
+public void setImplDefined1(char[] implDefined1)
+
+
Sets implementation defined values (position 07-08). +

+

+
Specified by:
setImplDefined1 in interface Leader
+
+
+
Parameters:
implDefined1 - character array representing the implementation defined data
+
+
+
+ +

+setCharCodingScheme

+
+public void setCharCodingScheme(char charCodingScheme)
+
+
Sets the character encoding scheme (position 09). +

+

+
Specified by:
setCharCodingScheme in interface Leader
+
+
+
Parameters:
charCodingScheme - character representing the character encoding
+
+
+
+ +

+setIndicatorCount

+
+public void setIndicatorCount(int indicatorCount)
+
+
Sets the indicator count (position 10). +

+

+
Specified by:
setIndicatorCount in interface Leader
+
+
+
Parameters:
indicatorCount - integer representing the number of indicators present in a + data field
+
+
+
+ +

+setSubfieldCodeLength

+
+public void setSubfieldCodeLength(int subfieldCodeLength)
+
+
Sets the subfield code length (position 11). +

+

+
Specified by:
setSubfieldCodeLength in interface Leader
+
+
+
Parameters:
subfieldCodeLength - integer representing the subfield code length
+
+
+
+ +

+setBaseAddressOfData

+
+public void setBaseAddressOfData(int baseAddressOfData)
+
+
Sets the base address of data (positions 12-16). +

+

+
Specified by:
setBaseAddressOfData in interface Leader
+
+
+
Parameters:
baseAddressOfData - integer representing the base address of data
+
+
+
+ +

+setImplDefined2

+
+public void setImplDefined2(char[] implDefined2)
+
+
Sets implementation defined values (positions 17-19). +

+

+
Specified by:
setImplDefined2 in interface Leader
+
+
+
Parameters:
implDefined2 - character array representing the implementation defined data
+
+
+
+ +

+setEntryMap

+
+public void setEntryMap(char[] entryMap)
+
+
Sets the entry map (positions 20-23). +

+

+
Specified by:
setEntryMap in interface Leader
+
+
+
Parameters:
entryMap - character array representing the entry map
+
+
+
+ +

+getRecordLength

+
+public int getRecordLength()
+
+
Returns the logical record length (positions 00-04). +

+

+
Specified by:
getRecordLength in interface Leader
+
+
+ +
Returns:
int- the record length
+
+
+
+ +

+getRecordStatus

+
+public char getRecordStatus()
+
+
Returns the record status (positions 05). +

+

+
Specified by:
getRecordStatus in interface Leader
+
+
+ +
Returns:
char- the record status
+
+
+
+ +

+getTypeOfRecord

+
+public char getTypeOfRecord()
+
+
Returns the record type (position 06). +

+

+
Specified by:
getTypeOfRecord in interface Leader
+
+
+ +
Returns:
char- the record type
+
+
+
+ +

+getImplDefined1

+
+public char[] getImplDefined1()
+
+
Returns implementation defined values (positions 07-08). +

+

+
Specified by:
getImplDefined1 in interface Leader
+
+
+ +
Returns:
char[]- implementation defined values
+
+
+
+ +

+getCharCodingScheme

+
+public char getCharCodingScheme()
+
+
Returns the character coding scheme (position 09). +

+

+
Specified by:
getCharCodingScheme in interface Leader
+
+
+ +
Returns:
char- the character coding scheme
+
+
+
+ +

+getIndicatorCount

+
+public int getIndicatorCount()
+
+
Returns the indicator count (positions 10). +

+

+
Specified by:
getIndicatorCount in interface Leader
+
+
+ +
Returns:
int- the indicator count
+
+
+
+ +

+getSubfieldCodeLength

+
+public int getSubfieldCodeLength()
+
+
Returns the subfield code length (position 11). +

+

+
Specified by:
getSubfieldCodeLength in interface Leader
+
+
+ +
Returns:
int- the subfield code length
+
+
+
+ +

+getBaseAddressOfData

+
+public int getBaseAddressOfData()
+
+
Returns the base address of data (positions 12-16). +

+

+
Specified by:
getBaseAddressOfData in interface Leader
+
+
+ +
Returns:
int- the base address of data
+
+
+
+ +

+getImplDefined2

+
+public char[] getImplDefined2()
+
+
Returns implementation defined values (positions 17-19). +

+

+
Specified by:
getImplDefined2 in interface Leader
+
+
+ +
Returns:
char[]- implementation defined values
+
+
+
+ +

+getEntryMap

+
+public char[] getEntryMap()
+
+
Returns the entry map (positions 20-23). +

+

+
Specified by:
getEntryMap in interface Leader
+
+
+ +
Returns:
char[]- the entry map
+
+
+
+ +

+unmarshal

+
+public void unmarshal(String ldr)
+
+

+ Creates a leader object from a string object. +

+ +

+ Indicator count and subfield code length are defaulted to 2 if they are + not integer values. +

+

+

+
Specified by:
unmarshal in interface Leader
+
+
+
Parameters:
ldr - the leader
+
+
+
+ +

+marshal

+
+public String marshal()
+
+
Creates a string object from this leader object. +

+

+
Specified by:
marshal in interface Leader
+
+
+ +
Returns:
String - the string object from this leader object
+
+
+
+ +

+toString

+
+public String toString()
+
+
Returns a string representation of this leader. + +

+ Example: + +

+  00714cam a2200205 a 4500
+ 
+

+

+
Overrides:
toString in class Object
+
+
+
+
+
+
+ +

+setId

+
+public void setId(Long id)
+
+
Description copied from interface: Leader
+
Sets the identifier. + +

+ The purpose of this identifier is to provide an identifier for + persistency. +

+

+
Specified by:
setId in interface Leader
+
+
+
Parameters:
id - the identifier
+
+
+
+ +

+getId

+
+public Long getId()
+
+
Description copied from interface: Leader
+
Returns the identifier. +

+

+
Specified by:
getId in interface Leader
+
+
+ +
Returns:
Long - the identifier
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/MarcFactoryImpl.html b/apidoc/org/marc4j/marc/impl/MarcFactoryImpl.html new file mode 100644 index 0000000..72930d2 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/MarcFactoryImpl.html @@ -0,0 +1,591 @@ + + + + + + +MarcFactoryImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc.impl +
+Class MarcFactoryImpl

+
+java.lang.Object
+  extended by org.marc4j.marc.MarcFactory
+      extended by org.marc4j.marc.impl.MarcFactoryImpl
+
+
+
+
public class MarcFactoryImpl
extends MarcFactory
+ + +

+Factory for creating MARC record objects. +

+ +

+

+
Version:
+
$Revision: 1.3 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
MarcFactoryImpl() + +
+          Default constructor.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ ControlFieldnewControlField() + +
+          Returns a new control field instance.
+ ControlFieldnewControlField(String tag) + +
+          Creates a new control field with the given tag and returns the instance.
+ ControlFieldnewControlField(String tag, + String data) + +
+          Creates a new control field with the given tag and data and returns the + instance.
+ DataFieldnewDataField() + +
+          Returns a new data field instance.
+ DataFieldnewDataField(String tag, + char ind1, + char ind2) + +
+          Creates a new data field with the given tag and indicators and returns + the instance.
+ LeadernewLeader() + +
+          Returns a new leader instance.
+ LeadernewLeader(String ldr) + +
+          Creates a new leader with the given String object.
+ RecordnewRecord() + +
+          Returns a new record instance with a default leader.
+ RecordnewRecord(Leader leader) + +
+          Returns a new record instance.
+ RecordnewRecord(String leader) + +
+          Returns a new record instance.
+ SubfieldnewSubfield() + +
+          Returns a new subfield instance.
+ SubfieldnewSubfield(char code) + +
+          Creates a new subfield with the given identifier.
+ SubfieldnewSubfield(char code, + String data) + +
+          Creates a new subfield with the given identifier and data.
+ + + + + + + +
Methods inherited from class org.marc4j.marc.MarcFactory
newInstance
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+MarcFactoryImpl

+
+public MarcFactoryImpl()
+
+
Default constructor. +

+

+ + + + + + + + +
+Method Detail
+ +

+newControlField

+
+public ControlField newControlField()
+
+
Returns a new control field instance. +

+

+
Specified by:
newControlField in class MarcFactory
+
+
+ +
Returns:
ControlField
+
+
+
+ +

+newControlField

+
+public ControlField newControlField(String tag)
+
+
Creates a new control field with the given tag and returns the instance. +

+

+
Specified by:
newControlField in class MarcFactory
+
+
+ +
Returns:
ControlField
+
+
+
+ +

+newControlField

+
+public ControlField newControlField(String tag,
+                                    String data)
+
+
Creates a new control field with the given tag and data and returns the + instance. +

+

+
Specified by:
newControlField in class MarcFactory
+
+
+ +
Returns:
ControlField
+
+
+
+ +

+newDataField

+
+public DataField newDataField()
+
+
Returns a new data field instance. +

+

+
Specified by:
newDataField in class MarcFactory
+
+
+ +
Returns:
DataField
+
+
+
+ +

+newDataField

+
+public DataField newDataField(String tag,
+                              char ind1,
+                              char ind2)
+
+
Creates a new data field with the given tag and indicators and returns + the instance. +

+

+
Specified by:
newDataField in class MarcFactory
+
+
+ +
Returns:
DataField
+
+
+
+ +

+newLeader

+
+public Leader newLeader()
+
+
Returns a new leader instance. +

+

+
Specified by:
newLeader in class MarcFactory
+
+
+ +
Returns:
Leader
+
+
+
+ +

+newLeader

+
+public Leader newLeader(String ldr)
+
+
Creates a new leader with the given String object. +

+

+
Specified by:
newLeader in class MarcFactory
+
+
+ +
Returns:
Leader
+
+
+
+ +

+newRecord

+
+public Record newRecord()
+
+
Returns a new record instance with a default leader. +

+

+
Specified by:
newRecord in class MarcFactory
+
+
+ +
Returns:
Record
+
+
+
+ +

+newSubfield

+
+public Subfield newSubfield()
+
+
Returns a new subfield instance. +

+

+
Specified by:
newSubfield in class MarcFactory
+
+
+ +
Returns:
Leader
+
+
+
+ +

+newSubfield

+
+public Subfield newSubfield(char code)
+
+
Creates a new subfield with the given identifier. +

+

+
Specified by:
newSubfield in class MarcFactory
+
+
+ +
Returns:
Subfield
+
+
+
+ +

+newSubfield

+
+public Subfield newSubfield(char code,
+                            String data)
+
+
Creates a new subfield with the given identifier and data. +

+

+
Specified by:
newSubfield in class MarcFactory
+
+
+ +
Returns:
Subfield
+
+
+
+ +

+newRecord

+
+public Record newRecord(Leader leader)
+
+
Description copied from class: MarcFactory
+
Returns a new record instance. +

+

+
Specified by:
newRecord in class MarcFactory
+
+
+ +
Returns:
Record
+
+
+
+ +

+newRecord

+
+public Record newRecord(String leader)
+
+
Description copied from class: MarcFactory
+
Returns a new record instance. +

+

+
Specified by:
newRecord in class MarcFactory
+
+
+ +
Returns:
Record
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/RecordImpl.html b/apidoc/org/marc4j/marc/impl/RecordImpl.html new file mode 100644 index 0000000..b6de5c2 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/RecordImpl.html @@ -0,0 +1,834 @@ + + + + + + +RecordImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc.impl +
+Class RecordImpl

+
+java.lang.Object
+  extended by org.marc4j.marc.impl.RecordImpl
+
+
+
All Implemented Interfaces:
Serializable, Record
+
+
+
+
public class RecordImpl
extends Object
implements Record
+ + +

+Represents a MARC record. +

+ +

+

+
Version:
+
$Revision: 1.5 $
+
Author:
+
Bas Peters
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
RecordImpl() + +
+          Creates a new Record.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ voidaddVariableField(VariableField field) + +
+          Adds a VariableField being a ControlField + or DataField.
+ Listfind(String pattern) + +
+          Returns a List of VariableField objects that have a data element that + matches the given regular expression.
+ Listfind(String[] tag, + String pattern) + +
+          Returns a List of VariableField objects with the given tags that have a + data element that matches the given regular expression.
+ Listfind(String tag, + String pattern) + +
+          Returns a List of VariableField objects with the given tag that have a + data element that matches the given regular expression.
+ ListgetControlFields() + +
+          Returns a list of control fields
+ StringgetControlNumber() + +
+          Returns the control number or null if no control number is + available.
+ ControlFieldgetControlNumberField() + +
+          Returns the control number field or null if no control + number field is available.
+ ListgetDataFields() + +
+          Returns a list of data fields
+ LonggetId() + +
+          Returns the identifier.
+ LeadergetLeader() + +
+          Returns the Leader.
+ StringgetType() + +
+          Returns the type of record.
+ VariableFieldgetVariableField(String tag) + +
+          Returns the first instance of the variable field with the given tag.
+ ListgetVariableFields() + +
+          Returns a list of variable fields
+ ListgetVariableFields(String tag) + +
+          Returns a list of variable fields with the given tag.
+ ListgetVariableFields(String[] tags) + +
+          Returns a list of variable fields for the given tags.
+ voidremoveVariableField(VariableField field) + +
+          Removes a variable field from the collection.
+ voidsetId(Long id) + +
+          Sets the identifier.
+ voidsetLeader(Leader leader) + +
+          Sets the Leader.
+ voidsetType(String type) + +
+          Sets the type of record.
+ StringtoString() + +
+          Returns a string representation of this record.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+RecordImpl

+
+public RecordImpl()
+
+
Creates a new Record. +

+

+ + + + + + + + +
+Method Detail
+ +

+setType

+
+public void setType(String type)
+
+
Description copied from interface: Record
+
Sets the type of record. +

+

+
Specified by:
setType in interface Record
+
+
+
Parameters:
type - the type of record
+
+
+
+ +

+getType

+
+public String getType()
+
+
Description copied from interface: Record
+
Returns the type of record. +

+

+
Specified by:
getType in interface Record
+
+
+ +
Returns:
String - the type of record
+
+
+
+ +

+setLeader

+
+public void setLeader(Leader leader)
+
+
Description copied from interface: Record
+
Sets the Leader. +

+

+
Specified by:
setLeader in interface Record
+
+
+
Parameters:
leader - the Leader
+
+
+
+ +

+getLeader

+
+public Leader getLeader()
+
+
Description copied from interface: Record
+
Returns the Leader. +

+

+
Specified by:
getLeader in interface Record
+
+
+ +
Returns:
Leader - the Leader
+
+
+
+ +

+addVariableField

+
+public void addVariableField(VariableField field)
+
+
Adds a VariableField being a ControlField + or DataField. + + If the VariableField is a control number field (001) and + the record already has a control number field, the field is replaced with + the new instance. +

+

+
Specified by:
addVariableField in interface Record
+
+
+
Parameters:
field - the VariableField +
Throws: +
IllegalAddException - when the parameter is not a VariableField + instance
+
+
+
+ +

+removeVariableField

+
+public void removeVariableField(VariableField field)
+
+
Description copied from interface: Record
+
Removes a variable field from the collection. +

+

+
Specified by:
removeVariableField in interface Record
+
+
+
Parameters:
field - the variable field
+
+
+
+ +

+getControlNumberField

+
+public ControlField getControlNumberField()
+
+
Returns the control number field or null if no control + number field is available. +

+

+
Specified by:
getControlNumberField in interface Record
+
+
+ +
Returns:
ControlField - the control number field
+
+
+
+ +

+getControlFields

+
+public List getControlFields()
+
+
Description copied from interface: Record
+
Returns a list of control fields +

+

+
Specified by:
getControlFields in interface Record
+
+
+ +
Returns:
List - the control fields
+
+
+
+ +

+getDataFields

+
+public List getDataFields()
+
+
Description copied from interface: Record
+
Returns a list of data fields +

+

+
Specified by:
getDataFields in interface Record
+
+
+ +
Returns:
List - the data fields
+
+
+
+ +

+getVariableField

+
+public VariableField getVariableField(String tag)
+
+
Description copied from interface: Record
+
Returns the first instance of the variable field with the given tag. +

+

+
Specified by:
getVariableField in interface Record
+
+
+ +
Returns:
VariableField - the variable field
+
+
+
+ +

+getVariableFields

+
+public List getVariableFields(String tag)
+
+
Description copied from interface: Record
+
Returns a list of variable fields with the given tag. +

+

+
Specified by:
getVariableFields in interface Record
+
+
+ +
Returns:
List - the variable fields
+
+
+
+ +

+getVariableFields

+
+public List getVariableFields()
+
+
Description copied from interface: Record
+
Returns a list of variable fields +

+

+
Specified by:
getVariableFields in interface Record
+
+
+ +
Returns:
List - the variable fields
+
+
+
+ +

+getControlNumber

+
+public String getControlNumber()
+
+
Description copied from interface: Record
+
Returns the control number or null if no control number is + available. + + This method returns the data for a ControlField with tag + 001. +

+

+
Specified by:
getControlNumber in interface Record
+
+
+ +
Returns:
String - the control number
+
+
+
+ +

+getVariableFields

+
+public List getVariableFields(String[] tags)
+
+
Description copied from interface: Record
+
Returns a list of variable fields for the given tags. + +

+ For example: + +

+ String tags = { "100", "245", "260", "300" };
+ 
+ List fields = record.getVariableFields(tags);
+ 
+

+

+
Specified by:
getVariableFields in interface Record
+
+
+ +
Returns:
List - the variable fields
+
+
+
+ +

+toString

+
+public String toString()
+
+
Returns a string representation of this record. + +

+ Example: + +

+     
+      LEADER 00714cam a2200205 a 4500 
+      001 12883376 
+      005 20030616111422.0
+      008 020805s2002 nyu j 000 1 eng 
+      020   $a0786808772 
+      020   $a0786816155 (pbk.) 
+      040   $aDLC$cDLC$dDLC 
+      100 1 $aChabon, Michael. 
+      245 10$aSummerland /$cMichael Chabon. 
+      250   $a1st ed. 
+      260   $aNew York :$bMiramax Books/Hyperion Books for Children,$cc2002. 
+      300   $a500 p. ;$c22 cm. 
+      650  1$aFantasy. 
+      650  1$aBaseball$vFiction. 
+      650  1$aMagic$vFiction.
+      
+ 
+

+

+
Overrides:
toString in class Object
+
+
+ +
Returns:
String - a string representation of this record
+
+
+
+ +

+find

+
+public List find(String pattern)
+
+
Description copied from interface: Record
+
Returns a List of VariableField objects that have a data element that + matches the given regular expression. + +

+ See Pattern for more information about Java + regular expressions. +

+

+

+
Specified by:
find in interface Record
+
+
+
Parameters:
pattern - the regular expression +
Returns:
List - the result list
+
+
+
+ +

+find

+
+public List find(String tag,
+                 String pattern)
+
+
Description copied from interface: Record
+
Returns a List of VariableField objects with the given tag that have a + data element that matches the given regular expression. + +

+ See Pattern for more information about Java + regular expressions. +

+

+

+
Specified by:
find in interface Record
+
+
+
Parameters:
tag - the tag value
pattern - the regular expression +
Returns:
List - the result list
+
+
+
+ +

+find

+
+public List find(String[] tag,
+                 String pattern)
+
+
Description copied from interface: Record
+
Returns a List of VariableField objects with the given tags that have a + data element that matches the given regular expression. + +

+ See Pattern for more information about Java + regular expressions. +

+

+

+
Specified by:
find in interface Record
+
+
+
Parameters:
tag - the tag values
pattern - the regular expression +
Returns:
List - the result list
+
+
+
+ +

+setId

+
+public void setId(Long id)
+
+
Description copied from interface: Record
+
Sets the identifier. + +

+ The purpose of this identifier is to provide an identifier for + persistency. +

+

+
Specified by:
setId in interface Record
+
+
+
Parameters:
id - the identifier
+
+
+
+ +

+getId

+
+public Long getId()
+
+
Description copied from interface: Record
+
Returns the identifier. +

+

+
Specified by:
getId in interface Record
+
+
+ +
Returns:
Long - the identifier
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/SubfieldImpl.html b/apidoc/org/marc4j/marc/impl/SubfieldImpl.html new file mode 100644 index 0000000..84c04e3 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/SubfieldImpl.html @@ -0,0 +1,506 @@ + + + + + + +SubfieldImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc.impl +
+Class SubfieldImpl

+
+java.lang.Object
+  extended by org.marc4j.marc.impl.SubfieldImpl
+
+
+
All Implemented Interfaces:
Serializable, Subfield
+
+
+
+
public class SubfieldImpl
extends Object
implements Subfield
+ + +

+Represents a subfield in a MARC record. +

+ +

+

+
Version:
+
$Revision: 1.4 $
+
Author:
+
Bas Peters
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + + + + +
+Constructor Summary
SubfieldImpl() + +
+          Creates a new Subfield.
SubfieldImpl(char code) + +
+          Creates a new Subfield and sets the data element + identifier.
SubfieldImpl(char code, + String data) + +
+          Creates a new Subfield and sets the data element + identifier and the data element.
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ booleanfind(String pattern) + +
+          Returns true if the given regular expression matches a subsequence of the + data element.
+ chargetCode() + +
+          Returns the data element identifier.
+ StringgetData() + +
+          Returns the data element.
+ LonggetId() + +
+          Returns the identifier.
+ voidsetCode(char code) + +
+          Sets the data element identifier.
+ voidsetData(String data) + +
+          Sets the data element.
+ voidsetId(Long id) + +
+          Sets the identifier.
+ StringtoString() + +
+          Returns a string representation of this subfield.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+SubfieldImpl

+
+public SubfieldImpl()
+
+
Creates a new Subfield. +

+

+
+ +

+SubfieldImpl

+
+public SubfieldImpl(char code)
+
+
Creates a new Subfield and sets the data element + identifier. +

+

+
Parameters:
code - the data element identifier
+
+
+ +

+SubfieldImpl

+
+public SubfieldImpl(char code,
+                    String data)
+
+
Creates a new Subfield and sets the data element + identifier and the data element. +

+

+
Parameters:
code - the data element identifier
data - the data element
+
+ + + + + + + + +
+Method Detail
+ +

+setCode

+
+public void setCode(char code)
+
+
Description copied from interface: Subfield
+
Sets the data element identifier. +

+

+
Specified by:
setCode in interface Subfield
+
+
+
Parameters:
code - the data element identifier
+
+
+
+ +

+getCode

+
+public char getCode()
+
+
Description copied from interface: Subfield
+
Returns the data element identifier. +

+

+
Specified by:
getCode in interface Subfield
+
+
+ +
Returns:
char - the data element identifier
+
+
+
+ +

+setData

+
+public void setData(String data)
+
+
Description copied from interface: Subfield
+
Sets the data element. +

+

+
Specified by:
setData in interface Subfield
+
+
+
Parameters:
data - the data element
+
+
+
+ +

+getData

+
+public String getData()
+
+
Description copied from interface: Subfield
+
Returns the data element. +

+

+
Specified by:
getData in interface Subfield
+
+
+ +
Returns:
String - the data element
+
+
+
+ +

+find

+
+public boolean find(String pattern)
+
+
Description copied from interface: Subfield
+
Returns true if the given regular expression matches a subsequence of the + data element. + + See (@link java.util.regex.Pattern} for regular expressions. +

+

+
Specified by:
find in interface Subfield
+
+
+
Parameters:
pattern - the regular expression +
Returns:
true if the pattern matches, false othewise
+
+
+
+ +

+toString

+
+public String toString()
+
+
Returns a string representation of this subfield. + +

+ Example: + +

+ $aSummerland /
+ 
+

+

+
Overrides:
toString in class Object
+
+
+ +
Returns:
String - a string representation of this subfield
+
+
+
+ +

+setId

+
+public void setId(Long id)
+
+
Description copied from interface: Subfield
+
Sets the identifier. + +

+ The purpose of this identifier is to provide an identifier for + persistency. +

+

+
Specified by:
setId in interface Subfield
+
+
+
Parameters:
id - the identifier
+
+
+
+ +

+getId

+
+public Long getId()
+
+
Description copied from interface: Subfield
+
Returns the identifier. +

+

+
Specified by:
getId in interface Subfield
+
+
+ +
Returns:
Long - the identifier
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/VariableFieldImpl.html b/apidoc/org/marc4j/marc/impl/VariableFieldImpl.html new file mode 100644 index 0000000..04422f4 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/VariableFieldImpl.html @@ -0,0 +1,371 @@ + + + + + + +VariableFieldImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc.impl +
+Class VariableFieldImpl

+
+java.lang.Object
+  extended by org.marc4j.marc.impl.VariableFieldImpl
+
+
+
All Implemented Interfaces:
Serializable, Comparable, VariableField
+
+
+
Direct Known Subclasses:
ControlFieldImpl, DataFieldImpl
+
+
+
+
public abstract class VariableFieldImpl
extends Object
implements VariableField
+ + +

+Represents a variable field in a MARC record. +

+ +

+

+
Version:
+
$Revision: 1.4 $
+
Author:
+
Bas Peters
+
See Also:
Serialized Form
+
+ +

+ + + + + + + + + + + + + + +
+Constructor Summary
VariableFieldImpl() + +
+          Creates a new VariableField.
VariableFieldImpl(String tag) + +
+          Creates a new VariableField and sets the tag name.
+  + + + + + + + + + + + + + + + + + + + + + + + +
+Method Summary
+ intcompareTo(Object obj) + +
+           
+ StringgetTag() + +
+          Returns the tag name.
+ voidsetTag(String tag) + +
+          Sets the tag name.
+ StringtoString() + +
+          Returns a string representation of this variable field.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
+ + + + + + + +
Methods inherited from interface org.marc4j.marc.VariableField
find, getId, setId
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+VariableFieldImpl

+
+public VariableFieldImpl()
+
+
Creates a new VariableField. +

+

+
+ +

+VariableFieldImpl

+
+public VariableFieldImpl(String tag)
+
+
Creates a new VariableField and sets the tag name. +

+

+ + + + + + + + +
+Method Detail
+ +

+setTag

+
+public void setTag(String tag)
+
+
Description copied from interface: VariableField
+
Sets the tag name. +

+

+
Specified by:
setTag in interface VariableField
+
+
+
Parameters:
tag - the tag name
+
+
+
+ +

+getTag

+
+public String getTag()
+
+
Description copied from interface: VariableField
+
Returns the tag name. +

+

+
Specified by:
getTag in interface VariableField
+
+
+ +
Returns:
String - the tag name
+
+
+
+ +

+compareTo

+
+public int compareTo(Object obj)
+
+
+
Specified by:
compareTo in interface Comparable
+
+
+
+
+
+
+ +

+toString

+
+public String toString()
+
+
Returns a string representation of this variable field. +

+

+
Overrides:
toString in class Object
+
+
+ +
Returns:
String - a string representation of this variable field
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/Verifier.html b/apidoc/org/marc4j/marc/impl/Verifier.html new file mode 100644 index 0000000..f6e058a --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/Verifier.html @@ -0,0 +1,276 @@ + + + + + + +Verifier (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.marc.impl +
+Class Verifier

+
+java.lang.Object
+  extended by org.marc4j.marc.impl.Verifier
+
+
+
+
public class Verifier
extends Object
+ + +

+Handles MARC checks on tags, data elements and Record objects. +

+ +

+

+
Version:
+
$Revision: 1.2 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + + + + + + + + + + +
+Method Summary
+static booleanhasControlNumberField(Collection col) + +
+          Returns true if the given Collection contains an instance of + a ControlField with a control number field tag (001).
+static booleanisControlField(String tag) + +
+          Returns true if the given String value identifies a tag for + a control field (001 through 009).
+static booleanisControlNumberField(String tag) + +
+          Returns true if the given String value identifies a tag for + a control number field (001).
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Method Detail
+ +

+isControlField

+
+public static boolean isControlField(String tag)
+
+
Returns true if the given String value identifies a tag for + a control field (001 through 009). +

+

+
+
+
+
+ +

+isControlNumberField

+
+public static boolean isControlNumberField(String tag)
+
+
Returns true if the given String value identifies a tag for + a control number field (001). +

+

+
+
+
+
+ +

+hasControlNumberField

+
+public static boolean hasControlNumberField(Collection col)
+
+
Returns true if the given Collection contains an instance of + a ControlField with a control number field tag (001). +

+

+
Parameters:
col - the collection of ControlField objects.
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/class-use/ControlFieldImpl.html b/apidoc/org/marc4j/marc/impl/class-use/ControlFieldImpl.html new file mode 100644 index 0000000..2197f83 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/class-use/ControlFieldImpl.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.marc.impl.ControlFieldImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.marc.impl.ControlFieldImpl

+
+No usage of org.marc4j.marc.impl.ControlFieldImpl +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/class-use/DataFieldImpl.html b/apidoc/org/marc4j/marc/impl/class-use/DataFieldImpl.html new file mode 100644 index 0000000..b23c0fb --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/class-use/DataFieldImpl.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.marc.impl.DataFieldImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.marc.impl.DataFieldImpl

+
+No usage of org.marc4j.marc.impl.DataFieldImpl +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/class-use/LeaderImpl.html b/apidoc/org/marc4j/marc/impl/class-use/LeaderImpl.html new file mode 100644 index 0000000..c34e66d --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/class-use/LeaderImpl.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.marc.impl.LeaderImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.marc.impl.LeaderImpl

+
+No usage of org.marc4j.marc.impl.LeaderImpl +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/class-use/MarcFactoryImpl.html b/apidoc/org/marc4j/marc/impl/class-use/MarcFactoryImpl.html new file mode 100644 index 0000000..47fdaf8 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/class-use/MarcFactoryImpl.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.marc.impl.MarcFactoryImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.marc.impl.MarcFactoryImpl

+
+No usage of org.marc4j.marc.impl.MarcFactoryImpl +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/class-use/RecordImpl.html b/apidoc/org/marc4j/marc/impl/class-use/RecordImpl.html new file mode 100644 index 0000000..c500ce4 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/class-use/RecordImpl.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.marc.impl.RecordImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.marc.impl.RecordImpl

+
+No usage of org.marc4j.marc.impl.RecordImpl +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/class-use/SubfieldImpl.html b/apidoc/org/marc4j/marc/impl/class-use/SubfieldImpl.html new file mode 100644 index 0000000..70a7740 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/class-use/SubfieldImpl.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.marc.impl.SubfieldImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.marc.impl.SubfieldImpl

+
+No usage of org.marc4j.marc.impl.SubfieldImpl +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/class-use/VariableFieldImpl.html b/apidoc/org/marc4j/marc/impl/class-use/VariableFieldImpl.html new file mode 100644 index 0000000..c633541 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/class-use/VariableFieldImpl.html @@ -0,0 +1,184 @@ + + + + + + +Uses of Class org.marc4j.marc.impl.VariableFieldImpl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.marc.impl.VariableFieldImpl

+
+ + + + + + + + + +
+Packages that use VariableFieldImpl
org.marc4j.marc.implDefault implementation of the MARC record object model. 
+  +

+ + + + + +
+Uses of VariableFieldImpl in org.marc4j.marc.impl
+  +

+ + + + + + + + + + + + + +
Subclasses of VariableFieldImpl in org.marc4j.marc.impl
+ classControlFieldImpl + +
+          Represents a control field in a MARC record.
+ classDataFieldImpl + +
+          Represents a data field in a MARC record.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/class-use/Verifier.html b/apidoc/org/marc4j/marc/impl/class-use/Verifier.html new file mode 100644 index 0000000..39fdd6f --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/class-use/Verifier.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.marc.impl.Verifier (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.marc.impl.Verifier

+
+No usage of org.marc4j.marc.impl.Verifier +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/package-frame.html b/apidoc/org/marc4j/marc/impl/package-frame.html new file mode 100644 index 0000000..9905995 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/package-frame.html @@ -0,0 +1,46 @@ + + + + + + +org.marc4j.marc.impl (MARC4J API) + + + + + + + + + + + +org.marc4j.marc.impl + + + + +
+Classes  + +
+ControlFieldImpl +
+DataFieldImpl +
+LeaderImpl +
+MarcFactoryImpl +
+RecordImpl +
+SubfieldImpl +
+VariableFieldImpl +
+Verifier
+ + + + diff --git a/apidoc/org/marc4j/marc/impl/package-summary.html b/apidoc/org/marc4j/marc/impl/package-summary.html new file mode 100644 index 0000000..8cb3f94 --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/package-summary.html @@ -0,0 +1,197 @@ + + + + + + +org.marc4j.marc.impl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.marc4j.marc.impl +

+Default implementation of the MARC record object model. +

+See: +
+          Description +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
ControlFieldImplRepresents a control field in a MARC record.
DataFieldImplRepresents a data field in a MARC record.
LeaderImplRepresents a record label in a MARC record.
MarcFactoryImplFactory for creating MARC record objects.
RecordImplRepresents a MARC record.
SubfieldImplRepresents a subfield in a MARC record.
VariableFieldImplRepresents a variable field in a MARC record.
VerifierHandles MARC checks on tags, data elements and Record objects.
+  + +

+

+Package org.marc4j.marc.impl Description +

+ +

+

Default implementation of the MARC record object model.

+

+ +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/package-tree.html b/apidoc/org/marc4j/marc/impl/package-tree.html new file mode 100644 index 0000000..5739d1a --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/package-tree.html @@ -0,0 +1,159 @@ + + + + + + +org.marc4j.marc.impl Class Hierarchy (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.marc4j.marc.impl +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/impl/package-use.html b/apidoc/org/marc4j/marc/impl/package-use.html new file mode 100644 index 0000000..af20aff --- /dev/null +++ b/apidoc/org/marc4j/marc/impl/package-use.html @@ -0,0 +1,166 @@ + + + + + + +Uses of Package org.marc4j.marc.impl (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.marc4j.marc.impl

+
+ + + + + + + + + +
+Packages that use org.marc4j.marc.impl
org.marc4j.marc.implDefault implementation of the MARC record object model. 
+  +

+ + + + + + + + +
+Classes in org.marc4j.marc.impl used by org.marc4j.marc.impl
VariableFieldImpl + +
+          Represents a variable field in a MARC record.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/package-frame.html b/apidoc/org/marc4j/marc/package-frame.html new file mode 100644 index 0000000..0146dbf --- /dev/null +++ b/apidoc/org/marc4j/marc/package-frame.html @@ -0,0 +1,64 @@ + + + + + + +org.marc4j.marc (MARC4J API) + + + + + + + + + + + +org.marc4j.marc + + + + +
+Interfaces  + +
+ControlField +
+DataField +
+Leader +
+Record +
+Subfield +
+VariableField
+ + + + + + +
+Classes  + +
+MarcFactory
+ + + + + + +
+Exceptions  + +
+IllegalAddException
+ + + + diff --git a/apidoc/org/marc4j/marc/package-summary.html b/apidoc/org/marc4j/marc/package-summary.html new file mode 100644 index 0000000..14f1589 --- /dev/null +++ b/apidoc/org/marc4j/marc/package-summary.html @@ -0,0 +1,339 @@ + + + + + + +org.marc4j.marc (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.marc4j.marc +

+Interfaces for the record object model. +

+See: +
+          Description +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Interface Summary
ControlFieldRepresents a control field in a MARC record.
DataFieldRepresents a data field in a MARC record.
LeaderRepresents a record label in a MARC record.
RecordRepresents a MARC record.
SubfieldRepresents a subfield in a MARC record.
VariableFieldRepresents a variable field in a MARC record.
+  + +

+ + + + + + + + + +
+Class Summary
MarcFactoryFactory for creating MARC record objects.
+  + +

+ + + + + + + + + +
+Exception Summary
IllegalAddExceptionThrown when the addition of the supplied object is illegal.
+  + +

+

+Package org.marc4j.marc Description +

+ +

+

Interfaces for the record object model.

+

The goal of the org.marc4j.marc package is to provide a clean and simple to use interface to + create, store and edit MARC records or parts of records as objects. + See the examples below to get started using the object model.

+

Reading records

+

The Record interface provides access to the + leader and variable fields for each record returned by the MarcReader implementation.

+

The following example retrieves all control fields (tags 001 through 009):

+

+    List fields = record.getControlFields();
+    
+

This method retuns the fields as a List, thus enabling the use of the standard Java collections + framework to iterate over collections of records, fields or subfields. + The following code snippet prints the tag and data for each control field to standard output:

+
+    Iterator i = fields.iterator();
+    while (i.hasNext()) {
+        ControlField field = (ControlField) i.next();
+        System.out.println("Tag: " + field.getTag() + " Data: " + field.getData());
+    }
+    
+

The getDataFields() method returns all data fields (tags 010 through 999). + An DataField provides access to the tag, the indicators and the subfields. + For example to write all the data field information to standard output:

+
+    List fields = record.getDataFields();
+    Iterator i = fields.iterator();
+    while (i.hasNext()) {
+        DataField field = (ControlField) i.next();
+        System.out.println("Tag: " + field.getTag() + " ind1: " + field.getIndicator1() + 
+            " ind2: " + field.getIndicator2());
+        List subfields = field.getSubfields();
+        Iterator j = subfields.iterator();
+        while (j.hasNext()) {
+            Subfield subfield = (Subfield) j.next();
+            System.out.println("Subfield code: " + subfield.getCode() + 
+                "Data: " + subfield.getData());
+        }
+    }
+    
+

If you want to retrieve specific fields you can use one of the following methods:

+
+    // get the first field occurence for a given tag
+    DataField title = (DataField)record.getVariableField("245");
+    
+    // get all occurences for a particular tag
+    List subjects = record.getVariableFields("650");
+    
+    // get all occurences for a given list of tags
+    String[] tags = {"010", "100", "245", "250", "260", "300"};
+    List fields = record.getVariableFields(tags);
+    
+

In addition you can use simple searches using the find() methods + to retrieve fields that meet certain criteria. The search capabilities are very + limited, but they can be useful when processing records. The following code snippet + provides some examples:

+
+    // find any field containing 'Chabon'
+    List fields = record.find("Chabon");
+    
+    // find 'Summerland' in a title field
+    List fields = record.find("245", "Summerland");
+    
+    // find 'Graham, Paul' in main or added entries for a personal name:
+    String tags = {"100", "600"};
+    List fields = record.find(tags, "Graham, Paul")  
+    
+

The find method is also useful if you want to retrieve records that meet + certain criteria, such as a specific control number, title words or a particular publisher + or subject. The example below checks if the cataloging agency is DLC. The example also shows + how you can extend the find capailities to specific subfields, a feature not directly available + in MARC4J, since it is easy to accomplish using the record model together with the standard Java API's.

+
+    InputStream input = new FileInputStream("file.mrc");
+    MarcReader reader = new MarcStreamReader(input);
+    while (reader.hasNext()) {
+        Record record = reader.next();
+        
+        // check if the cataloging agency is DLC
+        List result = record.find("040", "DLC");
+        if (result.size() > 0)
+            System.out.println("Agency for this record is DLC");
+        
+        // there is no specific find for a specific subfield
+        // so to check if it is the orignal cataloging agency
+        DataField field = (DataField)result.get(0);
+        String agency = field.getSubfield('a').getData();
+        if (agency.matches("DLC"))
+            System.out.println("DLC is the original agency");           
+        
+    }
+    
+

By using find() you can also implement a kind of search and replace to batch + update records that meet certain criteria. You can use Java regular expressions in find() methods. + Check the + java.util.regex + package for more information and examples.

+

Creating or updating records

+

You can also create or update records using the MarcFactory. For example:

+
+    // create a factory instance
+    MarcFactory factory = MarcFactory.newInstance();
+        
+    // create a record with leader
+    Record record = factory.newRecord("00000cam a2200000 a 4500");
+        
+    // add a control field
+    record.addVariableField(factory.newControlField("001", "12883376"));
+        
+    // add a data field
+    DataField df = factory.newDataField("245", '1', '0');
+    df.addSubfield(factory.newSubfield('a', "Summerland /"));
+    df.addSubfield(factory.newSubfield('c', "Michael Chabon."));
+    record.addVariableField(df);
+    
+

You can use a MarcWriter implementation to serialize your records for example to MARC or MARC XML. + The code snippet below writes a single record in MARC format to standard output:

+
+    MarcWriter writer = new MarcStreamWriter(System.out);
+    writer.write(record);
+    writer.close(); 
+    
+

Check the Javadoc for MarcStreamWriter and MarcXmlWriter for more information.

+

+ +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/package-tree.html b/apidoc/org/marc4j/marc/package-tree.html new file mode 100644 index 0000000..d8d47f2 --- /dev/null +++ b/apidoc/org/marc4j/marc/package-tree.html @@ -0,0 +1,173 @@ + + + + + + +org.marc4j.marc Class Hierarchy (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.marc4j.marc +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/marc/package-use.html b/apidoc/org/marc4j/marc/package-use.html new file mode 100644 index 0000000..46c897c --- /dev/null +++ b/apidoc/org/marc4j/marc/package-use.html @@ -0,0 +1,276 @@ + + + + + + +Uses of Package org.marc4j.marc (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.marc4j.marc

+
+ + + + + + + + + + + + + + + + + +
+Packages that use org.marc4j.marc
org.marc4jClasses to read and write MARC and MARCXML records. 
org.marc4j.marcInterfaces for the record object model. 
org.marc4j.marc.implDefault implementation of the MARC record object model. 
+  +

+ + + + + + + + +
+Classes in org.marc4j.marc used by org.marc4j
Record + +
+          Represents a MARC record.
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+Classes in org.marc4j.marc used by org.marc4j.marc
ControlField + +
+          Represents a control field in a MARC record.
DataField + +
+          Represents a data field in a MARC record.
Leader + +
+          Represents a record label in a MARC record.
MarcFactory + +
+          Factory for creating MARC record objects.
Record + +
+          Represents a MARC record.
Subfield + +
+          Represents a subfield in a MARC record.
VariableField + +
+          Represents a variable field in a MARC record.
+  +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+Classes in org.marc4j.marc used by org.marc4j.marc.impl
ControlField + +
+          Represents a control field in a MARC record.
DataField + +
+          Represents a data field in a MARC record.
Leader + +
+          Represents a record label in a MARC record.
MarcFactory + +
+          Factory for creating MARC record objects.
Record + +
+          Represents a MARC record.
Subfield + +
+          Represents a subfield in a MARC record.
VariableField + +
+          Represents a variable field in a MARC record.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/package-frame.html b/apidoc/org/marc4j/package-frame.html new file mode 100644 index 0000000..404f487 --- /dev/null +++ b/apidoc/org/marc4j/package-frame.html @@ -0,0 +1,78 @@ + + + + + + +org.marc4j (MARC4J API) + + + + + + + + + + + +org.marc4j + + + + +
+Interfaces  + +
+MarcReader +
+MarcWriter
+ + + + + + +
+Classes  + +
+Constants +
+ErrorHandler +
+MarcDirStreamReader +
+MarcPermissiveStreamReader +
+MarcStreamReader +
+MarcStreamWriter +
+MarcXmlHandler +
+MarcXmlParser +
+MarcXmlParserThread +
+MarcXmlReader +
+MarcXmlWriter +
+RecordStack
+ + + + + + +
+Exceptions  + +
+MarcException
+ + + + diff --git a/apidoc/org/marc4j/package-summary.html b/apidoc/org/marc4j/package-summary.html new file mode 100644 index 0000000..742bb03 --- /dev/null +++ b/apidoc/org/marc4j/package-summary.html @@ -0,0 +1,256 @@ + + + + + + +org.marc4j (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.marc4j +

+Classes to read and write MARC and MARCXML records. +

+See: +
+          Description +

+ + + + + + + + + + + + + +
+Interface Summary
MarcReaderImplement this interface to provide an iterator over a collection of + Record objects.
MarcWriterImplement this interface to provide a writer for Record + objects.
+  + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Class Summary
ConstantsDefines constant values.
ErrorHandlerDefines and describes errors encountered in the processing a given MARC record.
MarcDirStreamReader + A Marc reader which instead of handling a single file of MARC records + it handles a directory, which it will scan for all .mrc files, and + iterate through all of them in turn.
MarcPermissiveStreamReaderAn iterator over a collection of MARC records in ISO 2709 format, that is designed + to be able to handle MARC records that have errors in their structure or their encoding.
MarcStreamReaderAn iterator over a collection of MARC records in ISO 2709 format.
MarcStreamWriterClass for writing MARC record objects in ISO 2709 format.
MarcXmlHandlerCreates Record objects from SAX events and pushes each item + onto the top of the RecordStack.
MarcXmlParserCreates Record objects from SAX events and pushes each item + onto the top of the RecordStack.
MarcXmlParserThreadExtends Thread to produce Record objects from + MARCXML data.
MarcXmlReaderAn iterator over a collection of MARC records in MARCXML format.
MarcXmlWriterClass for writing MARC record objects in MARCXML format.
RecordStackProvides push and pop operations for + Record objects created by MarcXmlParser.
+  + +

+ + + + + + + + + +
+Exception Summary
MarcExceptionThrown in various situations by MARC4J; may contain a nested exception.
+  + +

+

+Package org.marc4j Description +

+ +

+

Classes to read and write MARC and MARCXML records. MARC4J should be able to process formats like MARC21 and UNIMARC.

+

Use MarcStreamReader to read MARC records and MarcStreamWriter to write records in MARC format. Use MarcXmlReader to read MARCXML records and MarcXmlWriter to write records in MARCXML format.

+

+ +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/package-tree.html b/apidoc/org/marc4j/package-tree.html new file mode 100644 index 0000000..325632b --- /dev/null +++ b/apidoc/org/marc4j/package-tree.html @@ -0,0 +1,171 @@ + + + + + + +org.marc4j Class Hierarchy (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.marc4j +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/package-use.html b/apidoc/org/marc4j/package-use.html new file mode 100644 index 0000000..9773b29 --- /dev/null +++ b/apidoc/org/marc4j/package-use.html @@ -0,0 +1,219 @@ + + + + + + +Uses of Package org.marc4j (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.marc4j

+
+ + + + + + + + + + + + + +
+Packages that use org.marc4j
org.marc4jClasses to read and write MARC and MARCXML records. 
org.marc4j.converter.implClasses for byte and character conversions. 
+  +

+ + + + + + + + + + + + + + + + + + + + + + + +
+Classes in org.marc4j used by org.marc4j
ErrorHandler + +
+          Defines and describes errors encountered in the processing a given MARC record.
MarcException + +
+          Thrown in various situations by MARC4J; may contain a nested exception.
MarcReader + +
+          Implement this interface to provide an iterator over a collection of + Record objects.
MarcWriter + +
+          Implement this interface to provide a writer for Record + objects.
MarcXmlHandler + +
+          Creates Record objects from SAX events and pushes each item + onto the top of the RecordStack.
RecordStack + +
+          Provides push and pop operations for + Record objects created by MarcXmlParser.
+  +

+ + + + + + + + +
+Classes in org.marc4j used by org.marc4j.converter.impl
ErrorHandler + +
+          Defines and describes errors encountered in the processing a given MARC record.
+  +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/util/MarcXmlDriver.html b/apidoc/org/marc4j/util/MarcXmlDriver.html new file mode 100644 index 0000000..5a43803 --- /dev/null +++ b/apidoc/org/marc4j/util/MarcXmlDriver.html @@ -0,0 +1,308 @@ + + + + + + +MarcXmlDriver (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.util +
+Class MarcXmlDriver

+
+java.lang.Object
+  extended by org.marc4j.util.MarcXmlDriver
+
+
+
+
public class MarcXmlDriver
extends Object
+ + +

+Provides a basic driver to convert MARC records to MARCXML. Output is encoded in UTF-8. +

+ The following example reads input.mrc and writes output to the console: + +

+     java org.marc4j.util.MarcXmlDriver input.mrc
+ 
+ +

+ The following example reads input.mrc, converts MARC-8 and writes output in + UTF-8 to output.xml: + +

+     java org.marc4j.util.MarcXmlDriver -convert MARC8 -out output.xml input.mrc
+ 
+ +

+ It is possible to post-process the result using an XSLT stylesheet. The + following example converts MARC to MODS: + +

+     java org.marc4j.util.MarcXmlDriver -convert MARC8 -xsl http://www.loc.gov/standards/mods/v3/MARC21slim2MODS3.xsl -out modsoutput.xml input.mrc
+ 
+ +

+ For usage, run from the command-line with the following command: + +

+     java org.marc4j.util.MarcXmlDriver -usage
+ 
+ +

+ Check the home page for + MARCXML for more information about the MARCXML format. +

+ +

+

+
Version:
+
$Revision: 1.5 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
MarcXmlDriver() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+static voidmain(String[] args) + +
+          Provides a static entry point.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+MarcXmlDriver

+
+public MarcXmlDriver()
+
+
+ + + + + + + + +
+Method Detail
+ +

+main

+
+public static void main(String[] args)
+
+
Provides a static entry point. + +

+ Arguments: +

+
    +
  • -xsl <stylesheet URL> - post-process using XSLT-stylesheet +
  • +
  • -out <output file> - write to output file
  • +
  • -convert <encoding> - convert <encoding> to UTF-8 (Supported encodings: MARC8, ISO5426, ISO6937)
  • +
  • -encode <encoding> - read data using encoding <encoding>
  • +
  • -normalize - perform Unicode normalization
  • +
  • -usage - show usage
  • +
  • <input file> - input file with MARC records +
+

+

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/util/XmlMarcDriver.html b/apidoc/org/marc4j/util/XmlMarcDriver.html new file mode 100644 index 0000000..4194b86 --- /dev/null +++ b/apidoc/org/marc4j/util/XmlMarcDriver.html @@ -0,0 +1,316 @@ + + + + + + +XmlMarcDriver (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +

+ +org.marc4j.util +
+Class XmlMarcDriver

+
+java.lang.Object
+  extended by org.marc4j.util.XmlMarcDriver
+
+
+
+
public class XmlMarcDriver
extends Object
+ + +

+Provides a driver to convert MARCXML records to MARC format. + +

+ The following example reads input.xml and writes output to the console: +

+ +
+       java org.marc4j.util.XmlMarcDriver input.xml
+ 
+ +

+ The following example reads input.xml, converts UTF-8 and writes output in + MARC-8 to output.mrc: +

+ +
+       java org.marc4j.util.XmlMarcDriver -convert MARC8 -out output.mrc input.xml
+ 
+ +

+ It is possible to pre-process the input file using an XSLT stylesheet. The + transformation should produce valid MARCXML. The following example transforms + a MODS file to MARCXML and outputs MARC records. +

+ +
+       java org.marc4j.util.XmlMarcDriver -convert MARC8 -out output.mrc -xsl http://www.loc.gov/standards/marcxml/xslt/MODS2MARC21slim.xsl modsfile.xml
+ 
+ +

+ For usage, run from the command-line with the following command: +

+ +
+       java org.marc4j.util.XmlMarcDriver -usage
+ 
+ +

+ Check the home page for + MARCXML for more information about the MARCXML format. +

+

+ +

+

+
Version:
+
$Revision: 1.4 $
+
Author:
+
Bas Peters
+
+
+ +

+ + + + + + + + + + + +
+Constructor Summary
XmlMarcDriver() + +
+           
+  + + + + + + + + + + + +
+Method Summary
+static voidmain(String[] args) + +
+          Provides a static entry point.
+ + + + + + + +
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
+  +

+ + + + + + + + +
+Constructor Detail
+ +

+XmlMarcDriver

+
+public XmlMarcDriver()
+
+
+ + + + + + + + +
+Method Detail
+ +

+main

+
+public static void main(String[] args)
+
+
Provides a static entry point. + +

+ Arguments: +

+
    +
  • -xsl <stylesheet URL> - pre-process using XSLT-stylesheet
  • +
  • -out <output file> - write to output file
  • +
  • -convert <encoding> - convert UTF-8 to <encoding> + (Supported encodings: MARC8, ISO5426, ISO6937)
  • +
  • -encoding <encoding> - Output using specified Java character + encoding
  • +
  • -usage - show usage
  • +
  • <input file> - input file with MARCXML records or a + transformation source +
+

+

+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/util/class-use/MarcXmlDriver.html b/apidoc/org/marc4j/util/class-use/MarcXmlDriver.html new file mode 100644 index 0000000..8682448 --- /dev/null +++ b/apidoc/org/marc4j/util/class-use/MarcXmlDriver.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.util.MarcXmlDriver (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.util.MarcXmlDriver

+
+No usage of org.marc4j.util.MarcXmlDriver +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/util/class-use/XmlMarcDriver.html b/apidoc/org/marc4j/util/class-use/XmlMarcDriver.html new file mode 100644 index 0000000..33e643a --- /dev/null +++ b/apidoc/org/marc4j/util/class-use/XmlMarcDriver.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Class org.marc4j.util.XmlMarcDriver (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Class
org.marc4j.util.XmlMarcDriver

+
+No usage of org.marc4j.util.XmlMarcDriver +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/util/package-frame.html b/apidoc/org/marc4j/util/package-frame.html new file mode 100644 index 0000000..2c636f8 --- /dev/null +++ b/apidoc/org/marc4j/util/package-frame.html @@ -0,0 +1,34 @@ + + + + + + +org.marc4j.util (MARC4J API) + + + + + + + + + + + +org.marc4j.util + + + + +
+Classes  + +
+MarcXmlDriver +
+XmlMarcDriver
+ + + + diff --git a/apidoc/org/marc4j/util/package-summary.html b/apidoc/org/marc4j/util/package-summary.html new file mode 100644 index 0000000..cce0618 --- /dev/null +++ b/apidoc/org/marc4j/util/package-summary.html @@ -0,0 +1,173 @@ + + + + + + +org.marc4j.util (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+

+Package org.marc4j.util +

+Provides some basic command-line utilities for converting MARC and MARCXML records. +

+See: +
+          Description +

+ + + + + + + + + + + + + +
+Class Summary
MarcXmlDriverProvides a basic driver to convert MARC records to MARCXML.
XmlMarcDriverProvides a driver to convert MARCXML records to MARC format.
+  + +

+

+Package org.marc4j.util Description +

+ +

+

Provides some basic command-line utilities for converting MARC and MARCXML records.

+

+ +

+

+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/util/package-tree.html b/apidoc/org/marc4j/util/package-tree.html new file mode 100644 index 0000000..00e109d --- /dev/null +++ b/apidoc/org/marc4j/util/package-tree.html @@ -0,0 +1,149 @@ + + + + + + +org.marc4j.util Class Hierarchy (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For Package org.marc4j.util +

+
+
+
Package Hierarchies:
All Packages
+
+

+Class Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/org/marc4j/util/package-use.html b/apidoc/org/marc4j/util/package-use.html new file mode 100644 index 0000000..e74ddd2 --- /dev/null +++ b/apidoc/org/marc4j/util/package-use.html @@ -0,0 +1,140 @@ + + + + + + +Uses of Package org.marc4j.util (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Uses of Package
org.marc4j.util

+
+No usage of org.marc4j.util +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/overview-frame.html b/apidoc/overview-frame.html new file mode 100644 index 0000000..7e4bfa5 --- /dev/null +++ b/apidoc/overview-frame.html @@ -0,0 +1,52 @@ + + + + + + +Overview (MARC4J API) + + + + + + + + + + + + + + + +
+
+ + + + + +
All Classes +

+ +Packages +
+org.marc4j +
+org.marc4j.converter +
+org.marc4j.converter.impl +
+org.marc4j.marc +
+org.marc4j.marc.impl +
+org.marc4j.util +
+

+ +

+  + + diff --git a/apidoc/overview-summary.html b/apidoc/overview-summary.html new file mode 100644 index 0000000..7139ff4 --- /dev/null +++ b/apidoc/overview-summary.html @@ -0,0 +1,217 @@ + + + + + + +Overview (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +


+
+

+MARC4J API +

+
+The goal of MARC4J is to provide an easy to use Application Programming Interface (API) + for working with MARC and + MARC XML in Java. +

+See: +
+          Description +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Packages
org.marc4jClasses to read and write MARC and MARCXML records.
org.marc4j.converterInterfaces for character conversions.
org.marc4j.converter.implClasses for byte and character conversions.
org.marc4j.marcInterfaces for the record object model.
org.marc4j.marc.implDefault implementation of the MARC record object model.
org.marc4j.utilProvides some basic command-line utilities for converting MARC and MARCXML records.
+ +

+

+

The goal of MARC4J is to provide an easy to use Application Programming Interface (API) + for working with MARC and + MARC XML in Java. MARC stands for + MAchine Readable Cataloguing and is a widely used exchange format for bibliographic data. + MARC XML provides a loss-less conversion between MARC (MARC21 but also other formats like UNIMARC) and XML.

+ +

The structure of a MARC record is defined in the ISO 2709:1996 (Format for Information Exchange) standard + (or ANSI/NISO Z39.2-1994, available online + from NISO). The MARC4J API is not a full implementation of the ISO 2709:1996 standard. The standard is + implemented as it is used in the MARC formats.

+ +

MARC4J provides readers and writers for MARC and MARC XML. A MarcReader + implementation parses input data and provides an iterator over a collection + of Record objects. The record object model is also suitable for in-memory + editing of MARC records, just as DOM is used for XML editing purposes. + Using a MarcWriter implementation it is possible to create MARC or MARC XML. + Once MARC data has been converted to XML you can further process the result with XSLT, for + example to convert MARC to MODS.

+ +

Although MARC4J is primarily designed for Java development you can use the command-line + utilities MarcXmlDriver and XmlMarcDriver + to convert between MARC and MARCXML. It is also possible to pre or post process the result + using XSLT, for example to convert directly from MODS to MARC or from MARC to MODS.

+ +

The source code is published under version 2.1 of + the GNU Lesser General Public License. + In brief, this means there's no warranty and you can do anything you like with it. + The text of the license is included in the distribution. If you make changes to MARC4J and redistribute + those changes, then you must publish your modified version under the LGPL.

+ +

For more information about the MARC4J project visit http://marc4j.tigris.org.

+

+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/overview-tree.html b/apidoc/overview-tree.html new file mode 100644 index 0000000..a6eae68 --- /dev/null +++ b/apidoc/overview-tree.html @@ -0,0 +1,201 @@ + + + + + + +Class Hierarchy (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Hierarchy For All Packages

+
+
+
Package Hierarchies:
org.marc4j, org.marc4j.converter, org.marc4j.converter.impl, org.marc4j.marc, org.marc4j.marc.impl, org.marc4j.util
+
+

+Class Hierarchy +

+ +

+Interface Hierarchy +

+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/package-list b/apidoc/package-list new file mode 100644 index 0000000..d30e25c --- /dev/null +++ b/apidoc/package-list @@ -0,0 +1,6 @@ +org.marc4j +org.marc4j.converter +org.marc4j.converter.impl +org.marc4j.marc +org.marc4j.marc.impl +org.marc4j.util diff --git a/apidoc/resources/inherit.gif b/apidoc/resources/inherit.gif new file mode 100644 index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e GIT binary patch literal 57 zcmZ?wbhEHbIIT!9-C*e{wE9>Kx3D)-;0v)C; KYxQGgum%9JOA&7X literal 0 HcmV?d00001 diff --git a/apidoc/serialized-form.html b/apidoc/serialized-form.html new file mode 100644 index 0000000..bd7662b --- /dev/null +++ b/apidoc/serialized-form.html @@ -0,0 +1,559 @@ + + + + + + +Serialized Form (MARC4J API) + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+

+Serialized Form

+
+
+ + + + + +
+Package org.marc4j
+ +

+ + + + + +
+Class org.marc4j.MarcException extends RuntimeException implements Serializable
+ +

+


+ + + + + +
+Package org.marc4j.marc
+ +

+ + + + + +
+Class org.marc4j.marc.IllegalAddException extends IllegalArgumentException implements Serializable
+ +

+


+ + + + + +
+Package org.marc4j.marc.impl
+ +

+ + + + + +
+Class org.marc4j.marc.impl.ControlFieldImpl extends VariableFieldImpl implements Serializable
+ +

+ + + + + +
+Serialized Fields
+ +

+id

+
+Long id
+
+
+
+
+
+

+data

+
+String data
+
+
+
+
+ +

+ + + + + +
+Class org.marc4j.marc.impl.DataFieldImpl extends VariableFieldImpl implements Serializable
+ +

+ + + + + +
+Serialized Fields
+ +

+id

+
+Long id
+
+
+
+
+
+

+ind1

+
+char ind1
+
+
+
+
+
+

+ind2

+
+char ind2
+
+
+
+
+
+

+subfields

+
+List<E> subfields
+
+
+
+
+ +

+ + + + + +
+Class org.marc4j.marc.impl.LeaderImpl extends Object implements Serializable
+ +

+ + + + + +
+Serialized Fields
+ +

+id

+
+Long id
+
+
+
+
+
+

+recordLength

+
+int recordLength
+
+
The logical record length (Position 0-4). +

+

+
+
+
+

+recordStatus

+
+char recordStatus
+
+
The record status (Position 5). +

+

+
+
+
+

+typeOfRecord

+
+char typeOfRecord
+
+
Type of record (Position 6). +

+

+
+
+
+

+implDefined1

+
+char[] implDefined1
+
+
Implementation defined (Position 7-8). +

+

+
+
+
+

+charCodingScheme

+
+char charCodingScheme
+
+
Character coding scheme (Position 9). +

+

+
+
+
+

+indicatorCount

+
+int indicatorCount
+
+
The indicator count (Position 10). +

+

+
+
+
+

+subfieldCodeLength

+
+int subfieldCodeLength
+
+
The subfield code length (Position 11). +

+

+
+
+
+

+baseAddressOfData

+
+int baseAddressOfData
+
+
The base address of data (Position 12-16). +

+

+
+
+
+

+implDefined2

+
+char[] implDefined2
+
+
Implementation defined (Position 17-18) +

+

+
+
+
+

+entryMap

+
+char[] entryMap
+
+
Entry map (Position 19-23). +

+

+
+
+
+

+df

+
+DecimalFormat df
+
+
number format for both record length and base address of data +

+

+
+
+ +

+ + + + + +
+Class org.marc4j.marc.impl.RecordImpl extends Object implements Serializable
+ +

+ + + + + +
+Serialized Fields
+ +

+id

+
+Long id
+
+
+
+
+
+

+leader

+
+Leader leader
+
+
+
+
+
+

+controlFields

+
+List<E> controlFields
+
+
+
+
+
+

+dataFields

+
+List<E> dataFields
+
+
+
+
+
+

+type

+
+String type
+
+
+
+
+ +

+ + + + + +
+Class org.marc4j.marc.impl.SubfieldImpl extends Object implements Serializable
+ +

+ + + + + +
+Serialized Fields
+ +

+id

+
+Long id
+
+
+
+
+
+

+code

+
+char code
+
+
+
+
+
+

+data

+
+String data
+
+
+
+
+ +

+ + + + + +
+Class org.marc4j.marc.impl.VariableFieldImpl extends Object implements Serializable
+ +

+ + + + + +
+Serialized Fields
+ +

+tag

+
+String tag
+
+
+
+
+ +

+


+ + + + + + + + + + + + + + + +
+ +
+ + + +
+Copyright © 2002-2006 Bas Peters. All Rights Reserved. + + diff --git a/apidoc/stylesheet.css b/apidoc/stylesheet.css new file mode 100644 index 0000000..14c3737 --- /dev/null +++ b/apidoc/stylesheet.css @@ -0,0 +1,29 @@ +/* Javadoc style sheet */ + +/* Define colors, fonts and other style attributes here to override the defaults */ + +/* Page background color */ +body { background-color: #FFFFFF } + +/* Headings */ +h1 { font-size: 145% } + +/* Table colors */ +.TableHeadingColor { background: #CCCCFF } /* Dark mauve */ +.TableSubHeadingColor { background: #EEEEFF } /* Light mauve */ +.TableRowColor { background: #FFFFFF } /* White */ + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif } +.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif } +.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#EEEEFF;} /* Light mauve */ +.NavBarCell1Rev { background-color:#00008B;} /* Dark Blue */ +.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;} +.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;} + +.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;} +.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;} + diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..f9de500 --- /dev/null +++ b/build.bat @@ -0,0 +1,27 @@ +@echo off + +echo marc4j build system +echo ------------------- + +if "%JAVA_HOME%" == "" goto error + +set LOCALCLASSPATH=%JAVA_HOME%\lib\tools.jar;.\lib\ant.jar;. +set ANT_HOME=./lib + +echo Building with classpath %LOCALCLASSPATH% + +echo Starting Ant... + +"%JAVA_HOME%\bin\java.exe" -Dant.home="%ANT_HOME%" -classpath "%LOCALCLASSPATH%" org.apache.tools.ant.Main %1 %2 + +goto end + +:error + +echo ERROR: JAVA_HOME not found in your environment. +echo Please, set the JAVA_HOME variable in your environment to match the +echo location of the Java Virtual Machine you want to use. + +:end + +set LOCALCLASSPATH= diff --git a/build.properties b/build.properties new file mode 100644 index 0000000..3af8445 --- /dev/null +++ b/build.properties @@ -0,0 +1,7 @@ +lib.dir=lib +src.dir=src +build.dir=build +dist.dir=dist +apidoc.dir=apidoc +version=2.4 +project.name=marc4j \ No newline at end of file diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..fcd6ae9 --- /dev/null +++ b/build.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/normalizer.jar b/lib/normalizer.jar new file mode 100644 index 0000000000000000000000000000000000000000..c3a6dde70ca11e402d2839ac617c3b99981aa4c6 GIT binary patch literal 351456 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 z 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⪚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