MFHD compression fails with pattern-less captions
authorDan Wells <dbw2@calvin.edu>
Tue, 27 Sep 2011 16:22:38 +0000 (12:22 -0400)
committerMike Rylander <mrylander@gmail.com>
Wed, 28 Sep 2011 19:37:32 +0000 (15:37 -0400)
The current code assumes that if you try to compress a range of
MFHD holdings, you actually have the necessary pattern information.
This commit introduces a very basic check to avoid the most common
failure case.

Signed-off-by: Dan Wells <dbw2@calvin.edu>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD.pm
Open-ILS/src/perlmods/lib/OpenILS/Utils/MFHD/Caption.pm

index 6964c56..309f9fe 100644 (file)
@@ -358,6 +358,12 @@ sub get_compressed_holdings {
     my $opts = shift;
     my $skip_sort = $opts->{'skip_sort'};
 
+    # basic check for necessary pattern information
+    if (!scalar keys %{$caption->pattern}) {
+        carp "Cannot compress without pattern data, returning original holdings";
+        return $self->holdings_by_caption($caption);
+    }
+
     # make sure none are compressed (except for open-ended)
     my @decomp_holdings;
     if ($skip_sort) {
index 9445834..d949b4e 100644 (file)
@@ -128,6 +128,12 @@ sub decode_pattern {
     # XXX WRITE ME (?)
 }
 
+sub pattern {
+    my $self = shift;
+
+    return $self->{_mfhdc_PATTERN};
+}
+
 sub compressible {
     my $self = shift;