package de.ivu.elect.business.system.entity;

import static java.util.Arrays.asList;

public class HibernateQueryStatistik {

  private final String name;

  public HibernateQueryStatistik(String name) {
    this.name = name;
  }

  public boolean isValid() {
    // Hibernate zeigt manchmal seltsame Einträge an
    return getZeitInMsMin() < Long.MAX_VALUE && getZeitInMsMax() < Long.MAX_VALUE && getZeitInMsDurchschnitt() < Long.MAX_VALUE;
  }

  public String getName() {
    return name;
  }

  public long getAnzahlAusfuehrungen() {
    return 0;
  }

  public long getAnzahlSpalten() {
    return 0;
  }

  public long getZeitInMsDurchschnitt() {
    return 0;
  }

  public long getZeitInMsMin() {
    return 0;
  }

  public long getZeitInMsMax() {
    return 0;
  }

  public long getCacheMissCount() {
    return 0;
  }

  public long getCacheHitCount() {
    return 0;
  }

  public long getCachePutCount() {
    return 0;
  }

  @Override
  public String toString() {
    return "|" + String
            .join("|", asList(getName(), Long.toString(getAnzahlAusfuehrungen()), Long.toString(getAnzahlSpalten()), Long.toString(getZeitInMsDurchschnitt()),
                    Long.toString(getZeitInMsMin()), Long.toString(getZeitInMsMax()), Long.toString(getCacheMissCount()), Long.toString(getCacheHitCount()),
                    Long.toString(getCachePutCount()))) + "|";
  }

  public static String toStringHeader() {
    return "||" + String.join("||",
            asList("Name", "AnzahlAusfuehrungen", "AnzahlSpalten", "ZeitInMsDurchschnitt", "ZeitInMsMin", "ZeitInMsMax", "CacheMissCount", "CacheHitCount",
                    "CachePutCount")) + "||";
  }
}
