21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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
91
92
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/adiwg/mdtranslator/readers/fgdc/modules/module_distribution.rb', line 21
def self.unpack(xDistribution, hResponseObj)
intMetadataClass = InternalMetadata.new
hDistribution = intMetadataClass.newDistribution
hDistributor = intMetadataClass.newDistributor
xContact = xDistribution.xpath('./distrib')
unless xContact.empty?
hResponsibility = Contact.unpack(xContact, hResponseObj)
unless hResponsibility.nil?
hResponsibility[:roleName] = 'distributor'
hDistributor[:contact] = hResponsibility
end
end
if xContact.empty?
hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: distribution distributor is missing'
end
description = xDistribution.xpath('./resdesc').text
unless description.empty?
hDistribution[:description] = description
end
liability = xDistribution.xpath('./distliab').text
unless liability.empty?
hDistribution[:liabilityStatement] = liability
end
if liability.empty?
hResponseObj[:readerExecutionMessages] << 'WARNING: FGDC reader: distribution liability is missing'
end
techPre = xDistribution.xpath('./techpreq').text
axOrders = xDistribution.xpath('./stdorder')
unless axOrders.empty?
axOrders.each do |xOrder|
OrderProcess.unpack(xOrder, hDistributor, techPre, hResponseObj)
end
end
custom = xDistribution.xpath('./custom').text
unless custom.empty?
hOrder = intMetadataClass.newOrderProcess
hOrder[:orderingInstructions] = custom
hDistributor[:orderProcess] << hOrder
end
xTimePeriod = xDistribution.xpath('./availabl')
unless xTimePeriod.empty?
hTimePeriod = TimePeriod.unpack(xTimePeriod, hResponseObj)
unless hTimePeriod.nil?
if hTimePeriod[:startDateTime].empty?
hDateTime = hTimePeriod[:endDateTime]
else
hDateTime = hTimePeriod[:startDateTime]
end
hDistributor[:orderProcess].each do |hOrder|
hOrder[:plannedAvailability] = hDateTime
end
end
end
hDistribution[:distributor] << hDistributor
return hDistribution
end
|