Marc 4J - Bug

De CCSL
Ir para navegação Ir para pesquisar

O marc parser original faz perguntas óbvias sobre o formato (ou seja, se um certo campo espera o valor 2, não assume 2, mas verifica), embora seja incosistentemente permissivo em outros lugares (taís como códigos finais). Essas questões afetam apens o leader ("cabeçalho"), nas posições 10 e 11 (documentação: http://www.loc.gov/marc/bibliographic/ecbdldrd.html).

Para fazer tais alterações pontuais, infelizmente foi copiado todo o fonte do MarcReader do marc4j. Isso foi feito pois suas funções são bastante extensas, e todas privates, portanto não bastava criar uma subclasse e sobrescrever o método em questão (mesmo que grande parte ainda necessitasse de copy/paste).

Uma solução é utilizar um Decorator em cima do MarcReader, e utilizar reflexão para as chamadas privadas. Problema: fazer chamadas via reflexão me soa tão ruim, se não pior do que ter um código duplicado no jar, e outro fora dele.

Outra solução é alterar o jar, reescrevendo o código original. Problema: o código original não é construtível. O build.xml não compila, pois o projeto não explicita suas dependências (não há um README para o build).

Solução: Classe br.usp.ime.colmeia.zumbido.LenientMarcStreamReader, que é essencialmente uma cópia do marcParser.