Class: OAI::Provider::Model

Inherits:
Object
  • Object
show all
Defined in:
lib/oai/provider/model.rb

Overview

OAI::Provider::Model

Model implementers should subclass OAI::Provider::Model and override Model#earliest, Model#latest, and Model#find. Optionally Model#sets and Model#deleted? can be used to support sets and record deletions. It is also the responsibility of the model implementer to account for resumption tokens if support is required. Models that don’t support resumption tokens should raise an exception if a limit is requested during initialization.

earliest - should return the earliest update time in the repository. latest - should return the most recent update time in the repository. sets - should return an array of sets supported by the repository. deleted? - individual records returned should respond true or false when sent the deleted? message. available_formats - if overridden, individual records should return an array of prefixes for all formats in which that record is available, if other than [“oai_dc”] about - if overridden, should return a String or Array of XML Strings to insert into the OAI Record <about> chunks.

Resumption Tokens

For examples of using resumption tokens see the ActiveRecordWrapper, and ActiveRecordCachingWrapper classes.

There are several helper models for dealing with resumption tokens please see the ResumptionToken class for more details.

Direct Known Subclasses

ActiveRecordWrapper

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(limit = nil, timestamp_field = 'updated_at', identifier_field = 'id') ⇒ Model

Returns a new instance of Model.



34
35
36
37
38
# File 'lib/oai/provider/model.rb', line 34

def initialize(limit = nil, timestamp_field = 'updated_at', identifier_field = 'id')
  @limit = limit
  @identifier_field = identifier_field
  @timestamp_field = timestamp_field
end

Instance Attribute Details

#identifier_fieldObject (readonly)

Returns the value of attribute identifier_field.



32
33
34
# File 'lib/oai/provider/model.rb', line 32

def identifier_field
  @identifier_field
end

#timestamp_fieldObject (readonly)

Returns the value of attribute timestamp_field.



32
33
34
# File 'lib/oai/provider/model.rb', line 32

def timestamp_field
  @timestamp_field
end

Instance Method Details

#about(record) ⇒ Object

can return a String or Array of XML Strings add as OAI Record <about> chunks.



75
76
77
# File 'lib/oai/provider/model.rb', line 75

def about record
  nil
end

#deleted?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'lib/oai/provider/model.rb', line 70

def deleted?
  false
end

#earliestObject

should return the earliest timestamp available from this model.

Raises:

  • (NotImplementedError)


41
42
43
# File 'lib/oai/provider/model.rb', line 41

def earliest
  raise NotImplementedError.new
end

#find(selector, options = {}) ⇒ Object

find is the core method of a model, it returns records from the model bases on the parameters passed in.

selector can be a singular id, or the symbol :all options is a hash of options to be used to constrain the query.

Valid options:

  • :from => earliest timestamp to be included in the results

  • :until => latest timestamp to be included in the results

  • :set => the set from which to retrieve the results

  • :metadata_prefix => type of metadata requested (this may be useful if

    not all records are available in all formats)
    

Raises:

  • (NotImplementedError)


66
67
68
# File 'lib/oai/provider/model.rb', line 66

def find(selector, options={})
  raise NotImplementedError.new
end

#latestObject

should return the latest timestamp available from this model.

Raises:

  • (NotImplementedError)


46
47
48
# File 'lib/oai/provider/model.rb', line 46

def latest
  raise NotImplementedError.new
end

#setsObject



50
51
52
# File 'lib/oai/provider/model.rb', line 50

def sets
  nil
end