From f4fd8299a350894badbf503a326d524141bbe10e Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <art1@andreas-romeyke.de>
Date: Mon, 25 Oct 2021 11:55:35 +0200
Subject: [PATCH] - refactoring, extracted common code from
 buildBagWithCopyOption(),   buildBagWithMoveOption() and
 buildBagWithReplaceOption() to __buildBag()

---
 lib/SLUB/LZA/SIPBuilderBagIt.pm | 77 +++++++++++----------------------
 1 file changed, 26 insertions(+), 51 deletions(-)

diff --git a/lib/SLUB/LZA/SIPBuilderBagIt.pm b/lib/SLUB/LZA/SIPBuilderBagIt.pm
index 4ac5d00..a382b65 100644
--- a/lib/SLUB/LZA/SIPBuilderBagIt.pm
+++ b/lib/SLUB/LZA/SIPBuilderBagIt.pm
@@ -334,7 +334,17 @@ sub create_slub_bagit($bagPath,$refAddBagInfo){
     return 1;
 }
 
-sub buildBagWithCopyOption($ppn,$noppn,$ieDirectory,$rightsFilePath,$aRefAddMetaFile,$refAddBagInfo,$bagPath,$dataPath,$metaPath){
+sub __buildBag {
+    my $ppn = shift;
+    my $noppn = shift;
+    my $rightsFilePath = shift;
+    my $aRefAddMetaFile = shift;
+    my $refAddBagInfo = shift;
+    my $bagPath = shift;
+    my $metaPath = shift;
+
+    # create meta dir
+    SLUB::LZA::SIPBuilderBagIt::createDir($metaPath);
     my @addMetaFile = @{ $aRefAddMetaFile };
     my @addBagInfo = @{ $refAddBagInfo };
     my $marc21;
@@ -343,15 +353,7 @@ sub buildBagWithCopyOption($ppn,$noppn,$ieDirectory,$rightsFilePath,$aRefAddMeta
     if ($ppn) {
         $marc21 = get_marc21_from_catalogue($ppn);
     }
-    # create bag dir
-    SLUB::LZA::SIPBuilderBagIt::createDir($bagPath);
-    # create data dir
-    SLUB::LZA::SIPBuilderBagIt::createDir($dataPath);
-    # copy payload files to data
-    print_scalar_data("", "INFO: copying original data...", "", "white");
-    dircopy($ieDirectory, $dataPath) || die ("Error coping $ieDirectory to $dataPath");
-    # create meta dir
-    SLUB::LZA::SIPBuilderBagIt::createDir($metaPath);
+
     # copy not payload files to meta
     SLUB::LZA::SIPBuilderBagIt::copyFilesToMeta($ppn, $metaPath, $rightsFilePath, \@addMetaFile, $marc21);
     # add metadata for bag-info.txt
@@ -361,65 +363,38 @@ sub buildBagWithCopyOption($ppn,$noppn,$ieDirectory,$rightsFilePath,$aRefAddMeta
     # create slub bagit
     print_scalar_data("", "INFO: building SIP...", "", "white");
     SLUB::LZA::SIPBuilderBagIt::create_slub_bagit($bagPath, \@addBagInfo);
+    return 1;
+}
 
+sub buildBagWithCopyOption($ppn,$noppn,$ieDirectory,$rightsFilePath,$aRefAddMetaFile,$refAddBagInfo,$bagPath,$dataPath,$metaPath){
+    # create bag dir
+    SLUB::LZA::SIPBuilderBagIt::createDir($bagPath);
+    # create data dir
+    SLUB::LZA::SIPBuilderBagIt::createDir($dataPath);
+    # copy payload files to data
+    print_scalar_data("", "INFO: copying original data...", "", "white");
+    dircopy($ieDirectory, $dataPath) || die ("Error coping $ieDirectory to $dataPath");
+    __buildBag($ppn,$noppn,$rightsFilePath,$aRefAddMetaFile,$refAddBagInfo,$bagPath,$metaPath);
     return 1;
 }
 
 sub buildBagWithMoveOption($ppn,$noppn,$ieDirectory,$rightsFilePath,$aRefAddMetaFile,$refAddBagInfo,$bagPath,$dataPath,$metaPath){
-    my @addMetaFile = @{ $aRefAddMetaFile };
-    my @addBagInfo = @{ $refAddBagInfo };
-    my $marc21;
-
-    # get descriptive metadata from catalog
-    if ($ppn) {
-        $marc21 = get_marc21_from_catalogue($ppn);
-    }
     # create bag dir
     SLUB::LZA::SIPBuilderBagIt::createDir($bagPath);
     # move payloads to data dir (which is automatically renamed from IE Directory)
     print_scalar_data("", "INFO: moving original data...", "", "white");
     dirmove($ieDirectory, $dataPath) || die ("Error moving $ieDirectory to $dataPath");
-    # create meta dir
-    SLUB::LZA::SIPBuilderBagIt::createDir($metaPath);
-    # copy not payload files to meta
-    SLUB::LZA::SIPBuilderBagIt::copyFilesToMeta($ppn, $metaPath, $rightsFilePath, \@addMetaFile, $marc21);
-    # add metadata for bag-info.txt
-    add_metadata(\@addBagInfo, $ppn, $noppn, $marc21);
-    # metadata warnings
-    SLUB::LZA::SIPBuilderBagIt::checkForTitle(\@addBagInfo);
-    # create slub bagit
-    print_scalar_data("", "INFO: building SIP...", "", "white");
-    SLUB::LZA::SIPBuilderBagIt::create_slub_bagit($bagPath, \@addBagInfo);
-
+    __buildBag($ppn,$noppn,$rightsFilePath,$aRefAddMetaFile,$refAddBagInfo,$bagPath,$metaPath);
     return 1;
 }
 
 sub buildBagWithReplaceOption($ppn,$noppn,$ieDirectory,$rightsFilePath,$aRefAddMetaFile,$refAddBagInfo,$bagPath,$dataPath,$metaPath){
-    my @addMetaFile = @{ $aRefAddMetaFile };
-    my @addBagInfo = @{ $refAddBagInfo };
-    my $marc21;
-
-    # get descriptive metadata from catalog
-    if ($ppn) {
-        $marc21 = get_marc21_from_catalogue($ppn);
-    }
     # create bag dir
     SLUB::LZA::SIPBuilderBagIt::createDir($bagPath);
     # move payloads to data dir (which is automatically renamed from IE Directory)
     print_scalar_data("", "INFO: moving original data...", "", "white");
     dirmove($ieDirectory, $dataPath) || die ("Error moving $ieDirectory to $dataPath");
-    # create meta dir
-    SLUB::LZA::SIPBuilderBagIt::createDir($metaPath);
-    # copy not payload files to meta
-    SLUB::LZA::SIPBuilderBagIt::copyFilesToMeta($ppn, $metaPath, $rightsFilePath, \@addMetaFile, $marc21);
-    # add metadata for bag-info.txt
-    add_metadata(\@addBagInfo, $ppn, $noppn, $marc21);
-    # metadata warnings
-    SLUB::LZA::SIPBuilderBagIt::checkForTitle(\@addBagInfo);
-    # create slub bagit
-    print_scalar_data("", "INFO: building SIP...", "", "white");
-    SLUB::LZA::SIPBuilderBagIt::create_slub_bagit($bagPath, \@addBagInfo);
-
+    __buildBag($ppn,$noppn,$rightsFilePath,$aRefAddMetaFile,$refAddBagInfo,$bagPath,$metaPath);
     return 1;
 }
 
@@ -436,4 +411,4 @@ sub checkForTitle($key_hash_list_aref){
     }
     return 1;
 }
-1;
\ No newline at end of file
+1;
-- 
GitLab