diff --git a/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_acquisition.rb b/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_acquisition.rb index 7ee734d5..88e9991b 100644 --- a/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_acquisition.rb +++ b/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_acquisition.rb @@ -1,4 +1,5 @@ require_relative 'class_scope' +require_relative 'class_plan' require_relative 'class_instrument' module ADIWG @@ -15,6 +16,7 @@ def initialize(xml, hResponseObj) def writeXML(hAcquisition) scopeClass = MD_Scope.new(@xml, @hResponseObj) + planClass = MI_Plan.new(@xml, @hResponseObj) instrumentClass = MI_Instrument.new(@xml, @hResponseObj) unless hAcquisition.empty? @@ -25,6 +27,14 @@ def writeXML(hAcquisition) end end + unless hAcquisition[:plans].empty? + hAcquisition[:plans].each do |hPlan| + @xml.tag!('mac:acquisitionPlan') do + planClass.writeXML(hPlan) + end + end + end + unless hAcquisition[:instruments].empty? hAcquisition[:instruments].each do |hInstrument| @xml.tag!('mac:instrument') do diff --git a/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_operation.rb b/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_operation.rb new file mode 100644 index 00000000..d2546c56 --- /dev/null +++ b/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_operation.rb @@ -0,0 +1,110 @@ +module ADIWG + module Mdtranslator + module Writers + module Iso19115_3 + + class MI_Operation + def initialize(xml, hResponseObj) + @xml = xml + @hResponseObj = hResponseObj + end + + def writeXML(hOperation) + + @xml.tag!('mac:MI_Operation') do + + unless hOperation[:description].nil? + @xml.tag!('mac:description') do + @xml.tag!('gco:CharacterString', hOperation[:description]) + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:description') + end + end + + unless hOperation[:citation].empty? + @xml.tag!('mac:citation') do + citationClass.writeXML(hOperation[:citation]) + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:citation') + end + end + + unless hOperation[:identifier].empty? + @xml.tag!('mac:identifier') do + identifierClass.writeXML(hOperation[:identifier]) + end + end + + unless hOperation[:status].nil? + @xml.tag!('mac:status') do + codelistClass.writeXML('mcc', 'iso_progress', hOperation[:status]) + end + end + + unless hOperation[:childOperations].empty? + hOperation[:childOperations].each do |hChildOp| + @xml.tag!('mac:childOperation') do + operationClass.writeXML(hChildOp) + end + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:childOperation') + end + end + + unless hOperation[:objectives].empty? + hOperation[:objectives].each do |hObjective| + @xml.tag!('mac:objective') do + objectiveClass.writeXML(hObjective) + end + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:objective') + end + end + + unless hOperation[:parentOperations].empty? + hOperation[:parentOperations].each do |hParentOp| + @xml.tag!('mac:parentOperation') do + operationClass.writeXML(hParentOp) + end + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:parentOperation') + end + end + + unless hOperation[:plan].empty? + @xml.tag!('mac:plan') do + planClass.writeXML(hOperation[:plan]) + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:plan') + end + end + + unless hOperation[:platform].empty? + @xml.tag!('mac:platform') do + platformClass.writeXML(hOperation[:platform]) + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:platform') + end + end + end + end + end + + end + end + end +end diff --git a/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_plan.rb b/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_plan.rb new file mode 100644 index 00000000..7a88dc4d --- /dev/null +++ b/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_plan.rb @@ -0,0 +1,76 @@ +require_relative 'class_citation' +require_relative 'class_operation' +require_relative 'class_requirement' + +module ADIWG + module Mdtranslator + module Writers + module Iso19115_3 + + class MI_Plan + def initialize(xml, hResponseObj) + @xml = xml + @hResponseObj = hResponseObj + end + + def writeXML(hPlan) + + codelistClass = MD_Codelist.new(@xml, @hResponseObj) + citationClass = CI_Citation.new(@xml, @hResponseObj) + operationClass = MI_Operation.new(@xml, @hResponseObj) + requirementClass = MI_Requirement.new(@xml, @hResponseObj) + + @xml.tag!('mac:MI_Plan', type: hPlan[:planType], id: hPlan[:planId]) do + unless hPlan[:planType].nil? + @xml.tag!('mac:type') do + codelistClass.writeXML('mac', 'iso_geometryTypeCode', hPlan[:planType]) + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:type') + end + end + + unless hPlan[:status].nil? + @xml.tag!('mac:status') do + codelistClass.writeXML('mcc', 'iso_progress', hPlan[:status]) + end + end + + unless hPlan[:citation].empty? + @xml.tag!('mac:citation') do + citationClass.writeXML(hPlan[:citation]) + end + end + + unless hPlan[:planOperations].empty? + hPlan[:planOperations].each do |hOperation| + @xml.tag!('mac:operation') do + operationClass.writeXML(hOperation) + end + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:operation') + end + end + + unless hPlan[:satisfiedRequirements].empty? + hPlan[:satisfiedRequirements].each do |hRequirement| + @xml.tag!('mac:satisfiedRequirement') do + requirementClass.writeXML(hRequirement) + end + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:satisfiedRequirement') + end + end + end + + end + end + end + end + end +end diff --git a/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_requestedDate.rb b/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_requestedDate.rb new file mode 100644 index 00000000..b42ae017 --- /dev/null +++ b/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_requestedDate.rb @@ -0,0 +1,42 @@ +module ADIWG + module Mdtranslator + module Writers + module Iso19115_3 + + class MI_RequestedDate + def initialize(xml, hResponseObj) + @xml = xml + @hResponseObj = hResponseObj + end + + def writeXML(hRequestedDate) + + gcoDateTimeClass = GcoDateTime.new(@xml, @hResponseObj) + + unless hRequestedDate[:requestedDateOfCollection].empty? + @xml.tag!('mac:requestedDateOfCollection') do + gcoDateTimeClass.writeXML(hRequestedDate[:requestedDateOfCollection]) + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:requestedDateOfCollection') + end + end + + unless hRequestedDate[:latestAcceptableDate].empty? + @xml.tag!('mac:latestAcceptableDate') do + gcoDateTimeClass.writeXML(hRequestedDate[:latestAcceptableDate]) + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:latestAcceptableDate') + end + end + end + end + end + end + end +end + + \ No newline at end of file diff --git a/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_requirement.rb b/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_requirement.rb new file mode 100644 index 00000000..595080b4 --- /dev/null +++ b/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_requirement.rb @@ -0,0 +1,109 @@ +require_relative 'class_citation' +require_relative 'class_identifier' +require_relative 'class_responsibility' +require_relative 'class_codelist' +require_relative 'class_requestedDate' +require_relative 'class_gcoDateTime' +require_relative 'class_plan' + +module ADIWG + module Mdtranslator + module Writers + module Iso19115_3 + + class MI_Requirement + def initialize(xml, hResponseObj) + @xml = xml + @hResponseObj = hResponseObj + end + + def writeXML(hRequirement) + + citationClass = CI_Citation.new(@xml, @hResponseObj) + identifierClass = MD_Identifier.new(@xml, @hResponseObj) + responsibilityClass = CI_Responsibility.new(@xml, @hResponseObj) + codelistClass = MD_Codelist.new(@xml, @hResponseObj) + requestedDateClass = MI_RequestedDate.new(@xml, @hResponseObj) + gcoDateTimeClass = GcoDateTime.new(@xml, @hResponseObj) + planClass = MI_Plan.new(@xml, @hResponseObj) + + unless hRequirement[:citation].empty? + @xml.tag!('mac:citation') do + citationClass.writeXML(hRequirement[:citation]) + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:citation') + end + end + + unless hRequirement[:identifier].empty? + @xml.tag!('mac:identifier') do + identifierClass.writeXML(hRequirement[:identifier]) + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:identifier') + end + end + + unless hRequirement[:requestors].empty? + hRequirement[:requestors].each do |hResponsibility| + @xml.tag!('mac:request') do + responsibilityClass.writeXML(hResponsibility) + end + end + end + + unless hRequirement[:recipients].empty? + hRequirement[:recipients].each do |hResponsibility| + @xml.tag!('mac:recipient') do + responsibilityClass.writeXML(hResponsibility) + end + end + end + + unless hRequirement[:priority].nil? + @xml.tag!('mac:priority') do + codelistClass.writeXML('mcc', 'iso_priorityCode', hRequirement[:priority]) + end + end + + unless hRequirement[:requestedDate].nil? + @xml.tag!('mac:requestedDate') do + requestedDateClass.writeXML(hRequirement[:requestedDate]) + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:requestedDate') + end + end + + # unless hRequirement[:expiryDate].nil? + # @xml.tag!('mac:expiryDate') do + # gcoDateTimeClass.writeXML(hRequirement[:expiryDate]) + # end + # else + # if @hResponseObj[:writerShowTags] + # @xml.tag!('mac:expiryDate') + # end + # end + + unless hRequirement[:satisfiedPlans].empty? + hRequirement[:satisfiedPlans].each do |hPlan| + @xml.tag!('mac:satisifiedPlan') do + planClass.writeXML(hPlan) + end + end + else + if @hResponseObj[:writerShowTags] + @xml.tag!('mac:satisifiedPlan') + end + end + end + end + + end + end + end +end diff --git a/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_revision.rb b/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_revision.rb index 8881e26e..14cdffc5 100644 --- a/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_revision.rb +++ b/lib/adiwg/mdtranslator/writers/iso19115_3/classes/class_revision.rb @@ -1,3 +1,6 @@ +require_relative 'class_responsibility' +require_relative 'class_gcoDateTime' + module ADIWG module Mdtranslator module Writers @@ -12,7 +15,7 @@ def initialize(xml, hResponseObj) def writeXML(hRevision) responsibilityClass = CI_Responsibility.new(@xml, @hResponseObj) - dateClass = CI_Date.new(@xml, @hResponseObj) + gcoDateTimeClass = GcoDateTime.new(@xml, @hResponseObj) unless hRevision[:description].nil? @xml.tag!('mac:description') do @@ -35,7 +38,7 @@ def writeXML(hRevision) unless hRevision[:dateInfo].empty? @xml.tag!('mac:dateInfo') do hRevision[:dateInfo].each do |hDate| - dateClass.writeXML(hDate) + gcoDateTimeClass.writeXML(hDate) end end else