From d85a4eb792e96eb17f25db73029361e5fa4cc81d Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <andreas.romeyke@slub-dresden.de>
Date: Mon, 13 Feb 2023 16:26:23 +0100
Subject: [PATCH] - added exact match - rosetta expects "+" as sign to combine
 subqueries via logical and

---
 lib/SLUB/LZA/Rosetta/TA/Command/search.pm | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/lib/SLUB/LZA/Rosetta/TA/Command/search.pm b/lib/SLUB/LZA/Rosetta/TA/Command/search.pm
index 1125748..c7d730b 100644
--- a/lib/SLUB/LZA/Rosetta/TA/Command/search.pm
+++ b/lib/SLUB/LZA/Rosetta/TA/Command/search.pm
@@ -2,8 +2,6 @@ package SLUB::LZA::Rosetta::TA::Command::search;
 use strict;
 use warnings;
 use feature qw(say);
-
-
 use SLUB::LZA::Rosetta::TA -command;
 
 sub abstract {"searches Rosetta based Archival Information System";}
@@ -82,7 +80,7 @@ sub execute {
     }
     my @queries;
     if (exists $opt->{source}) {
-        push @queries, "IE.sourceMD.content=$opt->{source}";
+        push @queries, "IE.sourceMD.content==$opt->{source}";
     }
     if (exists $opt->{ie}) {
         push @queries, "IE.dc.identifier==$opt->{ie}";
@@ -97,30 +95,31 @@ sub execute {
         push @queries, "FILE.objectCharacteristics.modificationDate==$opt->{modificationdate}";
     }
     if (exists $opt->{'with_format'}) {
-        push @queries, "FILE.generalFileCharacteristics.formatLibraryId=$opt->{'with_format'}";
+        push @queries, "FILE.generalFileCharacteristics.formatLibraryId==$opt->{'with_format'}";
     }
     # unsupported by Rosetta <= 7.0
     #if (exists $opt->{'without_format'}) {
     #    push @queries, "FILE.generalFileCharacteristics.formatLibraryId!=$opt->{'without_format'}";
     #}
     if (exists $opt->{'with_valid_files'}) {
-        push @queries, "FILE.fileValidation.isValid=true";
+        push @queries, "FILE.fileValidation.isValid==true";
     }
     if (exists $opt->{'with_invalid_files'}) {
-        push @queries, "FILE.fileValidation.isValid=false";
+        push @queries, "FILE.fileValidation.isValid==false";
     }
     if (exists $opt->{'with_passed_viruschecks'}) {
-        push @queries, "FILE.fileVirusCheck.status=true";
+        push @queries, "FILE.fileVirusCheck.status==true";
     }
     if (exists $opt->{'with_failed_viruschecks'}) {
-        push @queries, "FILE.fileVirusCheck.status=false";
+        push @queries, "FILE.fileVirusCheck.status==false";
     }
     if (exists $opt->{'with_missed_viruschecks'}) {
         push @queries, "FILE.fileVirusCheck.status==%22%22";
     }
 
 
-    my $query = join(" and ", @queries);
+    #my $query = join(" and ", @queries);
+    my $query = join("+", @queries);
     if (exists $opt->{debug}) {
         use Data::Printer;
         p( $opt);
-- 
GitLab