From 41c7940991d0de674510ad95fa5b4c196e29cb62 Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <andreas.romeyke@slub-dresden.de>
Date: Fri, 5 Apr 2024 18:46:42 +0200
Subject: [PATCH] - bugfix, more specific check_lzaid() needed - bugfix, fake
 lza_id generation should match check_lzaid() tests

---
 perl/exit_strategy.pl | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/perl/exit_strategy.pl b/perl/exit_strategy.pl
index ec5d2fa..6f291ad 100644
--- a/perl/exit_strategy.pl
+++ b/perl/exit_strategy.pl
@@ -57,7 +57,8 @@ use XML::LibXML;
 sub check_lzaid ($lza_id) {
   my $rx_up=qr{[A-Za-z0-9_-]+}; # archive name & internal workflow
   my $rx_lw=qr{[a-z0-9_-]+};    # external workflow & external id
-  return ($lza_id =~ m/^$rx_up:$rx_up:$rx_up:$rx_lw:$rx_lw$/);
+  # SLUB:LZA:Kitodo:testcases:fileoriginalpath_with_http
+  return ($lza_id =~ m/^SLUB:LZA:$rx_up:$rx_lw:$rx_lw$/);
 };
 
 
@@ -269,13 +270,13 @@ SQL_DELETE_PLAN
     }
     my $lza_id_kv = List::Util::first {
       my ($dckey, $dcvalue) = @{$_};
-      ($dckey eq 'dc:identifier')
-          and (check_lzaid($dcvalue))
+      (($dckey eq 'dc:identifier')
+          and (check_lzaid($dcvalue) == 1))
     } @{$refhash->{"dcrecords"}};
     my $lza_id = @{$lza_id_kv}[1];
     if (!defined $lza_id) {
       if (!exists( $lza_id_counter_hash{ $ieid} )) {
-        $lza_id = sprintf("SLUB:LZA:migration_from_rosetta:unknown_%05lu", $lza_id_counter++);
+        $lza_id = sprintf("SLUB:LZA:migration_from:rosetta:unknown_%05lu", $lza_id_counter++);
         warn("no lza id detected on $refhash->{filename}, using $lza_id now!");
         $lza_id_counter_hash{ $ieid} = $lza_id;
       } else {
-- 
GitLab