/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-services/src/java/org/sakaiproject/tool/assessment/facade/PublishedAssessmentFacadeQueriesAPI.java $ * $Id: PublishedAssessmentFacadeQueriesAPI.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $ *********************************************************************************** * * Copyright (c) 2004, 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.facade; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.TreeMap; import java.util.Collection; import org.sakaiproject.tool.assessment.data.dao.assessment.AssessmentAccessControl; import org.sakaiproject.tool.assessment.data.dao.assessment.AssessmentData; import org.sakaiproject.tool.assessment.data.dao.assessment.AssessmentFeedback; import org.sakaiproject.tool.assessment.data.dao.assessment.EvaluationModel; import org.sakaiproject.tool.assessment.data.dao.assessment.PublishedAccessControl; import org.sakaiproject.tool.assessment.data.dao.assessment.PublishedAnswer; import org.sakaiproject.tool.assessment.data.dao.assessment.PublishedAssessmentData; import org.sakaiproject.tool.assessment.data.dao.assessment.PublishedAttachmentData; import org.sakaiproject.tool.assessment.data.dao.assessment.PublishedEvaluationModel; import org.sakaiproject.tool.assessment.data.dao.assessment.PublishedFeedback; import org.sakaiproject.tool.assessment.data.dao.assessment.PublishedItemData; import org.sakaiproject.tool.assessment.data.dao.assessment.PublishedItemText; import org.sakaiproject.tool.assessment.data.dao.assessment.PublishedMetaData; import org.sakaiproject.tool.assessment.data.dao.assessment.PublishedSectionData; import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentAttachmentIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.PublishedAssessmentIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.SectionAttachmentIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.SectionDataIfc; import org.sakaiproject.tool.assessment.osid.shared.impl.IdImpl; import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentAccessControlIfc; public interface PublishedAssessmentFacadeQueriesAPI { public IdImpl getId(String id); public IdImpl getId(Long id); public IdImpl getId(long id); public IdImpl getAssessmentId(String id); public IdImpl getAssessmentId(Long id); public IdImpl getAssessmentId(long id); public IdImpl getAssessmentTemplateId(String id); public IdImpl getAssessmentTemplateId(Long id); public IdImpl getAssessmentTemplateId(long id); public PublishedAssessmentData preparePublishedAssessment(AssessmentData a); public PublishedFeedback preparePublishedFeedback(PublishedAssessmentData p, AssessmentFeedback a); public PublishedAccessControl preparePublishedAccessControl( PublishedAssessmentData p, AssessmentAccessControl a); public PublishedEvaluationModel preparePublishedEvaluationModel( PublishedAssessmentData p, EvaluationModel e); public Set preparePublishedMetaDataSet(PublishedAssessmentData p, Set metaDataSet); public Set preparePublishedSecuredIPSet(PublishedAssessmentData p, Set ipSet); public Set preparePublishedSectionSet( PublishedAssessmentData publishedAssessment, Set sectionSet, String protocol); public Set preparePublishedSectionMetaDataSet( PublishedSectionData publishedSection, Set metaDataSet); public Set preparePublishedItemSet(PublishedSectionData publishedSection, Set itemSet, String protocol); public Set preparePublishedItemTextSet(PublishedItemData publishedItem, Set itemTextSet); public Set preparePublishedItemMetaDataSet(PublishedItemData publishedItem, Set itemMetaDataSet); public Set preparePublishedItemFeedbackSet(PublishedItemData publishedItem, Set itemFeedbackSet); public Set preparePublishedAnswerSet(PublishedItemText publishedItemText, Set answerSet); public Set preparePublishedAnswerFeedbackSet(PublishedAnswer publishedAnswer, Set answerFeedbackSet); public PublishedAssessmentFacade getPublishedAssessment(Long assessmentId); public PublishedAssessmentFacade getPublishedAssessment(Long assessmentId, boolean withGroupsInfo); public Long getPublishedAssessmentId(Long assessmentId); public PublishedAssessmentFacade publishAssessment(AssessmentFacade assessment) throws Exception; public PublishedAssessmentFacade publishPreviewAssessment(AssessmentFacade assessment); public void createAuthorization(PublishedAssessmentData p); public AssessmentData loadAssessment(Long assessmentId); /** * Retrieve a published Assessment * @param assessmentId the id of the assessment * @return the Assessment object or null if none found */ public PublishedAssessmentData loadPublishedAssessment(Long assessmentId); public ArrayList getAllTakeableAssessments(String orderBy, boolean ascending, Integer status); /** public ArrayList getAllPublishedAssessmentId() { ArrayList list = getBasicInfoOfAllActivePublishedAssessments("title", true); ArrayList publishedIds = new ArrayList(); for (int i = 0; i < list.size(); i++) { PublishedAssessmentFacade f = (PublishedAssessmentFacade) list.get(i); Long publishedId = f.getPublishedAssessmentId(); publishedIds.add(publishedId); } return publishedIds; } */ public Integer getNumberOfSubmissions(String publishedAssessmentId, String agentId); public List getNumberOfSubmissionsOfAllAssessmentsByAgent(String agentId); /** public ArrayList getAllReviewableAssessments(String orderBy, boolean ascending) { ArrayList publishedIds = getAllPublishedAssessmentId(); ArrayList newlist = new ArrayList(); for (int i = 0; i < publishedIds.size(); i++) { String publishedId = ( (Long) publishedIds.get(i)).toString(); String query = "from AssessmentGradingData a where a.publishedAssessment.publishedAssessmentId=? order by agentId ASC," + orderBy; if (ascending) { query += " asc,"; } else { query += " desc,"; } query += "submittedDate DESC"; List list = getHibernateTemplate().find(query, new Long(publishedId), Hibernate.LONG); if (!list.isEmpty()) { Iterator items = list.iterator(); String agentid = null; AssessmentGradingData data = (AssessmentGradingData) items.next(); agentid = data.getAgentId(); newlist.add(data); while (items.hasNext()) { while (items.hasNext()) { data = (AssessmentGradingData) items.next(); if (!data.getAgentId().equals(agentid)) { agentid = data.getAgentId(); newlist.add(data); break; } } } } } ArrayList assessmentList = new ArrayList(); for (int i = 0; i < newlist.size(); i++) { AssessmentGradingData a = (AssessmentGradingData) newlist.get(i); AssessmentGradingFacade f = new AssessmentGradingFacade(a); assessmentList.add(f); } return assessmentList; } */ public ArrayList getAllPublishedAssessments(String sortString); public ArrayList getAllPublishedAssessments(String sortString, Integer status); public ArrayList getAllPublishedAssessments(int pageSize, int pageNumber, String sortString, Integer status); public void removeAssessment(Long assessmentId, String action); public void deleteAllSecuredIP(PublishedAssessmentIfc assessment); public void saveOrUpdate(PublishedAssessmentIfc assessment) throws Exception; public void delete(PublishedAssessmentIfc assessment); public ArrayList getBasicInfoOfAllActivePublishedAssessments( String sortString, String siteAgentId, boolean ascending); /** * According to Marc inactive means either the dueDate or the retractDate has * passed for 1.5 release (IM on 12/17/04) * @param sortString * @return */ public ArrayList getBasicInfoOfAllInActivePublishedAssessments( String sortString, String siteAgentId, boolean ascending); /** return a set of PublishedSectionData * IMPORTANT: * 1. we have declared SectionData as lazy loading, so we need to * initialize it using getHibernateTemplate().initialize(java.lang.Object). * Unfortunately, we are using Spring 1.0.2 which does not support this * Hibernate feature. I tried upgrading Spring to 1.1.3. Then it failed * to load all the OR maps correctly. So for now, I am just going to * initialize it myself. I will take a look at it again next year. * - daisyf (12/13/04) */ public HashSet getSectionSetForAssessment(PublishedAssessmentIfc assessment); // IMPORTANT: // 1. we do not want any Section info, so set loadSection to false // 2. We have also declared SectionData as lazy loading. If loadSection is set // to true, we will see null pointer public PublishedAssessmentFacade getSettingsOfPublishedAssessment( Long assessmentId); public PublishedItemData loadPublishedItem(Long itemId); public PublishedItemText loadPublishedItemText(Long itemTextId); // added by daisy - please check the logic - I based this on the getBasicInfoOfAllActiveAssessment public ArrayList getBasicInfoOfAllPublishedAssessments(String orderBy, boolean ascending, String siteId); public ArrayList getBasicInfoOfAllPublishedAssessments2(String orderBy, boolean ascending, String siteId); /** * return an array list of the last AssessmentGradingFacade per assessment that * a user has submitted for grade. * @param agentId * @param orderBy * @param ascending * @return */ public ArrayList getBasicInfoOfLastSubmittedAssessments(String agentId, String orderBy, boolean ascending); /** total submitted for grade * returns HashMap (Long publishedAssessmentId, Integer totalSubmittedForGrade); */ public HashMap getTotalSubmissionPerAssessment(String agentId); public HashMap getTotalSubmissionPerAssessment(String agentId, String siteId); public Integer getTotalSubmission(String agentId, Long publishedAssessmentId); public PublishedAssessmentFacade getPublishedAssessmentIdByAlias(String alias); public PublishedAssessmentFacade getPublishedAssessmentIdByMetaLabel( String label, String entry); public void saveOrUpdateMetaData(PublishedMetaData meta); public HashMap getFeedbackHash(); /** this return a HashMap containing * (Long publishedAssessmentId, PublishedAssessmentFacade publishedAssessment) * Note that the publishedAssessment is a partial object used for display only. * do not use it for persisting. It only contains title, releaseTo, startDate, dueDate * & retractDate */ public HashMap getAllAssessmentsReleasedToAuthenticatedUsers(); public String getPublishedAssessmentOwner(String publishedAssessmentId); public boolean publishedAssessmentTitleIsUnique(Long assessmentBaseId, String title); public boolean hasRandomPart(Long publishedAssessmentId); public List getContainRandomPartAssessmentIds(Collection assessmentIds); public PublishedItemData getFirstPublishedItem(Long publishedAssessmentId); public List getPublishedItemIds(Long publishedAssessmentId); public HashSet getPublishedItemSet(Long publishedAssessmentId, Long sectionId); public Long getItemType(Long publishedItemId); public HashSet getSectionSetForAssessment(Long publishedAssessmentId); public boolean isRandomDrawPart(Long publishedAssessmentId, Long sectionId); public PublishedAssessmentData getBasicInfoOfPublishedAssessment(Long publishedId); public String getPublishedAssessmentSiteId(String publishedAssessmentId); public Integer getPublishedItemCount(Long publishedAssessmentId); /** * added by gopalrc - Nov 2007 * @param publishedAssessmentId * @return */ public Integer getPublishedSectionCount(final Long publishedAssessmentId); public PublishedAttachmentData getPublishedAttachmentData(Long attachmentId); public void updateAssessmentLastModifiedInfo(PublishedAssessmentFacade publishedAssessmentFacade); public void saveOrUpdateSection(SectionFacade section); public void removeItemAttachment(Long itemAttachmentId); public PublishedSectionFacade addSection(Long publishedAssessmentId); public PublishedSectionFacade getSection(Long sectionId); public AssessmentAccessControlIfc loadPublishedAccessControl(Long publishedAssessmentId); public void saveOrUpdatePublishedAccessControl(AssessmentAccessControlIfc publishedAccessControl); /** * added by gopalrc - Jan 2008 * @param publishedAssessmentId * @return */ public List getReleaseToGroupIdsForPublishedAssessment(final String publishedAssessmentId); public Integer getPublishedAssessmentStatus(Long publishedAssessmentId); public AssessmentAttachmentIfc createAssessmentAttachment( AssessmentIfc assessment, String resourceId, String filename, String protocol); public void removeAssessmentAttachment(Long assessmentAttachmentId); public SectionAttachmentIfc createSectionAttachment(SectionDataIfc section, String resourceId, String filename, String protocol); public void removeSectionAttachment(Long sectionAttachmentId); public void saveOrUpdateAttachments(List list); public TreeMap getGroupsForSite(); public PublishedAssessmentFacade getPublishedAssessmentInfoForRemove(Long publishedAssessmentId); public HashMap getToGradebookPublishedAssessmentSiteIdMap(); public ArrayList getBasicInfoOfLastOrHighestOrAverageSubmittedAssessmentsByScoringOption( final String agentId, final String siteId, boolean allAssessments); }