jrdspace 0.0.12 → 0.0.13
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.
- checksums.yaml +4 -4
- data/README.md +9 -6
- data/lib/dspace.rb +1 -0
- data/lib/dspace/dbitstream.rb +1 -0
- data/lib/dspace/dbundle.rb +1 -0
- data/lib/dspace/dcollection.rb +1 -0
- data/lib/dspace/dcommunity.rb +1 -0
- data/lib/dspace/ddspaceobject.rb +50 -0
- data/lib/dspace/deperson.rb +3 -1
- data/lib/dspace/dgroup.rb +3 -2
- data/lib/dspace/ditem.rb +1 -0
- data/lib/dspace/dmetadata.rb +3 -9
- data/lib/dspace/dso.rb +5 -45
- data/lib/dspace/dspace.rb +1 -0
- data/lib/dspace/dwork.rb +2 -0
- data/lib/dspace/version.rb +1 -1
- data/test.rb +45 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 068382596fdb06ed88b6628ebaaf0a8948d07b4b
|
4
|
+
data.tar.gz: c77b894f115059873b84251cc857b8c3b25a1419
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d398ad2f1f4dcf31a17734247279af2d38e7dc9239f354412882b881ec9bb977a1cb475236940a157a2d5022ad909e1a0aa6bfb5db081556f885a0b25cb22650
|
7
|
+
data.tar.gz: 6eed5a0a82ea28511dda2ca04f73b0d92a8e2fa5bd29abef06a95b53121aa24df96aaddeaada3cea9a2456049a32836a313222bc334ddda000388eef1f5ba453
|
data/README.md
CHANGED
@@ -15,7 +15,7 @@ Documentation is also available at [rubydoc.info](http://www.rubydoc.info/github
|
|
15
15
|
### Prerequisite
|
16
16
|
* JRuby [Get Started](http://jruby.org/getting-started)
|
17
17
|
* Package Manager [Bundler](http://bundler.io/)
|
18
|
-
* optional - but useful [
|
18
|
+
* optional - but useful [RVM](https://rvm.io/)
|
19
19
|
|
20
20
|
### Installation
|
21
21
|
|
@@ -84,9 +84,11 @@ provide convenience methods, such as retrieving all Communities finding individ
|
|
84
84
|
DCommunity.all
|
85
85
|
DSpace.fromString ('some/handle')
|
86
86
|
DSpace.fromString ('ITEM.124')
|
87
|
-
|
88
|
-
|
89
|
-
DGroup.find('
|
87
|
+
DCollection.find(10)
|
88
|
+
DEPerson.find ('email@there.edu')
|
89
|
+
DGroup.find('Anonymous')
|
90
|
+
DGroup.find(1)
|
91
|
+
DMetadataField.find('dc.contributor')
|
90
92
|
```
|
91
93
|
|
92
94
|
If you want to make changes you can 'login'
|
@@ -109,12 +111,13 @@ DCommunity.all.each { |c| puts [c.getCollections.length, c.getHandle, c.getName]
|
|
109
111
|
```
|
110
112
|
|
111
113
|
Java objects can be converted to corresponding jrdspace objects, so that the additional functionality implemented by jrdspace classes becomes available.
|
112
|
-
For example all jrdspace objects derived from DSpaceObjects implement the parents and
|
114
|
+
For example all jrdspace objects derived from DSpaceObjects implement the parents, policies, and getMetaDataValues method:
|
113
115
|
|
114
116
|
```
|
115
|
-
dso = DSpace.
|
117
|
+
dso = DSpace.fromString('xxxxx/zzz')
|
116
118
|
DSpace.create(dso).parents
|
117
119
|
DSpace.create(dso).policies
|
120
|
+
DSpace.create(dso).getMetaDataValues
|
118
121
|
```
|
119
122
|
|
120
123
|
|
data/lib/dspace.rb
CHANGED
data/lib/dspace/dbitstream.rb
CHANGED
data/lib/dspace/dbundle.rb
CHANGED
data/lib/dspace/dcollection.rb
CHANGED
data/lib/dspace/dcommunity.rb
CHANGED
@@ -0,0 +1,50 @@
|
|
1
|
+
##
|
2
|
+
# This module contains methods to be included by classes that wrap objects
|
3
|
+
# that derive from org.dspace.content.DSpaceObject
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
module DDSpaceObject
|
7
|
+
|
8
|
+
def parents
|
9
|
+
moms = [];
|
10
|
+
p = @obj.getParentObject()
|
11
|
+
while p do
|
12
|
+
moms << p;
|
13
|
+
p = p.getParentObject();
|
14
|
+
end
|
15
|
+
return moms;
|
16
|
+
end
|
17
|
+
|
18
|
+
def policies()
|
19
|
+
java_import org.dspace.authorize.AuthorizeManager
|
20
|
+
pols = AuthorizeManager.getPolicies(DSpace.context, @obj)
|
21
|
+
pols.collect do |p|
|
22
|
+
pp = p.getEPerson
|
23
|
+
pg = p.getGroup
|
24
|
+
hsh = { :action => p.getAction()}
|
25
|
+
hsh[:person] = pp.getName if pp
|
26
|
+
hsh[:group] = pg.getName if pg
|
27
|
+
hsh
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def getMetaDataValues()
|
32
|
+
java_import org.dspace.content.MetadataSchema
|
33
|
+
java_import org.dspace.content.MetadataField
|
34
|
+
java_import org.dspace.storage.rdbms.DatabaseManager
|
35
|
+
java_import org.dspace.storage.rdbms.TableRow
|
36
|
+
|
37
|
+
sql = "SELECT MV.metadata_field_id, MV.text_value FROM METADATAVALUE MV " +
|
38
|
+
" WHERE RESOURCE_TYPE_ID = #{@obj.getType} AND RESOURCE_ID = #{@obj.getID}"
|
39
|
+
tri = DatabaseManager.queryTable(DSpace.context, "MetadataValue", sql)
|
40
|
+
mvs = [];
|
41
|
+
while (iter = tri.next())
|
42
|
+
field = MetadataField.find(DSpace.context, iter.getIntColumn("metadata_field_id"))
|
43
|
+
mvs << [ DMetadataField.new(field), iter.getStringColumn("text_value") ]
|
44
|
+
end
|
45
|
+
tri.close
|
46
|
+
return mvs
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
data/lib/dspace/deperson.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
# This class wraps an org.dspace.eperson.EPerson object
|
3
3
|
class DEPerson
|
4
4
|
include DSO
|
5
|
+
include DDSpaceObject
|
5
6
|
|
6
7
|
##
|
7
8
|
# return array of all org.dspace.eperson.EPerson objects
|
@@ -54,7 +55,8 @@ class DEPerson
|
|
54
55
|
##
|
55
56
|
# convert to string
|
56
57
|
def inspect
|
58
|
+
return "nil" if @obj.nil?
|
57
59
|
describe = @obj.getNetid || @obj.getEmail || @obj.getID
|
58
|
-
return "
|
60
|
+
return "#<#{self.class.name}:#{describe}>"
|
59
61
|
end
|
60
62
|
end
|
data/lib/dspace/dgroup.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
# This class wraps an org.dspace.eperson.Group object
|
3
3
|
class DGroup
|
4
4
|
include DSO
|
5
|
+
include DDSpaceObject
|
5
6
|
|
6
7
|
##
|
7
8
|
# id of administrator group
|
@@ -70,6 +71,6 @@ class DGroup
|
|
70
71
|
##
|
71
72
|
# convert to string
|
72
73
|
def inspect
|
73
|
-
return "
|
74
|
-
end
|
74
|
+
return "nil" if @obj.nil?
|
75
|
+
return "#<#{self.class.name}:#{@obj.getName}>" end
|
75
76
|
end
|
data/lib/dspace/ditem.rb
CHANGED
data/lib/dspace/dmetadata.rb
CHANGED
@@ -1,12 +1,5 @@
|
|
1
1
|
class DMetadataField
|
2
|
-
|
3
|
-
##
|
4
|
-
# instantiate a wrapper for the given org.dspace.content.MetadataField
|
5
|
-
def initialize(dobj)
|
6
|
-
raise "must pass non null obj" unless dobj
|
7
|
-
raise "must pass org.dspace.content.MetadataField obj" unless dobj.instance_of? org.dspace.content.MetadataField
|
8
|
-
@obj = dobj
|
9
|
-
end
|
2
|
+
include DSO
|
10
3
|
|
11
4
|
##
|
12
5
|
# returns nil or the org.dspace.content.MetadataField object with the given field_name
|
@@ -25,11 +18,12 @@ class DMetadataField
|
|
25
18
|
end
|
26
19
|
|
27
20
|
def inspect
|
21
|
+
return "nil" if @obj.nil?
|
28
22
|
java_import org.dspace.content.MetadataSchema
|
29
23
|
schema = MetadataSchema.find(DSpace.context, @obj.schemaID)
|
30
24
|
str = "#{schema.getName}.#{@obj.element}"
|
31
25
|
str += ".#{@obj.qualifier}" if @obj.qualifier
|
32
|
-
return str
|
26
|
+
return "#<#{self.class.name}:#{str}>"
|
33
27
|
end
|
34
28
|
|
35
29
|
end
|
data/lib/dspace/dso.rb
CHANGED
@@ -10,60 +10,20 @@ module DSO
|
|
10
10
|
#
|
11
11
|
# the wrapper object's class must be compatible with the type of the given dobj
|
12
12
|
def initialize(dobj)
|
13
|
-
raise "must pass non null obj" unless dobj
|
14
|
-
type = DConstants.const_get self.class.name[1..-1].upcase
|
15
13
|
@obj = dobj
|
16
|
-
|
14
|
+
if dobj then
|
15
|
+
myname = self.class.name
|
16
|
+
raise "can't create #{myname} object from #{@obj}" if myname[1..-1] != @obj.getClass.getName.split('.')[-1]
|
17
|
+
end
|
17
18
|
end
|
18
19
|
|
19
20
|
def dso
|
20
21
|
return @obj
|
21
22
|
end
|
22
23
|
|
23
|
-
def parents
|
24
|
-
moms = [];
|
25
|
-
p = @obj.getParentObject()
|
26
|
-
while p do
|
27
|
-
moms << p;
|
28
|
-
p = p.getParentObject();
|
29
|
-
end
|
30
|
-
return moms;
|
31
|
-
end
|
32
|
-
|
33
|
-
def policies()
|
34
|
-
java_import org.dspace.authorize.AuthorizeManager
|
35
|
-
pols = AuthorizeManager.getPolicies(DSpace.context, @obj)
|
36
|
-
pols.collect do |p|
|
37
|
-
pp = p.getEPerson
|
38
|
-
pg = p.getGroup
|
39
|
-
hsh = { :action => p.getAction()}
|
40
|
-
hsh[:person] = pp.getName if pp
|
41
|
-
hsh[:group] = pg.getName if pg
|
42
|
-
hsh
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def getMetaDataValues()
|
47
|
-
java_import org.dspace.content.MetadataSchema
|
48
|
-
java_import org.dspace.content.MetadataField
|
49
|
-
java_import org.dspace.storage.rdbms.DatabaseManager
|
50
|
-
java_import org.dspace.storage.rdbms.TableRow
|
51
|
-
|
52
|
-
sql = "SELECT MV.metadata_field_id, MV.text_value FROM METADATAVALUE MV " +
|
53
|
-
" WHERE RESOURCE_TYPE_ID = #{@obj.getType} AND RESOURCE_ID = #{@obj.getID}"
|
54
|
-
tri = DatabaseManager.queryTable(DSpace.context, "MetadataValue", sql)
|
55
|
-
mvs = [];
|
56
|
-
while (iter = tri.next())
|
57
|
-
field = MetadataField.find(DSpace.context, iter.getIntColumn("metadata_field_id"))
|
58
|
-
mvs << [ DMetadataField.new(field), iter.getStringColumn("text_value") ]
|
59
|
-
end
|
60
|
-
tri.close
|
61
|
-
return mvs
|
62
|
-
end
|
63
|
-
|
64
24
|
def inspect
|
65
25
|
return "nil" if @obj.nil?
|
66
|
-
return "
|
26
|
+
return "#<#{self.class.name}:#{@obj.getID}>"
|
67
27
|
end
|
68
28
|
|
69
29
|
end
|
data/lib/dspace/dspace.rb
CHANGED
data/lib/dspace/dwork.rb
CHANGED
@@ -34,6 +34,7 @@ module DWork
|
|
34
34
|
end
|
35
35
|
|
36
36
|
class DWorkflowItem
|
37
|
+
include DSO
|
37
38
|
|
38
39
|
##
|
39
40
|
# find org.dspace.workflow.WorkflowItem
|
@@ -56,6 +57,7 @@ class DWorkflowItem
|
|
56
57
|
end
|
57
58
|
|
58
59
|
class DWorkspaceItem
|
60
|
+
include DSO
|
59
61
|
|
60
62
|
##
|
61
63
|
# find org.dspace.workflow.WorkspaceItem
|
data/lib/dspace/version.rb
CHANGED
data/test.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'dspace'
|
2
|
+
DSpace.load
|
3
|
+
|
4
|
+
def test_dso(ddso)
|
5
|
+
[:policies, :parents, :getMetaDataValues].each do |m|
|
6
|
+
puts "#{ddso.inspect}.#{m} -> #{ddso.send(m)}"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
[DCommunity, DCollection, DItem, DBitstream].each do |klass|
|
11
|
+
puts klass.name + ".all"
|
12
|
+
all = klass.send :all
|
13
|
+
dso = all[0]
|
14
|
+
puts klass.name + ".find"
|
15
|
+
o = klass.send :find, dso.getID
|
16
|
+
ddso = DSpace.create(o)
|
17
|
+
puts "ddso.inspect #{ddso.inspect}"
|
18
|
+
|
19
|
+
o = DSpace.fromString("#{DConstants.typeStr(dso.getType)}.#{dso.getID}")
|
20
|
+
puts "ERROR #{o} != #{DSpace.create(dso).inspect}" if o != dso
|
21
|
+
if dso.getHandle then
|
22
|
+
o = DSpace.fromString(dso.getHandle)
|
23
|
+
puts "ERROR #{o} != #{DSpace.create(dso).inspect}" if o != dso
|
24
|
+
end
|
25
|
+
|
26
|
+
test_dso(ddso)
|
27
|
+
end
|
28
|
+
|
29
|
+
[DWorkflowItem, DWorkspaceItem].each do |klass|
|
30
|
+
puts klass.name + ".findAll"
|
31
|
+
all = klass.send :findAll, nil
|
32
|
+
id = all.length > 0 ? all[0].getID : nil
|
33
|
+
puts klass.name + ".find #{id}"
|
34
|
+
obj = klass.send(:find, id)
|
35
|
+
puts "#{klass}.new #{obj}"
|
36
|
+
puts klass.send(:new, obj).inspect
|
37
|
+
end
|
38
|
+
|
39
|
+
ditem = DSpace.create(DBitstream.all[0].getParentObject)
|
40
|
+
puts "#{ditem}.bitstreams => #{ditem.bitstreams}"
|
41
|
+
bundle = ditem.bitstreams[0].getBundles[0]
|
42
|
+
puts bundle
|
43
|
+
dbundle = DSpace.create(bundle)
|
44
|
+
test_dso(dbundle)
|
45
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jrdspace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Monika Mevenkamp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jar
|
@@ -85,6 +85,7 @@ files:
|
|
85
85
|
- lib/dspace/dcollection.rb
|
86
86
|
- lib/dspace/dcommunity.rb
|
87
87
|
- lib/dspace/dconstants.rb
|
88
|
+
- lib/dspace/ddspaceobject.rb
|
88
89
|
- lib/dspace/deperson.rb
|
89
90
|
- lib/dspace/dgroup.rb
|
90
91
|
- lib/dspace/ditem.rb
|
@@ -93,6 +94,7 @@ files:
|
|
93
94
|
- lib/dspace/dspace.rb
|
94
95
|
- lib/dspace/dwork.rb
|
95
96
|
- lib/dspace/version.rb
|
97
|
+
- test.rb
|
96
98
|
homepage: https://github.com/akinom/dspace-jruby
|
97
99
|
licenses:
|
98
100
|
- MIT
|