/*
* 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 java.util.List;
import org.citygml4j.builder.copy.CopyBuilder;
import org.citygml4j.model.common.base.ModelObject;
import org.citygml4j.model.common.base.ModelType;
import org.citygml4j.model.common.child.Child;
import org.citygml4j.model.common.child.ChildList;
import org.citygml4j.model.common.copy.Copyable;
import org.citygml4j.model.common.visitor.XALFunctor;
import org.citygml4j.model.common.visitor.XALVisitor;
public class SubPremise implements XAL, Child, Copyable {
private List<AddressLine> addressLine;
private List<SubPremiseName> subPremiseName;
private List<SubPremiseNumber> subPremiseNumber;
private List<SubPremiseNumberPrefix> subPremiseNumberPrefix;
private List<SubPremiseNumberSuffix> subPremiseNumberSuffix;
private List<BuildingName> buildingName;
private SubPremiseLocation subPremiseLocation;
private Firm firm;
private MailStop mailStop;
private PostalCode postalCode;
private SubPremise subPremise;
private String type;
private ModelObject parent;
public void addAddressLine(AddressLine addressLine) {
if (this.addressLine == null)
this.addressLine = new ChildList<AddressLine>(this);
this.addressLine.add(addressLine);
}
public void addBuildingName(BuildingName buildingName) {
if (this.buildingName == null)
this.buildingName = new ChildList<BuildingName>(this);
this.buildingName.add(buildingName);
}
public void addSubPremiseName(SubPremiseName subPremiseName) {
if (this.subPremiseName == null)
this.subPremiseName = new ChildList<SubPremiseName>(this);
this.subPremiseName.add(subPremiseName);
}
public void addSubPremiseNumber(SubPremiseNumber subPremiseNumber) {
if (this.subPremiseNumber == null)
this.subPremiseNumber = new ChildList<SubPremiseNumber>(this);
this.subPremiseNumber.add(subPremiseNumber);
}
public void addSubPremiseNumberPrefix(SubPremiseNumberPrefix subPremiseNumberPrefix) {
if (this.subPremiseNumberPrefix == null)
this.subPremiseNumberPrefix = new ChildList<SubPremiseNumberPrefix>(this);
this.subPremiseNumberPrefix.add(subPremiseNumberPrefix);
}
public void addSubPremiseNumberSuffix(SubPremiseNumberSuffix subPremiseNumberSuffix) {
if (this.subPremiseNumberSuffix == null)
this.subPremiseNumberSuffix = new ChildList<SubPremiseNumberSuffix>(this);
this.subPremiseNumberSuffix.add(subPremiseNumberSuffix);
}
public List<AddressLine> getAddressLine() {
if (addressLine == null)
addressLine = new ChildList<AddressLine>(this);
return addressLine;
}
public List<BuildingName> getBuildingName() {
if (buildingName == null)
buildingName = new ChildList<BuildingName>(this);
return buildingName;
}
public Firm getFirm() {
return firm;
}
public MailStop getMailStop() {
return mailStop;
}
public PostalCode getPostalCode() {
return postalCode;
}
public SubPremise getSubPremise() {
return subPremise;
}
public SubPremiseLocation getSubPremiseLocation() {
return subPremiseLocation;
}
public List<SubPremiseName> getSubPremiseName() {
if (subPremiseName == null)
subPremiseName = new ChildList<SubPremiseName>(this);
return subPremiseName;
}
public List<SubPremiseNumber> getSubPremiseNumber() {
if (subPremiseNumber == null)
subPremiseNumber = new ChildList<SubPremiseNumber>(this);
return subPremiseNumber;
}
public List<SubPremiseNumberPrefix> getSubPremiseNumberPrefix() {
if (subPremiseNumberPrefix == null)
subPremiseNumberPrefix = new ChildList<SubPremiseNumberPrefix>(this);
return subPremiseNumberPrefix;
}
public List<SubPremiseNumberSuffix> getSubPremiseNumberSuffix() {
if (subPremiseNumberSuffix == null)
subPremiseNumberSuffix = new ChildList<SubPremiseNumberSuffix>(this);
return subPremiseNumberSuffix;
}
public String getType() {
return type;
}
public boolean isSetAddressLine() {
return addressLine != null && !addressLine.isEmpty();
}
public boolean isSetBuildingName() {
return buildingName != null && !buildingName.isEmpty();
}
public boolean isSetFirm() {
return firm != null;
}
public boolean isSetMailStop() {
return mailStop != null;
}
public boolean isSetPostalCode() {
return postalCode != null;
}
public boolean isSetSubPremise() {
return subPremise != null;
}
public boolean isSetSubPremiseLocation() {
return subPremiseLocation != null;
}
public boolean isSetSubPremiseName() {
return subPremiseName != null && !subPremiseName.isEmpty();
}
public boolean isSetSubPremiseNumber() {
return subPremiseNumber != null && !subPremiseNumber.isEmpty();
}
public boolean isSetSubPremiseNumberPrefix() {
return subPremiseNumberPrefix != null && !subPremiseNumberPrefix.isEmpty();
}
public boolean isSetSubPremiseNumberSuffix() {
return subPremiseNumberSuffix != null && !subPremiseNumberSuffix.isEmpty();
}
public boolean isSetType() {
return type != null;
}
public void setAddressLine(List<AddressLine> addressLine) {
this.addressLine = new ChildList<AddressLine>(this, addressLine);
}
public void setBuildingName(List<BuildingName> buildingName) {
this.buildingName = new ChildList<BuildingName>(this, buildingName);
}
public void setFirm(Firm firm) {
if (firm != null)
firm.setParent(this);
this.firm = firm;
}
public void setMailStop(MailStop mailStop) {
if (mailStop != null)
mailStop.setParent(this);
this.mailStop = mailStop;
}
public void setPostalCode(PostalCode postalCode) {
if (postalCode != null)
postalCode.setParent(this);
this.postalCode = postalCode;
}
public void setSubPremise(SubPremise subPremise) {
if (subPremise != null)
subPremise.setParent(this);
this.subPremise = subPremise;
}
public void setSubPremiseLocation(SubPremiseLocation subPremiseLocation) {
if (subPremiseLocation != null)
subPremiseLocation.setParent(this);
this.subPremiseLocation = subPremiseLocation;
}
public void setSubPremiseName(List<SubPremiseName> subPremiseName) {
this.subPremiseName = new ChildList<SubPremiseName>(this, subPremiseName);
}
public void setSubPremiseNumber(List<SubPremiseNumber> subPremiseNumber) {
this.subPremiseNumber = new ChildList<SubPremiseNumber>(this, subPremiseNumber);
}
public void setSubPremiseNumberPrefix(List<SubPremiseNumberPrefix> subPremiseNumberPrefix) {
this.subPremiseNumberPrefix = new ChildList<SubPremiseNumberPrefix>(this, subPremiseNumberPrefix);
}
public void setSubPremiseNumberSuffix(List<SubPremiseNumberSuffix> subPremiseNumberSuffix) {
this.subPremiseNumberSuffix = new ChildList<SubPremiseNumberSuffix>(this, subPremiseNumberSuffix);
}
public void setType(String type) {
this.type = type;
}
public void unsetAddressLine() {
if (isSetAddressLine())
addressLine.clear();
addressLine = null;
}
public boolean unsetAddressLine(AddressLine addressLine) {
return isSetAddressLine() ? this.addressLine.remove(addressLine) : false;
}
public void unsetBuildingName() {
if (isSetBuildingName())
buildingName.clear();
buildingName = null;
}
public boolean unsetBuildingName(BuildingName buildingName) {
return isSetBuildingName() ? this.buildingName.remove(buildingName) : false;
}
public void unsetFirm() {
if (isSetFirm())
firm.unsetParent();
firm = null;
}
public void unsetMailStop() {
if (isSetMailStop())
mailStop.unsetParent();
mailStop = null;
}
public void unsetPostalCode() {
if (isSetPostalCode())
postalCode.unsetParent();
postalCode = null;
}
public void unsetSubPremise() {
if (isSetSubPremise())
subPremise.unsetParent();
subPremise = null;
}
public void unsetSubPremiseLocation() {
if (isSetSubPremiseLocation())
subPremiseLocation.unsetParent();
subPremiseLocation = null;
}
public void unsetSubPremiseName() {
if (isSetSubPremiseName())
subPremiseName.clear();
subPremiseName = null;
}
public boolean unsetSubPremiseName(SubPremiseName subPremiseName) {
return isSetSubPremiseName() ? this.subPremiseName.remove(subPremiseName) : false;
}
public void unsetSubPremiseNumber() {
if (isSetSubPremiseNumber())
subPremiseNumber.clear();
subPremiseNumber = null;
}
public boolean unsetSubPremiseNumber(SubPremiseNumber subPremiseNumber) {
return isSetSubPremiseNumber() ? this.subPremiseNumber.remove(subPremiseNumber) : false;
}
public void unsetSubPremiseNumberPrefix() {
if (isSetSubPremiseNumberPrefix())
subPremiseNumberPrefix.clear();
subPremiseNumberPrefix = null;
}
public boolean unsetSubPremiseNumberPrefix(SubPremiseNumberPrefix subPremiseNumberPrefix) {
return isSetSubPremiseNumberPrefix() ? this.subPremiseNumberPrefix.remove(subPremiseNumberPrefix) : false;
}
public void unsetSubPremiseNumberSuffix() {
if (isSetSubPremiseNumberSuffix())
subPremiseNumberSuffix.clear();
subPremiseNumberSuffix = null;
}
public boolean unsetSubPremiseNumberSuffix(SubPremiseNumberSuffix subPremiseNumberSuffix) {
return isSetSubPremiseNumberSuffix() ? this.subPremiseNumberSuffix.remove(subPremiseNumberSuffix) : false;
}
public void unsetType() {
type = null;
}
public ModelType getModelType() {
return ModelType.XAL;
}
public XALClass getXALClass() {
return XALClass.SUB_PREMISE;
}
public ModelObject getParent() {
return parent;
}
public void setParent(ModelObject parent) {
this.parent = parent;
}
public boolean isSetParent() {
return parent != null;
}
public void unsetParent() {
parent = null;
}
public Object copy(CopyBuilder copyBuilder) {
return copyTo(new SubPremise(), copyBuilder);
}
public Object copyTo(Object target, CopyBuilder copyBuilder) {
SubPremise copy = (target == null) ? new SubPremise() : (SubPremise)target;
if (isSetType())
copy.setType(copyBuilder.copy(type));
if (isSetAddressLine()) {
for (AddressLine part : addressLine) {
AddressLine copyPart = (AddressLine)copyBuilder.copy(part);
copy.addAddressLine(copyPart);
if (part != null && copyPart == part)
part.setParent(this);
}
}
if (isSetBuildingName()) {
for (BuildingName part : buildingName) {
BuildingName copyPart = (BuildingName)copyBuilder.copy(part);
copy.addBuildingName(copyPart);
if (part != null && copyPart == part)
part.setParent(this);
}
}
if (isSetSubPremiseName()) {
for (SubPremiseName part : subPremiseName) {
SubPremiseName copyPart = (SubPremiseName)copyBuilder.copy(part);
copy.addSubPremiseName(copyPart);
if (part != null && copyPart == part)
part.setParent(this);
}
}
if (isSetSubPremiseNumber()) {
for (SubPremiseNumber part : subPremiseNumber) {
SubPremiseNumber copyPart = (SubPremiseNumber)copyBuilder.copy(part);
copy.addSubPremiseNumber(copyPart);
if (part != null && copyPart == part)
part.setParent(this);
}
}
if (isSetSubPremiseNumberPrefix()) {
for (SubPremiseNumberPrefix part : subPremiseNumberPrefix) {
SubPremiseNumberPrefix copyPart = (SubPremiseNumberPrefix)copyBuilder.copy(part);
copy.addSubPremiseNumberPrefix(copyPart);
if (part != null && copyPart == part)
part.setParent(this);
}
}
if (isSetSubPremiseNumberSuffix()) {
for (SubPremiseNumberSuffix part : subPremiseNumberSuffix) {
SubPremiseNumberSuffix copyPart = (SubPremiseNumberSuffix)copyBuilder.copy(part);
copy.addSubPremiseNumberSuffix(copyPart);
if (part != null && copyPart == part)
part.setParent(this);
}
}
if (isSetMailStop()) {
copy.setMailStop((MailStop)copyBuilder.copy(mailStop));
if (copy.getMailStop() == mailStop)
mailStop.setParent(this);
}
if (isSetPostalCode()) {
copy.setPostalCode((PostalCode)copyBuilder.copy(postalCode));
if (copy.getPostalCode() == postalCode)
postalCode.setParent(this);
}
if (isSetFirm()) {
copy.setFirm((Firm)copyBuilder.copy(firm));
if (copy.getFirm() == firm)
firm.setParent(this);
}
if (isSetSubPremise()) {
copy.setSubPremise((SubPremise)copyBuilder.copy(subPremise));
if (copy.getSubPremise() == subPremise)
subPremise.setParent(this);
}
if (isSetSubPremiseLocation()) {
copy.setSubPremiseLocation((SubPremiseLocation)copyBuilder.copy(subPremiseLocation));
if (copy.getSubPremiseLocation() == subPremiseLocation)
subPremiseLocation.setParent(this);
}
copy.unsetParent();
return copy;
}
public void visit(XALVisitor visitor) {
visitor.visit(this);
}
public <T> T visit(XALFunctor<T> visitor) {
return visitor.apply(this);
}
}