ruby-fedora 1.0.4 → 1.0.5
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.
- data/History.txt +4 -0
- data/lib/fedora/fedora_object.rb +56 -23
- data/lib/ruby-fedora.rb +1 -1
- metadata +2 -2
data/History.txt
CHANGED
data/lib/fedora/fedora_object.rb
CHANGED
@@ -25,33 +25,48 @@ class Fedora::FedoraObject < Fedora::BaseObject
|
|
25
25
|
####
|
26
26
|
# Attribute Accessors
|
27
27
|
####
|
28
|
-
|
29
|
-
# TODO: Create appropriate attribute accessors for these values.
|
30
|
-
# Where applicable, make sure that attributes are written to and read from self.attributes
|
31
|
-
# [pid, label, create_date, modified_date, fedora_object_type, contentModel, state, ownerID, behavior_def, behavior_mech,]
|
32
|
-
# API-M Search Value Equivalents: [pid, label, cDate, mDate, fType, cModel, state, ownerId, bDef, bMech,]
|
33
|
-
# TODO: Mix In DC attribute finders/accessors
|
34
|
-
# TODO: Make sure that fedora_object_type and contentModel are juggled properly.
|
35
|
-
def retrieve_attr_from_fedora
|
36
|
-
self.attributes.merge!(profile)
|
37
|
-
object_rexml = REXML::Document.new(object_xml)
|
38
|
-
self.attributes.merge!({
|
39
|
-
:state => object_rexml.root.elements["objectProperties/property[@NAME='info:fedora/fedora-system:def/model#state']"].attributes["value"],
|
40
|
-
:create_date => object_rexml.root.elements["objectProperties/property[@NAME='info:fedora/fedora-system:def/model#createdDate']"].attributes["value"],
|
41
|
-
:modified_date => object_rexml.root.elements["objectProperties/property[@NAME='info:fedora/fedora-system:def/model#lastModifiedDate']"].attributes["value"],
|
42
|
-
:label => object_rexml.root.elements["objectProperties/property[@NAME='info:fedora/fedora-system:def/model#label']"].attributes["value"]
|
43
|
-
})
|
44
28
|
|
29
|
+
|
30
|
+
def load_attributes_from_fedora
|
31
|
+
#self.attributes.merge!(profile)
|
32
|
+
attributes.merge!(properties_from_fedora)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Reads all object properties from the object's FOXML into a hash. Provides slightly more info than .profile, including the object state.
|
36
|
+
def properties_from_fedora
|
37
|
+
object_rexml = REXML::Document.new(object_xml)
|
38
|
+
properties = {
|
39
|
+
:pid => object_rexml.root.attributes["PID"],
|
40
|
+
:state => object_rexml.root.elements["//foxml:property[@NAME='info:fedora/fedora-system:def/model#state']"].attributes["VALUE"],
|
41
|
+
:create_date => object_rexml.root.elements["//foxml:property[@NAME='info:fedora/fedora-system:def/model#createdDate']"].attributes["VALUE"],
|
42
|
+
:modified_date => object_rexml.root.elements["//foxml:property[@NAME='info:fedora/fedora-system:def/view#lastModifiedDate']"].attributes["VALUE"],
|
43
|
+
:owner_id => object_rexml.root.elements['//foxml:property[@NAME="info:fedora/fedora-system:def/model#ownerId"]'].attributes['VALUE']
|
44
|
+
}
|
45
|
+
label_element = object_rexml.root.elements["//foxml:property[@NAME='info:fedora/fedora-system:def/model#label']"]
|
46
|
+
if label_element
|
47
|
+
properties.merge!({:label => label_element.attributes["VALUE"]})
|
48
|
+
end
|
49
|
+
return properties
|
45
50
|
end
|
46
51
|
|
47
52
|
def create_date
|
48
|
-
|
49
|
-
|
53
|
+
if attributes[:create_date]
|
54
|
+
return attributes[:create_date]
|
55
|
+
elsif !new_object?
|
56
|
+
properties_from_fedora[:create_date]
|
57
|
+
else
|
58
|
+
return nil
|
59
|
+
end
|
50
60
|
end
|
51
61
|
|
52
62
|
def modified_date
|
53
|
-
|
54
|
-
|
63
|
+
if attributes[:modified_date]
|
64
|
+
return attributes[:modified_date]
|
65
|
+
elsif !new_object?
|
66
|
+
properties_from_fedora[:modified_date]
|
67
|
+
else
|
68
|
+
return nil
|
69
|
+
end
|
55
70
|
end
|
56
71
|
|
57
72
|
|
@@ -64,7 +79,13 @@ class Fedora::FedoraObject < Fedora::BaseObject
|
|
64
79
|
end
|
65
80
|
|
66
81
|
def state
|
67
|
-
|
82
|
+
if attributes[:state]
|
83
|
+
return attributes[:state]
|
84
|
+
elsif !new_object?
|
85
|
+
properties_from_fedora[:state]
|
86
|
+
else
|
87
|
+
return nil
|
88
|
+
end
|
68
89
|
end
|
69
90
|
|
70
91
|
def state=(new_state)
|
@@ -76,7 +97,13 @@ class Fedora::FedoraObject < Fedora::BaseObject
|
|
76
97
|
end
|
77
98
|
|
78
99
|
def label
|
79
|
-
|
100
|
+
if attributes[:label]
|
101
|
+
return attributes[:label]
|
102
|
+
elsif !new_object?
|
103
|
+
properties_from_fedora[:label]
|
104
|
+
else
|
105
|
+
return nil
|
106
|
+
end
|
80
107
|
end
|
81
108
|
|
82
109
|
def label=(new_label)
|
@@ -85,7 +112,13 @@ class Fedora::FedoraObject < Fedora::BaseObject
|
|
85
112
|
|
86
113
|
# Get the object and read its @ownerId from the profile
|
87
114
|
def owner_id
|
88
|
-
|
115
|
+
if attributes[:owner_id]
|
116
|
+
return attributes[:owner_id]
|
117
|
+
elsif !new_object?
|
118
|
+
properties_from_fedora[:owner_id]
|
119
|
+
else
|
120
|
+
return nil
|
121
|
+
end
|
89
122
|
end
|
90
123
|
|
91
124
|
def owner_id=(new_owner_id)
|
data/lib/ruby-fedora.rb
CHANGED
@@ -3,7 +3,7 @@ gem 'xml-simple'
|
|
3
3
|
$LOAD_PATH.unshift File.dirname(__FILE__) unless
|
4
4
|
$LOAD_PATH.include?(File.dirname(__FILE__)) || $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__)))
|
5
5
|
module Fedora #:nodoc:
|
6
|
-
VERSION = '1.0.
|
6
|
+
VERSION = '1.0.5'
|
7
7
|
end
|
8
8
|
#extended to remove facets dep
|
9
9
|
class Hash
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MediaShelf
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-07-
|
12
|
+
date: 2009-07-20 00:00:00 -03:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|