/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.dlect.controller.helper.subject;
import org.dlect.controller.MainController;
import org.dlect.controller.helper.Initilisable;
import org.dlect.events.Event;
import org.dlect.events.EventListener;
import org.dlect.model.Database;
import org.dlect.model.Semester;
import org.dlect.model.Subject;
import org.dlect.model.Subject.SubjectEventID;
/**
*
* @author lee
*/
public class SubjectDisplaySettingHandler implements EventListener, Initilisable {
private final MainController mc;
private SubjectDisplaySettingHelper helper;
public SubjectDisplaySettingHandler(MainController mc) {
this.mc = mc;
mc.addListener(this, Database.class, Subject.class);
}
@Override
public void init() {
helper = new SubjectDisplaySettingHelper(mc.getDatabaseHandler().getDatabase());
}
public boolean isSemesterDisplayed(Semester s) {
if (s.getSubjects().isEmpty()) {
return false;
}
for (Subject sub : s.getSubjects()) {
if (!isSubjectDisplayed(sub)) {
return false;
}
}
return true;
}
public void setSemesterDisplayed(Semester s, boolean b) {
for (Subject sub : s.getSubjects()) {
setSubjectDisplayed(sub, b);
}
}
public boolean isSubjectDisplayed(Subject s) {
return helper.isSubjectDisplayed(s);
}
public void setSubjectDisplayed(Subject s, boolean b) {
helper.setSubjectDisplayed(s, b);
}
@Override
public void processEvent(Event e) {
if (helper == null) {
return;
}
if (e.getEventID().equals(SubjectEventID.ID)) {
String before = (String) e.getBefore();
String after = (String) e.getAfter();
if (before == null) {
// Add so ignore.
} else if (after == null) {
// remove so remove the key from the map.
mc.getDatabaseHandler().removeSetting(helper.getKeyFor(before));
} else {
// Re-name.
String oldValue = mc.getDatabaseHandler().getSetting(helper.getKeyFor(before));
mc.getDatabaseHandler().removeSetting(helper.getKeyFor(before));
mc.getDatabaseHandler().addSetting(helper.getKeyFor(after), oldValue);
}
}
}
}