From adb540ecd21d272c6de01b9cffe52a13c3c032b4 Mon Sep 17 00:00:00 2001 From: pavel-stastny Date: Thu, 23 May 2024 14:17:20 +0200 Subject: [PATCH] Issue #1046 --- .../solr-9.x.cloud/logs/managed-schema | 5 ++ .../solr-9.x/logs/conf/managed-schema | 7 +++ .../statistics/accesslogs/LogRecord.java | 57 ++++++++++++++++--- .../solr/SolrStatisticsAccessLogImpl.java | 19 +++++-- .../statistics/impl/NKPLogReport.java | 14 +++++ 5 files changed, 88 insertions(+), 14 deletions(-) diff --git a/installation/solr-9.x.cloud/logs/managed-schema b/installation/solr-9.x.cloud/logs/managed-schema index 785d54a13..9c3dc775c 100644 --- a/installation/solr-9.x.cloud/logs/managed-schema +++ b/installation/solr-9.x.cloud/logs/managed-schema @@ -143,6 +143,11 @@ + + + + + diff --git a/installation/solr-9.x/logs/conf/managed-schema b/installation/solr-9.x/logs/conf/managed-schema index 9c63a26f2..55ac49245 100644 --- a/installation/solr-9.x/logs/conf/managed-schema +++ b/installation/solr-9.x/logs/conf/managed-schema @@ -155,6 +155,13 @@ + + + + + + + diff --git a/shared/common/src/main/java/cz/incad/kramerius/statistics/accesslogs/LogRecord.java b/shared/common/src/main/java/cz/incad/kramerius/statistics/accesslogs/LogRecord.java index 637fe0d69..3008036f4 100644 --- a/shared/common/src/main/java/cz/incad/kramerius/statistics/accesslogs/LogRecord.java +++ b/shared/common/src/main/java/cz/incad/kramerius/statistics/accesslogs/LogRecord.java @@ -35,6 +35,11 @@ public class LogRecord { private String ownPidpath; private String ownModelPath; + private String dateStr; + private String dateRangeStart; + private String dateRangeEnd; + + private Set licenses = new LinkedHashSet<>(); private Set issueDates = new LinkedHashSet<>(); private Set langs = new LinkedHashSet<>(); @@ -198,18 +203,31 @@ public void removeTitle(String title) { public Set getSolrDates() { return solrDates; } - - public void setSolrDates(Set solrDates) { - this.solrDates = solrDates; + + public void setDateStr(String dateStr) { + this.dateStr = dateStr; } - - public void addSolrDate(String sDate) { - this.solrDates.add(sDate); + + public String getDateStr() { + return dateStr; } - - public void removeSolrDate(String sDate) { - this.solrDates.remove(sDate); + + public void setDateRangeStart(String dateRangeStart) { + this.dateRangeStart = dateRangeStart; + } + + public String getDateRangeStart() { + return dateRangeStart; } + + public void setDateRangeEnd(String dateRangeEnd) { + this.dateRangeEnd = dateRangeEnd; + } + + public String getDateRangeEnd() { + return dateRangeEnd; + } + public Set getAuthors() { return authors; @@ -417,7 +435,28 @@ public Document toSolrBatch(DocumentBuilderFactory documentFactory) throws Parse requestedUrl.setAttribute("name", "requested_url"); requestedUrl.setTextContent(this.requestedUrl); docElm.appendChild(requestedUrl); + + if (this.dateStr != null) { + Element dateStrField = doc.createElement("field"); + requestedUrl.setAttribute("name", "date.str"); + requestedUrl.setTextContent(this.dateStr); + docElm.appendChild(dateStrField); + } + if (this.dateRangeStart != null) { + Element dateStrField = doc.createElement("field"); + requestedUrl.setAttribute("name", "date_range_start.year"); + requestedUrl.setTextContent(this.dateRangeStart); + docElm.appendChild(dateStrField); + } + + if (this.dateRangeEnd != null) { + Element dateStrField = doc.createElement("field"); + requestedUrl.setAttribute("name", "date_range_end.year"); + requestedUrl.setTextContent(this.dateRangeEnd); + docElm.appendChild(dateStrField); + } + if (this.rootTitle != null) { Element rootTitleElm = doc.createElement("field"); rootTitleElm.setAttribute("name", "root_title"); diff --git a/shared/common/src/main/java/cz/incad/kramerius/statistics/accesslogs/solr/SolrStatisticsAccessLogImpl.java b/shared/common/src/main/java/cz/incad/kramerius/statistics/accesslogs/solr/SolrStatisticsAccessLogImpl.java index 7c8d426c4..b548db7ce 100644 --- a/shared/common/src/main/java/cz/incad/kramerius/statistics/accesslogs/solr/SolrStatisticsAccessLogImpl.java +++ b/shared/common/src/main/java/cz/incad/kramerius/statistics/accesslogs/solr/SolrStatisticsAccessLogImpl.java @@ -112,6 +112,9 @@ public SolrStatisticsAccessLogImpl() { @Override public void reportAccess(final String pid, final String streamName) throws IOException { Document solrDoc = this.solrAccess.getSolrDataByPid(pid); + + + ObjectPidsPath[] paths = this.solrAccess.getPidPaths(solrDoc); ObjectModelsPath[] mpaths = this.solrAccess.getModelPaths(solrDoc); ObjectPidsPath[] ownPidPaths = this.solrAccess.getOwnPidPaths(solrDoc); @@ -198,7 +201,18 @@ public void reportAccess(final String pid, final String streamName) throws IOExc logRecord.setSessionToken(sessionId); } + // Issue #1046 + Object dateFromSolr = SElemUtils.selem("str", "date.str", solrDoc); + if (dateFromSolr!= null) logRecord.setDateStr(dateFromSolr.toString()); + + Object dateRangeEnd = SElemUtils.selem("int", "date_range_end.year", solrDoc); + if (dateRangeEnd != null) logRecord.setDateRangeEnd(dateRangeEnd.toString()); + + Object dateRangeStart = SElemUtils.selem("int", "date_range_start.year", solrDoc); + if (dateRangeStart != null) logRecord.setDateRangeStart(dateRangeStart.toString()); + logRecord.setFieldsFromHttpRequestHeaders(extractFieldsFromHttpRequestHeaders()); + for (int i = 0, ll = paths.length; i < ll; i++) { if (paths[i].contains(SpecialObjects.REPOSITORY.getPid())) { @@ -222,11 +236,6 @@ public void reportAccess(final String pid, final String streamName) throws IOExc logRecord.addIssueDate(dateFromDC.toString()); } - Object dateFromSolr = SElemUtils.selem("str", "datum_str", solrDoc); - dateFromSolr = dateFromSolr != null ? dateFromSolr : null; - if (dateFromSolr != null) { - logRecord.addSolrDate(dateFromSolr.toString()); - } Object languageFromDc = DCUtils.languageFromDC(dc); if (languageFromDc != null) { diff --git a/shared/common/src/main/java/cz/incad/kramerius/statistics/impl/NKPLogReport.java b/shared/common/src/main/java/cz/incad/kramerius/statistics/impl/NKPLogReport.java index aa54de680..39e6acf45 100644 --- a/shared/common/src/main/java/cz/incad/kramerius/statistics/impl/NKPLogReport.java +++ b/shared/common/src/main/java/cz/incad/kramerius/statistics/impl/NKPLogReport.java @@ -326,6 +326,20 @@ private static Map toMap(JSONObject obj) { if (obj.has("user")) { map.put("username", obj.optString("user")); } + + + if (obj.has("date.str")) { + map.put("date.str", obj.getString("date.str")); + + int start = obj.getInt("date_range_start.year"); + int end = obj.getInt("date_range_end.year"); + //Issue #1046 + if (start >-1 && start == end ) { + map.put("date.pulication_year", start); + } + + } + if (obj.has("hrh_referer")) { //v SOLR: "hrh_referer":["http://localhost:4321/"], String hrhReferer = obj.optString("hrh_referer");