siri/sxml/subscription_request.go
package sxml
import (
"github.com/jbowtie/gokogiri"
"github.com/jbowtie/gokogiri/xml"
)
type XMLSubscriptionRequest struct {
RequestXMLStructure
consumerAddress string
changeBeforeUpdates string
incrementalUpdates string
smEntries []*XMLStopMonitoringSubscriptionRequestEntry
gmEntries []*XMLGeneralMessageSubscriptionRequestEntry
sxEntries []*XMLSituationExchangeSubscriptionRequestEntry
ettEntries []*XMLEstimatedTimetableSubscriptionRequestEntry
pttEntries []*XMLProductionTimetableSubscriptionRequestEntry
vmEntries []*XMLVehicleMonitoringSubscriptionRequestEntry
}
func NewXMLSubscriptionRequestFromContent(content []byte) (*XMLSubscriptionRequest, error) {
doc, err := gokogiri.ParseXml(content)
if err != nil {
return nil, err
}
request := NewXMLSubscriptionRequest(doc.Root().XmlNode)
return request, nil
}
func NewXMLSubscriptionRequest(node xml.Node) *XMLSubscriptionRequest {
xmlSubscriptionRequest := &XMLSubscriptionRequest{}
xmlSubscriptionRequest.node = NewXMLNode(node)
return xmlSubscriptionRequest
}
func (request *XMLSubscriptionRequest) XMLSubscriptionSMEntries() []*XMLStopMonitoringSubscriptionRequestEntry {
if len(request.smEntries) != 0 {
return request.smEntries
}
nodes := request.findNodes("StopMonitoringSubscriptionRequest")
for _, stopMonitoring := range nodes {
request.smEntries = append(request.smEntries, NewXMLStopMonitoringSubscriptionRequestEntry(stopMonitoring))
}
return request.smEntries
}
func (request *XMLSubscriptionRequest) XMLSubscriptionETTEntries() []*XMLEstimatedTimetableSubscriptionRequestEntry {
if len(request.ettEntries) != 0 {
return request.ettEntries
}
nodes := request.findNodes("EstimatedTimetableSubscriptionRequest")
for _, ett := range nodes {
request.ettEntries = append(request.ettEntries, NewXMLEstimatedTimetableSubscriptionRequestEntry(ett))
}
return request.ettEntries
}
func (request *XMLSubscriptionRequest) XMLSubscriptionVMEntries() []*XMLVehicleMonitoringSubscriptionRequestEntry {
if len(request.vmEntries) != 0 {
return request.vmEntries
}
nodes := request.findNodes("VehicleMonitoringSubscriptionRequest")
for _, vm := range nodes {
request.vmEntries = append(request.vmEntries, NewXMLVehicleMonitoringSubscriptionRequestEntry(vm))
}
return request.vmEntries
}
func (request *XMLSubscriptionRequest) XMLSubscriptionPTTEntries() []*XMLProductionTimetableSubscriptionRequestEntry {
if len(request.pttEntries) != 0 {
return request.pttEntries
}
nodes := request.findNodes("ProductionTimetableSubscriptionRequest")
for _, ett := range nodes {
request.pttEntries = append(request.pttEntries, NewXMLProductionTimetableSubscriptionRequestEntry(ett))
}
return request.pttEntries
}
func (request *XMLSubscriptionRequest) XMLSubscriptionGMEntries() []*XMLGeneralMessageSubscriptionRequestEntry {
if len(request.gmEntries) != 0 {
return request.gmEntries
}
nodes := request.findNodes("GeneralMessageSubscriptionRequest")
for _, generalMessage := range nodes {
request.gmEntries = append(request.gmEntries, NewXMLGeneralMessageSubscriptionRequestEntry(generalMessage))
}
return request.gmEntries
}
func (request *XMLSubscriptionRequest) XMLSubscriptionSXEntries() []*XMLSituationExchangeSubscriptionRequestEntry {
if len(request.sxEntries) != 0 {
return request.sxEntries
}
nodes := request.findNodes("SituationExchangeSubscriptionRequest")
for _, situationExchangeMessage := range nodes {
request.sxEntries = append(request.sxEntries, NewXMLSituationExchangeSubscriptionRequestEntry(situationExchangeMessage))
}
return request.sxEntries
}
func (request *XMLSubscriptionRequest) ConsumerAddress() string {
if request.consumerAddress == "" {
request.consumerAddress = request.findStringChildContent("ConsumerAddress")
}
return request.consumerAddress
}
func (request *XMLSubscriptionRequest) ChangeBeforeUpdates() string {
if request.changeBeforeUpdates == "" {
request.changeBeforeUpdates = request.findStringChildContent("ChangeBeforeUpdates")
}
return request.changeBeforeUpdates
}
func (request *XMLSubscriptionRequest) IncrementalUpdates() string {
if request.incrementalUpdates == "" {
request.incrementalUpdates = request.findStringChildContent("IncrementalUpdates")
}
return request.incrementalUpdates
}