dor-services 2.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. data/lib/datastreams/content_metadata_ds.rb +12 -0
  2. data/lib/datastreams/embargo_metadata_ds.rb +107 -0
  3. data/lib/datastreams/events_ds.rb +58 -0
  4. data/lib/datastreams/identity_metadata_ds.rb +28 -0
  5. data/lib/datastreams/ng_tidy.rb +19 -0
  6. data/lib/datastreams/simple_dublin_core_ds.rb +23 -0
  7. data/lib/datastreams/workflow_definition_ds.rb +105 -0
  8. data/lib/datastreams/workflow_ds.rb +16 -0
  9. data/lib/dor-services.rb +19 -0
  10. data/lib/dor/admin_policy_object.rb +11 -0
  11. data/lib/dor/base.rb +81 -0
  12. data/lib/dor/cleanup_service.rb +32 -0
  13. data/lib/dor/config.rb +45 -0
  14. data/lib/dor/digital_stacks_service.rb +82 -0
  15. data/lib/dor/druid_utils.rb +41 -0
  16. data/lib/dor/embargo.rb +41 -0
  17. data/lib/dor/exceptions.rb +13 -0
  18. data/lib/dor/item.rb +141 -0
  19. data/lib/dor/metadata_handlers/catalog_handler.rb +22 -0
  20. data/lib/dor/metadata_handlers/mdtoolkit_handler.rb +42 -0
  21. data/lib/dor/metadata_service.rb +88 -0
  22. data/lib/dor/mods2dc.xslt +447 -0
  23. data/lib/dor/provenance_metadata_service.rb +65 -0
  24. data/lib/dor/registration_service.rb +87 -0
  25. data/lib/dor/rsolr.rb +27 -0
  26. data/lib/dor/sdr_ingest_service.rb +117 -0
  27. data/lib/dor/search_service.rb +86 -0
  28. data/lib/dor/suri_service.rb +37 -0
  29. data/lib/dor/tei2dc.xslt +102 -0
  30. data/lib/dor/workflow_object.rb +13 -0
  31. data/lib/dor/workflow_service.rb +111 -0
  32. data/lib/gsearch/demoFoxmlToSolr.xslt +384 -0
  33. data/lib/gsearch/schema.xml +229 -0
  34. data/lib/tasks/rdoc.rake +32 -0
  35. data/lib/xml_models/foxml.rb +261 -0
  36. data/lib/xml_models/identity_metadata/dublin_core.rb +119 -0
  37. data/lib/xml_models/identity_metadata/identity_metadata.rb +288 -0
  38. metadata +462 -0
@@ -0,0 +1,119 @@
1
+ require 'rubygems'
2
+ require 'nokogiri'
3
+
4
+ #<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
5
+ #xmlns:srw_dc="info:srw/schema/1/dc-schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6
+ #xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://cosimo.stanford.edu/standards/oai_dc/v2/oai_dc.xsd">
7
+ # <dc:title>Life of Abraham Lincoln, sixteenth president of the United States: Containing his early
8
+ #history and political career; together with the speeches, messages, proclamations and other official
9
+ #documents illus. of his eventful administration</dc:title>
10
+ # <dc:creator>Crosby, Frank.</dc:creator>
11
+ # <dc:format>text</dc:format>
12
+ # <dc:language>eng</dc:language>
13
+ # <dc:subject>E457 .C94</dc:subject>
14
+ # <dc:identifier>lccn:11030686</dc:identifier>
15
+ # <dc:identifier>callseq:1</dc:identifier>
16
+ # <dc:identifier>shelfseq:973.7111 .L731CR</dc:identifier>
17
+ # <dc:identifier>catkey:1206382</dc:identifier>
18
+ # <dc:identifier>barcode:36105005459602</dc:identifier>
19
+ # <dc:identifier>uuid:ddcf5f1a-0331-4345-beca-e66f7db276eb</dc:identifier>
20
+ # <dc:identifier>google:STANFORD_36105005459602</dc:identifier>
21
+ # <dc:identifier>druid:ng786kn0371</dc:identifier>
22
+ #</oai_dc:dc>
23
+
24
+ # TODO: Rewrite in OM
25
+
26
+ class DublinCore
27
+
28
+
29
+ attr_accessor :xml
30
+
31
+ attr_accessor :title
32
+ attr_accessor :creator
33
+ attr_accessor :subject
34
+ attr_accessor :description
35
+ attr_accessor :publisher
36
+ attr_accessor :contributor
37
+ attr_accessor :date
38
+ attr_accessor :type
39
+ attr_accessor :format
40
+ attr_accessor :identifier
41
+ attr_accessor :source
42
+ attr_accessor :language
43
+ attr_accessor :relation
44
+ attr_accessor :coverage
45
+ attr_accessor :rights
46
+
47
+
48
+
49
+
50
+ def initialize(xml = nil)
51
+
52
+ @title ||= []
53
+ @creator ||= []
54
+ @subject ||= []
55
+ @description ||= []
56
+ @publisher ||= []
57
+ @contributor ||= []
58
+ @date ||= []
59
+ @type ||= []
60
+ @format ||= []
61
+ @identifier ||= []
62
+ @source ||= []
63
+ @language ||= []
64
+ @relation ||= []
65
+ @coverage ||= []
66
+ @rights ||= []
67
+
68
+ # if the new is given an xml string, store that in the xml attr_accessor and don't rebuild.
69
+ # this will allow users to access the raw unprocessed XML string via @xml.
70
+ if xml.nil?
71
+ build_xml()
72
+ else
73
+ @xml = xml
74
+ end
75
+
76
+ end #initalize
77
+
78
+
79
+ def build_xml()
80
+ builder = Nokogiri::XML::Builder.new do |xml|
81
+ xml.dc('xmlns:dc' => 'http://purl.org/dc/elements/1.1/', 'xmlns:srw_dc' => 'info:srw/schema/1/dc-schema', "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance" ) {
82
+ xml.parent.namespace = xml.parent.add_namespace_definition('oai_dc','http://www.openarchives.org/OAI/2.0/oai_dc/')
83
+ xml.parent.add_namespace_definition("xsi:schemaLocation", "http://www.openarchives.org/OAI/2.0/oai_dc/ http://cosimo.stanford.edu/standards/oai_dc/v2/oai_dc.xsd")
84
+ self.instance_variables.each do |var|
85
+ unless var == "@xml"
86
+ self.instance_variable_get(var).each { |v| xml['dc'].send("#{var.gsub('@','')}_", v) }
87
+ end #unless
88
+ end #instance_Variables.each
89
+ }
90
+ end
91
+ @xml = builder.to_xml
92
+ end
93
+
94
+
95
+
96
+ # This method rebuilds the xml attr_accesor and returns it as a string.
97
+ def to_xml
98
+ build_xml
99
+ return self.xml
100
+ end #to_xml
101
+
102
+
103
+ # This method takes DC XML as a string, and maps the root child node to their proper attr_accesor.
104
+
105
+ def self.from_xml(xml="")
106
+ dc = DublinCore.new(xml)
107
+ doc = Nokogiri::XML(xml)
108
+ children = doc.root.element_children
109
+ children.each do |c|
110
+ if dc.instance_variables.include?("@#{c.name}")
111
+ dc.send("#{c.name}").send("<<", c.text.strip)
112
+ end #if
113
+ end #each
114
+ return dc
115
+ end #from_xml
116
+
117
+
118
+
119
+ end #dublin_core
@@ -0,0 +1,288 @@
1
+ require 'rubygems'
2
+ require 'nokogiri'
3
+ #<identityMetadata>
4
+ # <objectId>druid:rt923jk342</objectId>
5
+ # <objectType>item</objectType>
6
+ # <objectLabel>google download barcode 36105049267078</objectLabel>
7
+ # <objectCreator>DOR</objectCreator>
8
+ # <citationTitle>Squirrels of North America</citationTitle>
9
+ # <citationCreator>Eder, Tamara, 1974-</citationCreator>
10
+ # <sourceId source="google">STANFORD_342837261527</sourceId>
11
+ # <otherId name="barcode">36105049267078</otherId>
12
+ # <otherId name="catkey">129483625</otherId>
13
+ # <otherId name="uuid">7f3da130-7b02-11de-8a39-0800200c9a66</otherId>
14
+ # <tag>Google Books : Phase 1</tag>
15
+ # <tag>Google Books : Scan source STANFORD</tag>
16
+ #</identityMetadata>
17
+
18
+ # TODO: Rewrite in OM
19
+
20
+ # this just maps the #value method to return the "text", "source", "name" values form the hash
21
+ class SourceId
22
+ attr_reader :source
23
+ attr_reader :value
24
+
25
+ def xml_values
26
+ [self.value, {:source => self.source}]
27
+ end
28
+
29
+ def source=(val)
30
+ @source = val.nil? ? nil : val.to_s
31
+ end
32
+
33
+ def value=(val)
34
+ @value = val.nil? ? nil : val.to_s
35
+ end
36
+
37
+ def to_s
38
+ "#{self.source}:#{self.value}"
39
+ end
40
+
41
+ def empty?
42
+ (self.source.nil? || self.source.empty?) && (self.value.nil? || self.value.empty?)
43
+ end
44
+
45
+ end
46
+
47
+ class OtherId
48
+ attr_reader :name
49
+ attr_reader :value
50
+
51
+ def xml_values
52
+ [self.value, {:name => self.name}]
53
+ end
54
+
55
+ def name=(val)
56
+ @name = val.nil? ? nil : val.to_s
57
+ end
58
+
59
+ def value=(val)
60
+ @value = val.nil? ? nil : val.to_s
61
+ end
62
+
63
+ def to_s
64
+ "#{self.name}:#{self.value}"
65
+ end
66
+
67
+ def empty?
68
+ (self.name.nil? || self.name.empty?) && (self.value.nil? || self.value.empty?)
69
+ end
70
+
71
+ end
72
+
73
+ class Tag
74
+ attr_accessor :value
75
+
76
+ def xml_values
77
+ [self.value]
78
+ end
79
+ end
80
+
81
+
82
+ class IdentityMetadata
83
+
84
+
85
+
86
+ # these are single values
87
+ attr_accessor :objectId
88
+ attr_reader :sourceId, :tags
89
+ # these instance vars map to nodes in the identityMetadata XML
90
+ attr_accessor :objectTypes, :objectLabels, :objectCreators, :citationCreators, :citationTitle,
91
+ :otherIds, :adminPolicy, :agreementId
92
+ # this stores the Nokogiri XML
93
+ attr_reader :ng_xml
94
+
95
+
96
+ def initialize(xml = nil)
97
+
98
+ @objectId, @citationTitle, @adminPolicy, @agreementId = "", "", "", "" #there can only be one of these values
99
+ @sourceId = SourceId.new #there can be only one.
100
+ @otherIds, @tags = [], [] # this is an array that will be filled with OtherId and Tag objects
101
+ @objectTypes, @objectLabels, @objectCreators, @citationCreators = [], [], [], []
102
+
103
+
104
+ # if the new is given an xml string, store that in the xml attr_accessor and don't rebuild.
105
+ # this will allow users to access the raw unprocessed XML string via @xml.
106
+ if xml.nil?
107
+ build_xml()
108
+ else
109
+ @xml = xml
110
+ end
111
+ end #def init
112
+
113
+ #this builds the xml based on the instance variables in the object. If it's a hash, this assumes that we want to
114
+ #use attributes ==> {"text"=> "7f3da130-7b02-11de-8a39-0800200c9a66", "name" => "uuid" }. If the instance var is
115
+ # an array, we assume we don't need attrs, so all values get put into the text node.
116
+ def build_xml()
117
+ builder = Nokogiri::XML::Builder.new do |xml|
118
+ xml.identityMetadata {
119
+ field_names = self.instance_variables.sort { |a,b| "#{a}:#{self.instance_variable_get(a).to_s}" <=> "#{b}:#{self.instance_variable_get(b).to_s}"}
120
+ field_names.each do |var_name|
121
+ unless var_name == "@xml"
122
+ var = self.instance_variable_get(var_name)
123
+ tag_name = var_name[1..-1]
124
+ if var.is_a?(Array)
125
+ tag_name.chomp!('s')
126
+ end
127
+ # wrap the singleton properties in a one-element array
128
+ var = Array(var)
129
+ var.each do |v|
130
+ if v.respond_to?(:xml_values)
131
+ unless (v.respond_to?(:empty?) && v.empty?)
132
+ xml.send(tag_name, *(v.xml_values))
133
+ end
134
+ else
135
+ xml.send(tag_name, v.to_s)
136
+ end
137
+ end #var.each
138
+ end #unless
139
+ end #instance_variables.each
140
+ }
141
+ end
142
+ @ng_xml = builder.doc
143
+ end
144
+
145
+ def xml
146
+ @ng_xml.to_xml(:save_with => Nokogiri::XML::Node::SaveOptions::NO_DECLARATION, :indent => 2)
147
+ end
148
+
149
+ def xml=(value)
150
+ @ng_xml = Nokogiri::XML(value)
151
+ end
152
+
153
+ # This method rebuilds the xml attr_accesor and returns it as a string.
154
+ def to_xml
155
+ build_xml
156
+ return self.xml
157
+ end #to_xml
158
+
159
+ #
160
+ # The following methods are convience methods
161
+ #
162
+
163
+
164
+ # Add a new tag to the IdentityMetadata instance
165
+ def add_tag(new_tag_value)
166
+ # Make sure tag is not already present
167
+ unless self.get_tags.include?(new_tag_value)
168
+ tag = Tag.new
169
+ tag.value = new_tag_value
170
+ self.tags << tag
171
+ end
172
+ return self.get_tags
173
+ end
174
+
175
+ alias :tag :add_tag
176
+
177
+ # Returns an array of tag values
178
+ def get_tags()
179
+ self.tags.collect { |t| t.value }
180
+ end
181
+
182
+
183
+ # Return the OtherId hash for the specified identier name
184
+ def get_other_id(name)
185
+ self.otherIds.each do |oi|
186
+ if oi.name == name
187
+ return oi
188
+ end
189
+ end
190
+ return nil
191
+ end
192
+
193
+ # Return the identifier value for the specified identier name
194
+ def get_identifier_value(key)
195
+ other_id = self.get_other_id(key)
196
+ if other_id != nil && other_id.value != nil
197
+ return other_id.value
198
+ end
199
+ raise "No #{key} indentifier found for druid #{@objectId}"
200
+ end
201
+
202
+ # Add a new name,value pair to the set of identifiers
203
+ def add_identifier(*args)
204
+ (key,value) = args.collect { |arg| arg.to_s }
205
+ if value.nil? and key =~ /:/
206
+ (key,value) = key.split(/:/,2)
207
+ end
208
+
209
+ other_id = self.get_other_id(key)
210
+ if (other_id != nil)
211
+ other_id.value = value
212
+ else
213
+ other_id = OtherId.new
214
+ other_id.name = key
215
+ other_id.value = value
216
+ @otherIds << other_id
217
+ end
218
+ end
219
+
220
+ def sourceId=(value)
221
+ if value.nil?
222
+ @sourceId.source = nil
223
+ @sourceId.value = nil
224
+ else
225
+ (source,value) = value.split(/:/,2)
226
+
227
+ @sourceId.source = source
228
+ @sourceId.value = value
229
+ end
230
+ end
231
+
232
+ # Return an array of strings where each entry consists of name:value
233
+ def get_id_pairs
234
+ pairs=Array.new
235
+ self.otherIds.collect do |other_id|
236
+ other_id.to_s
237
+ end
238
+ end
239
+
240
+ #another convience method to allow citationCreator=
241
+ def citationCreator=(creator)
242
+ if creator.is_a?(Array)
243
+ self.citationCreators = creator
244
+ elsif creator.is_a?(String)
245
+ self.citationCreators = [creator]
246
+ else
247
+ raise "Identity_metadata.citationCreator requires either a string or array. "
248
+ end
249
+ end
250
+
251
+ #takes a string of XML and constructs the object with all the instance variables added to the correct location.
252
+ def self.from_xml(xml="")
253
+ if xml.is_a?(File)
254
+ xml = xml.read
255
+ end
256
+
257
+ im = self.new(xml)
258
+ doc = Nokogiri::XML(xml)
259
+
260
+ children = doc.root.element_children #iterate through the nodes and map them to instance vars in the object.
261
+ children.each do |c|
262
+ if im.instance_variables.include?("@#{c.name}") or im.instance_variables.include?("@#{c.name}s")
263
+ if c.name == "sourceId" #SourceID already has a SourceID object made
264
+ im.sourceId.source = c["source"]
265
+ im.sourceId.value = c.text.strip
266
+ elsif c.name == "otherId" #otherID needs to be cast as an object and stored in an array
267
+ im.add_identifier(c['name'],c.text.strip)
268
+ elsif c.name == "tag" #tags also need to have objects created and stored in an array
269
+ im.add_tag(c.text.strip)
270
+ elsif c.name == "objectId" # objectId needs to be mapped to objectId attr_access
271
+ im.objectId = c.text.strip
272
+ elsif c.name == "citationTitle" #citationTitle also needs to be mapped to citationTitle attr_accessor
273
+ im.citationTitle = c.text.strip
274
+ elsif c.name == "adminPolicy"
275
+ im.adminPolicy = c.text.strip
276
+ elsif c.name == "agreementId"
277
+ im.agreementId = c.text.strip
278
+ else # everything else gets put into an attr_accessor array (note the added 's' on the attr_accessor.)
279
+ im.send("#{c.name}s").send("<<", c.text.strip)
280
+ end #if
281
+ end #if
282
+ end #each
283
+
284
+ return im
285
+
286
+ end #from_xml
287
+
288
+ end #class IdentityMetadata
metadata ADDED
@@ -0,0 +1,462 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dor-services
3
+ version: !ruby/object:Gem::Version
4
+ hash: 15
5
+ prerelease:
6
+ segments:
7
+ - 2
8
+ - 2
9
+ - 4
10
+ version: 2.2.4
11
+ platform: ruby
12
+ authors:
13
+ - Michael Klein
14
+ - Willy Mene
15
+ - Chris Fitzpatrick
16
+ - Richard Anderson
17
+ autorequire:
18
+ bindir: bin
19
+ cert_chain: []
20
+
21
+ date: 2013-04-03 00:00:00 Z
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - "="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 2
32
+ - 2
33
+ - 2
34
+ version: 2.2.2
35
+ prerelease: false
36
+ type: :runtime
37
+ name: active-fedora
38
+ requirement: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ version_requirements: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 15
46
+ segments:
47
+ - 0
48
+ - 0
49
+ - 8
50
+ version: 0.0.8
51
+ prerelease: false
52
+ type: :runtime
53
+ name: solr-ruby
54
+ requirement: *id002
55
+ - !ruby/object:Gem::Dependency
56
+ version_requirements: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 113
62
+ segments:
63
+ - 1
64
+ - 4
65
+ - 3
66
+ - 1
67
+ version: 1.4.3.1
68
+ prerelease: false
69
+ type: :runtime
70
+ name: nokogiri
71
+ requirement: *id003
72
+ - !ruby/object:Gem::Dependency
73
+ version_requirements: &id004 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ hash: 11
79
+ segments:
80
+ - 1
81
+ - 2
82
+ version: "1.2"
83
+ prerelease: false
84
+ type: :runtime
85
+ name: om
86
+ requirement: *id004
87
+ - !ruby/object:Gem::Dependency
88
+ version_requirements: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ hash: 3
94
+ segments:
95
+ - 0
96
+ version: "0"
97
+ prerelease: false
98
+ type: :runtime
99
+ name: rest-client
100
+ requirement: *id005
101
+ - !ruby/object:Gem::Dependency
102
+ version_requirements: &id006 !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ hash: 3
108
+ segments:
109
+ - 0
110
+ version: "0"
111
+ prerelease: false
112
+ type: :runtime
113
+ name: validatable
114
+ requirement: *id006
115
+ - !ruby/object:Gem::Dependency
116
+ version_requirements: &id007 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ hash: 3
122
+ segments:
123
+ - 0
124
+ version: "0"
125
+ prerelease: false
126
+ type: :runtime
127
+ name: uuidtools
128
+ requirement: *id007
129
+ - !ruby/object:Gem::Dependency
130
+ version_requirements: &id008 !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ hash: 3
136
+ segments:
137
+ - 0
138
+ version: "0"
139
+ prerelease: false
140
+ type: :runtime
141
+ name: json
142
+ requirement: *id008
143
+ - !ruby/object:Gem::Dependency
144
+ version_requirements: &id009 !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ hash: 3
150
+ segments:
151
+ - 0
152
+ version: "0"
153
+ prerelease: false
154
+ type: :runtime
155
+ name: ruby-cache
156
+ requirement: *id009
157
+ - !ruby/object:Gem::Dependency
158
+ version_requirements: &id010 !ruby/object:Gem::Requirement
159
+ none: false
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ hash: 23
164
+ segments:
165
+ - 0
166
+ - 2
167
+ - 0
168
+ version: 0.2.0
169
+ prerelease: false
170
+ type: :runtime
171
+ name: mod-cons
172
+ requirement: *id010
173
+ - !ruby/object:Gem::Dependency
174
+ version_requirements: &id011 !ruby/object:Gem::Requirement
175
+ none: false
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ hash: 3
180
+ segments:
181
+ - 0
182
+ version: "0"
183
+ prerelease: false
184
+ type: :runtime
185
+ name: systemu
186
+ requirement: *id011
187
+ - !ruby/object:Gem::Dependency
188
+ version_requirements: &id012 !ruby/object:Gem::Requirement
189
+ none: false
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ hash: 3
194
+ segments:
195
+ - 0
196
+ version: "0"
197
+ prerelease: false
198
+ type: :runtime
199
+ name: lyber-utils
200
+ requirement: *id012
201
+ - !ruby/object:Gem::Dependency
202
+ version_requirements: &id013 !ruby/object:Gem::Requirement
203
+ none: false
204
+ requirements:
205
+ - - ~>
206
+ - !ruby/object:Gem::Version
207
+ hash: 31
208
+ segments:
209
+ - 1
210
+ - 0
211
+ - 4
212
+ version: 1.0.4
213
+ prerelease: false
214
+ type: :runtime
215
+ name: solrizer
216
+ requirement: *id013
217
+ - !ruby/object:Gem::Dependency
218
+ version_requirements: &id014 !ruby/object:Gem::Requirement
219
+ none: false
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ hash: 19
224
+ segments:
225
+ - 0
226
+ - 2
227
+ - 2
228
+ version: 0.2.2
229
+ prerelease: false
230
+ type: :development
231
+ name: equivalent-xml
232
+ requirement: *id014
233
+ - !ruby/object:Gem::Dependency
234
+ version_requirements: &id015 !ruby/object:Gem::Requirement
235
+ none: false
236
+ requirements:
237
+ - - ">="
238
+ - !ruby/object:Gem::Version
239
+ hash: 3
240
+ segments:
241
+ - 0
242
+ version: "0"
243
+ prerelease: false
244
+ type: :development
245
+ name: fakeweb
246
+ requirement: *id015
247
+ - !ruby/object:Gem::Dependency
248
+ version_requirements: &id016 !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ">="
252
+ - !ruby/object:Gem::Version
253
+ hash: 3
254
+ segments:
255
+ - 0
256
+ version: "0"
257
+ prerelease: false
258
+ type: :development
259
+ name: haml
260
+ requirement: *id016
261
+ - !ruby/object:Gem::Dependency
262
+ version_requirements: &id017 !ruby/object:Gem::Requirement
263
+ none: false
264
+ requirements:
265
+ - - ">="
266
+ - !ruby/object:Gem::Version
267
+ hash: 3
268
+ segments:
269
+ - 0
270
+ version: "0"
271
+ prerelease: false
272
+ type: :development
273
+ name: jhove-service
274
+ requirement: *id017
275
+ - !ruby/object:Gem::Dependency
276
+ version_requirements: &id018 !ruby/object:Gem::Requirement
277
+ none: false
278
+ requirements:
279
+ - - ">="
280
+ - !ruby/object:Gem::Version
281
+ hash: 13
282
+ segments:
283
+ - 0
284
+ - 4
285
+ - 1
286
+ version: 0.4.1
287
+ prerelease: false
288
+ type: :development
289
+ name: lyberteam-devel
290
+ requirement: *id018
291
+ - !ruby/object:Gem::Dependency
292
+ version_requirements: &id019 !ruby/object:Gem::Requirement
293
+ none: false
294
+ requirements:
295
+ - - ">="
296
+ - !ruby/object:Gem::Version
297
+ hash: 49
298
+ segments:
299
+ - 0
300
+ - 8
301
+ - 7
302
+ version: 0.8.7
303
+ prerelease: false
304
+ type: :development
305
+ name: rake
306
+ requirement: *id019
307
+ - !ruby/object:Gem::Dependency
308
+ version_requirements: &id020 !ruby/object:Gem::Requirement
309
+ none: false
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ hash: 3
314
+ segments:
315
+ - 0
316
+ version: "0"
317
+ prerelease: false
318
+ type: :development
319
+ name: rcov
320
+ requirement: *id020
321
+ - !ruby/object:Gem::Dependency
322
+ version_requirements: &id021 !ruby/object:Gem::Requirement
323
+ none: false
324
+ requirements:
325
+ - - ">="
326
+ - !ruby/object:Gem::Version
327
+ hash: 3
328
+ segments:
329
+ - 0
330
+ version: "0"
331
+ prerelease: false
332
+ type: :development
333
+ name: rdoc
334
+ requirement: *id021
335
+ - !ruby/object:Gem::Dependency
336
+ version_requirements: &id022 !ruby/object:Gem::Requirement
337
+ none: false
338
+ requirements:
339
+ - - <
340
+ - !ruby/object:Gem::Version
341
+ hash: 3
342
+ segments:
343
+ - 2
344
+ - 0
345
+ version: "2.0"
346
+ prerelease: false
347
+ type: :development
348
+ name: rspec
349
+ requirement: *id022
350
+ - !ruby/object:Gem::Dependency
351
+ version_requirements: &id023 !ruby/object:Gem::Requirement
352
+ none: false
353
+ requirements:
354
+ - - ">="
355
+ - !ruby/object:Gem::Version
356
+ hash: 3
357
+ segments:
358
+ - 0
359
+ version: "0"
360
+ prerelease: false
361
+ type: :development
362
+ name: ruby-debug
363
+ requirement: *id023
364
+ - !ruby/object:Gem::Dependency
365
+ version_requirements: &id024 !ruby/object:Gem::Requirement
366
+ none: false
367
+ requirements:
368
+ - - ">="
369
+ - !ruby/object:Gem::Version
370
+ hash: 3
371
+ segments:
372
+ - 0
373
+ version: "0"
374
+ prerelease: false
375
+ type: :development
376
+ name: yard
377
+ requirement: *id024
378
+ description: Contains classes to register objects and initialize workflows
379
+ email:
380
+ - mbklein@stanford.edu
381
+ executables: []
382
+
383
+ extensions: []
384
+
385
+ extra_rdoc_files: []
386
+
387
+ files:
388
+ - lib/datastreams/content_metadata_ds.rb
389
+ - lib/datastreams/embargo_metadata_ds.rb
390
+ - lib/datastreams/events_ds.rb
391
+ - lib/datastreams/identity_metadata_ds.rb
392
+ - lib/datastreams/ng_tidy.rb
393
+ - lib/datastreams/simple_dublin_core_ds.rb
394
+ - lib/datastreams/workflow_definition_ds.rb
395
+ - lib/datastreams/workflow_ds.rb
396
+ - lib/dor/admin_policy_object.rb
397
+ - lib/dor/base.rb
398
+ - lib/dor/cleanup_service.rb
399
+ - lib/dor/config.rb
400
+ - lib/dor/digital_stacks_service.rb
401
+ - lib/dor/druid_utils.rb
402
+ - lib/dor/embargo.rb
403
+ - lib/dor/exceptions.rb
404
+ - lib/dor/item.rb
405
+ - lib/dor/metadata_handlers/catalog_handler.rb
406
+ - lib/dor/metadata_handlers/mdtoolkit_handler.rb
407
+ - lib/dor/metadata_service.rb
408
+ - lib/dor/mods2dc.xslt
409
+ - lib/dor/provenance_metadata_service.rb
410
+ - lib/dor/registration_service.rb
411
+ - lib/dor/rsolr.rb
412
+ - lib/dor/sdr_ingest_service.rb
413
+ - lib/dor/search_service.rb
414
+ - lib/dor/suri_service.rb
415
+ - lib/dor/tei2dc.xslt
416
+ - lib/dor/workflow_object.rb
417
+ - lib/dor/workflow_service.rb
418
+ - lib/dor-services.rb
419
+ - lib/gsearch/demoFoxmlToSolr.xslt
420
+ - lib/gsearch/schema.xml
421
+ - lib/tasks/rdoc.rake
422
+ - lib/xml_models/foxml.rb
423
+ - lib/xml_models/identity_metadata/dublin_core.rb
424
+ - lib/xml_models/identity_metadata/identity_metadata.rb
425
+ homepage:
426
+ licenses: []
427
+
428
+ post_install_message:
429
+ rdoc_options: []
430
+
431
+ require_paths:
432
+ - lib
433
+ required_ruby_version: !ruby/object:Gem::Requirement
434
+ none: false
435
+ requirements:
436
+ - - ">="
437
+ - !ruby/object:Gem::Version
438
+ hash: 3
439
+ segments:
440
+ - 0
441
+ version: "0"
442
+ required_rubygems_version: !ruby/object:Gem::Requirement
443
+ none: false
444
+ requirements:
445
+ - - ">="
446
+ - !ruby/object:Gem::Version
447
+ hash: 23
448
+ segments:
449
+ - 1
450
+ - 3
451
+ - 6
452
+ version: 1.3.6
453
+ requirements: []
454
+
455
+ rubyforge_project:
456
+ rubygems_version: 1.8.24
457
+ signing_key:
458
+ specification_version: 3
459
+ summary: Ruby implmentation of DOR services used by the SULAIR Digital Library
460
+ test_files: []
461
+
462
+ has_rdoc: