adiwg-mdtranslator 2.2.0 → 2.3.0
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.
- checksums.yaml +4 -4
- data/lib/adiwg/mdtranslator/internal/internal_metadata_obj.rb +23 -23
- data/lib/adiwg/mdtranslator/readers/fgdc/fgdc_reader.rb +1 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_attribute.rb +110 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_digitalForm.rb +69 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_distribution.rb +82 -1
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_entity.rb +72 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_entityAttribute.rb +32 -1
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_entityOverview.rb +45 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_enumerated.rb +50 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_fgdc.rb +29 -13
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_identification.rb +1 -1
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_metadataInfo.rb +125 -1
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_offlineOption.rb +98 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_onlineOption.rb +81 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_orderProcess.rb +79 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_pointVector.rb +102 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_range.rb +50 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_raster.rb +84 -0
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_spatialOrganization.rb +48 -2
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_timePeriod.rb +20 -1
- data/lib/adiwg/mdtranslator/readers/fgdc/modules/module_transferInfo.rb +87 -0
- data/lib/adiwg/mdtranslator/version.rb +2 -1
- metadata +15 -3
@@ -0,0 +1,45 @@
|
|
1
|
+
# Reader - fgdc to internal data structure
|
2
|
+
# unpack fgdc entity and attribute overview
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2017-09-06 original script
|
6
|
+
|
7
|
+
require 'uuidtools'
|
8
|
+
require 'nokogiri'
|
9
|
+
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
10
|
+
|
11
|
+
module ADIWG
|
12
|
+
module Mdtranslator
|
13
|
+
module Readers
|
14
|
+
module Fgdc
|
15
|
+
|
16
|
+
module EntityOverview
|
17
|
+
|
18
|
+
def self.unpack(xOverview, hResponseObj)
|
19
|
+
|
20
|
+
# instance classes needed in script
|
21
|
+
intMetadataClass = InternalMetadata.new
|
22
|
+
hEntity = intMetadataClass.newEntity
|
23
|
+
hEntity[:entityId] = UUIDTools::UUID.random_create.to_s
|
24
|
+
hEntity[:entityCode] = 'overview'
|
25
|
+
|
26
|
+
# entity attribute 5.2.1 (eaover) - entity attribute overview
|
27
|
+
# -> dataDictionary.entities.entityDefinition
|
28
|
+
definition = xOverview.xpath('./eaover').text
|
29
|
+
unless definition.empty?
|
30
|
+
hEntity[:entityDefinition] = definition
|
31
|
+
end
|
32
|
+
|
33
|
+
# entity attribute 5.2.2 (eadetcit) - entity attribute detail citation []
|
34
|
+
# -> not mapped
|
35
|
+
|
36
|
+
return hEntity
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# Reader - fgdc to internal data structure
|
2
|
+
# unpack fgdc entity enumerated domain
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2017-09-06 original script
|
6
|
+
|
7
|
+
require 'nokogiri'
|
8
|
+
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
9
|
+
|
10
|
+
module ADIWG
|
11
|
+
module Mdtranslator
|
12
|
+
module Readers
|
13
|
+
module Fgdc
|
14
|
+
|
15
|
+
module Enumerated
|
16
|
+
|
17
|
+
def self.unpack(xEnumeration, hResponseObj)
|
18
|
+
|
19
|
+
# instance classes needed in script
|
20
|
+
intMetadataClass = InternalMetadata.new
|
21
|
+
hItem = intMetadataClass.newDomainItem
|
22
|
+
|
23
|
+
# entity attribute 5.1.2.4.1.1 (edomv) - enumerated domain value
|
24
|
+
# -> dataDictionary.domainItems.itemValue
|
25
|
+
value = xEnumeration.xpath('./edomv').text
|
26
|
+
unless value.empty?
|
27
|
+
hItem[:itemName] = value
|
28
|
+
hItem[:itemValue] = value
|
29
|
+
end
|
30
|
+
|
31
|
+
# entity attribute 5.1.2.4.1.2 (edomvd) - enumerated domain value definition
|
32
|
+
# -> dataDictionary.domainItems.itemDefinition
|
33
|
+
definition = xEnumeration.xpath('./edomvd').text
|
34
|
+
unless definition.empty?
|
35
|
+
hItem[:itemDefinition] = definition
|
36
|
+
end
|
37
|
+
|
38
|
+
# entity attribute 5.1.2.4.1.3 (edomvds) - enumerated domain value definition source
|
39
|
+
# -> not mapped
|
40
|
+
|
41
|
+
return hItem
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -7,6 +7,7 @@
|
|
7
7
|
require 'nokogiri'
|
8
8
|
require 'uuidtools'
|
9
9
|
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
10
|
+
require_relative '../version'
|
10
11
|
require_relative 'module_identification'
|
11
12
|
require_relative 'module_quality'
|
12
13
|
require_relative 'module_spatialOrganization'
|
@@ -34,14 +35,18 @@ module ADIWG
|
|
34
35
|
|
35
36
|
# build basic mdTranslator internal object
|
36
37
|
hMetadata = intMetadataClass.newMetadata
|
37
|
-
hMetadataInfo = intMetadataClass.newMetadataInfo
|
38
38
|
hResourceInfo = intMetadataClass.newResourceInfo
|
39
|
-
hMetadata[:metadataInfo] = hMetadataInfo
|
40
39
|
hMetadata[:resourceInfo] = hResourceInfo
|
41
40
|
intObj[:metadata] = hMetadata
|
42
41
|
|
43
42
|
xMetadata = xDoc.xpath('./metadata')
|
44
43
|
|
44
|
+
# schema
|
45
|
+
hSchema = intMetadataClass.newSchema
|
46
|
+
hSchema[:name] = 'fgdc'
|
47
|
+
hSchema[:version] = ADIWG::Mdtranslator::Readers::Fgdc::VERSION
|
48
|
+
@intObj[:schema] = hSchema
|
49
|
+
|
45
50
|
# metadata (idinfo 1) - identification information (required)
|
46
51
|
xIdInfo = xMetadata.xpath('./idinfo')
|
47
52
|
unless xIdInfo.empty?
|
@@ -60,31 +65,42 @@ module ADIWG
|
|
60
65
|
# metadata (spdoinfo 3) - spatial data organization
|
61
66
|
xSpatialOrg = xMetadata.xpath('./spdoinfo')
|
62
67
|
unless xSpatialOrg.empty?
|
63
|
-
SpatialOrganization.unpack(xSpatialOrg, hResponseObj)
|
68
|
+
SpatialOrganization.unpack(xSpatialOrg, hResourceInfo, hResponseObj)
|
64
69
|
end
|
65
70
|
|
66
71
|
# metadata (spref 4) - spatial reference
|
67
|
-
xSpatialRef = xMetadata.xpath('./spref')
|
68
|
-
unless xSpatialRef.empty?
|
69
|
-
|
70
|
-
end
|
72
|
+
# xSpatialRef = xMetadata.xpath('./spref')
|
73
|
+
# unless xSpatialRef.empty?
|
74
|
+
# SpatialReference.unpack(xSpatialRef, hResponseObj)
|
75
|
+
# end
|
71
76
|
|
72
77
|
# metadata (eainfo 5) - entity and attribute
|
73
78
|
xEntity = xMetadata.xpath('./eainfo')
|
74
79
|
unless xEntity.empty?
|
75
|
-
EntityAttribute.unpack(xEntity, hResponseObj)
|
80
|
+
hDictionary = EntityAttribute.unpack(xEntity, hResponseObj)
|
81
|
+
unless hDictionary.nil?
|
82
|
+
@intObj[:dataDictionaries] << hDictionary
|
83
|
+
end
|
76
84
|
end
|
77
85
|
|
78
|
-
# metadata (distinfo 6) - distribution information
|
79
|
-
|
80
|
-
unless
|
81
|
-
|
86
|
+
# metadata (distinfo 6) - distribution information []
|
87
|
+
axDistribution = xMetadata.xpath('./distinfo')
|
88
|
+
unless axDistribution.empty?
|
89
|
+
axDistribution.each do |xDistribution|
|
90
|
+
hDistribution = Distribution.unpack(xDistribution, hResourceInfo, hResponseObj)
|
91
|
+
unless hDistribution.nil?
|
92
|
+
hMetadata[:distributorInfo] << hDistribution
|
93
|
+
end
|
94
|
+
end
|
82
95
|
end
|
83
96
|
|
84
97
|
# metadata (metainfo 7) - metadata reference (required)
|
85
98
|
xMetaInfo = xMetadata.xpath('./metainfo')
|
86
99
|
unless xMetaInfo.empty?
|
87
|
-
MetadataInformation.unpack(xMetaInfo, hResponseObj)
|
100
|
+
hMetadataInfo = MetadataInformation.unpack(xMetaInfo, hResourceInfo, hResponseObj)
|
101
|
+
unless hMetadataInfo.nil?
|
102
|
+
hMetadata[:metadataInfo] = hMetadataInfo
|
103
|
+
end
|
88
104
|
end
|
89
105
|
if xMetaInfo.empty?
|
90
106
|
hResponseObj[:readerExecutionMessages] << 'FGDC is missing metadata information section (metainfo)'
|
@@ -131,7 +131,7 @@ module ADIWG
|
|
131
131
|
hResourceInfo[:constraints] << hConstraint
|
132
132
|
end
|
133
133
|
|
134
|
-
# identification information 1.9 (ptcontac) - point of contact
|
134
|
+
# identification information 1.9 (ptcontac) - point of contact {contact}
|
135
135
|
xContact = xIdInfo.xpath('./ptcontac')
|
136
136
|
unless xContact.empty?
|
137
137
|
hResponsibility = Contact.unpack(xContact, hResponseObj)
|
@@ -6,6 +6,8 @@
|
|
6
6
|
|
7
7
|
require 'nokogiri'
|
8
8
|
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
9
|
+
require_relative 'module_date'
|
10
|
+
require_relative 'module_contact'
|
9
11
|
|
10
12
|
module ADIWG
|
11
13
|
module Mdtranslator
|
@@ -14,9 +16,131 @@ module ADIWG
|
|
14
16
|
|
15
17
|
module MetadataInformation
|
16
18
|
|
17
|
-
def self.unpack(xMetaInfo, hResponseObj)
|
19
|
+
def self.unpack(xMetaInfo, hResourceInfo, hResponseObj)
|
18
20
|
|
21
|
+
# instance classes needed in script
|
22
|
+
intMetadataClass = InternalMetadata.new
|
23
|
+
hMetadataInfo = intMetadataClass.newMetadataInfo
|
24
|
+
hLegal = intMetadataClass.newLegalConstraint
|
19
25
|
|
26
|
+
# metadata information 7.1 (metd) - metadata date
|
27
|
+
# -> metadataInfo.metadataDates.date{type=creation}
|
28
|
+
date = xMetaInfo.xpath('./metd').text
|
29
|
+
unless date.empty?
|
30
|
+
hDate = Date.unpack(date, '', 'creation', hResponseObj)
|
31
|
+
unless hDate.nil?
|
32
|
+
hMetadataInfo[:metadataDates] << hDate
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# metadata information 7.2 (metrd) - metadata review date
|
37
|
+
# -> metadataInfo.metadataDates.date{type=review}
|
38
|
+
date = xMetaInfo.xpath('./metrd').text
|
39
|
+
unless date.empty?
|
40
|
+
hDate = Date.unpack(date, '', 'review', hResponseObj)
|
41
|
+
unless hDate.nil?
|
42
|
+
hMetadataInfo[:metadataDates] << hDate
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# metadata information 7.3 (metfrd) - metadata future review date
|
47
|
+
# -> metadataInfo.metadataDates.date{type=nextReview}
|
48
|
+
date = xMetaInfo.xpath('./metfrd').text
|
49
|
+
unless date.empty?
|
50
|
+
hDate = Date.unpack(date, '', 'nextReview', hResponseObj)
|
51
|
+
unless hDate.nil?
|
52
|
+
hMetadataInfo[:metadataDates] << hDate
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# metadata information 7.4 (metc) - metadata contact
|
57
|
+
# -> metadataInfo.metadataContacts.responsibility{roleType=pointOfContact}
|
58
|
+
xContact = xMetaInfo.xpath('./metc')
|
59
|
+
unless xContact.empty?
|
60
|
+
hResponsibility = Contact.unpack(xContact, hResponseObj)
|
61
|
+
unless hResponsibility.nil?
|
62
|
+
hResponsibility[:roleName] = 'pointOfContact'
|
63
|
+
hMetadataInfo[:metadataContacts] << hResponsibility
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# metadata information 7.5 (metstdn) - metadata standard name
|
68
|
+
# -> set by writer
|
69
|
+
|
70
|
+
# metadata information 7.6 (metstdv) - metadata standard version
|
71
|
+
# -> set by writer
|
72
|
+
|
73
|
+
# metadata information 7.7 (mettc) - metadata time convention
|
74
|
+
# -> read by date/time modules
|
75
|
+
|
76
|
+
# metadata information 7.8 (metac) - metadata access constraint
|
77
|
+
# -> resourceInfo.constraints.legalConstraint.accessCodes
|
78
|
+
accessCode = xMetaInfo.xpath('metac').text
|
79
|
+
unless accessCode.empty?
|
80
|
+
hLegal[:accessCodes] << accessCode
|
81
|
+
end
|
82
|
+
|
83
|
+
# metadata information 7.9 (metuc) - metadata use constraint
|
84
|
+
# -> resourceInfo.constraints.legalConstraint.useCodes
|
85
|
+
useCode = xMetaInfo.xpath('metuc').text
|
86
|
+
unless useCode.empty?
|
87
|
+
hLegal[:useCodes] << useCode
|
88
|
+
end
|
89
|
+
|
90
|
+
legal = accessCode + useCode
|
91
|
+
if legal != ''
|
92
|
+
hConstraint = intMetadataClass.newConstraint
|
93
|
+
hConstraint[:type] = 'legal'
|
94
|
+
hConstraint[:legalConstraint] = hLegal
|
95
|
+
hResourceInfo[:constraints] << hConstraint
|
96
|
+
end
|
97
|
+
|
98
|
+
# metadata information 7.10 (metsi) - metadata security information
|
99
|
+
xSecurity = xMetaInfo.xpath('./metsi')
|
100
|
+
unless xSecurity.empty?
|
101
|
+
|
102
|
+
hSecurity = intMetadataClass.newSecurityConstraint
|
103
|
+
|
104
|
+
# metadata information 7.10.1 (metscs) - metadata security classification system
|
105
|
+
# -> resourceInfo.constraints.securityConstraint.classificationSystem
|
106
|
+
system = xSecurity.xpath('./metscs').text
|
107
|
+
unless system.empty?
|
108
|
+
hSecurity[:classSystem] = system
|
109
|
+
end
|
110
|
+
|
111
|
+
# metadata information 7.10.2 (metsc) - metadata security classification
|
112
|
+
# -> resourceInfo.constraints.securityConstraint.classification
|
113
|
+
classCode = xSecurity.xpath('./metsc').text
|
114
|
+
unless classCode.empty?
|
115
|
+
hSecurity[:classCode] = classCode
|
116
|
+
end
|
117
|
+
|
118
|
+
# metadata information 7.10.3 (metshd) - metadata security handling description
|
119
|
+
# -> resourceInfo.constraints.securityConstraint.handlingDescription
|
120
|
+
handling = xSecurity.xpath('./metshd').text
|
121
|
+
unless handling.empty?
|
122
|
+
hSecurity[:handling] = handling
|
123
|
+
end
|
124
|
+
|
125
|
+
security = system + classCode + handling
|
126
|
+
if security != ''
|
127
|
+
hConstraint = intMetadataClass.newConstraint
|
128
|
+
hConstraint[:type] = 'security'
|
129
|
+
hConstraint[:securityConstraint] = hSecurity
|
130
|
+
hResourceInfo[:constraints] << hConstraint
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
# metadata information 7.11 (metextns) - metadata extension []
|
136
|
+
|
137
|
+
# metadata information 7.11.1 (onlink) - online linkage []
|
138
|
+
# -> set by writer, reader assumes NBII biological extension is present
|
139
|
+
|
140
|
+
# metadata information 7.11.2 (metprof) - profile name
|
141
|
+
# -> set by writer, reader assumes NBII biological extension is present
|
142
|
+
|
143
|
+
return hMetadataInfo
|
20
144
|
|
21
145
|
end
|
22
146
|
|
@@ -0,0 +1,98 @@
|
|
1
|
+
# Reader - fgdc to internal data structure
|
2
|
+
# unpack fgdc distribution digital offline transfer
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2017-09-09 original script
|
6
|
+
|
7
|
+
require 'nokogiri'
|
8
|
+
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
9
|
+
require_relative 'module_date'
|
10
|
+
|
11
|
+
module ADIWG
|
12
|
+
module Mdtranslator
|
13
|
+
module Readers
|
14
|
+
module Fgdc
|
15
|
+
|
16
|
+
module OfflineOption
|
17
|
+
|
18
|
+
def self.unpack(xOffline, hResponseObj)
|
19
|
+
|
20
|
+
# instance classes needed in script
|
21
|
+
intMetadataClass = InternalMetadata.new
|
22
|
+
hOffline = intMetadataClass.newMedium
|
23
|
+
aDensity = []
|
24
|
+
aOfflines = []
|
25
|
+
|
26
|
+
# distribution 6.4.2.2.2.1 (offmedia) - offline media
|
27
|
+
# -> distribution.distributor.offlineOption.mediumSpecification.title
|
28
|
+
title = xOffline.xpath('./offmedia').text
|
29
|
+
unless title.empty?
|
30
|
+
hSpecification = intMetadataClass.newCitation
|
31
|
+
hSpecification[:title] = title
|
32
|
+
hOffline[:mediumSpecification] = hSpecification
|
33
|
+
end
|
34
|
+
|
35
|
+
# distribution 6.4.2.2.2.2 (reccap) - recording capacity
|
36
|
+
xCapacity = xOffline.xpath('./reccap')
|
37
|
+
unless xCapacity.empty?
|
38
|
+
|
39
|
+
# distribution 6.4.2.2.2.2.1 (recden) - recording density []
|
40
|
+
# -> distribution.distributor.offlineOption.density
|
41
|
+
axDensity = xCapacity.xpath('./recden')
|
42
|
+
unless axDensity.empty?
|
43
|
+
axDensity.each do |xDensity|
|
44
|
+
density = xDensity.text
|
45
|
+
unless density.empty?
|
46
|
+
aDensity << density.to_i
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# distribution 6.4.2.2.2.2.2 (recdenu) - recording density units
|
52
|
+
# -> distribution.distributor.offlineOption.units
|
53
|
+
units = xCapacity.xpath('./recdenu').text
|
54
|
+
unless units.empty?
|
55
|
+
hOffline[:units] = units
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
# distribution 6.4.2.2.2.3 (recfmt) - recording format []
|
61
|
+
# -> distribution.distributor.offlineOption.mediumFormat
|
62
|
+
axFormat = xOffline.xpath('./recfmt')
|
63
|
+
unless axFormat.empty?
|
64
|
+
axFormat.each do |xFormat|
|
65
|
+
format = xFormat.text
|
66
|
+
unless format.empty?
|
67
|
+
hOffline[:mediumFormat] << format
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# distribution 6.4.2.2.2.4 (compat) - compatibility information
|
73
|
+
# -> distribution.distributor.offlineOption.note
|
74
|
+
note = xOffline.xpath('./compat').text
|
75
|
+
unless note.empty?
|
76
|
+
hOffline[:note] = note
|
77
|
+
end
|
78
|
+
|
79
|
+
# create an offline object for each density
|
80
|
+
if aDensity.empty?
|
81
|
+
aOfflines << hOffline
|
82
|
+
else
|
83
|
+
aDensity.each do |density|
|
84
|
+
hClone = hOffline.clone
|
85
|
+
hClone[:density] = density
|
86
|
+
aOfflines << hClone
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
return aOfflines
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# Reader - fgdc to internal data structure
|
2
|
+
# unpack fgdc distribution digital online transfer
|
3
|
+
|
4
|
+
# History:
|
5
|
+
# Stan Smith 2017-09-09 original script
|
6
|
+
|
7
|
+
require 'nokogiri'
|
8
|
+
require 'adiwg/mdtranslator/internal/internal_metadata_obj'
|
9
|
+
require_relative 'module_date'
|
10
|
+
|
11
|
+
module ADIWG
|
12
|
+
module Mdtranslator
|
13
|
+
module Readers
|
14
|
+
module Fgdc
|
15
|
+
|
16
|
+
module OnlineOption
|
17
|
+
|
18
|
+
def self.unpack(xOnline, hResponseObj)
|
19
|
+
|
20
|
+
# instance classes needed in script
|
21
|
+
intMetadataClass = InternalMetadata.new
|
22
|
+
aOnlines = []
|
23
|
+
|
24
|
+
# distribution 6.4.2.2.1.2 (accinstr) - access instructions
|
25
|
+
# -> distribution.distributor.onlineOption.protocol
|
26
|
+
protocol = xOnline.xpath('./accinstr').text
|
27
|
+
|
28
|
+
# distribution 6.4.2.2.1.3 (oncomp) - online computer and operating system
|
29
|
+
# -> distribution.distributor.onlineOption.description
|
30
|
+
description = xOnline.xpath('./oncomp').text
|
31
|
+
|
32
|
+
# distribution 6.4.2.2.1.1 (computer) - computer contact information []
|
33
|
+
axComputers = xOnline.xpath('./computer')
|
34
|
+
unless axComputers.empty?
|
35
|
+
axComputers.each do |xComputer|
|
36
|
+
|
37
|
+
# distribution 6.4.2.2.1.1.1 (networka) - network address
|
38
|
+
xNetwork = xComputer.xpath('./networka')
|
39
|
+
unless xNetwork.empty?
|
40
|
+
|
41
|
+
# distribution 6.4.2.2.1.1.1.1 (networkr) - network resource name []
|
42
|
+
# -> distribution.distributor.onlineOption.uri
|
43
|
+
axURI = xNetwork.xpath('./networkr')
|
44
|
+
unless axURI.empty?
|
45
|
+
axURI.each do |network|
|
46
|
+
uri = network.text
|
47
|
+
unless uri.empty?
|
48
|
+
hOnlineRes = intMetadataClass.newOnlineResource
|
49
|
+
hOnlineRes[:olResURI] = uri
|
50
|
+
hOnlineRes[:olResProtocol] = protocol unless protocol.empty?
|
51
|
+
hOnlineRes[:olResDesc] = description unless description.empty?
|
52
|
+
aOnlines << hOnlineRes
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
# dialup section is deprecated and will not be supported in ADIwg toolkit
|
60
|
+
# distribution 6.4.2.2.1.1.2 (dialinst) - dialup instructions
|
61
|
+
# distribution 6.4.2.2.1.1.2.1 (lowbps) - lowest bits per second
|
62
|
+
# distribution 6.4.2.2.1.1.2.2 (highbps) - highest bits per second
|
63
|
+
# distribution 6.4.2.2.1.1.2.3 (numdata) - number of data bits per character {7|8}
|
64
|
+
# distribution 6.4.2.2.1.1.2.4 (numstop) - number of stop bits per exchange {1|2}
|
65
|
+
# distribution 6.4.2.2.1.1.2.5 (parity) - parity {none | odd | even | mark | space}
|
66
|
+
# distribution 6.4.2.2.1.1.2.6 (compress) - compression support
|
67
|
+
# distribution 6.4.2.2.1.1.2.7 (dialtel) - dialup telephone
|
68
|
+
# distribution 6.4.2.2.1.1.2.8 (dialfile) - dialup file name []
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
return aOnlines
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|