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

import java.io.Serializable;
import java.util.Date;

public class PraesentationUploadStatusEntry implements Serializable {

  private static final long serialVersionUID = 1L;

  public static final PraesentationUploadStatusEntry EMPTY = new PraesentationUploadStatusEntry(null, null, false, false, 0, 0, 0);

  private final Date start;

  private final Date end;

  private final boolean error;

  private final boolean asynchron;

  private final long anzahlDateien;

  private final long bytes;

  private final long anzahlDateienSkipped;

  public PraesentationUploadStatusEntry(Date start, Date end, boolean error, boolean asynchron, long anzahlDateien, long bytes, long anzahlDateienSkipped) {
    this.start = start;
    this.end = end;
    this.error = error;
    this.asynchron = asynchron;
    this.anzahlDateien = anzahlDateien;
    this.bytes = bytes;
    this.anzahlDateienSkipped = anzahlDateienSkipped;
  }

  public Date getStart() {
    return start;
  }

  public Date getEnd() {
    return end;
  }

  public boolean isError() {
    return error;
  }

  public boolean isAsynchron() {
    return asynchron;
  }

  public long getAnzahlDateien() {
    return anzahlDateien;
  }

  public long getAnzahlDateienSkipped() {
    return anzahlDateienSkipped;
  }

  public long getBytes() {
    return bytes;
  }

  public long getDauerInMs() {
    if (start == null || end == null) {
      return 0;
    }
    return end.getTime() - start.getTime();
  }

  @Override
  public String toString() {
    return "PraesentationUploadStatusEntry{" +
        "start=" + start +
        ", end=" + end +
        ", error=" + error +
        ", asynchron=" + asynchron +
        ", anzahlDateien=" + anzahlDateien +
        ", anzahlDateienSkipped=" + anzahlDateienSkipped +
        ", bytes=" + bytes +
        '}';
  }
}
