Add 3M extension constants and structuralize EXPORT_TAGS
authorJoe Atzberger <atz@esilibrary.com>
Mon, 10 May 2010 21:37:13 +0000 (21:37 +0000)
committerThomas Berezansky <tsbere@mvlc.org>
Mon, 10 May 2010 21:37:13 +0000 (21:37 +0000)
Sip/Constants.pm

index 1449b47..1a8ac53 100644 (file)
@@ -31,180 +31,91 @@ use Exporter;
 
 our (@ISA, @EXPORT_OK, %EXPORT_TAGS);
 
-@ISA = qw(Exporter);
+BEGIN {
+    @ISA         = qw(Exporter);
+    %EXPORT_TAGS = (
 
-@EXPORT_OK = qw(PATRON_STATUS_REQ CHECKOUT CHECKIN BLOCK_PATRON
-               SC_STATUS REQUEST_ACS_RESEND LOGIN PATRON_INFO
-               END_PATRON_SESSION FEE_PAID ITEM_INFORMATION
-               ITEM_STATUS_UPDATE PATRON_ENABLE HOLD RENEW
-               RENEW_ALL PATRON_STATUS_RESP CHECKOUT_RESP
-               CHECKIN_RESP ACS_STATUS REQUEST_SC_RESEND
-               LOGIN_RESP PATRON_INFO_RESP END_SESSION_RESP
-               FEE_PAID_RESP ITEM_INFO_RESP
-               ITEM_STATUS_UPDATE_RESP PATRON_ENABLE_RESP
-               HOLD_RESP RENEW_RESP RENEW_ALL_RESP
-               REQUEST_ACS_RESEND_CKSUM REQUEST_SC_RESEND_CKSUM
-               FID_PATRON_ID FID_ITEM_ID FID_TERMINAL_PWD
-               FID_PATRON_PWD FID_PERSONAL_NAME FID_SCREEN_MSG
-               FID_PRINT_LINE FID_DUE_DATE FID_TITLE_ID
-               FID_BLOCKED_CARD_MSG FID_LIBRARY_NAME
-               FID_TERMINAL_LOCN FID_INST_ID FID_CURRENT_LOCN
-               FID_PERM_LOCN FID_HOME_LIBRARY FID_HOLD_ITEMS
-               FID_OVERDUE_ITEMS FID_CHARGED_ITEMS FID_FINE_ITEMS
-               FID_SEQNO FID_CKSUM FID_HOME_ADDR FID_EMAIL
-               FID_HOME_PHONE FID_OWNER FID_CURRENCY FID_CANCEL
-               FID_TRANSACTION_ID FID_VALID_PATRON
-               FID_RENEWED_ITEMS FID_UNRENEWED_ITEMS FID_FEE_ACK
-               FID_START_ITEM FID_END_ITEM FID_QUEUE_POS
-               FID_PICKUP_LOCN FID_FEE_TYPE FID_RECALL_ITEMS
-               FID_FEE_AMT FID_EXPIRATION FID_SUPPORTED_MSGS
-               FID_HOLD_TYPE FID_HOLD_ITEMS_LMT
-               FID_OVERDUE_ITEMS_LMT FID_CHARGED_ITEMS_LMT
-               FID_FEE_LMT FID_UNAVAILABLE_HOLD_ITEMS
-               FID_HOLD_QUEUE_LEN FID_FEE_ID FID_ITEM_PROPS
-               FID_SECURITY_INHIBIT FID_RECALL_DATE
-               FID_MEDIA_TYPE FID_SORT_BIN FID_HOLD_PICKUP_DATE
-               FID_LOGIN_UID FID_LOGIN_PWD FID_LOCATION_CODE
-               FID_VALID_PATRON_PWD
+    SC_msgs => [qw(
+        PATRON_STATUS_REQ
+        CHECKOUT        CHECKIN
+        SC_STATUS       REQUEST_ACS_RESEND
+        LOGIN           PATRON_INFO       END_PATRON_SESSION
+        FEE_PAID        ITEM_INFORMATION  ITEM_STATUS_UPDATE
+        HOLD            RENEW             RENEW_ALL
+        PATRON_ENABLE
+        BLOCK_PATRON
+    )],
 
-               FID_PATRON_BIRTHDATE FID_PATRON_CLASS FID_INET_PROFILE
+    ACS_msgs => [qw(
+        PATRON_STATUS_RESP
+        CHECKOUT_RESP   CHECKIN_RESP
+        ACS_STATUS      REQUEST_SC_RESEND
+        LOGIN_RESP      PATRON_INFO_RESP  END_SESSION_RESP
+        FEE_PAID_RESP   ITEM_INFO_RESP    ITEM_STATUS_UPDATE_RESP
+        HOLD_RESP       RENEW_RESP        RENEW_ALL_RESP
+        PATRON_ENABLE_RESP
+    )],
 
-               SC_STATUS_OK SC_STATUS_PAPER SC_STATUS_SHUTDOWN
-               SIP_DATETIME);
+    SC_status     => [qw(SC_STATUS_OK SC_STATUS_PAPER SC_STATUS_SHUTDOWN)],
+    formats       => [qw(SIP_DATETIME)],
+    constant_msgs => [qw(REQUEST_ACS_RESEND_CKSUM REQUEST_SC_RESEND_CKSUM)],
 
-%EXPORT_TAGS = (
+    field_ids     => [qw(
+        FID_PATRON_ID        FID_ITEM_ID
+        FID_TERMINAL_PWD     FID_PATRON_PWD
+        FID_PERSONAL_NAME    FID_DUE_DATE
+        FID_SCREEN_MSG       FID_PRINT_LINE
+        FID_TITLE_ID         FID_BLOCKED_CARD_MSG
+        FID_TERMINAL_LOCN    FID_INST_ID
+        FID_CURRENT_LOCN     FID_LIBRARY_NAME
+        FID_PERM_LOCN
+        FID_HOLD_ITEMS       FID_HOLD_ITEMS_LMT
+        FID_OVERDUE_ITEMS    FID_OVERDUE_ITEMS_LMT
+        FID_CHARGED_ITEMS    FID_CHARGED_ITEMS_LMT
+        FID_FINE_ITEMS       FID_SEQNO
+        FID_CKSUM            FID_HOME_ADDR
+        FID_EMAIL            FID_HOME_PHONE
+        FID_OWNER            FID_CURRENCY
+        FID_CANCEL
+        FID_TRANSACTION_ID   FID_VALID_PATRON
+        FID_RENEWED_ITEMS
+        FID_UNRENEWED_ITEMS
+        FID_FEE_ACK
+        FID_START_ITEM       FID_END_ITEM         FID_QUEUE_POS
+        FID_PICKUP_LOCN      FID_FEE_TYPE
+        FID_RECALL_ITEMS
+        FID_FEE_AMT          FID_FEE_LMT
+        FID_EXPIRATION
+        FID_SUPPORTED_MSGS
+        FID_HOLD_TYPE
+        FID_UNAVAILABLE_HOLD_ITEMS
+        FID_HOLD_QUEUE_LEN
+        FID_FEE_ID           FID_ITEM_PROPS
+        FID_RECALL_DATE      FID_SECURITY_INHIBIT
+        FID_MEDIA_TYPE       FID_SORT_BIN
+        FID_HOLD_PICKUP_DATE
+        FID_LOGIN_UID        FID_LOGIN_PWD
+        FID_LOCATION_CODE
+        FID_VALID_PATRON_PWD
+        FID_PATRON_BIRTHDATE
+        FID_PATRON_CLASS
+        FID_INET_PROFILE
 
-               SC_msgs => [qw(PATRON_STATUS_REQ CHECKOUT CHECKIN
-                              BLOCK_PATRON SC_STATUS
-                              REQUEST_ACS_RESEND LOGIN
-                              PATRON_INFO
-                              END_PATRON_SESSION FEE_PAID
-                              ITEM_INFORMATION
-                              ITEM_STATUS_UPDATE
-                              PATRON_ENABLE HOLD RENEW
-                              RENEW_ALL)],
+        FID_COLLECTION_CODE
+        FID_CALL_NUMBER
+        FID_DESTINATION_LOCATION
+        FID_ALERT_TYPE
+        FID_HOLD_PATRON_ID
+        FID_HOLD_PATRON_NAME
+        )],
+    );
 
-               ACS_msgs => [qw(PATRON_STATUS_RESP CHECKOUT_RESP
-                               CHECKIN_RESP ACS_STATUS
-                               REQUEST_SC_RESEND LOGIN_RESP
-                               PATRON_INFO_RESP
-                               END_SESSION_RESP
-                               FEE_PAID_RESP ITEM_INFO_RESP
-                               ITEM_STATUS_UPDATE_RESP
-                               PATRON_ENABLE_RESP HOLD_RESP
-                               RENEW_RESP RENEW_ALL_RESP)],
-
-               constant_msgs => [qw(REQUEST_ACS_RESEND_CKSUM
-                                    REQUEST_SC_RESEND_CKSUM)],
-
-               field_ids => [qw( FID_PATRON_ID FID_ITEM_ID
-                                 FID_TERMINAL_PWD
-                                 FID_PATRON_PWD
-                                 FID_PERSONAL_NAME
-                                 FID_SCREEN_MSG
-                                 FID_PRINT_LINE FID_DUE_DATE
-                                 FID_TITLE_ID
-                                 FID_BLOCKED_CARD_MSG
-                                 FID_LIBRARY_NAME
-                                 FID_TERMINAL_LOCN
-                                 FID_INST_ID
-                                 FID_CURRENT_LOCN
-                                 FID_PERM_LOCN
-                                 FID_HOME_LIBRARY
-                                 FID_HOLD_ITEMS
-                                 FID_OVERDUE_ITEMS
-                                 FID_CHARGED_ITEMS
-                                 FID_FINE_ITEMS FID_SEQNO
-                                 FID_CKSUM FID_HOME_ADDR
-                                 FID_EMAIL FID_HOME_PHONE
-                                 FID_OWNER FID_CURRENCY
-                                 FID_CANCEL
-                                 FID_TRANSACTION_ID
-                                 FID_VALID_PATRON
-                                 FID_RENEWED_ITEMS
-                                 FID_UNRENEWED_ITEMS
-                                 FID_FEE_ACK FID_START_ITEM
-                                 FID_END_ITEM FID_QUEUE_POS
-                                 FID_PICKUP_LOCN
-                                 FID_FEE_TYPE
-                                 FID_RECALL_ITEMS
-                                 FID_FEE_AMT FID_EXPIRATION
-                                 FID_SUPPORTED_MSGS
-                                 FID_HOLD_TYPE
-                                 FID_HOLD_ITEMS_LMT
-                                 FID_OVERDUE_ITEMS_LMT
-                                 FID_CHARGED_ITEMS_LMT
-                                 FID_FEE_LMT
-                                 FID_UNAVAILABLE_HOLD_ITEMS
-                                 FID_HOLD_QUEUE_LEN
-                                 FID_FEE_ID FID_ITEM_PROPS
-                                 FID_SECURITY_INHIBIT
-                                 FID_RECALL_DATE
-                                 FID_MEDIA_TYPE FID_SORT_BIN
-                                 FID_HOLD_PICKUP_DATE
-                                 FID_LOGIN_UID FID_LOGIN_PWD
-                                 FID_LOCATION_CODE
-                                 FID_VALID_PATRON_PWD
-
-                                 FID_PATRON_BIRTHDATE
-                                 FID_PATRON_CLASS
-                                 FID_INET_PROFILE)],
-
-               SC_status => [qw(SC_STATUS_OK SC_STATUS_PAPER
-                                SC_STATUS_SHUTDOWN)],
-
-               formats => [qw(SIP_DATETIME)],
-
-               all => [qw(PATRON_STATUS_REQ CHECKOUT CHECKIN
-                          BLOCK_PATRON SC_STATUS
-                          REQUEST_ACS_RESEND LOGIN PATRON_INFO
-                          END_PATRON_SESSION FEE_PAID
-                          ITEM_INFORMATION ITEM_STATUS_UPDATE
-                          PATRON_ENABLE HOLD RENEW RENEW_ALL
-                          PATRON_STATUS_RESP CHECKOUT_RESP
-                          CHECKIN_RESP ACS_STATUS
-                          REQUEST_SC_RESEND LOGIN_RESP
-                          PATRON_INFO_RESP END_SESSION_RESP
-                          FEE_PAID_RESP ITEM_INFO_RESP
-                          ITEM_STATUS_UPDATE_RESP
-                          PATRON_ENABLE_RESP HOLD_RESP
-                          RENEW_RESP RENEW_ALL_RESP
-                          REQUEST_ACS_RESEND_CKSUM
-                          REQUEST_SC_RESEND_CKSUM FID_PATRON_ID
-                          FID_ITEM_ID FID_TERMINAL_PWD
-                          FID_PATRON_PWD FID_PERSONAL_NAME
-                          FID_SCREEN_MSG FID_PRINT_LINE
-                          FID_DUE_DATE FID_TITLE_ID
-                          FID_BLOCKED_CARD_MSG FID_LIBRARY_NAME
-                          FID_TERMINAL_LOCN FID_INST_ID
-                          FID_CURRENT_LOCN FID_PERM_LOCN FID_HOME_LIBRARY
-                          FID_HOLD_ITEMS FID_OVERDUE_ITEMS
-                          FID_CHARGED_ITEMS FID_FINE_ITEMS
-                          FID_SEQNO FID_CKSUM FID_HOME_ADDR
-                          FID_EMAIL FID_HOME_PHONE FID_OWNER
-                          FID_CURRENCY FID_CANCEL
-                          FID_TRANSACTION_ID FID_VALID_PATRON
-                          FID_RENEWED_ITEMS FID_UNRENEWED_ITEMS
-                          FID_FEE_ACK FID_START_ITEM
-                          FID_END_ITEM FID_QUEUE_POS
-                          FID_PICKUP_LOCN FID_FEE_TYPE
-                          FID_RECALL_ITEMS FID_FEE_AMT
-                          FID_EXPIRATION FID_SUPPORTED_MSGS
-                          FID_HOLD_TYPE FID_HOLD_ITEMS_LMT
-                          FID_OVERDUE_ITEMS_LMT
-                          FID_CHARGED_ITEMS_LMT FID_FEE_LMT
-                          FID_UNAVAILABLE_HOLD_ITEMS
-                          FID_HOLD_QUEUE_LEN FID_FEE_ID
-                          FID_ITEM_PROPS FID_SECURITY_INHIBIT
-                          FID_RECALL_DATE FID_MEDIA_TYPE
-                          FID_SORT_BIN FID_HOLD_PICKUP_DATE
-                          FID_LOGIN_UID FID_LOGIN_PWD
-                          FID_LOCATION_CODE FID_VALID_PATRON_PWD
-                          FID_PATRON_BIRTHDATE FID_PATRON_CLASS
-                          FID_INET_PROFILE
-                          SC_STATUS_OK SC_STATUS_PAPER SC_STATUS_SHUTDOWN
-                          SIP_DATETIME
-                          )]);
+    # Add the contents of the other ":class" tags to make an ":all" class (deleting duplicates)
+    # This is the textbook example from http://perldoc.perl.org/Exporter.html
+    my %seen;
+    push @{$EXPORT_TAGS{all}}, grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach keys %EXPORT_TAGS;
+    Exporter::export_ok_tags('all');    # now add :all to @EXPORT_OK
+}
 
 #
 # Declare message types
@@ -338,16 +249,24 @@ use constant {
     FID_PATRON_BIRTHDATE       => 'PB',
     FID_PATRON_CLASS           => 'PC',
 
-    # SIP Extension for reporting patron internet privileges
+    # SIP Extension for reporting patron internet privileges... application unknown
     FID_INET_PROFILE           => 'PI',
+
+    # SIP Extensions by 3M spec: Document Revision 1.20, 02/14/2005
+    FID_COLLECTION_CODE        => 'CR',
+    FID_CALL_NUMBER            => 'CS',
+    FID_DESTINATION_LOCATION   => 'CT',
+    FID_ALERT_TYPE             => 'CV',
+    FID_HOLD_PATRON_ID         => 'CY',
+    FID_HOLD_PATRON_NAME       => 'DA',
 };
 
 #
 # SC Status Codes
 #
 use constant {
-    SC_STATUS_OK     => '0',
-    SC_STATUS_PAPER  => '1',
+    SC_STATUS_OK       => '0',
+    SC_STATUS_PAPER    => '1',
     SC_STATUS_SHUTDOWN => '2',
 };
 
@@ -357,3 +276,5 @@ use constant {
 use constant {
     SIP_DATETIME => "%Y%m%d    %H%M%S",
 };
+
+1;