package control;
import javafx.application.*;
import model.persistance.*;
import org.apache.log4j.*;
import plugin.IliasPlugin.LoginStatus;
import plugin.*;
import view.*;
public class IliasStarter {
private String username = null;
private String password = null;
private Logger LOGGER = Logger.getLogger(getClass());
private Dashboard dashboard;
public IliasStarter(Dashboard dashboard) {
this.dashboard = dashboard;
}
public IliasStarter(Dashboard dashboard, String username, String password) {
this.dashboard = dashboard;
this.username = username;
this.password = password;
}
public boolean login() {
KITIlias kitIlias = new KITIlias();
IliasManager.getInstance().setIliasPlugin(kitIlias);
LoginStatus loginStatusMessage = IliasManager.getInstance().login(username, password);
if (loginStatusMessage.equals(LoginStatus.WRONG_PASSWORD)) {
Platform.runLater(new Runnable() {
@Override
public void run() {
dashboard.showLoader(false);
dashboard.setSigInTransparent(true);
dashboard.fadeInLogin();
dashboard.setStatusText("Falsches Passwort!", true);
}
});
return false;
}
if (loginStatusMessage.equals(LoginStatus.CONNECTION_FAILED)) {
LOGGER.warn("Connection failed!");
dashboard.setStatusText("Verbindung fehlgeschlagen!", true);
dashboard.showLoader(false);
return false;
}
Platform.runLater(new Runnable() {
@Override
public void run() {
dashboard.setTitle("Ilias - Angemeldet als " + username);
dashboard.setStatusText("Angemeldet als: " + username, false);
}
});
Settings.getInstance().getFlags().setLogin(true);
Platform.runLater(new Runnable() {
@Override
public void run() {
dashboard.showLoader(false);
dashboard.setSignInColor();
if (!Settings.getInstance().getFlags().autoUpdate()) {
dashboard
.setStatusText(
"Aktualisiere über den Button in der Menüleiste die Kurse auf deinem Schreibtisch!",
false);
}
dashboard.setSigInTransparent(true);
}
});
return true;
}
public void loadIliasTree() {
final IliasScraper Scraper = new IliasScraper(dashboard);
Scraper.run(IliasManager.getInstance().getDashboardHTML());
while (Scraper.threadCount.get() > 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
LOGGER.warn(e.getStackTrace());
}
}
Flags flags = Settings.getInstance().getFlags();
if (!(flags.updateCanceled())) {
IliasTreeProvider.setTree(Scraper.getIliasTree());
flags.setUpdateCanceled(false);
} else {
flags.setUpdateCanceled(false);
dashboard.setStatusText("Aktualisierung abgebrochen.", false);
return;
}
if (flags.isLocalIliasPathStored()) {
Platform.runLater(new Runnable() {
@Override
public void run() {
dashboard.iliasTreeReloaded(true);
dashboard.showLoader(false);
}
});
return;
}
Platform.runLater(new Runnable() {
@Override
public void run() {
dashboard.showSettingsPrompt();
}
});
dashboard.showLoader(false);
}
}