[Koha-devel] Koha:: namespace

Jared Camins-Esakov jcamins at cpbibliography.com
Sat Jun 9 13:58:40 CEST 2012


Good time of day (again!),

I know Paul is going to be talking about the Koha:: namespace tomorrow, but
since I can't be in KohaCon in person I wanted to share a few of my
thoughts and maybe help him out with getting the conversation started. As
part of the authority control improvements I'll be working on, I'm going to
be doing a fair amount of code cleanup, which in many cases will involve
moving the non-offending parts of the code to the Koha:: namespace (I don't
know if this is an American expression, but there's a saying that you can't
make a silk purse out of a sow's ear, which pretty much sums up how parts
of C4:: are). On the plane on the way back from Lawrence I jotted down a
few notes on how parts of the Koha:: namespace might look, and wanted to
share them. I'm not sure if the ASCII graphics will come through in the
e-mail, but this is also at the end of the authority control improvements
RFC at
http://wiki.koha-community.org/wiki/C_%26_P_Authority_Control_Improvements_RFC

Any suggestions how to improve things (or, even better, consensus!) would
be most welcome.

+ Koha::Cache - object-oriented class for caching data in Koha
|
+--- Koha::Cache::Fastmmap - mmap driver class for Koha caching
|    (implemented in bug 8092)
|
+--- Koha::Cache::Memcached - memcached driver class for Koha caching
|    (implemented by bug 7248)
|
+--- Koha::Cache::Memory - in-process driver class for Koha caching
|    (implemented in bug 8092)
|
+--- Koha::Cache::Memory - in-process driver class for Koha caching
     (implemented in bug 8092)

+ Koha::Calendar - object-oriented class for handling branch opening
  calendars

& Koha::Context - exporter class for basic configuration information
  (note: a better option might be Koha::Koha as an object-oriented
  alternative to Koha::Context; C & P will implement the start of
  the latter, if that is the consensus of the community)

& Koha::DateUtils - exporter shim class to ease migration to DateTime
  from date-only strings

# Koha::Filter - virtual parent class for all record processor filters
|
+--* Koha::Filter::[metadata schema]::* -
   | object-oriented classes extending Koha::RecordProcessor::Base
   | which implement particular record processing functionalities
   \
    +--- Koha::Filter::MARC::EmbedItems - filter for embedding items in
    | bib records for the indexing process
    |
    +--- Koha::Filter::MARC::EmbedSeeFromHeadings - filter for embedding
         see from headings in bib records for the indexing process

+ Koha::Heading - object-oriented class representing
| authority-controlled headings
|
+--- Koha::Heading::MARC21 - object-oriented MARC21 heading handler for
|    Koha::Heading
|
+--- Koha::Heading::UNIMARC - object-oriented UNIMARC heading handler
     for Koha::Heading

+ Koha::Indexer::Utils - indexer utility functions (implemented by
  bug 7818)

# Koha::Linker - virtual parent class for heading-authority linker
| modules
|
+--* Koha::Linker::* - object-oriented linker modules for linking
   | headings to authorities
   \
    +--- Koha::Linker::Default - default linker module
    |
    +--- Koha::Linker::FirstMatch - linker module that always selects
    |    the first match it finds
    |
    +--- Koha::Linker::LastMatch - linker module that always selects the
         last match it finds

# Koha::Record - virtual parent class for all types of records handled
| by Koha
|
+--- Koha::Record::Biblio - object-oriented class representing
|    bibliographic records
|
+--+ Koha::Record::Authority - object-oriented class representing
|  | authority records
|  |
|  &--- Koha::Record::Authority::Handler::MARC21 - exporter class
|  |    with MARC21-specific routines for Koha::Record::Authority
|  |    (should be used only by Koha::Record::Authority)
|  |
|  &--- Koha::Record::Authority::Handler::UNIMARC - exporter class
|       with UNIMARC-specific routines for Koha::Record::Authority
|       (should be used only by Koha::Record::Authority)
|
+--* Koha::Record::Holdings - hypothetical object-oriented class
|    representing holdings records
|
+--- Koha::Record::Item - object-oriented class representing item
     records

+ Koha::RecordProcessor - object-oriented class for processing records
  using various filters

& Koha::Search - exporter class offering access to searching
| functionality via Koha::Search::Engine
|
+--+ Koha::Search::Engine - object-oriented class which dispatches
|  | calls into the specific search engine module
|  |
|  +--- Koha::Search::Engine::Solr - class which interfaces with solr
|  |    for searching
|  |
|  +--- Koha::Search::Engine::Zebra - class which interfaces with Zebra
|       for searching
|
+--# Koha::Search::Plugin - virtual parent class for search plugins
|  |
|  +--- Koha::Search::Plugin::* - plugins implementing particular search
|       functionality
|
+--+ Koha::Search::Query - object-oriented class which generates queries
   |
   +--- Koha::Search::Query::Solr - class to generate Solr queries
   |
   +--- Koha::Search::Query::Zebra - class to generate Zebra queries

+ Koha::Template::Plugin::* - plugins for Template Toolkit

& Koha::Utils - exporter class for utility functions required by many
| parts of Koha (no dependencies other than Koha::Context)
|
&--- Koha::Utils::Authorities - exporter class for utility functions
|    related to authorities that do not act on an individual authority
|
&--- Koha::Utils::Biblios - exporter class for utility functions
     related to bibliographic records that do not act on an individual
     biblio

Legend:
+       indicates an object-oriented class (or classes, in some cases)
+---    indicates an object-oriented class that is further down in the
        hierarchy (may or may not be a subclass)
+--+    indicates an object-oriented subclass that is extended
#       indicates a virtual object-oriented parent class
+--#    indicates a virtual object-oriented parent class which is
        further down in the hierarchy
&       indicates an exporter class
&---    indicates an exporter subclass
*       indicates a hypothetical or example class
\       indicates that the class(es) below this symbol provide (a)
        specific example(s) of the hypothetical or example class above
        the symbol

NOTE: I do not propose to implement all of this as part of the authority
project. C & P's authority development will create the following classes
in the Koha:: namespace:
+ Koha::Filter
+ Koha::Filter::MARC::EmbedSeeFromHeadings
+ Koha::Heading::*
+ Koha::Record::Authority::*
+ Koha::RecordProcessor
+ Koha::Utils::Authorities (possibly)

Regards,
Jared

-- 
Jared Camins-Esakov
Bibliographer, C & P Bibliography Services, LLC
(phone) +1 (917) 727-3445
(e-mail) jcamins at cpbibliography.com
(web) http://www.cpbibliography.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/koha-devel/attachments/20120609/50d7bd41/attachment-0001.htm>


More information about the Koha-devel mailing list