jrdspace 0.0.6 → 0.0.8

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: eaa1fb47a7098459a99b29f6f043530efae3e98b
4
- data.tar.gz: 7afadbfc113d0daa4c71aa07f10f6191719ab218
3
+ metadata.gz: e905bc1c648ee25ef40364bc83128e20146ece47
4
+ data.tar.gz: d224d5b02e4492213249dce5c6870559241c39c6
5
5
  SHA512:
6
- metadata.gz: b462451ced624f34ffff803b6a456912d6c707a4b0a3d4c63dfdb3dcd12459aa294461790f8e8764d109f1e23b488f4d419950f88e885c040999279ecf4bcadd
7
- data.tar.gz: 532d9de9fbcbb9264053becf42d900ac82718c3bda4f7882b9b6e6705b1bcbebb225945094737bd79aa3003736876d293c2618deaf8f692093a62fb4ffe69b3b
6
+ metadata.gz: 23a7b8d2700b59671035fa9e795f68d376776ab319f28800bad41c488aa01d8d8d037caca114958d34470ce81e5a69152486889d23c90b53e9536ed420603473
7
+ data.tar.gz: ce1bf0b6064d0197f70582216158e95d335558264c495798eb0afa53f804f2c2c33799f0848f91a64e3cad5a4cd168e1cd31f39082a8d19f6f95b9deefe4fbcd
data/README.md CHANGED
@@ -30,6 +30,11 @@ Install the gem:
30
30
  bundle install
31
31
  ```
32
32
 
33
+ Please note that I am still updating this gem ferquently as I discover bugs. So please keep do update frequently with
34
+ ```
35
+ bundle update
36
+ ```
37
+
33
38
  ## Usage
34
39
 
35
40
  To use in scripts simply include the following
data/bin/idspace CHANGED
@@ -4,6 +4,7 @@ require "bundler/setup"
4
4
  require "dspace"
5
5
 
6
6
  require "irb"
7
+ require 'irb/completion'
7
8
 
8
9
  puts "DSpace.load - to connect to dspave installation"
9
10
  puts "DSpace.help - for basic help info"
data/lib/dspace.rb CHANGED
@@ -6,4 +6,5 @@ require 'dspace/dcollection'
6
6
  require 'dspace/dcommunity'
7
7
  require 'dspace/ditem'
8
8
  require 'dspace/dbitstream'
9
-
9
+ require 'dspace/dbundle'
10
+ require 'dspace/dworkflowitem'
@@ -1,9 +1,14 @@
1
1
  class DBitstream
2
- include DSO
2
+ include DSO
3
3
 
4
4
  def self.all()
5
5
  java_import org.dspace.content.Bitstream;
6
6
  return Bitstream.findAll(DSpace.context)
7
7
  end
8
8
 
9
+ def self.find(id)
10
+ java_import org.dspace.content.Bitstream;
11
+ return Bitstream.find(DSpace.context, id)
12
+ end
13
+
9
14
  end
@@ -1,4 +1,8 @@
1
1
  class DBundle
2
- include DSO
2
+ include DSO
3
3
 
4
+ def self.find(id)
5
+ java_import org.dspace.content.Bundle;
6
+ return Bundle.find(DSpace.context, id)
7
+ end
4
8
  end
@@ -6,6 +6,12 @@ class DCollection
6
6
  return Collection.findAll(DSpace.context)
7
7
  end
8
8
 
9
+ def self.find(id)
10
+ java_import org.dspace.content.Collection;
11
+ return Collection.find(DSpace.context, id)
12
+ end
13
+
14
+
9
15
  def self.findAll(name)
10
16
  java_import org.dspace.content.Collection;
11
17
  self.all.select do |c|
@@ -6,6 +6,11 @@ class DCommunity
6
6
  return Community.findAll(DSpace.context)
7
7
  end
8
8
 
9
+ def self.find(id)
10
+ java_import org.dspace.content.Community;
11
+ return Community.find(DSpace.context, id)
12
+ end
13
+
9
14
  def self.findAll(name)
10
15
  java_import org.dspace.content.Community;
11
16
  self.all.select do |c|
data/lib/dspace/dgroup.rb CHANGED
@@ -34,24 +34,20 @@ class DGroup
34
34
 
35
35
  def members
36
36
  list = [];
37
- @dso.getMembers.each do |m|
37
+ @obj.getMembers.each do |m|
38
38
  list << m;
39
39
  end
40
- @dso.getMemberGroups.each do |m|
40
+ @obj.getMemberGroups.each do |m|
41
41
  list << m;
42
42
  end
43
43
  return list;
44
44
  end
45
45
 
46
- def addMember(addGrouNameOrNetid)
47
- add = DGroup.find(addGrouNameOrNetid)
48
- if (add.nil?) then
49
- add = DEPerson.find(addGrouNameOrNetid);
50
- end
51
- raise "no such netid or group #{addGrouNameOrNetid}" if add.nil?
52
- @dso.addMember(add);
53
- @dso.update
54
- return @dso;
46
+ def addMember(group_or_eperson)
47
+ raise "must give non nil group_or_eperson" if group_or_eperson.nil?
48
+ @obj.addMember(group_or_eperson);
49
+ @obj.update
50
+ return @obj;
55
51
  end
56
52
 
57
53
  def report
data/lib/dspace/ditem.rb CHANGED
@@ -16,6 +16,12 @@ class DItem
16
16
  return list
17
17
  end
18
18
 
19
+ def self.find(id)
20
+ java_import org.dspace.content.Item;
21
+ id = id.to_i if id.class == String
22
+ return Item.find(DSpace.context, id)
23
+ end
24
+
19
25
  def self.inside(restrict_to_dso)
20
26
  java_import org.dspace.storage.rdbms.DatabaseManager
21
27
  java_import org.dspace.storage.rdbms.TableRow
data/lib/dspace/dso.rb CHANGED
@@ -53,5 +53,22 @@ module DSO
53
53
  end
54
54
  end
55
55
 
56
+ def getMetaDataValues()
57
+ java_import org.dspace.content.MetadataSchema
58
+ java_import org.dspace.content.MetadataField
59
+ java_import org.dspace.storage.rdbms.DatabaseManager
60
+ java_import org.dspace.storage.rdbms.TableRow
61
+
62
+ sql = "SELECT MV.metadata_field_id, MV.text_value FROM METADATAVALUE MV " +
63
+ " WHERE RESOURCE_TYPE_ID = #{@obj.getType} AND RESOURCE_ID = #{@obj.getID}"
64
+ tri = DatabaseManager.queryTable(DSpace.context, "MetadataValue", sql)
65
+ mvs = [];
66
+ while (iter = tri.next())
67
+ field = MetadataField.find(DSpace.context, iter.getIntColumn("metadata_field_id"))
68
+ mvs << [ DSpace.toString(field), iter.getStringColumn("text_value") ]
69
+ end
70
+ tri.close
71
+ return mvs
72
+ end
56
73
  end
57
74
 
data/lib/dspace/dspace.rb CHANGED
@@ -2,29 +2,18 @@ module DSpace
2
2
  ROOT = File.expand_path('../..', __FILE__)
3
3
  @@config = nil;
4
4
 
5
- BITSTREAM = 0;
6
- BUNDLE = 1;
7
- ITEM = 2;
8
- COLLECTION = 3;
9
- COMMUNITY = 4;
10
- SITE = 5;
11
- GROUP = 6;
12
- EPERSON = 7;
13
-
14
- def self.objTypeId(type_str_or_int)
15
- obj_typ = Constants.typeText.find_index type_str_or_int
16
- if obj_typ.nil? then
17
- obj_typ = Integer(type_str_or_int)
18
- raise "no such object typ #{type_str_or_int}" unless Constants.typeText[obj_typ]
5
+ def self.objTypeStr(type_str_or_int)
6
+ return type_str_or_int.capitalize if type_str_or_int.class == String and Constants.typeText.find_index type_str_or_int.upcase
7
+ begin
8
+ id = Integer(type_str_or_int)
9
+ rescue
10
+ raise "no such object type #{type_str_or_int}"
19
11
  end
20
- return obj_typ;
12
+ return Constants.typeText[id].capitalize
21
13
  end
22
14
 
23
- def self.objTypeStr(type_str_or_int)
24
- return type_str_or_int if Constants.typeText.find_index type_str_or_int
25
- obj_typ_id = Integer(type_str_or_int)
26
- raise "no such object type #{type_str_or_int}" unless Constants.typeText[obj_typ_id]
27
- return Constants.typeText[obj_typ_id];
15
+ def self.objTypeId(type_str_or_int)
16
+ obj_typ = Constants.typeText.find_index objTypeStr(type_str_or_int).upcase
28
17
  end
29
18
 
30
19
  def self.load(dspace_dir = nil)
@@ -47,6 +36,12 @@ module DSpace
47
36
  return @@config.context
48
37
  end
49
38
 
39
+ def self.context_renew
40
+ raise "must call load to initialize" if @@config.nil?
41
+ raise "should never happen" if @@config.context.nil?
42
+ return @@config.context_renew
43
+ end
44
+
50
45
  def self.login(netid)
51
46
  self.context.setCurrentUser(DEPerson.find(netid))
52
47
  return nil
@@ -58,19 +53,10 @@ module DSpace
58
53
 
59
54
  def self.create(dso)
60
55
  raise "dso must not be nil" if dso.nil?
61
- klass = Object.const_get "D" + dso.class.name.gsub(/.*::/,'')
56
+ klass = Object.const_get "D" + dso.class.name.gsub(/.*::/, '')
62
57
  klass.send :new, dso
63
58
  end
64
59
 
65
- def self.fromString(type_id_or_handle)
66
- splits = type_id_or_handle.split('.')
67
- if (2 == splits.length) then
68
- self.find(splits[0], splits[1])
69
- else
70
- self.fromHandle(type_id_or_handle)
71
- end
72
- end
73
-
74
60
  def self.fromHandle(handle)
75
61
  return HandleManager.resolve_to_object(DSpace.context, handle);
76
62
  end
@@ -78,51 +64,76 @@ module DSpace
78
64
  def self.find(type_str_or_int, identifier)
79
65
  type_str = DSpace.objTypeStr(type_str_or_int)
80
66
  type_id = DSpace.objTypeId(type_str)
81
- int_id = identifier.to_i
82
- obj = DSpaceObject.find(DSpace.context, type_id, int_id)
83
- if obj.nil? and klass.methods.include? :find
84
- klass = Object.const_get "D" + type_str.capitalize
85
- obj = klass.send :find, identifier
67
+ klass = Object.const_get "D" + type_str
68
+ begin
69
+ id = Integer(identifier)
70
+ rescue
71
+ id = identifier
86
72
  end
87
- return obj
73
+ return klass.send :find, id
88
74
  end
89
75
 
90
76
  def self.findByMetadataValue(fully_qualified_metadata_field, value_or_nil, restrict_to_type)
91
- java_import org.dspace.content.MetadataSchema
92
- java_import org.dspace.content.MetadataField
93
- java_import org.dspace.storage.rdbms.DatabaseManager
94
- java_import org.dspace.storage.rdbms.TableRow
95
-
96
- (schema, element, qualifier) = fully_qualified_metadata_field.split('.')
97
- schm = MetadataSchema.find(DSpace.context, schema)
98
- raise "no such metadata schema: #{schema}" if schm.nil?
99
- field = MetadataField.find_by_element(DSpace.context, schm.getSchemaID, element, qualifier)
100
- raise "no such metadata field #{fully_qualified_metadata_field}" if field.nil?
101
-
102
- sql = "SELECT MV.resource_id, MV.resource_type_id FROM MetadataValue MV";
103
- sql = sql + " where MV.metadata_field_id= #{field.getFieldID} "
104
- if (not value_or_nil.nil?) then
105
- sql = sql + " AND MV.text_value LIKE '#{value_or_nil}'"
106
- end
107
- if (restrict_to_type) then
108
- sql = sql + " AND MV.resource_type_id = #{objTypeId(restrict_to_type)}"
109
- end
77
+ java_import org.dspace.content.MetadataSchema
78
+ java_import org.dspace.content.MetadataField
79
+ java_import org.dspace.storage.rdbms.DatabaseManager
80
+ java_import org.dspace.storage.rdbms.TableRow
81
+
82
+ (schema, element, qualifier) = fully_qualified_metadata_field.split('.')
83
+ schm = MetadataSchema.find(DSpace.context, schema)
84
+ raise "no such metadata schema: #{schema}" if schm.nil?
85
+ field = MetadataField.find_by_element(DSpace.context, schm.getSchemaID, element, qualifier)
86
+ raise "no such metadata field #{fully_qualified_metadata_field}" if field.nil?
87
+
88
+ sql = "SELECT MV.resource_id, MV.resource_type_id FROM MetadataValue MV";
89
+ sql = sql + " where MV.metadata_field_id= #{field.getFieldID} "
90
+ if (not value_or_nil.nil?) then
91
+ sql = sql + " AND MV.text_value LIKE '#{value_or_nil}'"
92
+ end
93
+ if (restrict_to_type) then
94
+ sql = sql + " AND MV.resource_type_id = #{objTypeId(restrict_to_type)}"
95
+ end
110
96
 
111
- tri = DatabaseManager.queryTable(DSpace.context, "MetadataValue", sql)
112
- dsos = [];
113
- while (iter = tri.next())
114
- dsos << self.find(iter.getIntColumn("resource_type_id"), iter.getIntColumn("resource_id") )
115
- end
116
- tri.close
117
- return dsos
97
+ tri = DatabaseManager.queryTable(DSpace.context, "MetadataValue", sql)
98
+ dsos = [];
99
+ while (iter = tri.next())
100
+ dsos << self.find(iter.getIntColumn("resource_type_id"), iter.getIntColumn("resource_id"))
101
+ end
102
+ tri.close
103
+ return dsos
104
+ end
105
+
106
+ def self.fromString(type_id_or_handle)
107
+ #TODO handle MetadataField string
108
+ splits = type_id_or_handle.split('.')
109
+ if (2 == splits.length) then
110
+ self.find(splits[0].upcase, splits[1])
111
+ else
112
+ self.fromHandle(type_id_or_handle)
118
113
  end
114
+ end
115
+
116
+ def self.toString(java_obj)
117
+ return "nil" unless java_obj
118
+ klass = java_obj.getClass.getName
119
+ if (klass == "org.dspace.content.MetadataField") then
120
+ java_import org.dspace.content.MetadataField
121
+ java_import org.dspace.content.MetadataSchema
119
122
 
123
+ schema = MetadataSchema.find(DSpace.context, java_obj.schemaID)
124
+ str = "#{schema.getName}.#{java_obj.element}"
125
+ str += ".#{java_obj.qualifier}" if java_obj.qualifier
126
+ str
127
+ else
128
+ java_obj.toString
129
+ end
130
+ end
120
131
 
121
132
  def self.kernel
122
133
  @@config.kernel;
123
134
  end
124
135
 
125
- def self.help( klasses = [ DSpace, DCommunity, DCollection, DItem, DGroup])
136
+ def self.help(klasses = [DSpace, DCommunity, DCollection, DItem, DGroup])
126
137
  klasses.each do |klass|
127
138
  klass.singleton_methods.sort.each do |mn|
128
139
  m = klass.method(mn)
@@ -162,6 +173,11 @@ module DSpace
162
173
  return @context
163
174
  end
164
175
 
176
+ def context_renew
177
+ @context.abort if @context
178
+ @context = org.dspace.core.Context.new()
179
+ end
180
+
165
181
  def init
166
182
  if @context.nil? then
167
183
  puts "Loading jars"
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env jruby
2
+ require 'dspace'
3
+
4
+ class DWorkflowItem
5
+ def self.findAll(obj)
6
+ java_import org.dspace.workflow.WorkflowItem
7
+ if (obj.getType == DSpace::COLLECTION)
8
+ return WorkflowItem.findByCollection(DSpace.context, obj)
9
+ elsif (obj.getType == DSpace::COMMUNITY) then
10
+ flows = []
11
+ obj.getCollections.each do |col|
12
+ flows += findAll(col)
13
+ end
14
+ return flows
15
+ end
16
+ return []
17
+ end
18
+
19
+ end
@@ -1,3 +1,3 @@
1
1
  module DSpace
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.8"
3
3
  end
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.6
4
+ version: 0.0.8
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-04-20 00:00:00.000000000 Z
11
+ date: 2016-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jar
@@ -89,6 +89,7 @@ files:
89
89
  - lib/dspace/ditem.rb
90
90
  - lib/dspace/dso.rb
91
91
  - lib/dspace/dspace.rb
92
+ - lib/dspace/dworkflowitem.rb
92
93
  - lib/dspace/version.rb
93
94
  homepage: https://github.com/akinom/dspace-jruby
94
95
  licenses: