From 7c439bc09226f62b25a84dabc210a3608079d84e Mon Sep 17 00:00:00 2001 From: Jon Van Oast Date: Thu, 6 Feb 2025 10:36:08 -0700 Subject: [PATCH] limit (manual) indexing to only do Annotations with matchAgainst=true and acmId set --- src/main/java/org/ecocean/Annotation.java | 1 + src/main/java/org/ecocean/Shepherd.java | 20 ++++++++++++++++++++ src/main/webapp/appadmin/opensearchSync.jsp | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/ecocean/Annotation.java b/src/main/java/org/ecocean/Annotation.java index 7ec2e193a3..fe337c5393 100644 --- a/src/main/java/org/ecocean/Annotation.java +++ b/src/main/java/org/ecocean/Annotation.java @@ -189,6 +189,7 @@ public void opensearchDocumentSerializer(JsonGenerator jgen, Shepherd myShepherd } } + // TODO should this also be limited by matchAgainst and acmId? @Override public String getAllVersionsSql() { return "SELECT \"ID\", \"VERSION\" AS version FROM \"ANNOTATION\" ORDER BY version"; } diff --git a/src/main/java/org/ecocean/Shepherd.java b/src/main/java/org/ecocean/Shepherd.java index 6c903d354b..96e860f811 100644 --- a/src/main/java/org/ecocean/Shepherd.java +++ b/src/main/java/org/ecocean/Shepherd.java @@ -2063,6 +2063,26 @@ public Iterator getAllAnnotationsNoQuery() { } } + // note: where clause can also contain " ORDER BY xxx" + public Iterator getAnnotationsFilter(String jdoWhereClause) { + Query query = null; + + try { + query = pm.newQuery("SELECT FROM org.ecocean.Annotation WHERE " + jdoWhereClause); + Collection c = (Collection)(query.execute()); + List list = new ArrayList(c); + Iterator it = list.iterator(); + query.closeAll(); + return it; + } catch (Exception npe) { + System.out.println( + "Error encountered when trying to execute getAllAnnotationsFilter. Returning a null iterator."); + npe.printStackTrace(); + if (query != null) query.closeAll(); + return null; + } + } + public Iterator getAllAnnotations(String order) { Extent extClass = pm.getExtent(Annotation.class, true); Query q = pm.newQuery(extClass); diff --git a/src/main/webapp/appadmin/opensearchSync.jsp b/src/main/webapp/appadmin/opensearchSync.jsp index d97aa91d89..a2f5394460 100644 --- a/src/main/webapp/appadmin/opensearchSync.jsp +++ b/src/main/webapp/appadmin/opensearchSync.jsp @@ -88,7 +88,7 @@ if (endNum > 0) { if (indexName.equals("encounter")) { itr = myShepherd.getAllEncounters("catalogNumber"); } else if (indexName.equals("annotation")) { - itr = myShepherd.getAllAnnotations("id"); + itr = myShepherd.getAnnotationsFilter("matchAgainst == true && acmId != null ORDER BY id"); } else if (indexName.equals("individual")) { itr = myShepherd.getAllMarkedIndividuals(); }