diff --git a/lib/SLUB/LZA/TA/Command/report.pm b/lib/SLUB/LZA/TA/Command/report.pm index ea496adc86ddcf9974df6e9833979fe9e0aaae30..59d4d92a9f683c85b5316836c1b5357abe43fb13 100644 --- a/lib/SLUB/LZA/TA/Command/report.pm +++ b/lib/SLUB/LZA/TA/Command/report.pm @@ -104,7 +104,8 @@ sub opt_spec { } ], [], - [ 'with-ldp|l' => 'report with LDP'], + [ 'with-ldp|l' => 'report with LDP, use it with caution, needs a lot of processing time'], + [ 'with-filetypes|f' => 'report with filetypes, use it with caution, needs a lot of processing time'], [ 'workflow|w=s' => 'LZA internal workflow name (optional)'], [], ); @@ -163,6 +164,8 @@ sub validate_args { my $to_epoch = Date_to_Time($to_year, $to_month, $to_day, 0, 0, 0); $self->usage_error('--date-to should have a date newer than --date-from')if ($from_epoch > $to_epoch); printf STDERR "reporting for period %04u-%02u-%02u … %04u-%02u-%02u\n", $from_year, $from_month, $from_day, $to_year, $to_month, $to_day; + say STDERR "HINT: the option '--with-ldp' results in lot of processing time and network traffic, use it with care!" if (exists $opt->{with_ldp}); + say STDERR "HINT: the option '--with-filetypes' results in lot of processing time and network traffic, use it with care!" if (exists $opt->{with_filetypes}); $opt->{creationdate_epochs}->{from} = $from_epoch; $opt->{creationdate_epochs}->{to} = $to_epoch; $opt->{creationdate_epochs}->{from_string} = sprintf("%04u-%02u-%02u", $from_year, $from_month, $from_day); @@ -438,20 +441,22 @@ sub execute { elsif ($set eq (SETS)[NO_LDP]) {$newhash{no_ldp} = 1;} else { # full, do not filter for ldp } - my $filetypes_hashref = get_filestypes_by_aips($self, \%newhash, $args); my $res = _execute($self, \%newhash, $args); $results{flavour}->{(FLAVOURS)[COUNT]}->{$aip_state}->{$set}->{""} = $res->{hits}->{total}; $results{flavour}->{(FLAVOURS)[SIZE]}->{$aip_state}->{$set}->{""} = $res->{aggregations}->{total_aip_size}->{value}*1024*1024; $results{flavour}->{(FLAVOURS)[FILES]}->{$aip_state}->{$set}->{""} = $res->{aggregations}->{total_file_count}->{value}; $results{flavour}->{(FLAVOURS)[PAYLOAD_SIZE]}->{$aip_state}->{$set}->{""} = $res->{aggregations}->{total_payload_size}->{value}; $results{flavour}->{(FLAVOURS)[PAYLOAD_FILES]}->{$aip_state}->{$set}->{""} = $res->{aggregations}->{total_payload_filecount}->{value}; - foreach my $file_extension (sort keys %{ $filetypes_hashref->{file_extension} }) { - $results{flavour}->{(FLAVOURS)[FILES]}->{$aip_state}->{$set}->{sprintf "%20s %10s", "file extension", $file_extension} = $filetypes_hashref->{file_extension}->{$file_extension}->{(FLAVOURS)[FILES]}; - $results{flavour}->{(FLAVOURS)[SIZE]}->{$aip_state}->{$set}->{sprintf "%20s %10s", "file extension", $file_extension} = $filetypes_hashref->{file_extension}->{$file_extension}->{(FLAVOURS)[SIZE]}; - } - foreach my $pronom_id (sort keys %{ $filetypes_hashref->{pronom_id} }) { - $results{flavour}->{(FLAVOURS)[FILES]}->{$aip_state}->{$set}->{sprintf "%20s %10s", "pronom id",$pronom_id} = $filetypes_hashref->{pronom_id}->{$pronom_id}->{(FLAVOURS)[FILES]}; - $results{flavour}->{(FLAVOURS)[SIZE]}->{$aip_state}->{$set}->{sprintf "%20s %10s", "pronom id",$pronom_id} = $filetypes_hashref->{pronom_id}->{$pronom_id}->{(FLAVOURS)[SIZE]}; + if (exists($opt->{with_filetypes})) { + my $filetypes_hashref = get_filestypes_by_aips($self, \%newhash, $args); + foreach my $file_extension (sort keys %{$filetypes_hashref->{file_extension}}) { + $results{flavour}->{(FLAVOURS)[FILES]}->{$aip_state}->{$set}->{sprintf "%20s %10s", "file extension", $file_extension} = $filetypes_hashref->{file_extension}->{$file_extension}->{(FLAVOURS)[FILES]}; + $results{flavour}->{(FLAVOURS)[SIZE]}->{$aip_state}->{$set}->{sprintf "%20s %10s", "file extension", $file_extension} = $filetypes_hashref->{file_extension}->{$file_extension}->{(FLAVOURS)[SIZE]}; + } + foreach my $pronom_id (sort keys %{$filetypes_hashref->{pronom_id}}) { + $results{flavour}->{(FLAVOURS)[FILES]}->{$aip_state}->{$set}->{sprintf "%20s %10s", "pronom id", $pronom_id} = $filetypes_hashref->{pronom_id}->{$pronom_id}->{(FLAVOURS)[FILES]}; + $results{flavour}->{(FLAVOURS)[SIZE]}->{$aip_state}->{$set}->{sprintf "%20s %10s", "pronom id", $pronom_id} = $filetypes_hashref->{pronom_id}->{$pronom_id}->{(FLAVOURS)[SIZE]}; + } } } undef %newhash; @@ -461,21 +466,23 @@ sub execute { if ($aip_state eq (AIPSTATE)[NEW]) {$newhash{only_new} = 1;} elsif ($aip_state eq (AIPSTATE)[UPDATE]) {$newhash{only_updated} = 1;} $newhash{only_ldp_project} = $ldp_project; - my $filetypes_hashref = get_filestypes_by_aips($self, \%newhash, $args); + my $res = _execute($self, \%newhash, $args); $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[COUNT]}->{$aip_state}->{""} = $res->{hits}->{total}; $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[SIZE]}->{$aip_state}->{""} = $res->{aggregations}->{total_aip_size}->{value}*1024*1024; $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[FILES]}->{$aip_state}->{""} = $res->{aggregations}->{total_file_count}->{value}; $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[PAYLOAD_SIZE]}->{$aip_state}->{""} = $res->{aggregations}->{total_payload_size}->{value}; $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[PAYLOAD_FILES]}->{$aip_state}->{""} = $res->{aggregations}->{total_payload_filecount}->{value}; - - foreach my $file_extension (sort keys %{ $filetypes_hashref->{file_extension} }) { - $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[FILES]}->{$aip_state}->{sprintf "%20s %10s", "file extension", $file_extension} = $filetypes_hashref->{file_extension}->{$file_extension}->{(FLAVOURS)[FILES]}; - $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[SIZE]}->{$aip_state}->{sprintf "%20s %10s", "file extension", $file_extension} = $filetypes_hashref->{file_extension}->{$file_extension}->{(FLAVOURS)[SIZE]}; - } - foreach my $pronom_id (sort keys %{ $filetypes_hashref->{pronom_id} }) { - $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[FILES]}->{$aip_state}->{sprintf "%20s %10s", "pronom id",$pronom_id} = $filetypes_hashref->{pronom_id}->{$pronom_id}->{(FLAVOURS)[FILES]}; - $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[SIZE]}->{$aip_state}->{sprintf "%20s %10s", "pronom id",$pronom_id} = $filetypes_hashref->{pronom_id}->{$pronom_id}->{(FLAVOURS)[SIZE]}; + if (exists($opt->{with_filetypes})) { + my $filetypes_hashref = get_filestypes_by_aips($self, \%newhash, $args); + foreach my $file_extension (sort keys %{$filetypes_hashref->{file_extension}}) { + $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[FILES]}->{$aip_state}->{sprintf "%20s %10s", "file extension", $file_extension} = $filetypes_hashref->{file_extension}->{$file_extension}->{(FLAVOURS)[FILES]}; + $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[SIZE]}->{$aip_state}->{sprintf "%20s %10s", "file extension", $file_extension} = $filetypes_hashref->{file_extension}->{$file_extension}->{(FLAVOURS)[SIZE]}; + } + foreach my $pronom_id (sort keys %{$filetypes_hashref->{pronom_id}}) { + $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[FILES]}->{$aip_state}->{sprintf "%20s %10s", "pronom id", $pronom_id} = $filetypes_hashref->{pronom_id}->{$pronom_id}->{(FLAVOURS)[FILES]}; + $results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[SIZE]}->{$aip_state}->{sprintf "%20s %10s", "pronom id", $pronom_id} = $filetypes_hashref->{pronom_id}->{$pronom_id}->{(FLAVOURS)[SIZE]}; + } } } } @@ -497,7 +504,6 @@ sub prepare_for_table($results, $ldp_projects) { foreach my $aip_state (AIPSTATE) { foreach my $flavour (FLAVOURS) { # count size file foreach my $filter (sort keys %{$results->{flavour}->{$flavour}->{$aip_state}->{$set}}) { - my $line; $line->{_set} = $set; $line->{_subset} = ""; @@ -518,7 +524,6 @@ sub prepare_for_table($results, $ldp_projects) { #$results{ldp_project}->{$ldp_project}->{flavour}->{(FLAVOURS)[FILES]}->{$aip_state}->{"file_extension $file_extension"} foreach my $filter (sort keys %{$results->{ldp_project}->{$ldp_project}->{flavour}->{$flavour}->{$aip_state}}) { - say "FILTER=$filter\n"; # count size file my $line; $line->{_set} = "LDP";