Koha/Koha
Tomas Cohen Arazi 0161eeba13
Bug 34828: Introduce Koha::MetadataExtractor and ->get_normalized_upc
This patch introduces a new pattern for the different ->get_<thing>
methods we've been adding. The aim is that code will look more like:

my $metadata_extractor = Koha::MetadataExtractor->new;

while ( my $biblio = $biblios->next ) {
    my $record = $biblio->record;
    my $schema = $biblio->record_schema;

    $data->{$biblio->id}->{normalized_upc} =
$metadata_extractor->get_normalized_upc( { record => $record, schema =>
$schema } );
    $data->{$biblio->id}->{normalized_ean} =
$metadata_extractor->get_normalized_ean( { record => $record, schema =>
$schema } );
}

The key is that we are actually reusing the MARC::Record, and code for
each schema is organized cleanly so easier to maintain.

For the class names, I chose to add the 'MARC' name in the path, so we
don't need to refactor anything if we want to add support for another
serialization formats.

To test:
1. Apply this patch
2. Run:
   $ ktd --shell
  k$ qa -c 1
=> SUCCESS: Tests pass!
3. Sign off :-D

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-10-09 16:41:30 -03:00
..
Account Bug 33444: Update AddRenewal to take a hashref of params 2023-07-19 12:06:52 -03:00
Acquisition Bug 33105: Add missing POD 2023-07-20 10:59:32 -03:00
App
ArticleRequest
Auth Bug 30843: Add mfa_range configuration option for TOTP 2023-09-25 10:53:51 -03:00
Authority
BackgroundJob Bug 34789: Update usage throughout Koha modules and Vue components 2023-09-18 12:06:18 -03:00
Biblio Bug 33270: (QA follow-up) Do not change param hashref 2023-07-18 12:47:00 -03:00
Cache
Cash
Charges
Checkouts
Club
CodeList/Unimarc
Config
Course
Database
Edifact
ERM Bug 34789: Update usage throughout Koha modules and Vue components 2023-09-18 12:06:18 -03:00
Exceptions Bug 32942: (QA follow-up) Moving Suggestion->STATUS check to Suggestion::store 2023-09-18 15:31:45 -03:00
Exporter
ExternalContent
Filter/MARC
Hold Bug 28966: (QA follow-up) Changes for Koha objects 2023-07-25 16:25:39 -03:00
Illrequest Bug 34842: Fix Illrequest/Config.t if DB upgraded twice 2023-10-03 08:51:12 -04:00
Import
Indexer
Item
Library
List
MetadataExtractor/MARC Bug 34828: Introduce Koha::MetadataExtractor and ->get_normalized_upc 2023-10-09 16:41:30 -03:00
MetadataRecord Bug 17600: Standardize our EXPORT_OK 2021-07-16 08:58:47 +02:00
Middleware
Misc
Notice
Number
OAI/Server Bug 34467: OAI GetRecord bad encoding for Unimarc 2023-10-09 16:41:29 -03:00
Object
Objects
Old Bug 34609: Add biblio method to Old::Hold 2023-09-01 11:07:35 -03:00
Patron Bug 17499: (follow-up) Rename to Koha::Patron::MessagePreference 2023-09-12 10:16:11 -03:00
Patrons Bug 33940: Move C4::Members cardnumber sub to Koha::Policy::Patrons::Cardnumber 2023-09-15 11:57:06 -03:00
pdfformat
Plugins
Policy Bug 30825: Move holds_control_library to Koha::Policy::Holds 2023-09-22 12:35:46 -03:00
RecordProcessor
REST Bug 33690: Convert to x-koha-override 2023-10-04 11:07:56 -04:00
Result
Schema Bug 9525: DBIC schema 2023-10-04 16:40:13 -04:00
SearchEngine Bug 33406: Filter out some known isolated trouble makers 2023-09-15 15:50:43 -03:00
Serial
Sitemapper Bug 33870: Make $MAX in Sitemapper::Writer global 2023-09-01 11:23:23 -03:00
SMS
SMTP Bug 34622: Fix store default query 2023-09-19 16:34:16 -03:00
Subscription
SuggestionEngine
Tags
Template/Plugin Bug 27378: Introduce cookie consent to OPAC and staff client 2023-09-12 09:45:07 -03:00
Ticket
UI Bug 34266: Default to biblioitems.itemtype only if it's a valid itemtype 2023-09-01 12:08:35 -03:00
Util
XSLT
Z3950Responder
Account.pm Bug 34620: Do not throw expection if payment type is writeoff 2023-09-05 14:35:33 -03:00
ActionLog.pm
ActionLogs.pm
AdditionalContent.pm
AdditionalContents.pm Bug 27378: Introduce cookie consent to OPAC and staff client 2023-09-12 09:45:07 -03:00
AdditionalField.pm
AdditionalFields.pm
AdditionalFieldValue.pm
AdditionalFieldValues.pm
AdvancedEditorMacro.pm
AdvancedEditorMacros.pm
ApiKey.pm
ApiKeys.pm
ArticleRequest.pm
ArticleRequests.pm
AudioAlert.pm
AudioAlerts.pm
AuthorisedValue.pm
AuthorisedValueCategories.pm
AuthorisedValueCategory.pm
AuthorisedValues.pm
Authorities.pm
Authority.pm
AuthUtils.pm
BackgroundJob.pm
BackgroundJobs.pm
Biblio.pm Bug 33958: (QA follow-up) tidy normalized_oclc 2023-10-04 11:08:29 -04:00
BiblioFramework.pm
BiblioFrameworks.pm
Biblioitem.pm Bug 32711: Add 'public_read_list' appropriately 2023-07-24 13:58:25 -03:00
Biblioitems.pm
Biblios.pm
BiblioUtils.pm
Cache.pm
Caches.pm
Calendar.pm
Checkout.pm
Checkouts.pm
CirculationRule.pm
CirculationRules.pm Bug 32271: (QA follow-up) Correction to 'can_be_blank' logic 2023-07-19 13:00:38 -03:00
Cities.pm
City.pm
ClassSortRule.pm
ClassSortRules.pm
ClassSource.pm
ClassSources.pm
ClassSplitRule.pm
ClassSplitRules.pm
Club.pm
Clubs.pm
Config.pm
CookieManager.pm
Course.pm
Courses.pm
CoverImage.pm
CoverImages.pm
CsvProfile.pm
CsvProfiles.pm
CurbsidePickup.pm Bug 32496: Reduce unnecessary unblessings of objects in Circulation.pm 2023-09-22 10:52:39 -03:00
CurbsidePickupIssue.pm
CurbsidePickupIssues.pm
CurbsidePickupOpeningSlot.pm
CurbsidePickupOpeningSlots.pm
CurbsidePickupPolicies.pm
CurbsidePickupPolicy.pm
CurbsidePickups.pm
Database.pm
DateUtils.pm
Desk.pm
Desks.pm
EDI.pm
Edifact.pm
Email.pm
Encryption.pm
Exception.pm
Exceptions.pm Bug 17499: Add Koha-objects for messaging preferences 2023-09-12 10:16:06 -03:00
ExternalContent.pm
FrameworkPlugin.pm
Hold.pm Bug 34333: Add Koha::Hold->cancellation_requested 2023-09-18 15:31:48 -03:00
Holds.pm
I18N.pm
Illbackend.pm Bug 34223: (follow-up) Ensure consistent ordering of statuses 2023-09-12 09:48:32 -03:00
Illcomment.pm
Illcomments.pm
Illrequest.pm Bug 34905: Fix icon 2023-10-04 09:15:41 -04:00
Illrequestattribute.pm
Illrequestattributes.pm
Illrequests.pm
ImportBatch.pm
ImportBatches.pm
ImportBatchProfile.pm
ImportBatchProfiles.pm
Item.pm Bug 34722: Prevent other items from displaying to fill item-level recalls 2023-10-04 16:40:17 -04:00
Items.pm
ItemType.pm Bug 34357: Replace SUPER->imageurl in ItemTypes 2023-08-15 12:16:48 +03:00
ItemTypes.pm
KeyboardShortcut.pm
KeyboardShortcuts.pm
Libraries.pm
Library.pm Bug 9525: (QA follow-up) Tidy 2023-10-04 16:40:12 -04:00
Linktracker.pm
Localization.pm
Localizations.pm
Logger.pm
Manual.pm
MarcOverlayRule.pm
MarcOverlayRules.pm
MarcSubfieldStructure.pm
MarcSubfieldStructures.pm
MetadataExtractor.pm Bug 34828: Introduce Koha::MetadataExtractor and ->get_normalized_upc 2023-10-09 16:41:30 -03:00
MetadataIterator.pm
MetadataRecord.pm
MetaSearcher.pm
MoreUtils.pm
OAuth.pm
OAuthAccessToken.pm
OAuthAccessTokens.pm
Object.pm Bug 33745: Tell perlcritic we know what we are doing 2023-07-18 12:30:17 -03:00
Objects.pm
OverdueRule.pm Bug 29145: (QA follow-up) Use objects instead of straight SQL queries 2023-10-03 09:24:41 -04:00
OverdueRules.pm Bug 29145: (QA follow-up) Use objects instead of straight SQL queries 2023-10-03 09:24:41 -04:00
Patron.pm Bug 33245: Introduce patron->is_active 2023-10-04 11:07:49 -04:00
Patrons.pm
Plugins.pm
ProblemReport.pm
ProblemReports.pm
PseudonymizedTransaction.pm
PseudonymizedTransactions.pm
Quote.pm
Quotes.pm
Rating.pm
Ratings.pm
Recall.pm Bug 32496: Reduce unnecessary unblessings of objects in Circulation.pm 2023-09-22 10:52:39 -03:00
Recalls.pm
RecordProcessor.pm
Report.pm
Reports.pm
Review.pm
Reviews.pm
Schema.pm
Script.pm
SearchEngine.pm
SearchField.pm
SearchFields.pm
SearchFilter.pm
SearchFilters.pm
SearchMarcMap.pm
SearchMarcMaps.pm
Serial.pm
Serials.pm
SharedContent.pm
SimpleMARC.pm
Sitemapper.pm Bug 33871: Use Koha object in Sitemapper, add optional filter 2023-09-01 11:23:25 -03:00
Statistic.pm
Statistics.pm
StockRotationItem.pm
StockRotationItems.pm
StockRotationRota.pm
StockRotationRotas.pm
StockRotationStage.pm
StockRotationStages.pm
Subscription.pm
Subscriptions.pm
Suggestion.pm Bug 32942: (follow-up) Restore missing statuses 2023-09-19 15:51:40 -03:00
SuggestionEngine.pm
Suggestions.pm
Tag.pm
Tags.pm
TemplateUtils.pm Bug 33030: Add standardized subroutine for processing Template Toolkit syntax outside of notices 2023-07-14 16:52:05 -03:00
Ticket.pm Bug 34731: Don't call SendQueuedMessages if message_id is bad 2023-09-12 09:44:59 -03:00
Tickets.pm
Token.pm Bug 34163: Handle both anonymous userenv when generating CSRF tokens 2023-09-12 09:45:01 -03:00
TrackedLink.pm
TrackedLinks.pm
UploadedFile.pm
UploadedFiles.pm
Uploader.pm
Virtualshelf.pm
Virtualshelfcontent.pm
Virtualshelfcontents.pm
Virtualshelfshare.pm
Virtualshelfshares.pm
Virtualshelves.pm
Z3950Responder.pm
Z3950Server.pm
Z3950Servers.pm