diff --git a/build.gradle b/build.gradle index 03f5bb5..190cc5e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { - id "org.sonarqube" version "2.5" + id "org.sonarqube" version "2.6.1" + id "io.codearte.nexus-staging" version "0.11.0" id "org.xbib.gradle.plugin.asciidoctor" version "1.5.4.1.0" - id "io.codearte.nexus-staging" version "0.7.0" } printf "Host: %s\nOS: %s %s %s\nJVM: %s %s %s %s\nGroovy: %s\nGradle: %s\n" + @@ -24,8 +24,8 @@ apply plugin: 'findbugs' apply plugin: 'pmd' apply plugin: 'checkstyle' apply plugin: "jacoco" -apply plugin: 'org.xbib.gradle.plugin.asciidoctor' apply plugin: "io.codearte.nexus-staging" +apply plugin: 'org.xbib.gradle.plugin.asciidoctor' repositories { mavenCentral() diff --git a/gradle.properties b/gradle.properties index beb39f1..6fe171c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ group = org.xbib name = marc -version = 1.0.16 +version = 1.0.17 xbib-content.version = 1.0.7 xbib-bibliographic-character-sets.version = 1.0.0 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 736fb7d..6b6ea3a 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 35f10eb..bb291e2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Oct 16 11:03:23 CEST 2017 +#Tue Dec 05 21:14:54 CET 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.3.1-all.zip diff --git a/src/main/java/org/xbib/marc/MarcRecord.java b/src/main/java/org/xbib/marc/MarcRecord.java index f1953a0..1a88ea7 100644 --- a/src/main/java/org/xbib/marc/MarcRecord.java +++ b/src/main/java/org/xbib/marc/MarcRecord.java @@ -36,7 +36,9 @@ import java.util.stream.Collectors; public class MarcRecord extends LinkedHashMap { private static final MarcRecord EMPTY = Marc.builder().buildRecord(); + private static final long serialVersionUID = 5305809148724342653L; + private final String format; private final String type; @@ -183,7 +185,9 @@ public class MarcRecord extends LinkedHashMap { } Map subfields = (Map) indicators.get(indicator); for (MarcField.Subfield subfield : marcField.getSubfields()) { - Object subfieldValue = subfields.get(subfield.getId()); + String code = subfield.getId(); + code = code.replace(' ', '_'); + Object subfieldValue = subfields.get(code); if (subfieldValue instanceof List) { List list = (List) subfieldValue; list.add(subfield.getValue()); @@ -191,9 +195,9 @@ public class MarcRecord extends LinkedHashMap { List list = new LinkedList<>(); list.add((String) subfieldValue); list.add(subfield.getValue()); - subfields.put(subfield.getId(), list); + subfields.put(code, list); } else { - subfields.put(subfield.getId(), subfield.getValue()); + subfields.put(code, subfield.getValue()); } } } else { diff --git a/src/main/java/org/xbib/marc/json/MarcJsonWriter.java b/src/main/java/org/xbib/marc/json/MarcJsonWriter.java index e4a038e..275cd85 100644 --- a/src/main/java/org/xbib/marc/json/MarcJsonWriter.java +++ b/src/main/java/org/xbib/marc/json/MarcJsonWriter.java @@ -56,23 +56,41 @@ public class MarcJsonWriter extends MarcContentHandler implements Flushable, Clo private static final Logger logger = Logger.getLogger(MarcJsonWriter.class.getName()); private static final int DEFAULT_BUFFER_SIZE = 65536; + private static final Pattern quotePattern = Pattern.compile("\"", Pattern.LITERAL); + private static final Pattern backslashPattern = Pattern.compile("\\\\"); + private static final String ESCAPE_QUOTE = "\\\""; + private static final String ESCAPE_BACKSLASH = "\\\\"; + private final Lock lock; + private final StringBuilder sb; + private Writer writer; + private Marc.Builder builder; + private boolean fatalErrors; + private Style style; + private Exception exception; + private String fileNamePattern; + private AtomicInteger fileNameCounter; + private int splitlimit; + private int bufferSize; + private boolean compress; + private String index; + private String indexType; /** * Flag for indicating if writer is at top of file. diff --git a/src/test/java/org/xbib/marc/json/MarcJsonWriterTest.java b/src/test/java/org/xbib/marc/json/MarcJsonWriterTest.java index ac87db5..c369f71 100644 --- a/src/test/java/org/xbib/marc/json/MarcJsonWriterTest.java +++ b/src/test/java/org/xbib/marc/json/MarcJsonWriterTest.java @@ -260,7 +260,7 @@ public class MarcJsonWriterTest { @Test public void elasticsearchBulkFormatCompressed() throws Exception { String s = "IRMARC8.bin"; - InputStream in = getClass().getResource("/org/xbib/marc//" + s).openStream(); + InputStream in = getClass().getResource("/org/xbib/marc/" + s).openStream(); MarcValueTransformers marcValueTransformers = new MarcValueTransformers(); marcValueTransformers.setMarcValueTransformer(value -> Normalizer.normalize(value, Normalizer.Form.NFC)); // split at 3, Elasticsearch bulk format, buffer size 65536, compress = true @@ -295,4 +295,21 @@ public class MarcJsonWriterTest { } } + @Test + public void testBundeskunsthalle() throws Exception { + String s = "bundeskunsthalle.xml"; + InputStream in = getClass().getResource("/org/xbib/marc/xml/" + s).openStream(); + try (MarcJsonWriter writer = new MarcJsonWriter("build/bk-bulk%d.jsonl", 1, + MarcJsonWriter.Style.ELASTICSEARCH_BULK) + .setIndex("testindex", "testtype")) { + Marc.builder() + .setFormat(MarcXchangeConstants.MARCXCHANGE_FORMAT) + .setType(MarcXchangeConstants.BIBLIOGRAPHIC_TYPE) + .setInputStream(in) + .setMarcListener(writer) + .build() + .xmlReader().parse(); + assertNull(writer.getException()); + } + } } diff --git a/src/test/resources/org/xbib/marc/xml/bundeskunsthalle.xml b/src/test/resources/org/xbib/marc/xml/bundeskunsthalle.xml new file mode 100644 index 0000000..673524f --- /dev/null +++ b/src/test/resources/org/xbib/marc/xml/bundeskunsthalle.xml @@ -0,0 +1,70 @@ + + 00000nam a2200024ui 4500 + 048861 + DE-Bo412 + 20020528155543.0 + 020528s1991 xx |||| |00||||fre|d + + 2733501968 + + + DE-Bo412 + ger + DE-Bo412 + rakwb + + + fre + + + Grinfelder, Marie-Hélène. + + + Les années Supports Surfaces : + 1965-1990 / + Marie-Hélène Grinfelder + + + Paris : + Herscher, + 1991 + + + 431 S.: + Ill. + + + Supports. + + + . + Surfaces <Künstlergemeinschaft> + + + 1965-1990. + local + + + Künstlervereinigung. + (DE-Bo412)ss4165895 + (DE-588)4165895-4 + (DE-588c)4165895-4 + (uri)http://d-nb.info/gnd/4165895-4 + gnd + + + Frankreich. + local + + + DE-Bo412 + + + Signatur + Kc 200 Suppor D/1 + + + Inventarnummer + 95-247 + + \ No newline at end of file