From d8972929bba708defcbb868695d2d72d5200e5b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rg=20Prante?= Date: Thu, 30 Nov 2017 17:42:07 +0100 Subject: [PATCH] extend response listener by total result count --- gradle.properties | 2 +- .../org/xbib/io/iso23950/ResponseListener.java | 2 +- .../main/java/org/xbib/io/iso23950/ZClient.java | 16 ++++++++-------- .../io/iso23950/operations/PresentOperation.java | 4 ++-- .../java/org/xbib/io/iso23950/SearchTest.java | 2 +- .../java/org/xbib/io/iso23950/ZClientTest.java | 14 ++++++-------- 6 files changed, 19 insertions(+), 21 deletions(-) diff --git a/gradle.properties b/gradle.properties index 1c8dc02..21f943d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group = org.xbib name = z3950 -version = 1.0.0 +version = 1.0.1 xbib-cql.version = 1.1.0 diff --git a/z3950/src/main/java/org/xbib/io/iso23950/ResponseListener.java b/z3950/src/main/java/org/xbib/io/iso23950/ResponseListener.java index 0479cd4..43c90e8 100644 --- a/z3950/src/main/java/org/xbib/io/iso23950/ResponseListener.java +++ b/z3950/src/main/java/org/xbib/io/iso23950/ResponseListener.java @@ -8,5 +8,5 @@ import java.io.IOException; @FunctionalInterface public interface ResponseListener { - void onResponse(int status, int recordCount, long elapsedMillis) throws IOException; + void onResponse(int status, int total, int returned, long elapsedMillis) throws IOException; } diff --git a/z3950/src/main/java/org/xbib/io/iso23950/ZClient.java b/z3950/src/main/java/org/xbib/io/iso23950/ZClient.java index 4b67c16..23a636d 100644 --- a/z3950/src/main/java/org/xbib/io/iso23950/ZClient.java +++ b/z3950/src/main/java/org/xbib/io/iso23950/ZClient.java @@ -251,9 +251,9 @@ public class ZClient implements AutoCloseable { logger.log(Level.WARNING, MessageFormat.format("search was not a success [{0}]", query)); } else { if (responseListener == null) { - responseListener = (status, recordCount, elapsedMillis) -> { - logger.log(Level.INFO, MessageFormat.format("[{0}ms] [{1}] [{2}]", - elapsedMillis, recordCount, query)); + responseListener = (status, total, returned, elapsedMillis) -> { + logger.log(Level.INFO, MessageFormat.format("[{0}ms] [{1}] [{2}] [{3}]", + elapsedMillis, total, returned, query)); }; } if (search.getCount() > 0) { @@ -266,7 +266,7 @@ public class ZClient implements AutoCloseable { // avoid condition 13 "Present request out-of-range" length = search.getCount(); } - present.execute(this, offset, length, responseListener, recordListener); + present.execute(this, offset, length, search.getCount(), responseListener, recordListener); } } return search.getCount(); @@ -284,9 +284,9 @@ public class ZClient implements AutoCloseable { logger.log(Level.WARNING, MessageFormat.format("search was not a success [{0}]", query)); } else { if (responseListener == null) { - responseListener = (status, recordCount, elapsedMillis) -> { - logger.log(Level.INFO, MessageFormat.format("[{0}ms] [{1}] [{2}]", - elapsedMillis, recordCount, query)); + responseListener = (status, total, returned, elapsedMillis) -> { + logger.log(Level.INFO, MessageFormat.format("[{0}ms] [{1}] [{2}] [{3}]", + elapsedMillis, total, returned, query)); }; } if (search.getCount() > 0) { @@ -300,7 +300,7 @@ public class ZClient implements AutoCloseable { // avoid condition 13 "Present request out-of-range" length = search.getCount(); } - present.execute(this, offset, length, responseListener, recordListener); + present.execute(this, offset, length, search.getCount(), responseListener, recordListener); } } return search.getCount(); diff --git a/z3950/src/main/java/org/xbib/io/iso23950/operations/PresentOperation.java b/z3950/src/main/java/org/xbib/io/iso23950/operations/PresentOperation.java index 1e51645..4556aa9 100644 --- a/z3950/src/main/java/org/xbib/io/iso23950/operations/PresentOperation.java +++ b/z3950/src/main/java/org/xbib/io/iso23950/operations/PresentOperation.java @@ -32,7 +32,7 @@ import java.io.IOException; */ public class PresentOperation { - public void execute(ZClient client, int offset, int length, + public void execute(ZClient client, int offset, int length, int total, ResponseListener responseListener, RecordListener recordListener) throws IOException { String resultSetName = client.getResultSetName(); String elementSetName = client.getElementSetName(); @@ -57,7 +57,7 @@ public class PresentOperation { int nReturned = response.s_numberOfRecordsReturned != null ? response.s_numberOfRecordsReturned.get() : 0; int status = response.s_presentStatus.value != null ? response.s_presentStatus.value.get() : 0; if (responseListener != null) { - responseListener.onResponse(status, nReturned, System.currentTimeMillis() - millis); + responseListener.onResponse(status, total, nReturned, System.currentTimeMillis() - millis); } if (status == PresentStatus.E_success) { for (int n = 0; n < nReturned; n++) { diff --git a/z3950/src/test/java/org/xbib/io/iso23950/SearchTest.java b/z3950/src/test/java/org/xbib/io/iso23950/SearchTest.java index 2038137..849d5ad 100644 --- a/z3950/src/test/java/org/xbib/io/iso23950/SearchTest.java +++ b/z3950/src/test/java/org/xbib/io/iso23950/SearchTest.java @@ -32,7 +32,7 @@ public class SearchTest { .setPreferredRecordSyntax(preferredRecordSyntax) .build(); client.executePQF(query, from, length, - (status, recordCount, elapsedMillis) -> logger.log(Level.INFO, "records = " + recordCount), + (status, total, returned, elapsedMillis) -> logger.log(Level.INFO, "total records = " + total), record -> logger.log(Level.INFO, "found record " + record)); client.close(); } catch (NoRecordsReturnedException | MessageSizeTooSmallException e) { diff --git a/z3950/src/test/java/org/xbib/io/iso23950/ZClientTest.java b/z3950/src/test/java/org/xbib/io/iso23950/ZClientTest.java index 326ab72..ff5e1fe 100644 --- a/z3950/src/test/java/org/xbib/io/iso23950/ZClientTest.java +++ b/z3950/src/test/java/org/xbib/io/iso23950/ZClientTest.java @@ -23,10 +23,9 @@ public class ZClientTest { try (ZClient client = ZClient.newZClient(serviceName)) { logger.log(Level.INFO, "executing CQL " + serviceName); int count = client.executeCQL(query, from, size, - (status, recordCount, elapsedMillis) -> - logger.log(Level.INFO, serviceName + " results = " + recordCount), - record -> - logger.log(Level.INFO, "record = " + record)); + (status, total, returned, elapsedMillis) -> + logger.log(Level.INFO, serviceName + " total results = " + total), + record -> logger.log(Level.INFO, "record = " + record)); logger.log(Level.INFO, "returned records = " + count); } catch (Exception e) { logger.log(Level.SEVERE, e.getMessage(), e); @@ -43,10 +42,9 @@ public class ZClientTest { try (ZClient client = ZClient.newZClient(serviceName)) { logger.log(Level.INFO, "executing PQF " + serviceName); int count = client.executePQF(query, from, size, - (status, recordCount, elapsedMillis) -> - logger.log(Level.INFO, serviceName + " status = " + status + " results = " + recordCount), - record -> - logger.log(Level.INFO, "record = " + record.toString(Charset.forName(client.getEncoding())))); + (status, total, returned, elapsedMillis) -> + logger.log(Level.INFO, serviceName + " status = " + status + " total results = " + total), + record -> logger.log(Level.INFO, "record = " + record.toString(Charset.forName(client.getEncoding())))); logger.log(Level.INFO, "returned records = " + count); } catch (Exception e) { logger.log(Level.SEVERE, e.getMessage(), e);