From 9d4b0f3ede3566f313c0cfc0e400acaff3ea2d16 Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <andreas.romeyke@slub-dresden.de>
Date: Thu, 30 May 2024 16:07:34 +0200
Subject: [PATCH] - added payload output

---
 lib/SLUB/LZA/TA/Command/report.pm | 55 ++++++++++++++++++++++++++++---
 1 file changed, 51 insertions(+), 4 deletions(-)

diff --git a/lib/SLUB/LZA/TA/Command/report.pm b/lib/SLUB/LZA/TA/Command/report.pm
index 8e76f2e..4e77eac 100644
--- a/lib/SLUB/LZA/TA/Command/report.pm
+++ b/lib/SLUB/LZA/TA/Command/report.pm
@@ -144,16 +144,58 @@ sub _execute {
     # next lines extend query with reporting
     $aips_query->{aggs} = {
         # add total aip size
-        total_aip_size =>
+        total_aip_size     =>
             { sum => {
                 field => "size"
             }
             },
         # add total file count
-        total_file_count =>
+        total_file_count   =>
             { sum => {
                 field => "file_count"
             }
+            },
+        # add total payload size
+        total_payload_size =>
+            {
+                sum => {
+                    "script" => {
+                        lang   => "painless",
+                        source => <<"PAINLESS"
+if (! doc['transferMetadata.bim:bag-info_dict.bim:Payload-Oxum.keyword'].empty) {
+  return Math.floor(
+    Double.parseDouble(
+      doc['transferMetadata.bim:bag-info_dict.bim:Payload-Oxum.keyword'].value
+    )
+  )
+} else {
+  return 0
+}
+PAINLESS
+                    }
+                }
+            },
+        # add totol payload count
+        total_payload_filecount =>
+            {
+                sum => {
+                    "script" => {
+                        lang   => "painless",
+                        source => <<"PAINLESS"
+if (! doc['transferMetadata.bim:bag-info_dict.bim:Payload-Oxum.keyword'].empty) {
+  def s = doc['transferMetadata.bim:bag-info_dict.bim:Payload-Oxum.keyword'].value;
+  def pos = s.lastIndexOf('.');
+  return (
+    Double.parseDouble(
+      s.substring(pos+1)
+    )
+  );
+} else {
+  return 0
+}
+PAINLESS
+                    }
+                }
             }
     };
     $aips_query->{size}= 0; # only use aggregations
@@ -241,8 +283,11 @@ sub execute {
             }
             my $res = _execute($self, \%newhash, $args);
             $results{flavour}->{count}->{$aip_state}->{$ldp_funder} = $res->{hits}->{total};
-            $results{flavour}->{size}->{$aip_state}->{$ldp_funder} = $res->{aggregations}->{total_aip_size}->{value};
+            $results{flavour}->{size}->{$aip_state}->{$ldp_funder} = $res->{aggregations}->{total_aip_size}->{value}*1024*1024;
             $results{flavour}->{files}->{$aip_state}->{$ldp_funder} = $res->{aggregations}->{total_file_count}->{value};
+            $results{flavour}->{payload_size}->{$aip_state}->{$ldp_funder} = $res->{aggregations}->{total_payload_size}->{value};
+            $results{flavour}->{payload_files}->{$aip_state}->{$ldp_funder} = $res->{aggregations}->{total_payload_filecount}->{value};
+
         }
         undef %newhash;
 
@@ -253,8 +298,10 @@ sub execute {
             $newhash{only_ldp_project} = $ldp_project;
             my $res = _execute($self, \%newhash, $args);
             $results{ldp_project}->{$ldp_project}->{flavour}->{count}->{$aip_state} = $res->{hits}->{total};
-            $results{ldp_project}->{$ldp_project}->{flavour}->{size}->{$aip_state} = $res->{aggregations}->{total_aip_size}->{value};
+            $results{ldp_project}->{$ldp_project}->{flavour}->{size}->{$aip_state} = $res->{aggregations}->{total_aip_size}->{value}*1024*1024;
             $results{ldp_project}->{$ldp_project}->{flavour}->{files}->{$aip_state} = $res->{aggregations}->{total_file_count}->{value};
+            $results{ldp_project}->{$ldp_project}->{flavour}->{payload_size}->{$aip_state} = $res->{aggregations}->{total_payload_size}->{value};
+            $results{ldp_project}->{$ldp_project}->{flavour}->{payload_files}->{$aip_state} = $res->{aggregations}->{total_payload_filecount}->{value};
         }
 
     }
-- 
GitLab