/*
* Geotoolkit - An Open Source Java GIS Toolkit
* http://www.geotoolkit.org
*
* (C) 2010, Geomatys
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotoolkit.xal.model;
import java.util.List;
/**
* <p>This interface maps Premise element.</p>
*
* <p>Specification of a single premise, for example a house or a building.
* The premise as a whole has a unique premise (house) number or a premise name.
* There could be more than one premise in a street referenced in an address.
* For example a building address near a major shopping centre or raiwlay station</p>
*
* <pre>
* <xs:element name="Premise">
* <xs:complexType>
* <xs:sequence>
* <xs:element ref="AddressLine" minOccurs="0" maxOccurs="unbounded"/>
* <xs:element name="PremiseName" minOccurs="0" maxOccurs="unbounded">...
* </xs:element>
* <xs:choice minOccurs="0">
* <xs:element name="PremiseLocation">...
* </xs:element>
* <xs:choice>
* <xs:element ref="PremiseNumber" maxOccurs="unbounded"/>
* <xs:element name="PremiseNumberRange">...
* </xs:element>
* </xs:choice>
* </xs:choice>
* <xs:element ref="PremiseNumberPrefix" minOccurs="0" maxOccurs="unbounded"/>
* <xs:element ref="PremiseNumberSuffix" minOccurs="0" maxOccurs="unbounded"/>
* <xs:element name="BuildingName" type="BuildingNameType" minOccurs="0" maxOccurs="unbounded">...
* </xs:element>
* <xs:choice>
* <xs:element name="SubPremise" type="SubPremiseType" minOccurs="0" maxOccurs="unbounded">...
* </xs:element>
* <xs:element name="Firm" type="FirmType" minOccurs="0">...
* </xs:element>
* </xs:choice>
* <xs:element name="MailStop" type="MailStopType" minOccurs="0">...
* </xs:element>
* <xs:element ref="PostalCode" minOccurs="0"/>
* <xs:element ref="Premise" minOccurs="0"/>
* <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
* </xs:sequence>
* <xs:attribute name="Type">...
* </xs:attribute>
* <xs:attribute name="PremiseDependency">...
* </xs:attribute>
* <xs:attribute name="PremiseDependencyType">
* </xs:attribute>
* <xs:attribute name="PremiseThoroughfareConnector">...
* </xs:attribute>
* <xs:anyAttribute namespace="##other"/>
* </xs:complexType>
* </xs:element>
* </pre>
*
* @author Samuel Andrés
* @module
*/
public interface Premise {
/**
*
* @return
*/
List<GenericTypedGrPostal> getAddressLines();
/**
*
* @param addressLines
*/
void setAddressLines(List<GenericTypedGrPostal> addressLines);
/**
*
* @return
*/
List<PremiseName> getPremiseNames();
/**
*
* @param premiseNames
*/
void setPremiseNames(List<PremiseName> premiseNames);
/*
* === CHOIX: ===
*/
/**
*
* @return
*/
PremiseLocation getPremiseLocation();
/**
*
* @param premiseLocation
*/
void setPremiseLocation(PremiseLocation premiseLocation);
/**
*
* @return
*/
List<PremiseNumber> getPremiseNumbers();
/**
*
* @param premiseNumbers
*/
void setPremiseNumbers(List<PremiseNumber> premiseNumbers);
/**
*
* @return
*/
PremiseNumberRange getPremiseNumberRange();
/**
*
* @param premiseNumberRange
*/
void setPremiseNumberRange(PremiseNumberRange premiseNumberRange);
/*
* === END OF CHOICE ===
*/
/**
*
* @return
*/
List<PremiseNumberPrefix> getPremiseNumberPrefixes();
/**
*
* @param premiseNumberPrefixes
*/
void setPremiseNumberPrefixes(List<PremiseNumberPrefix> premiseNumberPrefixes);
/**
*
* @return
*/
List<PremiseNumberSuffix> getPremiseNumberSuffixes();
/**
*
* @param premiseNumberSuffixes
*/
void setPremiseNumberSuffixes(List<PremiseNumberSuffix> premiseNumberSuffixes);
/**
* <p>Specification of the name of a building.</p>
*
* @return
*/
List<BuildingName> getBuildingNames();
/**
*
* @param buildingNames
*/
void setBuildingNames(List<BuildingName> buildingNames);
/*
* === CHOICE : ===
*/
/**
* <p>Specification of a single sub-premise.
* Examples of sub-premises are apartments and suites.
* Each sub-premise should be uniquely identifiable.</p>
*
* @return
*/
List<SubPremise> getSubPremises();
/**
*
* @param subPremises
*/
void setSubPremises(List<SubPremise> subPremises);
/**
* <p>Specification of a firm, company, organization, etc.
* It can be specified as part of an address that contains a street or a postbox.
* It is therefore different from a large mail user address,
* which contains no street.</p>
*
* @return
*/
Firm getFirm();
/**
*
* @param firm
*/
void setFirm(Firm firm);
/*
* === END OF CHOICE ===
*/
/**
* <p>A MailStop is where the the mail is delivered to within a premise/subpremise/firm or a facility.</p>
*
* @return
*/
MailStop getMailStop();
/**
*
* @param mailStop
*/
void setMailStop(MailStop mailStop);
/**
*
* @return
*/
PostalCode getPostalCode();
/**
*
* @param postalCode
*/
void setPostalCode(PostalCode postalCode);
/**
*
* @return
*/
Premise getPremise();
/**
*
* @param premise
*/
void setPremise(Premise premise);
/*
* === ATTRIBUTES ===
*/
/**
* <p>COMPLEXE in COMPLEX DES JARDINS, A building, station, etc.</p>
*
* @return
*/
String getType();
/**
*
* @param type
*/
void setType(String type);
/**
* <p>STREET, PREMISE, SUBPREMISE, PARK, FARM, etc.</p>
*
* @return
*/
String getPremiseDependency();
/**
*
* @param premiseDependency
*/
void setPremiseDependency(String premiseDependency);
/**
* <p>NEAR, ADJACENT TO, etc.</p>
*
* @return
*/
String getPremiseDependencyType();
/**
*
* @param premiseDpendencyType
*/
void setPremiseDependencyType(String premiseDependencyType);
/**
* <p>DES, DE, LA, LA, DU in RUE DU BOIS.
* These terms connect a premise/thoroughfare type and premise/thoroughfare name.
* Terms may appear with names AVE DU BOIS</p>
*
* @return
*/
String getPremiseThoroughfareConnector();
/**
*
* @param premiseThoroughfarConnctor
*/
void setPremiseThoroughfareConnector(String premiseThoroughfareConnector);
}