discovery-indexer 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f58e08463571857d8a8469e31f38efabe2aed260
4
- data.tar.gz: a72bbe36942e3858721ef47f55986ef00dffb4fd
3
+ metadata.gz: 7839ece7ccc93abe604fbc2e88c7735da73e3593
4
+ data.tar.gz: 5713715eac6372293c4e7c50cf4169b3566c873e
5
5
  SHA512:
6
- metadata.gz: 6072df1b1424f5adfd5e6d181ff99e0e47c91ae1991f821cb539fd340017b981f599b3b726a6a5acebaa09cb673f3d024bc1cf2532dd724aea35a2e64d8d7db5
7
- data.tar.gz: 4c756b97eb2d8256c17ff8111cea52ad49e697fbfa286032dcdf72a85e303f0489a367e6197c38186cbdd06f8225db392dc05dd96aa8947207cffb4b31aa6ba4
6
+ metadata.gz: 980c089b86b8dc005f92e858e3a2eec5f64cbad358510432241928db201fd452511581f71aa57b42d2f124d143f9e43c344ce4072f49568629801a1da31e55d5
7
+ data.tar.gz: ded188f8a0d2b06c3702c89070af6000c7d943fb98f3ce35d3cf4189a708acfcc5ce69de8fb213128490dd6927ed47589d5dc5203b6d2bf387425c701636af08
@@ -11,7 +11,6 @@ require 'reader/modsxml'
11
11
  require 'reader/modsxml_reader'
12
12
 
13
13
  require 'mapper/general_mapper'
14
- require 'mapper/index_mapper'
15
14
 
16
15
  require 'writer/solr_client'
17
16
  require 'writer/solr_writer'
@@ -2,6 +2,12 @@ module DiscoveryIndexer
2
2
  module Mapper
3
3
  class GeneralMapper
4
4
 
5
+ # Initializes an instance from IndexMapper
6
+ # @param [String] druid e.g. ab123cd4567
7
+ # @param [Stanford::Mods::Record] modsxml represents the MODS xml for the druid
8
+ # @param [DiscoveryIndexer::Reader::PurlxmlModel] purlxml represents the purlxml model
9
+ # @param [Hash] collection_names represents a hash of collection_druid and
10
+ # collection_name !{"aa111aa1111"=>"First Collection", "bb123bb1234"=>"Second Collection"}
5
11
  def initialize(druid, modsxml, purlxml, collection_names={})
6
12
  @druid = druid
7
13
  @modsxml = modsxml
@@ -9,9 +15,164 @@ module DiscoveryIndexer
9
15
  @collection_names = collection_names
10
16
  end
11
17
 
18
+ # Create a Hash representing a Solr doc, with all MODS related fields populated.
19
+ # @return [Hash] Hash representing the Solr document
12
20
  def map()
21
+ solr_doc = {}
22
+ solr_doc[:id] = @druid
23
+ solr_doc.update mods_to_title_fields
24
+ solr_doc.update mods_to_author_fields
25
+ solr_doc.update mods_to_subject_search_fields
26
+ solr_doc.update mods_to_publication_fields
27
+ solr_doc.update mods_to_pub_date
28
+ solr_doc.update mods_to_others
29
+
30
+ solr_doc[:all_search] = @modsxml.text.gsub(/\s+/, ' ')
31
+ return solr_doc
13
32
  end
14
-
33
+
34
+ # @return [Hash] Hash representing the title fields
35
+ def mods_to_title_fields
36
+ # title fields
37
+ doc_hash = {
38
+ :title_245a_search => @modsxml.sw_short_title,
39
+ :title_245_search => @modsxml.sw_full_title,
40
+ :title_variant_search => @modsxml.sw_addl_titles,
41
+ :title_sort => @modsxml.sw_sort_title,
42
+ :title_245a_display => @modsxml.sw_short_title,
43
+ :title_display => @modsxml.sw_title_display,
44
+ :title_full_display => @modsxml.sw_full_title,
45
+ }
46
+ doc_hash
47
+ end
48
+
49
+ # @return [Hash] Hash representing the author fields
50
+ def mods_to_author_fields
51
+ doc_hash = {
52
+ # author fields
53
+ :author_1xx_search => @modsxml.sw_main_author,
54
+ :author_7xx_search => @modsxml.sw_addl_authors,
55
+ :author_person_facet => @modsxml.sw_person_authors,
56
+ :author_other_facet => @modsxml.sw_impersonal_authors,
57
+ :author_sort => @modsxml.sw_sort_author[1..-1],
58
+ :author_corp_display => @modsxml.sw_corporate_authors,
59
+ :author_meeting_display => @modsxml.sw_meeting_authors,
60
+ :author_person_display => @modsxml.sw_person_authors,
61
+ :author_person_full_display => @modsxml.sw_person_authors,
62
+ }
63
+ doc_hash
64
+ end
65
+
66
+ # @return [Hash] Hash representing the search fields
67
+ def mods_to_subject_search_fields
68
+ doc_hash = {
69
+ # subject search fields
70
+ :topic_search => @modsxml.topic_search,
71
+ :geographic_search => @modsxml.geographic_search,
72
+ :subject_other_search => @modsxml.subject_other_search,
73
+ :subject_other_subvy_search => @modsxml.subject_other_subvy_search,
74
+ :subject_all_search => @modsxml.subject_all_search,
75
+ :topic_facet => @modsxml.topic_facet,
76
+ :geographic_facet => @modsxml.geographic_facet,
77
+ :era_facet => @modsxml.era_facet,
78
+ }
79
+ end
80
+
81
+ # @return [Hash] Hash representing the publication fields
82
+ def mods_to_publication_fields
83
+ doc_hash = {
84
+ # publication fields
85
+ :pub_search => @modsxml.place,
86
+ :pub_date_sort => @modsxml.pub_date_sort,
87
+ :imprint_display => @modsxml.pub_date_display,
88
+ :pub_date => @modsxml.pub_date_facet,
89
+ :pub_date_display => @modsxml.pub_date_display, # pub_date_display may be deprecated
90
+ }
91
+ end
92
+
93
+ # @return [Hash] Hash representing the pub date
94
+ def mods_to_pub_date
95
+ doc_hash = {}
96
+ pub_date_sort = @modsxml.pub_date_sort
97
+ if is_positive_int? pub_date_sort
98
+ doc_hash[:pub_year_tisim] = pub_date_sort # for date slider
99
+ # put the displayable year in the correct field, :creation_year_isi for example
100
+ doc_hash[date_type_sym] = @modsxml.pub_date_sort if date_type_sym
101
+ end
102
+ return doc_hash
103
+ end
104
+
105
+ # @return [Hash] Hash representing some fields
106
+ def mods_to_others
107
+ doc_hash = {
108
+ :format_main_ssim => format_main_ssim,
109
+ :format => format, # for backwards compatibility
110
+ :language => @modsxml.sw_language_facet,
111
+ :physical => @modsxml.term_values([:physical_description, :extent]),
112
+ :summary_search => @modsxml.term_values(:abstract),
113
+ :toc_search => @modsxml.term_values(:tableOfContents),
114
+ :url_suppl => @modsxml.term_values([:related_item, :location, :url]),
115
+ }
116
+ return doc_hash
117
+ end
118
+
119
+ # select one or more format values from the controlled vocabulary here:
120
+ # http://searchworks-solr-lb.stanford.edu:8983/solr/select?facet.field=format&rows=0&facet.sort=index
121
+ # via stanford-mods gem
122
+ # @return [Array<String>] value(s) in the SearchWorks controlled vocabulary, or []
123
+ def format
124
+ vals = @modsxml.format
125
+ if vals.empty?
126
+ puts "#{@druid} has no SearchWorks format from MODS - check <typeOfResource> and other implicated MODS elements"
127
+ end
128
+ vals
129
+ end
130
+
131
+ # call stanford-mods format_main to get results
132
+ # @return [Array<String>] value(s) in the SearchWorks controlled vocabulary, or []
133
+ def format_main_ssim
134
+ vals = @modsxml.format_main
135
+ if vals.empty?
136
+ puts "#{@druid} has no SearchWorks Resource Type from MODS - check <typeOfResource> and other implicated MODS elements"
137
+ end
138
+ vals
139
+ end
140
+
141
+ # call stanford-mods sw_genre to get results
142
+ # @return [Array<String>] value(s)
143
+ def genre_ssim
144
+ @modsxml.sw_genre
145
+ end
146
+
147
+ protected
148
+
149
+ # @return true if the string parses into an int, and if so, the int is >= 0
150
+ def is_positive_int? str
151
+ begin
152
+ if str.to_i >= 0
153
+ return true
154
+ else
155
+ return false
156
+ end
157
+ rescue
158
+ end
159
+ return false
160
+ end
161
+
162
+ # determines particular flavor of displayable publication year field
163
+ # @return Solr field name as a symbol
164
+ def date_type_sym
165
+ vals = @modsxml.term_values([:origin_info,:dateIssued])
166
+ if vals and vals.length > 0
167
+ return :publication_year_isi
168
+ end
169
+ vals = @modsxml.term_values([:origin_info,:dateCreated])
170
+ if vals and vals.length > 0
171
+ return :creation_year_isi
172
+ end
173
+ nil
174
+ end
175
+
15
176
  end
16
177
  end
17
178
  end
@@ -172,7 +172,6 @@ module DiscoveryIndexer
172
172
 
173
173
  def parse_copyright
174
174
  node=@purlxml_ng_doc.css('//rightsMetadata/copyright/human[type="copyright"]')
175
- puts node.inspect
176
175
  copyright_text = node.first.content if node && node.first
177
176
  return copyright_text
178
177
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module DiscoveryIndexer
2
- VERSION = '0.3'
2
+ VERSION = '0.4'
3
3
  end
@@ -11,8 +11,8 @@ module DiscoveryIndexer
11
11
  # @param [Hash] solr_doc a Hash representation of the solr document
12
12
  # @param [RSolr::Client] solr_connector is an open connection with the solr core
13
13
  # @param [Integer] max_retries the maximum number of tries before fail
14
- def self.add(solr_doc, solr_connector, max_retries = 10)
15
- process(solr_doc, solr_connector, max_retries, is_delete=false)
14
+ def self.add(id, solr_doc, solr_connector, max_retries = 10)
15
+ process(id, solr_doc, solr_connector, max_retries, is_delete=false)
16
16
  end
17
17
 
18
18
  # Add the document to solr, retry if an error occurs.
@@ -20,13 +20,11 @@ module DiscoveryIndexer
20
20
  # @param [Hash] solr_doc that has only the id !{:id=>"ab123cd4567"}
21
21
  # @param [RSolr::Client] solr_connector is an open connection with the solr core
22
22
  # @param [Integer] max_retries the maximum number of tries before fail
23
- def self.delete(solr_doc, solr_connector, max_retries = 10)
24
- process(solr_doc, solr_connector, max_retries, is_delete=true)
23
+ def self.delete(id, solr_doc, solr_connector, max_retries = 10)
24
+ process(id, solr_doc, solr_connector, max_retries, is_delete=true)
25
25
  end
26
26
 
27
- def self.process(solr_doc, solr_connector, max_retries, is_delete=false)
28
- id = solr_doc[:id]
29
- puts id
27
+ def self.process(id, solr_doc, solr_connector, max_retries, is_delete=false)
30
28
  handler = Proc.new do |exception, attempt_number, total_delay|
31
29
  DiscoveryIndexer::Logging.logger.debug "#{exception.class} on attempt #{attempt_number} for #{id}"
32
30
  end
@@ -6,7 +6,7 @@ module DiscoveryIndexer
6
6
  class SolrWriter
7
7
  include DiscoveryIndexer::Logging
8
8
 
9
- def process(druid, index_doc, targets, solr_targets_configs)
9
+ def process(id, index_doc, targets, solr_targets_configs)
10
10
  @solr_targets_configs = solr_targets_configs
11
11
  index_targets = []
12
12
  delete_targets = []
@@ -20,29 +20,29 @@ module DiscoveryIndexer
20
20
  end
21
21
 
22
22
  # get targets with true
23
- solr_index_client(index_doc, index_targets)
23
+ solr_index_client(id, index_doc, index_targets)
24
24
  # get targets with false
25
- solr_delete_client(druid, delete_targets)
25
+ solr_delete_client(id, delete_targets)
26
26
  end
27
27
 
28
- def solr_delete_from_all(druid, solr_targets_configs)
28
+ def solr_delete_from_all(id, solr_targets_configs)
29
29
  # Get a list of all registered targets
30
30
  @solr_targets_configs=solr_targets_configs
31
31
  targets = @solr_targets_configs.keys()
32
- solr_delete_client(druid, targets)
32
+ solr_delete_client(id, targets)
33
33
  end
34
34
 
35
- def solr_index_client(index_doc, targets)
35
+ def solr_index_client(id, index_doc, targets)
36
36
  targets.each do |solr_target|
37
37
  solr_connector = get_connector_for_target(solr_target)
38
- SolrClient.add(index_doc, solr_connector)
38
+ SolrClient.add(id, index_doc, solr_connector)
39
39
  end
40
40
  end
41
41
 
42
- def solr_delete_client(druid, targets)
42
+ def solr_delete_client(id, targets)
43
43
  targets.each do |solr_target|
44
44
  solr_connector = get_connector_for_target(solr_target)
45
- SolrClient.delete({:id=>druid}, solr_connector)
45
+ SolrClient.delete(id,{}, solr_connector)
46
46
  end
47
47
  end
48
48
 
metadata CHANGED
@@ -1,125 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: discovery-indexer
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: '0.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ahmed AlSum
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-24 00:00:00.000000000 Z
11
+ date: 2015-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: stanford-mods
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: retries
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rsolr
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: webmock
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: equivalent-xml
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: vcr
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  description: This library manages the core operations for the discovery indexing such
@@ -133,7 +133,6 @@ files:
133
133
  - lib/errors.rb
134
134
  - lib/logging.rb
135
135
  - lib/mapper/general_mapper.rb
136
- - lib/mapper/index_mapper.rb
137
136
  - lib/reader/modsxml.rb
138
137
  - lib/reader/modsxml_reader.rb
139
138
  - lib/reader/purlxml.rb
@@ -155,12 +154,12 @@ require_paths:
155
154
  - lib
156
155
  required_ruby_version: !ruby/object:Gem::Requirement
157
156
  requirements:
158
- - - ">="
157
+ - - '>='
159
158
  - !ruby/object:Gem::Version
160
159
  version: '0'
161
160
  required_rubygems_version: !ruby/object:Gem::Requirement
162
161
  requirements:
163
- - - ">="
162
+ - - '>='
164
163
  - !ruby/object:Gem::Version
165
164
  version: '0'
166
165
  requirements: []
@@ -1,179 +0,0 @@
1
- module DiscoveryIndexer
2
- module Mapper
3
-
4
- # This class is responsible for creating the solr_doc hash based on the input
5
- # of druid_id, modsxml, purlxml, and optional hash of collection_names
6
- class IndexMapper < GeneralMapper
7
-
8
- # Initializes an instance from IndexMapper
9
- # @param [String] druid e.g. ab123cd4567
10
- # @param [Stanford::Mods::Record] modsxml represents the MODS xml for the druid
11
- # @param [DiscoveryIndexer::Reader::PurlxmlModel] purlxml represents the purlxml model
12
- # @param [Hash] collection_names represents a hash of collection_druid and
13
- # collection_name !{"aa111aa1111"=>"First Collection", "bb123bb1234"=>"Second Collection"}
14
- def initialize(druid, modsxml, purlxml, collection_names={})
15
- super druid, modsxml, purlxml, collection_names
16
- end
17
-
18
- # Create a Hash representing a Solr doc, with all MODS related fields populated.
19
- # @return [Hash] Hash representing the Solr document
20
- def map()
21
- solr_doc = {}
22
- solr_doc[:id] = @druid
23
- solr_doc.update mods_to_title_fields
24
- solr_doc.update mods_to_author_fields
25
- solr_doc.update mods_to_subject_search_fields
26
- solr_doc.update mods_to_publication_fields
27
- solr_doc.update mods_to_pub_date
28
- solr_doc.update mods_to_others
29
-
30
- solr_doc[:all_search] = @modsxml.text.gsub(/\s+/, ' ')
31
- return solr_doc
32
- end
33
-
34
- # @return [Hash] Hash representing the title fields
35
- def mods_to_title_fields
36
- # title fields
37
- doc_hash = {
38
- :title_245a_search => @modsxml.sw_short_title,
39
- :title_245_search => @modsxml.sw_full_title,
40
- :title_variant_search => @modsxml.sw_addl_titles,
41
- :title_sort => @modsxml.sw_sort_title,
42
- :title_245a_display => @modsxml.sw_short_title,
43
- :title_display => @modsxml.sw_title_display,
44
- :title_full_display => @modsxml.sw_full_title,
45
- }
46
- doc_hash
47
- end
48
-
49
- # @return [Hash] Hash representing the author fields
50
- def mods_to_author_fields
51
- doc_hash = {
52
- # author fields
53
- :author_1xx_search => @modsxml.sw_main_author,
54
- :author_7xx_search => @modsxml.sw_addl_authors,
55
- :author_person_facet => @modsxml.sw_person_authors,
56
- :author_other_facet => @modsxml.sw_impersonal_authors,
57
- :author_sort => @modsxml.sw_sort_author[1..-1],
58
- :author_corp_display => @modsxml.sw_corporate_authors,
59
- :author_meeting_display => @modsxml.sw_meeting_authors,
60
- :author_person_display => @modsxml.sw_person_authors,
61
- :author_person_full_display => @modsxml.sw_person_authors,
62
- }
63
- doc_hash
64
- end
65
-
66
- # @return [Hash] Hash representing the search fields
67
- def mods_to_subject_search_fields
68
- doc_hash = {
69
- # subject search fields
70
- :topic_search => @modsxml.topic_search,
71
- :geographic_search => @modsxml.geographic_search,
72
- :subject_other_search => @modsxml.subject_other_search,
73
- :subject_other_subvy_search => @modsxml.subject_other_subvy_search,
74
- :subject_all_search => @modsxml.subject_all_search,
75
- :topic_facet => @modsxml.topic_facet,
76
- :geographic_facet => @modsxml.geographic_facet,
77
- :era_facet => @modsxml.era_facet,
78
- }
79
- end
80
-
81
- # @return [Hash] Hash representing the publication fields
82
- def mods_to_publication_fields
83
- doc_hash = {
84
- # publication fields
85
- :pub_search => @modsxml.place,
86
- :pub_date_sort => @modsxml.pub_date_sort,
87
- :imprint_display => @modsxml.pub_date_display,
88
- :pub_date => @modsxml.pub_date_facet,
89
- :pub_date_display => @modsxml.pub_date_display, # pub_date_display may be deprecated
90
- }
91
- end
92
-
93
- # @return [Hash] Hash representing the pub date
94
- def mods_to_pub_date
95
- doc_hash = {}
96
- pub_date_sort = @modsxml.pub_date_sort
97
- if is_positive_int? pub_date_sort
98
- doc_hash[:pub_year_tisim] = pub_date_sort # for date slider
99
- # put the displayable year in the correct field, :creation_year_isi for example
100
- doc_hash[date_type_sym] = @modsxml.pub_date_sort if date_type_sym
101
- end
102
- return doc_hash
103
- end
104
-
105
- # @return [Hash] Hash representing some fields
106
- def mods_to_others
107
- doc_hash = {
108
- :format_main_ssim => format_main_ssim,
109
- :format => format, # for backwards compatibility
110
- :language => @modsxml.sw_language_facet,
111
- :physical => @modsxml.term_values([:physical_description, :extent]),
112
- :summary_search => @modsxml.term_values(:abstract),
113
- :toc_search => @modsxml.term_values(:tableOfContents),
114
- :url_suppl => @modsxml.term_values([:related_item, :location, :url]),
115
- }
116
- return doc_hash
117
- end
118
-
119
- # select one or more format values from the controlled vocabulary here:
120
- # http://searchworks-solr-lb.stanford.edu:8983/solr/select?facet.field=format&rows=0&facet.sort=index
121
- # via stanford-mods gem
122
- # @return [Array<String>] value(s) in the SearchWorks controlled vocabulary, or []
123
- def format
124
- vals = @modsxml.format
125
- if vals.empty?
126
- puts "#{@druid} has no SearchWorks format from MODS - check <typeOfResource> and other implicated MODS elements"
127
- end
128
- vals
129
- end
130
-
131
- # call stanford-mods format_main to get results
132
- # @return [Array<String>] value(s) in the SearchWorks controlled vocabulary, or []
133
- def format_main_ssim
134
- vals = @modsxml.format_main
135
- if vals.empty?
136
- puts "#{@druid} has no SearchWorks Resource Type from MODS - check <typeOfResource> and other implicated MODS elements"
137
- end
138
- vals
139
- end
140
-
141
- # call stanford-mods sw_genre to get results
142
- # @return [Array<String>] value(s)
143
- def genre_ssim
144
- @modsxml.sw_genre
145
- end
146
-
147
- protected
148
-
149
- # @return true if the string parses into an int, and if so, the int is >= 0
150
- def is_positive_int? str
151
- begin
152
- if str.to_i >= 0
153
- return true
154
- else
155
- return false
156
- end
157
- rescue
158
- end
159
- return false
160
- end
161
-
162
- # determines particular flavor of displayable publication year field
163
- # @return Solr field name as a symbol
164
- def date_type_sym
165
- vals = @modsxml.term_values([:origin_info,:dateIssued])
166
- if vals and vals.length > 0
167
- return :publication_year_isi
168
- end
169
- vals = @modsxml.term_values([:origin_info,:dateCreated])
170
- if vals and vals.length > 0
171
- return :creation_year_isi
172
- end
173
- nil
174
- end
175
-
176
- end
177
- end
178
- end
179
-