Skip to content

Commit 33aeead

Browse files
committed
WIP parsing working
1 parent 26640fa commit 33aeead

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

metafacture-io/src/main/java/org/metafacture/io/SruOpener.java

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.metafacture.framework.annotations.Out;
1212
import org.metafacture.framework.helpers.DefaultObjectPipe;
1313
import org.w3c.dom.Document;
14+
import org.w3c.dom.Element;
1415
import org.xml.sax.SAXException;
1516

1617
import java.io.ByteArrayInputStream;
@@ -59,7 +60,7 @@ public final class SruOpener extends DefaultObjectPipe<String, ObjectReceiver<Re
5960

6061
private int maximumRecords = MAXIMUM_RECORDS;
6162
private int startRecord = START_RECORD;
62-
private int totalRecords;
63+
private int totalRecords = Integer.MAX_VALUE;
6364

6465
private boolean stopRetrieving;
6566

@@ -157,34 +158,37 @@ public void process(final String baseUrl) {
157158
else {
158159
throw new IllegalArgumentException("Missing mandatory parameter 'query'");
159160
}
160-
int retrievedRecords = 0;
161-
while (!stopRetrieving && (retrievedRecords < totalRecords)) {
162-
if (totalRecords >0) {
163-
int yetToRetrieveRecords = totalRecords - retrievedRecords;
161+
int numberOfRecords = Integer.MAX_VALUE;
162+
TransformerFactory tf = TransformerFactory.newInstance();
163+
Transformer t = tf.newTransformer();
164+
while (!stopRetrieving && (startRecord < numberOfRecords)) {
165+
/* if (totalRecords >0) {
166+
yetToRetrieveRecords = totalRecords - retrievedRecords;
164167
if (yetToRetrieveRecords < maximumRecords) {
165168
maximumRecords = yetToRetrieveRecords;
166169
}
167-
}
170+
}*/
168171
ByteArrayInputStream byteArrayInputStream = retrieve(srUrl, startRecord, maximumRecords);
169172

170-
TransformerFactory tf = TransformerFactory.newInstance();
171-
Transformer t = tf.newTransformer();
173+
172174
DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();
173175
DocumentBuilder docBuilder = factory.newDocumentBuilder();
174176
Document xmldoc = docBuilder.parse(byteArrayInputStream);
175177

176-
ByteArrayOutputStream os = new ByteArrayOutputStream();
178+
Element element = (Element)xmldoc.getElementsByTagName("numberOfRecords").item(0);
179+
numberOfRecords=Integer.parseInt(element.getTextContent());
180+
181+
ByteArrayOutputStream os = new ByteArrayOutputStream();
177182
Result result = new StreamResult(os);
178183
t.transform(new DOMSource(xmldoc), result);
179-
180184
ByteArrayInputStream inputStream = new ByteArrayInputStream(os.toByteArray());
181185

182186
getReceiver().process(
183187
new InputStreamReader(inputStream));
188+
tf = TransformerFactory.newInstance();
189+
t = tf.newTransformer();
184190
t.setOutputProperty("omit-xml-declaration", "yes");
185-
//todo: bis max lookup zuviel (bis der nämlich sehr klein ist => keine Ergebnisse mehr)
186191
startRecord = startRecord + maximumRecords;
187-
retrievedRecords = retrievedRecords + maximumRecords;
188192
}
189193
}
190194
catch (final IOException | TransformerException | SAXException | ParserConfigurationException e) {

metafacture-io/src/test/java/org/metafacture/io/SruOpenerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void process(final XmlReceiver obj) {
4444
// sruOpener.setQuery("WVN%3D24A05");
4545
sruOpener.setRecordSchema("MARC21plus-xml");
4646
sruOpener.setVersion("1.1");
47-
// sruOpener.setStartRecord("5");
47+
sruOpener.setStartRecord("3029");
4848
sruOpener.setMaximumRecords("5");
4949
sruOpener.setTotal("6");
5050
// sruOpener.process("https://services.dnb.de/sru/dnb");

0 commit comments

Comments
 (0)