package kornell.gui.client.presentation.admin.courseclass.courseclasses;
import java.util.logging.Logger;
import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.ui.Widget;
import kornell.api.client.Callback;
import kornell.api.client.KornellSession;
import kornell.core.entity.RoleCategory;
import kornell.core.entity.RoleType;
import kornell.core.to.CourseClassTO;
import kornell.core.to.CourseClassesTO;
import kornell.core.to.TOFactory;
import kornell.gui.client.ViewFactory;
import kornell.gui.client.util.forms.FormHelper;
import kornell.gui.client.util.view.LoadingPopup;
public class AdminCourseClassesPresenter implements AdminCourseClassesView.Presenter {
Logger logger = Logger.getLogger(AdminCourseClassesPresenter.class.getName());
private AdminCourseClassesView view;
FormHelper formHelper;
private KornellSession session;
private PlaceController placeController;
private Place defaultPlace;
TOFactory toFactory;
private ViewFactory viewFactory;
private CourseClassesTO courseClassesTO;
private String pageSize = "20";
private String pageNumber = "1";
private String searchTerm = "";
public AdminCourseClassesPresenter(KornellSession session,
PlaceController placeController, Place defaultPlace,
TOFactory toFactory, ViewFactory viewFactory) {
this.session = session;
this.placeController = placeController;
this.defaultPlace = defaultPlace;
this.toFactory = toFactory;
this.viewFactory = viewFactory;
formHelper = new FormHelper();
init();
}
private void init() {
if (RoleCategory.hasRole(session.getCurrentUser().getRoles(), RoleType.courseClassAdmin)
|| RoleCategory.hasRole(session.getCurrentUser().getRoles(), RoleType.observer)
|| RoleCategory.hasRole(session.getCurrentUser().getRoles(), RoleType.tutor)
|| session.isInstitutionAdmin()) {
view = getView();
view.setPresenter(this);
String selectedCourseClass = "";
updateCourseClass(selectedCourseClass);
} else {
logger.warning("Hey, only admins are allowed to see this! "
+ this.getClass().getName());
placeController.goTo(defaultPlace);
}
}
@Override
public void updateCourseClass(final String courseClassUUID) {
LoadingPopup.show();
view.setCourseClasses(null, 0, 0);
session.courseClasses().getAdministratedCourseClassesTOPaged(pageSize, pageNumber, searchTerm,
new Callback<CourseClassesTO>() {
@Override
public void ok(CourseClassesTO to) {
courseClassesTO = to;
view.setCourseClasses(courseClassesTO.getCourseClasses(), to.getCount(), to.getSearchCount());
LoadingPopup.hide();
if(courseClassesTO.getCourseClasses().size() == 0){
} else {
for (CourseClassTO courseClassTO : courseClassesTO.getCourseClasses()) {
if (courseClassUUID == null || courseClassTO.getCourseClass().getUUID().equals(courseClassUUID)) {
return;
}
}
}
}
});
}
@Override
public Widget asWidget() {
return view.asWidget();
}
private AdminCourseClassesView getView() {
return viewFactory.getAdminCourseClassesView();
}
@Override
public String getPageSize() {
return pageSize;
}
@Override
public void setPageSize(String pageSize) {
this.pageSize = pageSize;
}
@Override
public String getPageNumber() {
return pageNumber;
}
@Override
public void setPageNumber(String pageNumber) {
this.pageNumber = pageNumber;
}
@Override
public String getSearchTerm() {
return searchTerm;
}
@Override
public void setSearchTerm(String searchTerm) {
this.searchTerm = searchTerm;
}
@Override
public void updateData() {
updateCourseClass("");
}
}