All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gov.nasa.worldwind.ogc.OGCContactInformation Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (C) 2012 United States Government as represented by the Administrator of the
 * National Aeronautics and Space Administration.
 * All Rights Reserved.
 */

package gov.nasa.worldwind.ogc;

import gov.nasa.worldwind.util.xml.*;

import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;

/**
 * Parses an OGC ContactInformation element.
 *
 * @author tag
 * @version $Id: OGCContactInformation.java 1171 2013-02-11 21:45:02Z dcollins $
 */
public class OGCContactInformation extends AbstractXMLEventParser
{
    protected QName CONTACT_POSITION;
    protected QName CONTACT_VOICE_TELEPHONE;
    protected QName CONTACT_FACSIMILE_TELEPHONE;
    protected QName CONTACT_ELECTRONIC_MAIL_ADDRESS;
    protected QName CONTACT_PERSON_PRIMARY;
    protected QName CONTACT_ADDRESS;
    protected QName CONTACT_PERSON;
    protected QName CONTACT_ORGANIZATION;

    protected String personPrimary;
    protected String organization;
    protected String position;
    protected String voiceTelephone;
    protected String facsimileTelephone;
    protected String electronicMailAddress;
    protected OGCAddress contactAddress;

    public OGCContactInformation(String namespaceURI)
    {
        super(namespaceURI);

        this.initialize();
    }

    private void initialize()
    {
        CONTACT_POSITION = new QName(this.getNamespaceURI(), "ContactPosition");
        CONTACT_VOICE_TELEPHONE = new QName(this.getNamespaceURI(), "ContactVoiceTelephone");
        CONTACT_FACSIMILE_TELEPHONE = new QName(this.getNamespaceURI(), "ContactFacsimileTelephone");
        CONTACT_ELECTRONIC_MAIL_ADDRESS = new QName(this.getNamespaceURI(), "ContactElectronicMailAddress");
        CONTACT_PERSON_PRIMARY = new QName(this.getNamespaceURI(), "ContactPersonPrimary");
        CONTACT_ADDRESS = new QName(this.getNamespaceURI(), "ContactAddress");
        CONTACT_PERSON = new QName(this.getNamespaceURI(), "ContactPerson");
        CONTACT_ORGANIZATION = new QName(this.getNamespaceURI(), "ContactOrganization");
    }

    @Override
    public XMLEventParser allocate(XMLEventParserContext ctx, XMLEvent event)
    {
        XMLEventParser defaultParser = null;

        if (ctx.isStartElement(event, CONTACT_ADDRESS))
            defaultParser = new OGCAddress(this.getNamespaceURI());

        return ctx.allocate(event, defaultParser);
    }

    @Override
    protected void doParseEventContent(XMLEventParserContext ctx, XMLEvent event, Object... args)
        throws XMLStreamException
    {
        if (ctx.isStartElement(event, CONTACT_POSITION))
        {
            this.setPosition(ctx.getStringParser().parseString(ctx, event));
        }
        else if (ctx.isStartElement(event, CONTACT_VOICE_TELEPHONE))
        {
            this.setVoiceTelephone(ctx.getStringParser().parseString(ctx, event));
        }
        else if (ctx.isStartElement(event, CONTACT_FACSIMILE_TELEPHONE))
        {
            this.setFacsimileTelephone(ctx.getStringParser().parseString(ctx, event));
        }
        else if (ctx.isStartElement(event, CONTACT_ELECTRONIC_MAIL_ADDRESS))
        {
            this.setElectronicMailAddress(ctx.getStringParser().parseString(ctx, event));
        }
        else if (ctx.isStartElement(event, CONTACT_PERSON_PRIMARY))
        {
            String[] sa = this.parseContactPersonPrimary(ctx, event);
            this.setPersonPrimary(sa[0]);
            this.setOrganization(sa[1]);
        }
        else if (ctx.isStartElement(event, CONTACT_ADDRESS))
        {
            XMLEventParser parser = this.allocate(ctx, event);
            if (parser != null)
            {
                Object o = parser.parse(ctx, event, args);
                if (o != null && o instanceof OGCAddress)
                    this.setContactAddress((OGCAddress) o);
            }
        }
    }

    protected String[] parseContactPersonPrimary(XMLEventParserContext ctx, XMLEvent cppEvent) throws XMLStreamException
    {
        String[] items = new String[2];

        for (XMLEvent event = ctx.nextEvent(); event != null; event = ctx.nextEvent())
        {
            if (ctx.isEndElement(event, cppEvent))
                return items;

            if (ctx.isStartElement(event, CONTACT_PERSON))
            {
                items[0] = ctx.getStringParser().parseString(ctx, event);
            }
            else if (ctx.isStartElement(event, CONTACT_ORGANIZATION))
            {
                items[1] = ctx.getStringParser().parseString(ctx, event);
            }
        }

        return null;
    }

    public String getPersonPrimary()
    {
        return personPrimary;
    }

    protected void setPersonPrimary(String personPrimary)
    {
        this.personPrimary = personPrimary;
    }

    public String getOrganization()
    {
        return organization;
    }

    protected void setOrganization(String organization)
    {
        this.organization = organization;
    }

    public String getPosition()
    {
        return position;
    }

    protected void setPosition(String position)
    {
        this.position = position;
    }

    public String getVoiceTelephone()
    {
        return voiceTelephone;
    }

    protected void setVoiceTelephone(String voiceTelephone)
    {
        this.voiceTelephone = voiceTelephone;
    }

    public String getFacsimileTelephone()
    {
        return facsimileTelephone;
    }

    protected void setFacsimileTelephone(String facsimileTelephone)
    {
        this.facsimileTelephone = facsimileTelephone;
    }

    public String getElectronicMailAddress()
    {
        return electronicMailAddress;
    }

    protected void setElectronicMailAddress(String electronicMailAddress)
    {
        this.electronicMailAddress = electronicMailAddress;
    }

    public OGCAddress getContactAddress()
    {
        return contactAddress;
    }

    protected void setContactAddress(OGCAddress contactAddress)
    {
        this.contactAddress = contactAddress;
    }

    @Override
    public String toString()
    {
        StringBuilder sb = new StringBuilder();

        sb.append("PersonPrimary: ").append(this.personPrimary != null ? this.personPrimary : "none").append("\n");
        sb.append("Organization: ").append(this.organization != null ? this.organization : "none").append("\n");
        sb.append("Position: ").append(this.position != null ? this.position : "none").append("\n");
        sb.append("VoiceTelephone: ").append(this.voiceTelephone != null ? this.voiceTelephone : "none").append("\n");
        sb.append("FacsimileTelephone: ").append(
            this.facsimileTelephone != null ? this.facsimileTelephone : "none").append("\n");
        sb.append("ElectronicMailAddress: ").append(
            this.electronicMailAddress != null ? this.electronicMailAddress : "none").append("\n");
        sb.append(this.contactAddress != null ? this.contactAddress : "none");

        return sb.toString();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy