package de.ivu.elect.interfaces.core;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;

@XmlAccessorType(XmlAccessType.FIELD)
public class Gruppe implements Serializable {

  private static final long serialVersionUID = 1L;

  @XmlElement(required = true)
  GruppeReferenz gruppeReferenz;

  @XmlElement(required = true)
  private String name;

  @XmlElement(required = true)
  private String kurzname;

  @XmlElement(required = false)
  private String zusatzbezeichnung;

  @XmlElement(required = true)
  private GruppeArt gruppeArt;

  @XmlElement(required = false)
  private String farbe;

  @XmlElement(required = false)
  private String farbeExtern;

  @XmlElement(required = true)
  private boolean inPraesentation;

  @XmlElement(required = true)
  private String customData;

  @XmlElement(required = false) // aus kompatibilitätsgründen...
  private Long relativePosition;

  @XmlElement(required = false)
  private Long vorgegebenePosition;

  @XmlElement(required = false)
  private Bild logo;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getKurzname() {
    return kurzname;
  }

  public void setKurzname(String kurzname) {
    this.kurzname = kurzname;
  }

  public GruppeArt getGruppeArt() {
    return gruppeArt;
  }

  public void setGruppeArt(GruppeArt gruppeArt) {
    this.gruppeArt = gruppeArt;
  }

  public String getFarbe() {
    return farbe;
  }

  public void setFarbe(String farbe) {
    this.farbe = farbe;
  }

  public String getFarbeExtern() {
    return farbeExtern;
  }

  public void setFarbeExtern(String farbeExtern) {
    this.farbeExtern = farbeExtern;
  }

  public boolean isInPraesentation() {
    return inPraesentation;
  }

  public void setInPraesentation(boolean inPraesentation) {
    this.inPraesentation = inPraesentation;
  }

  public String getCustomData() {
    return customData;
  }

  public void setCustomData(String customData) {
    this.customData = customData;
  }

  public GruppeReferenz getGruppeReferenz() {
    return gruppeReferenz;
  }

  public void setGruppeReferenz(GruppeReferenz gruppeReferenz) {
    this.gruppeReferenz = gruppeReferenz;
  }

  public Long getRelativePosition() {
    return relativePosition;
  }

  public void setRelativePosition(Long relativePosition) {
    this.relativePosition = relativePosition;
  }

  public Long getVorgegebenePosition() {
    return vorgegebenePosition;
  }

  public void setVorgegebenePosition(Long vorgegebenePosition) {
    this.vorgegebenePosition = vorgegebenePosition;
  }

  public Bild getLogo() {
    return logo;
  }

  public void setLogo(Bild logo) {
    this.logo = logo;
  }

  public String getZusatzbezeichnung() {
    return zusatzbezeichnung;
  }

  public void setZusatzbezeichnung(String zusatzbezeichnung) {
    this.zusatzbezeichnung = zusatzbezeichnung;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof Gruppe)) return false;

    Gruppe gruppe = (Gruppe) o;

    if (!gruppeReferenz.equals(gruppe.gruppeReferenz)) return false;

    return true;
  }

  @Override
  public int hashCode() {
    return gruppeReferenz.hashCode();
  }
}
