package org.sakaiproject.tool.gradebook.ui.helpers.entity;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.sakaiproject.entitybroker.IdEntityReference;
import org.sakaiproject.entitybroker.entityprovider.CoreEntityProvider;
import org.sakaiproject.entitybroker.entityprovider.EntityProvider;
import org.sakaiproject.entitybroker.entityprovider.EntityProviderManager;
import org.sakaiproject.tool.gradebook.ui.helpers.producers.GradebookItemProducer;
import org.sakaiproject.tool.gradebook.ui.helpers.producers.AuthorizationFailedProducer;
import org.sakaiproject.tool.gradebook.ui.helpers.params.GradebookItemViewParams;
import org.sakaiproject.service.gradebook.shared.GradebookService;
import uk.ac.cam.caret.sakai.rsf.entitybroker.EntityViewParamsInferrer;
import uk.org.ponder.rsf.viewstate.SimpleViewParameters;
import uk.org.ponder.rsf.viewstate.ViewParameters;
/*
* This is a provider for looking up and adding/editing Gradebook Items.
*/
public class GradebookEntityProvider implements EntityProvider, CoreEntityProvider,
EntityViewParamsInferrer {
private Log log = LogFactory.getLog(GradebookEntityProvider.class);
public final static String ENTITY_PREFIX = "gradebook";
private EntityProviderManager entityProviderManager;
private GradebookService gradebookService;
public void init() {
log.info("init()");
entityProviderManager.registerEntityProvider(this);
}
public void destroy() {
log.info("destroy()");
entityProviderManager.unregisterEntityProvider(this);
}
public String getEntityPrefix() {
return ENTITY_PREFIX;
}
public boolean entityExists(String id) {
return true;
}
public String[] getHandledPrefixes() {
return new String[] {ENTITY_PREFIX};
}
public ViewParameters inferDefaultViewParameters(String reference) {
IdEntityReference ep = new IdEntityReference(reference);
String contextId = ep.id;
if(gradebookService.currentUserHasEditPerm(contextId)){
Long gradebookEntryId = null;
return new GradebookItemViewParams(GradebookItemProducer.VIEW_ID, contextId, gradebookEntryId);
}else{
return new SimpleViewParameters(AuthorizationFailedProducer.VIEW_ID);
}
}
public void setEntityProviderManager(EntityProviderManager entityProviderManager) {
this.entityProviderManager = entityProviderManager;
}
public void setGradebookService(GradebookService gradebookService) {
this.gradebookService = gradebookService;
}
}