/*
* citygml4j - The Open Source Java API for CityGML
* https://github.com/citygml4j
*
* Copyright 2013-2017 Claus Nagel <claus.nagel@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.citygml4j.model.xal;
import org.citygml4j.model.citygml.CityGMLClass;
import org.citygml4j.model.common.base.ModelClassEnum;
import org.citygml4j.model.gml.GMLClass;
public enum XALClass implements ModelClassEnum {
UNDEFINED(null),
ADDRESS(Address.class),
ADDRESS_DETAILS(AddressDetails.class),
ADDRESS_LATITUDE(AddressLatitude.class),
ADDRESS_LATITUDE_DIRECTION(AddressLatitudeDirection.class),
ADDRESS_LINE(AddressLine.class),
ADDRESS_LINES(AddressLines.class),
ADDRESS_LONGITUDE(AddressLongitude.class),
ADDRESS_LONGITUDE_DIRECTION(AddressLongitudeDirection.class),
ADDRESS_IDENTIFIER(AddressIdentifier.class),
ADMINISTRATIVE_AREA(AdministrativeArea.class),
ADMINISTRATIVE_AREA_NAME(AdministrativeAreaName.class),
BARCODE(Barcode.class),
BUILDING_NAME(BuildingName.class),
COUNTRY(Country.class),
COUNTRY_NAME(CountryName.class),
COUNTRY_NAME_CODE(CountryNameCode.class),
DEPARTMENT(Department.class),
DEPARTMENT_NAME(DepartmentName.class),
DEPENDENT_LOCALITY(DependentLocality.class),
DEPENDENT_LOCALITY_NAME(DependentLocalityName.class),
DEPENDENT_LOCALITY_NUMBER(DependentLocalityNumber.class),
DEPENDENT_THOROUGHFARE(DependentThoroughfare.class),
ENDORSEMENT_LINE_CODE(EndorsementLineCode.class),
FIRM(Firm.class),
FIRM_NAME(FirmName.class),
LARGE_MAIL_USER(LargeMailUser.class),
LARGE_MAIL_USER_NAME(LargeMailUserName.class),
LARGE_MAIL_USER_IDENTIFIER(LargeMailUserIdentifier.class),
LOCALITY(Locality.class),
LOCALITY_NAME(LocalityName.class),
KEY_LINE_CODE(KeyLineCode.class),
MAIL_STOP(MailStop.class),
MAIL_STOP_NAME(MailStopName.class),
MAIL_STOP_NUMBER(MailStopNumber.class),
POSTAL_CODE(PostalCode.class),
POSTAL_CODE_NUMBER(PostalCodeNumber.class),
POSTAL_CODE_NUMBER_EXTENSION(PostalCodeNumberExtension.class),
POSTAL_SERVICE_ELEMENTS(PostalServiceElements.class),
POSTAL_ROUTE(PostalRoute.class),
POSTAL_ROUTE_NAME(PostalRouteName.class),
POSTAL_ROUTE_NUMBER(PostalRouteNumber.class),
POST_BOX(PostBox.class),
POST_BOX_NUMBER(PostBoxNumber.class),
POST_BOX_NUMBER_EXTENSION(PostBoxNumberExtension.class),
POST_BOX_NUMBER_PREFIX(PostBoxNumberPrefix.class),
POST_BOX_NUMBER_SUFFIX(PostBoxNumberSuffix.class),
POST_OFFICE(PostOffice.class),
POST_OFFICE_NAME(PostOfficeName.class),
POST_OFFICE_NUMBER(PostOfficeNumber.class),
POST_TOWN(PostTown.class),
POST_TOWN_NAME(PostTownName.class),
POST_TOWN_SUFFIX(PostTownSuffix.class),
PREMISE(Premise.class),
PREMISE_LOCATION(PremiseLocation.class),
PREMISE_NAME(PremiseName.class),
PREMISE_NUMBER(PremiseNumber.class),
PREMISE_NUMBER_PREFIX(PremiseNumberPrefix.class),
PREMISE_NUMBER_RANGE(PremiseNumberRange.class),
PREMISE_NUMBER_RANGE_FROM(PremiseNumberRangeFrom.class),
PREMISE_NUMBER_RANGE_TO(PremiseNumberRangeTo.class),
PREMISE_NUMBER_SUFFIX(PremiseNumberSuffix.class),
SORTING_CODE(SortingCode.class),
SUB_ADMINISTRATIVE_AREA(SubAdministrativeArea.class),
SUB_ADMINISTRATIVE_AREA_NAME(SubAdministrativeAreaName.class),
SUB_PREMISE(SubPremise.class),
SUB_PREMISE_LOCATION(SubPremiseLocation.class),
SUB_PREMISE_NAME(SubPremiseName.class),
SUB_PREMISE_NUMBER(SubPremiseNumber.class),
SUB_PREMISE_NUMBER_PREFIX(SubPremiseNumberPrefix.class),
SUB_PREMISE_NUMBER_SUFFIX(SubPremiseNumberSuffix.class),
SUPPLEMENTARY_POSTAL_SERVICE_DATA(SupplementaryPostalServiceData.class),
THOROUGHFARE(Thoroughfare.class),
THOROUGHFARE_LEADING_TYPE(ThoroughfareLeadingType.class),
THOROUGHFARE_NAME(ThoroughfareName.class),
THOROUGHFARE_NUMBER(ThoroughfareNumber.class),
THOROUGHFARE_NUMBER_FROM(ThoroughfareNumberFrom.class),
THOROUGHFARE_NUMBER_FROM_CONTENT(ThoroughfareNumberFromContent.class),
THOROUGHFARE_NUMBER_RANGE(ThoroughfareNumberRange.class),
THOROUGHFARE_NUMBER_OR_RANGE(ThoroughfareNumberOrRange.class),
THOROUGHFARE_NUMBER_PREFIX(ThoroughfareNumberPrefix.class),
THOROUGHFARE_NUMBER_SUFFIX(ThoroughfareNumberSuffix.class),
THOROUGHFARE_NUMBER_TO(ThoroughfareNumberTo.class),
THOROUGHFARE_NUMBER_TO_CONTENT(ThoroughfareNumberToContent.class),
THOROUGHFARE_PRE_DIRECTION(ThoroughfarePreDirection.class),
THOROUGHFARE_POST_DIRECTION(ThoroughfarePostDirection.class),
THOROUGHFARE_TRAILING_TYPE(ThoroughfareTrailingType.class);
private final Class<? extends XAL> modelClass;
private XALClass(Class<? extends XAL> modelClass) {
this.modelClass = modelClass;
}
public Class<? extends XAL> getModelClass() {
return modelClass;
}
public static XALClass fromModelClass(Class<? extends XAL> modelClass) {
for (XALClass c : XALClass.values())
if (c.modelClass == modelClass)
return c;
return UNDEFINED;
}
public static XALClass fromInt(int i) {
for (XALClass c : XALClass.values()) {
if (c.ordinal() == i)
return c;
}
return UNDEFINED;
}
public boolean isInstance(ModelClassEnum type) {
if (type == null)
return false;
Class<?> tmp = modelClass;
Class<?> otherModelClass = null;
if (type instanceof CityGMLClass)
otherModelClass = ((CityGMLClass)type).getModelClass();
else if (type instanceof GMLClass)
otherModelClass = ((GMLClass)type).getModelClass();
else if (type instanceof XALClass)
otherModelClass = ((XALClass)type).getModelClass();
if (otherModelClass != null) {
do {
if (tmp == otherModelClass)
return true;
} while ((tmp = tmp.getSuperclass()) != null);
}
return false;
}
}