diff --git a/src/main/java/org/xbib/marc/xml/MarcXchangeWriter.java b/src/main/java/org/xbib/marc/xml/MarcXchangeWriter.java index 5b9a7e5..c5ac77a 100644 --- a/src/main/java/org/xbib/marc/xml/MarcXchangeWriter.java +++ b/src/main/java/org/xbib/marc/xml/MarcXchangeWriter.java @@ -489,18 +489,24 @@ public class MarcXchangeWriter extends MarcContentHandler implements Flushable, } /** - * Split records if configured. + * Split records if configured. A splitlimit of -1 prevents splitting. */ private void afterRecord() { - if (fileNamePattern != null && getRecordCounter() % splitlimit == 0) { - try { - endCollection(); - writer.close(); - newWriter(fileNamePattern, fileNameCounter, bufferSize, compress); - setupEventConsumer(writer, indent); - beginCollection(); - } catch (IOException e) { - logger.log(Level.SEVERE, e.getMessage(), e); + if (fileNamePattern != null) { + if (splitlimit != -1) { + if (getRecordCounter() % splitlimit == 0) { + try { + endCollection(); + endDocument(); + writer.close(); + newWriter(fileNamePattern, fileNameCounter, bufferSize, compress); + setupEventConsumer(writer, indent); + startDocument(); + beginCollection(); + } catch (IOException e) { + logger.log(Level.SEVERE, e.getMessage(), e); + } + } } } } diff --git a/src/test/resources/org/xbib/marc/1.xml b/src/test/resources/org/xbib/marc/1.xml index ee2bcc1..30d3ba3 100644 --- a/src/test/resources/org/xbib/marc/1.xml +++ b/src/test/resources/org/xbib/marc/1.xml @@ -1,3 +1,4 @@ + 01737nam 22004334a 4500 diff --git a/src/test/resources/org/xbib/marc/2.xml b/src/test/resources/org/xbib/marc/2.xml index b5bbca4..11aec2b 100644 --- a/src/test/resources/org/xbib/marc/2.xml +++ b/src/test/resources/org/xbib/marc/2.xml @@ -1,3 +1,4 @@ + 01215cam 2200313 a 4500 diff --git a/src/test/resources/org/xbib/marc/3.xml b/src/test/resources/org/xbib/marc/3.xml index aed8d48..1d214cf 100644 --- a/src/test/resources/org/xbib/marc/3.xml +++ b/src/test/resources/org/xbib/marc/3.xml @@ -1,3 +1,4 @@ + 01613cam 2200409 a 4500