/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-services/src/java/org/sakaiproject/tool/assessment/shared/impl/assessment/PublishedAssessmentServiceImpl.java $
* $Id: PublishedAssessmentServiceImpl.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $
***********************************************************************************
*
* Copyright (c) 2005, 2006, 2007, 2008 The Sakai Foundation
*
* Licensed under the Educational Community License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**********************************************************************************/
package org.sakaiproject.tool.assessment.shared.impl.assessment;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentIfc;
import org.sakaiproject.tool.assessment.data.ifc.assessment.ItemDataIfc;
import org.sakaiproject.tool.assessment.data.ifc.assessment.ItemMetaDataIfc;
import org.sakaiproject.tool.assessment.data.ifc.assessment.ItemTextIfc;
import org.sakaiproject.tool.assessment.data.ifc.assessment.PublishedAssessmentIfc;
import org.sakaiproject.tool.assessment.facade.AssessmentFacade;
import org.sakaiproject.tool.assessment.facade.ItemFacade;
import org.sakaiproject.tool.assessment.facade.PublishedAssessmentFacade;
import org.sakaiproject.tool.assessment.services.ItemService;
import org.sakaiproject.tool.assessment.services.assessment.AssessmentService;
import org.sakaiproject.tool.assessment.services.assessment.PublishedAssessmentService;
import org.sakaiproject.tool.assessment.services.assessment.AssessmentServiceException;
import org.sakaiproject.tool.assessment.shared.api.assessment.PublishedAssessmentServiceAPI;
// Note on takability:
// * rachelgollub: So takeable is that you have *not* reached the number of
// * submissions and you're either before the due date or (you're after the due
// * date, you haven't submitted yet, and late handling is enabled).
// * - quoted from IM on 1/31/05
// * Marc said some of the assessment do not have any due date, e.g. survey
// *
/**
* PublishedAssessmentServiceImpl implements a shared interface to get/set
* published assessment information.
* @author Ed Smiley <esmiley@stanford.edu>
*/
public class PublishedAssessmentServiceImpl implements PublishedAssessmentServiceAPI
{
private static Log log = LogFactory.getLog(PublishedAssessmentServiceImpl.class);
/**
* Get list of all active published assessments with basic info populated.
* @param agentId the agent takign the assessments
* @param orderBy sort order field.
* @return the list.
*/
public List getBasicInfoOfAllPublishedAssessments(String agentId, String orderBy,
boolean ascending, String siteId)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getBasicInfoOfAllPublishedAssessments(
agentId, orderBy, ascending, siteId);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get list of all active published assessments.
* @param orderBy sort order field.
* @return the list.
*/
public List getAllActivePublishedAssessments(String orderBy)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getAllActivePublishedAssessments(orderBy);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get list of all active published assessments.
* @param pageSize number in a page
* @param pageNumber number of the page
* @param orderBy sort order field.
* @return the list.
*/
public List getAllActivePublishedAssessments(int pageSize, int pageNumber, String orderBy)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getAllActivePublishedAssessments(pageSize, pageNumber, orderBy);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get list of all inactive published assessments.
* @param orderBy sort order field.
* @return the list.
*/
public List getAllInActivePublishedAssessments(String orderBy)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getAllInActivePublishedAssessments(orderBy);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get list of all inactive published assessments.
* @param pageSize number in a page
* @param pageNumber number of the page
* @param orderBy sort order field.
* @return the list.
*/
public List getAllInActivePublishedAssessments(int pageSize, int pageNumber, String orderBy)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getAllInActivePublishedAssessments(pageSize, pageNumber, orderBy);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get list of all inactive published assessments.
* @param orderBy sort order field.
* @param status the status code
* @return the list.
*/
public List getAllPublishedAssessments(String orderBy, Integer status)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getAllPublishedAssessments(orderBy, status);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get list of all inactive published assessments.
* @param pageSize number in a page
* @param pageNumber number of the page
* @param orderBy sort order field.
* @param status the status
* @return the list.
*/
public List getAllPublishedAssessments(int pageSize, int pageNumber, String orderBy, Integer status)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getAllPublishedAssessments(pageSize, pageNumber,
orderBy, status);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get published assessment.
* @param assessmentId the published assessment id string
* @return the published assessment.
*/
public PublishedAssessmentIfc getPublishedAssessment(String assessmentId)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getPublishedAssessment(assessmentId);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get the published id form the assessment id.
* @param assessmentId the assessment id string.
* @return the published assessment id.
*/
public Long getPublishedAssessmentId(String assessmentId)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getPublishedAssessmentId(assessmentId);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Publish an assessment.
* @param assessment
* @return
*/
public PublishedAssessmentIfc publishAssessment(AssessmentIfc assessment)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
AssessmentService assessmentService = new AssessmentService();
AssessmentFacade facade = assessmentService.getAssessment(
assessment.getAssessmentId().toString());
return service.publishAssessment(facade);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Preview a published assessment.
* @param assessment the assessment to preview.
* @return the published assessment "view" into the assessment.
*/
public PublishedAssessmentIfc publishPreviewAssessment(AssessmentIfc assessment, String protocol)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
AssessmentService assessmentService = new AssessmentService();
AssessmentFacade facade = assessmentService.getAssessment(
assessment.getAssessmentId().toString());
return service.publishPreviewAssessment(facade);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Save a published assessment.
* @param assessment the published assessment.
*/
public void saveAssessment(PublishedAssessmentIfc assessment)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
PublishedAssessmentFacade facade = service.getPublishedAssessment(
assessment.getAssessmentId().toString());
service.saveAssessment(facade);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Remove the published assessment.
* @param assessmentId the published assessment id string.
*/
public void removeAssessment(String assessmentId)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
service.removeAssessment(assessmentId);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get list of all active published assessments with only basic info populated.
* @param ascending true if ascending sort.
* @param orderBy sort order field.
* @return the list.
*/
public List getBasicInfoOfAllActivePublishedAssessments(String orderBy, boolean ascending)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getBasicInfoOfAllActivePublishedAssessments(orderBy, ascending);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get list of all inactive published assessments with only basic info populated.
* @param ascending true if ascending sort.
* @param orderBy sort order field.
* @return the list.
*/
public List getBasicInfoOfAllInActivePublishedAssessments(String orderBy, boolean ascending)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getBasicInfoOfAllInActivePublishedAssessments(orderBy, ascending);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get setttings of published assessment.
* @param assessmentId the published assessment id string
* @return the published assessment
*/
public PublishedAssessmentIfc getSettingsOfPublishedAssessment(String assessmentId)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getSettingsOfPublishedAssessment(assessmentId);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Load an item that has been published
* @param itemId
* @return
*/
public ItemDataIfc loadPublishedItem(String itemId)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.loadPublishedItem(itemId);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Load published assessment item text.
* @param itemTextId the id string of the itemtext.
* @return the item.
*/
public ItemTextIfc loadPublishedItemText(String itemTextId)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.loadPublishedItemText(itemTextId);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get list of all last submitterd published assessments with only basic info populated.
* @param agentId the agent taking the assessments.
* @param ascending true if ascending sort.
* @param orderBy sort order field.
* @return the list.
*/
public List getBasicInfoOfLastSubmittedAssessments(String agentId, String orderBy, boolean ascending)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getBasicInfoOfLastSubmittedAssessments(agentId, orderBy, ascending);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get the number of total submissions per assignment.
* @param agentId the agent making submissions
* @return Map by(Long publishedAssessmentId->Integer totalSubmittedForGrade)
*/
public Map getTotalSubmissionPerAssessment(String agentId)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getTotalSubmissionPerAssessment(agentId);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get the number of total submissions for one assignment.
* @param agentId the agent making submissions
* @param publishedAssessmentId the published assessment id string
* @return the total
*/
public Integer getTotalSubmission(String agentId, String publishedAssessmentId)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getTotalSubmission(agentId, publishedAssessmentId);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get a published assessment using an alias
* @param alias the alias
* @return the published assessment
*/
public PublishedAssessmentIfc getPublishedAssessmentIdByAlias(String alias)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getPublishedAssessmentIdByAlias(alias);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* @todo check persistence of this method!
* @param meta
*/
public void saveOrUpdateMetaData(ItemMetaDataIfc meta)
{
try
{
// because our service implementation cannot cast to
// the PublishedAssessmentService.saveOrUpdateMetaData()
// we get the item, update the metadata, and persist
ItemService itemService = new ItemService();
ItemDataIfc itemIfc = meta.getItem();
itemIfc.getItemMetaDataSet().add(meta);
ItemFacade facade = itemService.getItem(itemIfc.getItemIdString());
itemService.saveItem(facade);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get a map of the feedback
* @return the map
*/
public Map getFeedbackHash()
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getFeedbackHash();
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get list of all active published assessmentsreleased to authenticated users.
* @return the list.
*/
public Map getAllAssessmentsReleasedToAuthenticatedUsers()
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getAllAssessmentsReleasedToAuthenticatedUsers();
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
/**
* Get the owner.
* @param publishedAssessmentId
* @return the owner string.
*/
public String getPublishedAssessmentOwner(Long publishedAssessmentId)
{
try
{
PublishedAssessmentService service = new PublishedAssessmentService();
return service.getPublishedAssessmentOwner(publishedAssessmentId);
}
catch (Exception ex)
{
throw new AssessmentServiceException(ex);
}
}
}