jrdspace 0.0.13 → 0.0.14

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 068382596fdb06ed88b6628ebaaf0a8948d07b4b
4
- data.tar.gz: c77b894f115059873b84251cc857b8c3b25a1419
3
+ metadata.gz: 7b98388fea631f9ca928d3be6aea51fc3d3663b8
4
+ data.tar.gz: f4c4478a4f920bf3c414271ef51e19cdf285cfe9
5
5
  SHA512:
6
- metadata.gz: d398ad2f1f4dcf31a17734247279af2d38e7dc9239f354412882b881ec9bb977a1cb475236940a157a2d5022ad909e1a0aa6bfb5db081556f885a0b25cb22650
7
- data.tar.gz: 6eed5a0a82ea28511dda2ca04f73b0d92a8e2fa5bd29abef06a95b53121aa24df96aaddeaada3cea9a2456049a32836a313222bc334ddda000388eef1f5ba453
6
+ metadata.gz: 9a996c7423b56fe2a17bc8f81a5dd6fa07724f5d861c45f0a5d79e12c41b7ecf6a7df0296962cb474c2930dfaef4bd5eee3c10aff54a5b8eca230bca5b2912f6
7
+ data.tar.gz: 24b192ddef65b05a36ba976e65d4c612279efb84b64bde039b0f4126973d89fd7f4a6836b0161c855c709c54841457ea2a14ad1c0595960fe3ebb286a1fc7221
@@ -0,0 +1 @@
1
+ jrdspace-*.gem
data/README.md CHANGED
@@ -10,6 +10,8 @@ The companion project [cli-dspace](https://github.com/akinom/dspace-cli) contai
10
10
 
11
11
  Documentation is also available at [rubydoc.info](http://www.rubydoc.info/github/akinom/dspace-jruby)
12
12
 
13
+ I would like to hear from you if you download and use jrdsapce. Please do send me your feedback and PRs.
14
+
13
15
  ## Installation
14
16
 
15
17
  ### Prerequisite
@@ -1,5 +1,6 @@
1
- require 'dspace/dspace'
1
+ require 'dspace/dconfig'
2
2
  require 'dspace/dconstants'
3
+ require 'dspace/dspace'
3
4
  require 'dspace/dso'
4
5
  require 'dspace/ddspaceobject'
5
6
  require 'dspace/deperson'
@@ -29,4 +29,19 @@ class DCommunity
29
29
  return comm
30
30
  end
31
31
 
32
+ def getCollections
33
+ return DCommunity.getCollections(self.dso)
34
+ end
35
+
36
+ def self.getCollections(com)
37
+ colls = []
38
+ if (not com.is_a? Array) then
39
+ com = [com]
40
+ end
41
+ com.each do |c|
42
+ colls = colls + c.getCollections.collect { |c| c }
43
+ colls = colls + getCollections(c.getSubcommunities.collect{ |sc| sc})
44
+ end
45
+ return colls
46
+ end
32
47
  end
@@ -0,0 +1,11 @@
1
+ ##
2
+ # This class wraps an org.dspace.content.Community object
3
+ class DConfig
4
+
5
+ ##
6
+ # return configuration value for name
7
+ def self.get(name)
8
+ java_import org.dspace.core.ConfigurationManager;
9
+ ConfigurationManager.getProperty name
10
+ end
11
+ end
@@ -50,11 +50,9 @@ class DGroup
50
50
  end
51
51
 
52
52
  ##
53
- # return EPerson and Groups that are (direct) require 'faker;members of this DGroup
54
- #
55
- # name must be a string
53
+ # return EPerson and Groups that are (direct) members of this Group
56
54
  def members
57
- return @obj.getMembers + @obj.getMemberGroups
55
+ return @obj.getMemberGroups.collect { |p| p } + @obj.getMembers.collect { |p| p }
58
56
  end
59
57
 
60
58
  ##
@@ -12,7 +12,7 @@ class DItem
12
12
  end
13
13
 
14
14
  ##
15
- # return array of all org.dspace.content.Item objects
15
+ # return array of all archived org.dspace.content.Item objects
16
16
  def self.all()
17
17
  java_import org.dspace.content.Item;
18
18
  list, stp = [], iter
@@ -1,3 +1,22 @@
1
+ class DMetadataSchema
2
+ include DSO
3
+
4
+ def self.all
5
+ java_import org.dspace.content.MetadataSchema
6
+ MetadataSchema.findAll DSpace.context
7
+ end
8
+
9
+ def fields
10
+ java_import org.dspace.content.MetadataField
11
+ MetadataField.findAllInSchema(DSpace.context, @obj.getSchemaID)
12
+ end
13
+
14
+ def inspect
15
+ return "nil" if @obj.nil?
16
+ return "#<#{self.class.name}:#{@obj.getName}>"
17
+ end
18
+ end
19
+
1
20
  class DMetadataField
2
21
  include DSO
3
22
 
@@ -17,13 +36,20 @@ class DMetadataField
17
36
  return MetadataField.find_by_element(DSpace.context, schm.getSchemaID, element, qualifier)
18
37
  end
19
38
 
20
- def inspect
39
+ ##
40
+ # return "nil" or <schema>.<element>[.<qualifier>]
41
+ def fullName
21
42
  return "nil" if @obj.nil?
22
43
  java_import org.dspace.content.MetadataSchema
23
44
  schema = MetadataSchema.find(DSpace.context, @obj.schemaID)
24
45
  str = "#{schema.getName}.#{@obj.element}"
25
46
  str += ".#{@obj.qualifier}" if @obj.qualifier
26
- return "#<#{self.class.name}:#{str}>"
47
+ return str
48
+ end
49
+
50
+ def inspect
51
+ return "nil" if @obj.nil?
52
+ return "#<#{self.class.name}:#{fullName}>"
27
53
  end
28
54
 
29
55
  end
@@ -84,6 +84,12 @@ module DSpace
84
84
  klass.send :new, dso
85
85
  end
86
86
 
87
+ ##
88
+ # return DSPace.create(dso).inspect or "nil"
89
+ def self.inspect(dso)
90
+ dso = DSpace.create(dso) if dso
91
+ dso.inspect
92
+ end
87
93
  ##
88
94
  # return the DSpace object that is identified by the given type and identifier
89
95
  #
@@ -107,21 +113,36 @@ module DSpace
107
113
  return klass.send :find, id
108
114
  end
109
115
 
110
- def self.fromString(type_id_or_handle)
116
+ def self.fromString(type_id_or_handle_or_title)
111
117
  #TODO handle MetadataField string
112
- splits = type_id_or_handle.split('.', 2)
113
- if (2 == splits.length) then
114
- self.find(splits[0].upcase, splits[1])
118
+ if type_id_or_handle_or_title.start_with? 'TITLE' then
119
+ str = type_id_or_handle_or_title[6..-1]
120
+ dsos = DSpace.findByMetadataValue('dc.title', str, DConstants::ITEM)
121
+ if (dsos.length > 1) then
122
+ raise "multiple matches for #{type_id_or_handle_or_title}"
123
+ end
124
+ return dsos[0]
115
125
  else
116
- java_import org.dspace.handle.HandleManager
117
- return HandleManager.resolve_to_object(DSpace.context, type_id_or_handle);
126
+ splits = type_id_or_handle_or_title.split('.', 2)
127
+ if (2 == splits.length) then
128
+ self.find(splits[0].upcase, splits[1])
129
+ else
130
+ java_import org.dspace.handle.HandleManager
131
+ return HandleManager.resolve_to_object(DSpace.context, type_id_or_handle_or_title);
132
+ end
118
133
  end
119
134
  end
120
135
 
136
+ ##
137
+ # get dpace service manager
138
+ def self.getServiceManager
139
+ org.dspace.utils.DSpace.new().getServiceManager()
140
+ end
141
+
121
142
  ##
122
143
  # get a dspace service by name
123
144
  def self.getService(service_name, java_klass)
124
- org.dspace.utils.DSpace.new().getServiceManager().getServiceByName(service_name,java_klass)
145
+ getServiceManager().getServiceByName(service_name,java_klass)
125
146
  end
126
147
 
127
148
  ##
@@ -164,6 +185,25 @@ module DSpace
164
185
  return dsos
165
186
  end
166
187
 
188
+ def self.findByGroupPolicy(group_ref_or_name, action_or_nil, resource_type_or_nil)
189
+ java_import org.dspace.eperson.Group
190
+ java_import org.dspace.storage.rdbms.DatabaseManager
191
+
192
+ group = DGroup.find(group_ref_or_name) if group_ref_or_name.is_a? String
193
+ raise "must give valied group" if group == nil or not group.is_a? Java::OrgDspaceEperson::Group
194
+
195
+ sql = "SELECT RESOURCE_ID, RESOURCE_TYPE_ID FROM RESOURCEPOLICY WHERE EPERSONGROUP_ID = #{group.getID} ";
196
+ sql += "AND ACTION_ID = #{action_or_nil} " if action_or_nil
197
+ sql += "AND RESOURCE_TYPE_ID = #{resource_type_or_nil} " if resource_type_or_nil
198
+
199
+ tri = DatabaseManager.queryTable(DSpace.context, "MetadataValue", sql)
200
+ dsos = [];
201
+ while (iter = tri.next())
202
+ dsos << self.find(iter.getIntColumn("resource_type_id"), iter.getIntColumn("resource_id"))
203
+ end
204
+ tri.close
205
+ return dsos
206
+ end
167
207
  ##
168
208
  # print available static methods for the give classes
169
209
  def self.help(klasses = [DCommunity, DCollection, DItem, DBundle, DBitstream, DEPerson,
@@ -17,7 +17,7 @@ module DWork
17
17
  elsif (obj.getType == DConstants::COMMUNITY) then
18
18
  wsis = []
19
19
  obj.getAllCollections.each do |col|
20
- wsis += findAll(col)
20
+ wsis += findAll(col, klass)
21
21
  end
22
22
  return wsis
23
23
  elsif (obj.getType == DConstants::ITEM) then
@@ -1,3 +1,3 @@
1
1
  module DSpace
2
- VERSION = "0.0.13"
2
+ VERSION = "0.0.14"
3
3
  end
metadata CHANGED
@@ -1,72 +1,73 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jrdspace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Monika Mevenkamp
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-11 00:00:00.000000000 Z
11
+ date: 2017-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jar
15
- version_requirements: !ruby/object:Gem::Requirement
15
+ requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
- requirement: !ruby/object:Gem::Requirement
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
21
23
  requirements:
22
24
  - - '>='
23
25
  - !ruby/object:Gem::Version
24
26
  version: '0'
25
- prerelease: false
26
- type: :runtime
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
- version_requirements: !ruby/object:Gem::Requirement
29
+ requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
- requirement: !ruby/object:Gem::Requirement
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
35
37
  requirements:
36
38
  - - '>='
37
39
  - !ruby/object:Gem::Version
38
40
  version: '0'
39
- prerelease: false
40
- type: :runtime
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
- version_requirements: !ruby/object:Gem::Requirement
43
+ requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.10'
48
- requirement: !ruby/object:Gem::Requirement
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
49
51
  requirements:
50
52
  - - ~>
51
53
  - !ruby/object:Gem::Version
52
54
  version: '1.10'
53
- prerelease: false
54
- type: :development
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
- version_requirements: !ruby/object:Gem::Requirement
57
+ requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '10.0'
62
- requirement: !ruby/object:Gem::Requirement
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
63
65
  requirements:
64
66
  - - ~>
65
67
  - !ruby/object:Gem::Version
66
68
  version: '10.0'
67
- prerelease: false
68
- type: :development
69
- description: jrdspace enables scripting of the dspace-api Java objects in a DSpace installation; it includes an interactive console
69
+ description: jrdspace enables scripting of the dspace-api Java objects in a DSpace
70
+ installation; it includes an interactive console
70
71
  email:
71
72
  - monikam@princeton.edu
72
73
  executables:
@@ -74,6 +75,7 @@ executables:
74
75
  extensions: []
75
76
  extra_rdoc_files: []
76
77
  files:
78
+ - .gitignore
77
79
  - LICENSE.txt
78
80
  - README.md
79
81
  - Rakefile
@@ -84,6 +86,7 @@ files:
84
86
  - lib/dspace/dbundle.rb
85
87
  - lib/dspace/dcollection.rb
86
88
  - lib/dspace/dcommunity.rb
89
+ - lib/dspace/dconfig.rb
87
90
  - lib/dspace/dconstants.rb
88
91
  - lib/dspace/ddspaceobject.rb
89
92
  - lib/dspace/deperson.rb
@@ -99,7 +102,7 @@ homepage: https://github.com/akinom/dspace-jruby
99
102
  licenses:
100
103
  - MIT
101
104
  metadata: {}
102
- post_install_message:
105
+ post_install_message:
103
106
  rdoc_options: []
104
107
  require_paths:
105
108
  - lib
@@ -114,9 +117,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
117
  - !ruby/object:Gem::Version
115
118
  version: '0'
116
119
  requirements: []
117
- rubyforge_project:
118
- rubygems_version: 2.4.5
119
- signing_key:
120
+ rubyforge_project:
121
+ rubygems_version: 2.0.14.1
122
+ signing_key:
120
123
  specification_version: 4
121
124
  summary: Jruby classes that interact with the dspace-api Java classes - v5
122
125
  test_files: []