
package de.ivu.elect.business.geodata.boundary;

import org.apache.deltaspike.core.api.scope.ConversationGroup;
import org.apache.deltaspike.core.api.scope.GroupedConversationScoped;

import de.ivu.elect.business.geodata.entity.GeodataOrt;
import de.ivu.elect.business.geodata.entity.GeodataOrtProperties;
import de.ivu.elect.business.geodata.entity.GeodataPlz;
import de.ivu.elect.business.geodata.entity.GeodataPlzProperties;
import de.ivu.elect.jee.presentation.dynamicform.AbstractStringProperty;
import de.ivu.elect.jee.presentation.dynamicform.Property;


import static java.util.Objects.isNull;

@GroupedConversationScoped
@ConversationGroup(AbstractGeodataOrtSearchParameters.class)
public class GeodataOrtSearchParameters extends AbstractGeodataOrtSearchParameters {

  private static final long serialVersionUID = 1L;

  private GeodataOrt geodataOrt;

  private GeodataPlz geodataPlz;

  public GeodataOrtSearchParameters() {
    super();
  }

  private GeodataOrt getGeodataOrt() {
    if (isNull(geodataOrt)) {
      geodataOrt = new GeodataOrt();
    }

    return geodataOrt;
  }

  private GeodataOrtProperties getGeodataOrtProperties() {
    return getGeodataOrt().getProperties();
  }

  private GeodataPlz getGeodataPlz() {
    if (isNull(geodataPlz)) {
      geodataPlz = new GeodataPlz();
    }

    return geodataPlz;
  }

  private GeodataPlzProperties getGeodataPlzProperties() {
    return getGeodataPlz().getProperties();
  }

  public void setOrtsname(String ortsname) {
    getGeodataOrt().setOrtsname(ortsname);
  }

  public String getOrtsname() {
    return getGeodataOrt().getOrtsname();
  }

  public Property getOrtsnameProperty() {
    AbstractStringProperty ortsnameProperty = getGeodataOrtProperties().getOrtsnameProperty();
    ortsnameProperty.setRequired(false);

    return ortsnameProperty;
  }

  public String getOrtsteilname() {
    return getGeodataOrt().getOrtsteilname();
  }

  public void setOrtsteilname(String ortsteilname) {
    getGeodataOrt().setOrtsteilname(ortsteilname);
  }

  public Property getOrtsteilnameProperty() {
    AbstractStringProperty ortsteilnameProperty = getGeodataOrtProperties().getOrtsteilnameProperty();
    ortsteilnameProperty.setRequired(false);

    return ortsteilnameProperty;
  }

  public String getPlz() {
    return getGeodataPlz().getPlz();
  }

  public void setPlz(String plz) {
    getGeodataPlz().setPlz(plz);
  }

  public Property getPlzProperty() {
    AbstractStringProperty plzProperty = getGeodataPlzProperties().getPlzProperty();
    plzProperty.setRequired(false);

    return plzProperty;
  }

  @Override
  public void reset() {
    geodataOrt = null;

    super.reset();
  }
}
