0.0
No commit activity in last 3 years
No release in over 3 years
Provides converters (and bundled jar files if you don't already have your own) to convert ruby-marc and marc4j MARC records to/from each other. Works only under jruby)
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.0
>= 0
>= 0

Runtime

>= 0.7.1
 Project Readme

Build Status

marc-marc4j

Convert ruby-marc MARC::Record objects to/from java marc4j org.marc4j.marc.Record objects under JRuby.

Useful if you're working in JRuby and need to use a marc4j reader, or if you want to use a standard ruby-marc reader but spool some functionality out to java code that relies on marc4j obejcts.

Installation

chruby jruby # or however you use JRuby
gem install marc-marc4j

Creating a converter

You can load up the marc4j jar file in three ways:

  • Just require it yourself at the top of a file. MARC::MARC4J will detect that it's already been loaded and not try to load another copy.
require 'marc/marc4j'
require '../jarfiles/marc4j_2.5.jar'
converter = MARC::MARC4J.new # will use above jarfile
  • Call MARC::MARC4J.new(:jardir=>'/path/to/marc4j/jar/directory') to state where your jar files live
require 'marc/marc4j'
converter = MARC::MARC4J.new(:jardir => '../jarfiles/') # Load all .jar files in ../jarfiles
  • Call MARC::MARC4J.new without a :jarfile argument to use the bundled marc4j jarfile.
require 'marc/marc4j'

converter = MARC::MARC4J.new  # uses bundled marc4j jarfile unless marc4j is already loaded

Logging

You can also pass in a logger object, that responds to the normal debug/warn/etc.

require 'marc/marc4j'
require 'my/logging/library'

logger  = My::Logging::Library.new(opts)
converter = MARC::MARC4J.new(:logger=>logger)

Doing the conversions

A converter only has two useful methods:

  • marc4j = converter.rubymarc_to_marc4j(r) will convert a ruby-marc MARC::Record object to a marc4j record
  • rmarc = converter.marc4j_to_rubymarc(j) will convert a marc4j record to a ruby MARC::Record object

Implementation details worth knowing

  • The converter doesn't do any caching at all, so if you want to only do the conversion once, you need to stick the result somewhere.

  • marc4j records are built using a marc4j factory object. This defaults to a org.marc4j.marc.MarcFactory, but will use whatever class is in the java system property org.marc4j.marc.MarcFactory (as seen in the marc4j source code).

Copyright

Copyright (c) 2013 Bill Dueber

See {file:LICENSE.txt} for details.