adiwg-mdtranslator 2.0.0rc8 → 2.0.0rc9

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.
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