/*-
 * Copyright 2021 Hochschule für Technik Stuttgart
 *
 * 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 de.hft.stuttgart.ade.foodwaterenergycitygml4j.landuse.model;


import org.citygml4j.builder.copy.CopyBuilder;
import org.citygml4j.model.citygml.ade.binding.ADEModelObject;
import org.citygml4j.model.common.visitor.FeatureFunctor;
import org.citygml4j.model.common.visitor.FeatureVisitor;
import org.citygml4j.model.common.visitor.GMLFunctor;
import org.citygml4j.model.common.visitor.GMLVisitor;
import org.citygml4j.model.gml.feature.AbstractFeature;
import org.citygml4j.model.gml.measures.Scale;



public class WaterSurvey extends AbstractFeature implements ADEModelObject  {
	

	private static final long serialVersionUID = 1712280908279134012L;
	
	private Scale domesticWaterDemand;
	private Scale domesticHotWaterDemand;
	private Scale domesticHotWaterEnergyDemand;
	private Scale domesticWaterWaste;
	private Scale domesticSolidWaste;
	private Scale totalDomesticWaste;
	
	
	
	public Scale getDomesticWaterDemand() {
		return domesticWaterDemand;
	}
	public boolean isDomesticWaterDemand() {
		return domesticWaterDemand != null;
	}

	public void setDomesticWaterDemand(Scale domesticWaterDemand) {
		this.domesticWaterDemand = domesticWaterDemand;
	}

	public Scale getDomesticHotWaterDemand() {
		return domesticHotWaterDemand;
	}

	public boolean isDomesticHotWaterDemand() {
		return domesticHotWaterDemand != null;
	}

	public void setDomesticHotWaterDemand(Scale domesticHotWaterDemand) {
		this.domesticHotWaterDemand = domesticHotWaterDemand;
	}

	public Scale getDomesticHotWaterEnergyDemand() {
		return domesticHotWaterEnergyDemand;
	}
	

	public boolean isDomesticHotWaterEnergyDemand() {
		return domesticHotWaterEnergyDemand != null;
	}

	public void setDomesticHotWaterEnergyDemand(Scale domesticHotWaterEnergyDemand) {
		this.domesticHotWaterEnergyDemand = domesticHotWaterEnergyDemand;
	}

	public Scale getDomesticWaterWaste() {
		return domesticWaterWaste;
	}
	

	public boolean isDomesticWaterWaste() {
		return domesticWaterWaste !=null;
	}

	public void setDomesticWaterWaste(Scale domesticWaterWaste) {
		this.domesticWaterWaste = domesticWaterWaste;
	}

	public Scale getDomesticSolidWaste() {
		return domesticSolidWaste;
	}
	
	public boolean isDomesticSolidWaste() {
		return domesticSolidWaste!=null;
	}

	public void setDomesticSolidWaste(Scale domesticSolidWaste) {
		this.domesticSolidWaste = domesticSolidWaste;
	}

	public Scale getTotalDomesticWaste() {
		return totalDomesticWaste;
	}
	
	public boolean isTotalDomesticWaste() {
		return totalDomesticWaste!=null;
	}

	public void setTotalDomesticWaste(Scale totalDomesticWaste) {
		this.totalDomesticWaste = totalDomesticWaste;
	}

	@Override
	public Object copy(CopyBuilder copyBuilder) {
		return copyTo(new WaterSurvey(),copyBuilder);
	}

	@Override
	public void accept(FeatureVisitor visitor) {
		visitor.visit((ADEModelObject)this);
	}

	@Override
	public <T> T accept(FeatureFunctor<T> visitor) {
		return visitor.apply((ADEModelObject)this);
	}

	@Override
	public void accept(GMLVisitor visitor) {
		visitor.visit((ADEModelObject)this);
		
	}

	@Override
	public <T> T accept(GMLFunctor<T> visitor) {
		return visitor.apply((ADEModelObject)this);
	}


}
