package de.wwwu.awolf.presenter.algorithms; import de.wwwu.awolf.model.Line; import de.wwwu.awolf.model.communication.Data; import de.wwwu.awolf.presenter.AbstractPresenter; import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.Flow; /** * Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden. * * @Author: Armin Wolf * @Email: a_wolf28@uni-muenster.de * @Date: 28.05.2017. */ public interface Algorithm extends Callable, Flow.Publisher { /** * Startet die Berechnung des jeweiligen Algorithmus. */ @Override Line call(); void setInput(final Set lines); Algorithm.Type getType(); void setPresenter(AbstractPresenter presenter); enum Type { LMS("Least Median of Squares"), RM("Repeated Median"), TS("Theil-Sen"), NAIVE_LMS("Brute Force (LMS)"), NAIVE_RM("Brute Force (RM)"), NAIVE_TS("Brute Force (TS)"); public final String label; Type(String label) { this.label = label; } public String getLabel() { return label; } } }