adiwg-mdtranslator 2.0.0rc8 → 2.0.0rc9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/lib/adiwg/mdtranslator/internal/module_coordinates.rb +26 -1
  3. data/lib/adiwg/mdtranslator/version.rb +4 -1
  4. data/lib/adiwg/mdtranslator/writers/html/readme.md +4 -0
  5. data/lib/adiwg/mdtranslator/writers/iso19110/iso19110_writer.rb +53 -42
  6. data/lib/adiwg/mdtranslator/writers/sbJson/readme.md +8 -1
  7. data/lib/adiwg/mdtranslator/writers/sbJson/sbJson_writer.rb +30 -1
  8. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_browseCategory.rb +39 -0
  9. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_budget.rb +63 -0
  10. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_citation.rb +10 -3
  11. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_codelists.rb +170 -0
  12. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_contact.rb +119 -40
  13. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_date.rb +40 -0
  14. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_facet.rb +47 -24
  15. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_hours.rb +35 -0
  16. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_materialRequest.rb +59 -0
  17. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_parentId.rb +37 -0
  18. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_project.rb +47 -0
  19. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_provenance.rb +4 -0
  20. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_publication.rb +54 -0
  21. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_sbJson.rb +25 -27
  22. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_spatial.rb +49 -41
  23. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_tag.rb +82 -0
  24. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_webLink.rb +66 -0
  25. metadata +14 -4
  26. data/lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_base.rb +0 -19
@@ -1,49 +1,57 @@
1
- require 'jbuilder'
2
- require 'rgeo'
1
+ # sbJson 1.0 writer spatial
2
+
3
+ # History:
4
+ # Stan Smith 2017-06-01 original script
3
5
 
4
6
  module ADIWG
5
- module Mdtranslator
6
- module Writers
7
- module SbJson
8
- module Spatial
9
- def self.build(intObj)
10
- geo = []
11
- intObj.each do |ext|
12
- ext[:extGeoElements].each do |ge|
13
- case ge[:elementType]
14
- when 'GeometryCollection'
15
- ge[:elementGeometry][:geometry].each do |geom|
16
- geo << AdiwgGeoFormat.internal_to_wkt(geom[:elementGeometry])
7
+ module Mdtranslator
8
+ module Writers
9
+ module SbJson
10
+
11
+ module Spatial
12
+
13
+ def self.build(aExtents)
14
+
15
+ spatial = {}
16
+ aBoxObjects = []
17
+
18
+ aExtents.each do |hExtent|
19
+ hExtent[:geographicExtents].each do |hGeoExtent|
20
+ hBbox = hGeoExtent[:computedBbox]
21
+ sw = [ hBbox[:westLongitude], hBbox[:southLatitude] ]
22
+ nw = [ hBbox[:westLongitude], hBbox[:northLatitude] ]
23
+ ne = [ hBbox[:eastLongitude], hBbox[:northLatitude] ]
24
+ se = [ hBbox[:eastLongitude], hBbox[:southLatitude] ]
25
+ aPoly = [ sw, nw, ne, se ]
26
+ geoJson = {
27
+ type: 'Polygon',
28
+ coordinates: [
29
+ aPoly
30
+ ]
31
+ }
32
+ aBoxObjects << geoJson
33
+ end
17
34
  end
18
35
 
19
- when 'FeatureCollection'
20
- ge[:elementGeometry][:geometry].each do |fea|
21
- geo << AdiwgGeoFormat.internal_to_wkt(fea[:elementGeometry])
36
+ unless aBoxObjects.empty?
37
+ hBox = AdiwgCoordinates.computeBbox(aBoxObjects)
38
+ sbBox = {}
39
+ sbBox[:maxY] = hBox[:northLatitude]
40
+ sbBox[:minY] = hBox[:southLatitude]
41
+ sbBox[:maxX] = hBox[:eastLongitude]
42
+ sbBox[:minX] = hBox[:westLongitude]
43
+ spatial[:boundingBox] = sbBox
22
44
  end
23
- else
24
- geo << AdiwgGeoFormat.internal_to_wkt(ge[:elementGeometry])
25
- end
26
- end
45
+
46
+ # representational point is not computed
47
+
48
+ spatial
49
+
50
+ end
51
+
27
52
  end
28
- # puts geo
29
- # calculate the bounds
30
- reader = RGeo::WKRep::WKTParser.new(nil, support_wkt12: true)
31
- fact = RGeo::Geographic.spherical_factory
32
- bbox = RGeo::Cartesian::BoundingBox.new(fact, ignore_z: true)
33
- geo.each { |geom| bbox.add(reader.parse(geom)) }
34
-
35
- {
36
- boundingBox: {
37
- minX: bbox.min_x,
38
- maxX: bbox.max_x,
39
- minY: bbox.min_y,
40
- maxY: bbox.max_y
41
- }
42
- }
43
-
44
- end
45
- end
53
+
54
+ end
46
55
  end
47
- end
48
- end
56
+ end
49
57
  end
@@ -0,0 +1,82 @@
1
+ # sbJson 1.0 writer tags
2
+
3
+ # History:
4
+ # Stan Smith 2017-05-31 original script
5
+
6
+ require 'jbuilder'
7
+ require_relative 'sbJson_codelists'
8
+
9
+ module ADIWG
10
+ module Mdtranslator
11
+ module Writers
12
+ module SbJson
13
+
14
+ module Tag
15
+
16
+ def self.build(hResource)
17
+
18
+ aTags = []
19
+
20
+ # tags from resource type
21
+ hResource[:resourceTypes].each do |hType|
22
+ hTag = {}
23
+ type = hType[:type]
24
+ sbType = Codelists.codelist_iso_to_sb('iso_sb_scope', :isoCode => type)
25
+ sbType = sbType.nil? ? type : sbType
26
+ hTag[:type] = 'Resource Type'
27
+ hTag[:name] = sbType
28
+ aTags << hTag
29
+ end
30
+
31
+ # tags from keywords
32
+ hResource[:keywords].each do |hThemeSet|
33
+ theme = hThemeSet[:keywordType]
34
+ scheme = nil
35
+ hThesaurus = hThemeSet[:thesaurus]
36
+ unless hThesaurus.empty?
37
+ unless hThesaurus[:onlineResources].empty?
38
+ scheme = hThesaurus[:onlineResources][0][:olResURI]
39
+ end
40
+ end
41
+ hThemeSet[:keywords].each do |hKeywordObj|
42
+ hTag = {}
43
+ hTag[:type] = theme unless theme.nil?
44
+ hTag[:name] = hKeywordObj[:keyword]
45
+ hTag[:scheme] = scheme unless scheme.nil?
46
+ if theme == 'isoTopicCategory'
47
+ hTag[:type] = hTag[:scheme] = 'ISO 19115 Topic Categories'
48
+ end
49
+ aTags << hTag
50
+ end
51
+ end
52
+
53
+ # tags for projects
54
+ hResource[:resourceTypes].each do |hType|
55
+ type = hType[:type]
56
+ if type == 'project'
57
+ hResource[:status].each do |status|
58
+ sbStatus = Codelists.codelist_iso_to_sb('iso_sb_progress', :isoCode => status)
59
+ unless sbStatus.nil?
60
+ hTag = {}
61
+ hTag[:type] = 'Project Status'
62
+ hTag[:name] = sbStatus
63
+ aTags << hTag
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ if aTags.empty?
70
+ return nil
71
+ end
72
+
73
+ aTags
74
+
75
+ end
76
+
77
+ end
78
+
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,66 @@
1
+ # sbJson 1.0 writer
2
+
3
+ # History:
4
+ # Stan Smith 2017-05-30 original script
5
+
6
+ require 'jbuilder'
7
+ require_relative 'sbJson_codelists'
8
+
9
+ module ADIWG
10
+ module Mdtranslator
11
+ module Writers
12
+ module SbJson
13
+
14
+ module WebLink
15
+
16
+ def self.buildWebLink(hResource)
17
+
18
+ hWebLink = {}
19
+
20
+ function = hResource[:olResFunction]
21
+ function = 'download' if function.nil?
22
+ hWebLink[:type] = Codelists.codelist_iso_to_sb('iso_sb_onlineFunction', :isoCode => function)
23
+ hWebLink[:typeLabel] = hResource[:olResDesc] unless hResource[:olResDesc].nil?
24
+ hWebLink[:uri] = hResource[:olResURI] unless hResource[:olResURI].nil?
25
+ hWebLink[:title] = hResource[:olResName] unless hResource[:olResName].nil?
26
+
27
+ hWebLink
28
+
29
+ end
30
+
31
+ def self.build(hMetadata)
32
+
33
+ aLinks = []
34
+
35
+ # build webLinks from additionalDocumentation
36
+ hMetadata[:additionalDocuments].each do |hDocument|
37
+ hDocument[:citation].each do |hCitation|
38
+ hCitation[:onlineResources].each do |hResource|
39
+ hWebLink = buildWebLink(hResource)
40
+ aLinks << hWebLink unless hWebLink.empty?
41
+ end
42
+ end
43
+ end
44
+
45
+ # build webLinks from graphic
46
+ hMetadata[:resourceInfo][:graphicOverviews].each do |hGraphic|
47
+ hGraphic[:graphicURI].each do |hResource|
48
+ hWebLink = buildWebLink(hResource)
49
+ aLinks << hWebLink unless hWebLink.empty?
50
+ end
51
+ end
52
+
53
+ if aLinks.empty?
54
+ return nil
55
+ end
56
+
57
+ aLinks
58
+
59
+ end
60
+
61
+ end
62
+
63
+ end
64
+ end
65
+ end
66
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adiwg-mdtranslator
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0rc8
4
+ version: 2.0.0rc9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stan Smith
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-05-26 00:00:00.000000000 Z
12
+ date: 2017-06-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -580,16 +580,26 @@ files:
580
580
  - lib/adiwg/mdtranslator/writers/mdWriters.rb
581
581
  - lib/adiwg/mdtranslator/writers/sbJson/readme.md
582
582
  - lib/adiwg/mdtranslator/writers/sbJson/sbJson_writer.rb
583
- - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_base.rb
583
+ - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_browseCategory.rb
584
+ - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_budget.rb
584
585
  - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_citation.rb
586
+ - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_codelists.rb
585
587
  - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_contact.rb
588
+ - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_date.rb
586
589
  - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_facet.rb
590
+ - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_hours.rb
587
591
  - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_id.rb
588
592
  - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_identifier.rb
593
+ - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_materialRequest.rb
594
+ - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_parentId.rb
595
+ - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_project.rb
589
596
  - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_provenance.rb
597
+ - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_publication.rb
590
598
  - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_rights.rb
591
599
  - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_sbJson.rb
592
600
  - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_spatial.rb
601
+ - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_tag.rb
602
+ - lib/adiwg/mdtranslator/writers/sbJson/sections/sbJson_webLink.rb
593
603
  - lib/adiwg/mdtranslator/writers/sbJson/version.rb
594
604
  - lib/adiwg/mdtranslator_cli.rb
595
605
  homepage: http://www.adiwg.org/mdTranslator
@@ -612,7 +622,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
612
622
  version: 1.3.1
613
623
  requirements: []
614
624
  rubyforge_project:
615
- rubygems_version: 2.6.8
625
+ rubygems_version: 2.5.2
616
626
  signing_key:
617
627
  specification_version: 4
618
628
  summary: The mdtranslator (metadata translator) is a tool for translating metadata
@@ -1,19 +0,0 @@
1
- require 'jbuilder'
2
-
3
- module ADIWG
4
- module Mdtranslator
5
- module Writers
6
- module SbJson
7
- module Base
8
- def json_map(collection = [], _class)
9
- if collection.nil? || collection.empty?
10
- return nil
11
- else
12
- collection.map { |item| _class.build(item).attributes! }
13
- end
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end