Skip to content
Snippets Groups Projects
Commit 139567ce authored by Andreas Romeyke's avatar Andreas Romeyke
Browse files

- refactoring, extracted _handle_deleted_or_purged_aips()

parent ff4dea9d
No related branches found
No related tags found
No related merge requests found
......@@ -423,6 +423,7 @@ sub check_if_db_conform ($string, $filename) {
no_network => 1,
recover => $recovery_flag,
);
return $parser;
}
}
......@@ -613,6 +614,31 @@ sub check_if_file_is_readable($filename) {
return 1;
}
sub _handle_deleted_or_purged_aips($xp, $ret) {
my $amdsec_ie = $xp->findnodes($compiled_xpath_amdSec_ie)->[0];
my $is_deleted;
foreach my $state (qw(purged deleted)) {
my $dnx_ctx;
if ($state eq 'purged') {
$dnx_ctx = $xp->findnodes($xpath_if_purged_expr, $amdsec_ie)->[0];
}
else {
$dnx_ctx = $xp->findnodes($xpath_if_deleted_expr, $amdsec_ie)->[0];
}
$is_deleted = has_purged_entries($xp, $dnx_ctx);
if ($is_deleted) {
my $purged_state = get_purged_state($xp, $dnx_ctx);
$ret->{$state}->{state} = $purged_state;
$ret->{$state}->{reason} = get_purged_reasons($xp, $dnx_ctx)->[0];
$ret->{$state}->{note} = get_purged_notes($xp, $dnx_ctx)->[0];
$ret->{$state}->{date} = get_purged_dates($xp, $dnx_ctx)->[0];
$ret->{$state}->{authorized_by} = get_purged_authorized_by($xp, $dnx_ctx)->[0];
if ($state eq "purged") {last;}
}
}
return $is_deleted;
}
sub parse_iexml($filename, $recovery_flag) {
my $retry = 3;
while ($retry > 0) {
......@@ -635,7 +661,7 @@ sub parse_iexml($filename, $recovery_flag) {
$xp->setContextNode($dom);
my $dmdsec = $xp->findnodes($compiled_xpath_dmdSec)->[0];
#my $amdsec_rep = $xp->findnodes($compiled_xpath_amdSec_rep)->[0];
my $amdsec_ie = $xp->findnodes($compiled_xpath_amdSec_ie)->[0];
my $filesec = $xp->findnodes($compiled_xpath_fileSec)->[0];
my $ret;
$ret->{"filename"} = $filename;
......@@ -646,27 +672,7 @@ sub parse_iexml($filename, $recovery_flag) {
# get dc-records
$ret->{"dcrecords"} = get_dcrecords_ref($xp, $dmdsec);
############################################
my $is_deleted;
foreach my $state (qw(purged deleted)) {
my $dnx_ctx;
if ($state eq 'purged') {
$dnx_ctx = $xp->findnodes($xpath_if_purged_expr, $amdsec_ie)->[0];
}
else {
$dnx_ctx = $xp->findnodes($xpath_if_deleted_expr, $amdsec_ie)->[0];
}
$is_deleted = has_purged_entries($xp, $dnx_ctx);
if ($is_deleted) {
my $purged_state = get_purged_state($xp, $dnx_ctx);
$ret->{$state}->{state} = $purged_state;
$ret->{$state}->{reason} = get_purged_reasons($xp, $dnx_ctx)->[0];
$ret->{$state}->{note} = get_purged_notes($xp, $dnx_ctx)->[0];
$ret->{$state}->{date} = get_purged_dates($xp, $dnx_ctx)->[0];
$ret->{$state}->{authorized_by} = get_purged_authorized_by($xp, $dnx_ctx)->[0];
if ($state eq "purged") {last;}
}
}
my $is_deleted = _handle_deleted_or_purged_aips($xp, $ret);
############################################
# get right representation ID (has a dnx-section with <key id=label>LOCAL</key>)
my $repid = get_repid($xp);
......@@ -706,6 +712,7 @@ sub parse_iexml($filename, $recovery_flag) {
return $ret;
}
return;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment