Class: Puree::Dataset

Inherits:
Resource show all
Defined in:
lib/puree/dataset.rb

Overview

Dataset resource

Instance Method Summary collapse

Methods inherited from Resource

#content, #get, #response, #set_content

Constructor Details

#initializeDataset

Returns a new instance of Dataset.



7
8
9
# File 'lib/puree/dataset.rb', line 7

def initialize
  super(:dataset)
end

Instance Method Details

#accessString

Open access permission

Returns:

  • (String)


167
168
169
170
# File 'lib/puree/dataset.rb', line 167

def access
  data = node 'openAccessPermission'
  !data.nil? && !data.empty? ? data['term']['localizedString']["__content__"] : ''
end

#availableHash

Date made available

Returns:

  • (Hash)


120
121
122
123
# File 'lib/puree/dataset.rb', line 120

def available
  data = node('dateMadeAvailable')
  Puree::Date.normalise(data)
end

#descriptionArray<String>

Description

Returns:

  • (Array<String>)


40
41
42
43
44
45
46
47
48
# File 'lib/puree/dataset.rb', line 40

def description
  data = node 'descriptions'
  if !data.nil? && !data.empty?
    data = data['classificationDefinedField']['value']['localizedString']['__content__'].tr("\n", '')
    data.is_a?(Array) ? data : data.split(',')
  else
    []
  end
end

#doiString

Digital Object Identifier

Returns:

  • (String)


219
220
221
222
# File 'lib/puree/dataset.rb', line 219

def doi
  data = node 'doi'
  !data.nil? && !data.empty? ? data['doi'] : ''
end

#fileArray<Hash>

Supporting file

Returns:

  • (Array<Hash>)


176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'lib/puree/dataset.rb', line 176

def file
  data = node 'documents'

  docs = []
  if !data.nil? && !data.empty?
    # convert to array
    data_arr = []
    if data['document'].is_a?(Array)
      data_arr = data['document']
    else
      data_arr << data['document']
    end

    data_arr.each do |d|
      doc = {}
      # doc['id'] = d['id']
      doc['name'] = d['fileName']
      doc['mime'] = d['mimeType']
      doc['size'] = d['size']
      doc['url'] = d['url']
      doc['title'] = d['title']
      # doc['createdDate'] = doc['createdDate']
      # doc['visibleOnPortalDate'] = doc['visibleOnPortalDate']
      # doc['limitedVisibility'] = doc['limitedVisibility']

      license = {}
      if d['documentLicense']
        license_name = d['documentLicense']['term']['localizedString']['__content__']
        license['name'] = license_name
        license_url = d['documentLicense']['description']['localizedString']['__content__']
        license['url'] = license_url
        doc['license'] = license
      end
      docs << doc

    end
  end
  docs
end

#geographicalArray<String>

Geographical coverage

Returns:

  • (Array<String>)


128
129
130
131
132
133
134
135
136
# File 'lib/puree/dataset.rb', line 128

def geographical
  data = node 'geographicalCoverage'
  if !data.nil? && !data.empty?
    data = data['localizedString']["__content__"]
    data.is_a?(Array) ? data : data.split(',')
  else
    []
  end
end

#keywordArray<String>

Keyword

Returns:

  • (Array<String>)


27
28
29
30
31
32
33
34
35
# File 'lib/puree/dataset.rb', line 27

def keyword
  data = node 'keywordGroups'
  if !data.nil? && !data.empty?
    data = data['keywordGroup']['keyword']['userDefinedKeyword']['freeKeyword']
    data.is_a?(Array) ? data : data.split(',')
  else
    []
  end
end

#metadataHash

All metadata

Returns:

  • (Hash)


233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
# File 'lib/puree/dataset.rb', line 233

def 
  o = {}
  o['access'] = access
  o['available'] = available
  o['description'] = description
  o['doi'] = doi
  o['file'] = file
  o['geographical'] = geographical
  o['keyword'] = keyword
  o['person'] = person
  o['production'] = production
  o['publication'] = publication
  o['temporal'] = temporal
  o['title'] = title
  o
end

#personHash<Array, Array>

Person, internal and external

Returns:

  • (Hash<Array, Array>)


53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/puree/dataset.rb', line 53

def person
  data = node('persons')
  persons = {}
  if !data.nil? && !data.empty?
    data = data['dataSetPersonAssociation']
  else
    return persons
  end
  internal_persons = []
  external_persons = []
  case data
    when Array
      data.each do |d|
        person = generic_person d
        if d.key? 'person'
          person['uuid'] = d['person']['uuid']
          internal_persons << person
        end
        if d.key? 'externalPerson'
          person['uuid'] = d['externalPerson']['uuid']
          external_persons << person
        end
      end
    when Hash
      person = generic_person data
      if data.key? 'person'
        person['uuid'] = data['person']['uuid']
        internal_persons << person
      end
      if data.key? 'externalPerson'
        person['uuid'] = data['externalPerson']['uuid']
        external_persons << person
      end
  end
  persons['internal'] = internal_persons
  persons['external'] = external_persons
  persons
end

#productionHash

Date of data production

Returns:

  • (Hash)


141
142
143
144
# File 'lib/puree/dataset.rb', line 141

def production
  data = node('dateOfDataProduction')
  Puree::Date.normalise(data)
end

#publicationArray<Hash>

Publication

Returns:

  • (Array<Hash>)


95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/puree/dataset.rb', line 95

def publication
  data = node('relatedPublications')
  publications = []
  if !data.nil? && !data.empty?
    # convert to array
    data_arr = []
    if data['relatedContent'].is_a?(Array)
      data_arr = data['relatedContent']
    else
      data_arr[0] = data['relatedContent']
    end
    data_arr.each do |d|
      o = {}
      o['type'] = d['typeClassification']
      o['title'] = d['title']
      o['uuid'] = d['uuid']
      publications << o
    end
  end
  publications
end

#temporalHash

Temporal coverage

Returns:

  • (Hash)


149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/puree/dataset.rb', line 149

def temporal
  data = {}
  data['start'] = {}
  data['end'] = {}
  start_date = temporal_coverage_start_date
  if !start_date.nil? && !start_date.empty?
    data['start'] = start_date
  end
  end_date = temporal_coverage_end_date
  if !end_date.nil? && !end_date.empty?
    data['end'] = end_date
  end
  data
end

#titleArray<String>

Title

Returns:

  • (Array<String>)


14
15
16
17
18
19
20
21
22
# File 'lib/puree/dataset.rb', line 14

def title
  data = node 'title'
  if !data.nil? && !data.empty?
    data = data['localizedString']["__content__"]
    data.is_a?(Array) ? data : data.split(',')
  else
    []
  end
end