package kornell.gui.client.presentation.admin.audit;
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.to.EntityChangedEventsTO;
import kornell.core.to.TOFactory;
import kornell.core.util.StringUtils;
import kornell.gui.client.ViewFactory;
import kornell.gui.client.util.forms.FormHelper;
import kornell.gui.client.util.view.LoadingPopup;
public class AdminAuditPresenter implements AdminAuditView.Presenter {
Logger logger = Logger.getLogger(AdminAuditPresenter.class.getName());
private AdminAuditView view;
FormHelper formHelper;
private KornellSession session;
private PlaceController placeController;
private Place defaultPlace;
TOFactory toFactory;
private ViewFactory viewFactory;
private EntityChangedEventsTO entityChangedEventsTO;
private String pageSize = "20";
private String pageNumber = "1";
private String searchTerm = "";
public AdminAuditPresenter(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 (session.isPlatformAdmin()) {
view = getView();
view.setPresenter(this);
entityChangedEventsTO = view.getEntityChangedEventsTO();
if(entityChangedEventsTO == null){
view.setEntitiesChangedEvents(null);
} else {
view.setEntitiesChangedEvents(entityChangedEventsTO);
}
} else {
logger.warning("Hey, only admins are allowed to see this! "
+ this.getClass().getName());
placeController.goTo(defaultPlace);
}
}
private void getEntitiesChanged() {
if(StringUtils.isNone(searchTerm)){
view.setEntitiesChangedEvents(null);
} else {
LoadingPopup.show();
session.events().getEntityChangedEvents(searchTerm, pageSize, pageNumber, new Callback<EntityChangedEventsTO>() {
@Override
public void ok(EntityChangedEventsTO to) {
entityChangedEventsTO = to;
view.setEntitiesChangedEvents(entityChangedEventsTO);
LoadingPopup.hide();
}
});
}
}
@Override
public Widget asWidget() {
return view.asWidget();
}
private AdminAuditView getView() {
return viewFactory.getAdminAuditView();
}
@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() {
getEntitiesChanged();
}
}