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

import org.apache.commons.math3.ml.distance.CanberraDistance;
import org.apache.commons.math3.ml.distance.DistanceMeasure;
import org.apache.commons.math3.ml.distance.EarthMoversDistance;
import org.apache.commons.math3.ml.distance.EuclideanDistance;
import org.apache.commons.math3.ml.distance.ManhattanDistance;

public enum DistanceMeasureArt {
  EUKLIDISCHER_ABSTAND {
    @Override
    public DistanceMeasure getDistanceMeasure() {
      return new EuclideanDistance();
    }
  },
  MANHATTAN_ABSTAND {
    @Override
    public DistanceMeasure getDistanceMeasure() {
      return new ManhattanDistance();
    }
  },
  CANBERRA_ABSTAND {
    @Override
    public DistanceMeasure getDistanceMeasure() {
      return new CanberraDistance();
    }
  },
  WASSERSTEIN_ABSTAND {
    @Override
    public DistanceMeasure getDistanceMeasure() {
      return new EarthMoversDistance();
    }
  };

  public abstract DistanceMeasure getDistanceMeasure ();
}
