jrdspace 0.0.13 → 0.0.14

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