package kornell.gui.client.sequence;
import java.util.List;
import java.util.logging.Logger;
import com.google.web.bindery.event.shared.EventBus;
import kornell.api.client.KornellSession;
import kornell.core.lom.Actom;
import kornell.core.util.StringUtils;
import kornell.gui.client.event.ActomEnteredEvent;
public abstract class SimpleSequencer implements Sequencer {
static final Logger logger = Logger.getLogger(SimpleSequencer.class.getName());
protected KornellSession session;
protected EventBus bus;
private String enrollmentUUID;
protected Actom currentActom;
protected List<Actom> actoms;
protected int currentIndex;
public SimpleSequencer(EventBus bus, KornellSession session) {
this.session = session;
this.bus = bus;
bus.addHandler(NavigationRequest.TYPE, this);
}
protected void dropBreadcrumb() {
session.setItem(getBreadcrumbKey(), currentKey());
String key = "";
if (currentActom != null) {
key = currentActom.getKey();
currentActom.setVisited(true);
}
if (StringUtils.isNone(key))
logger.warning("Could not drop breadcrumb for empty key");
bus.fireEvent(new ActomEnteredEvent(enrollmentUUID, key));
fireProgressEvent();
}
protected String getBreadcrumbKey() {
return "sequencer." + enrollmentUUID+ ".CURRENT_KEY";
}
protected String currentKey() {
return currentActom != null ? currentActom.getKey() : "";
}
protected void setEnrollmentUUID(String enrollmentUUID){
this.enrollmentUUID = enrollmentUUID;
}
protected int lookupCurrentIndex(String currentKey) {
int currentIndex = 0;
if (currentKey != null && !currentKey.isEmpty()) {
for (int i = 0; i < actoms.size(); i++) {
Actom actom = actoms.get(i);
if (currentKey.equals(actom.getKey())) {
return i;
}
}
}
return currentIndex;
}
}