dor-services 2.2.4

Sign up to get free protection for your applications and to get access to all the features.
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: