Index: samigo-api/src/java/org/sakaiproject/tool/assessment/data/exception/SamigoDataAccessException.java =================================================================== --- samigo-api/src/java/org/sakaiproject/tool/assessment/data/exception/SamigoDataAccessException.java (revision 0) +++ samigo-api/src/java/org/sakaiproject/tool/assessment/data/exception/SamigoDataAccessException.java (working copy) @@ -0,0 +1,46 @@ +/********************************************************************************** + * $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentGradingFacadeQueriesAPI.java $ + * $Id: AssessmentGradingFacadeQueriesAPI.java 120911 2013-03-07 22:32:47Z ktsao@stanford.edu $ + *********************************************************************************** + * + * Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009 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.data.exception; + +/** + * An exception from a error accessing or modifying Data in storage + * This needs to extend RuntimeException so as to maintian correct Hibernate + * behaviour regarding rollbacks. + * @author dhorwitz + * @since 2.10 + */ +public class SamigoDataAccessException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = 8292080017823847011L; + + /** + * + * @param cause + */ + public SamigoDataAccessException(Throwable cause) { + super(cause); + } + + +} Index: samigo-app/src/java/org/sakaiproject/tool/assessment/bundle/AuthorMessages.properties =================================================================== --- samigo-app/src/java/org/sakaiproject/tool/assessment/bundle/AuthorMessages.properties (revision 121354) +++ samigo-app/src/java/org/sakaiproject/tool/assessment/bundle/AuthorMessages.properties (working copy) @@ -451,7 +451,9 @@ zeropoints=0 points gradebook_exception_error=Warning: A gradebook entry could not be created for this assessment. Please contact your local help desk for assistance. +saveanswer_exception_error=Grading information couldn't be saved. Please Try again, if this persists please inform the invigilator. + gradebook_service_error=Warning: Gradebook has not been deployed properly. Hence, no new assessment can be created. Please contact your local help desk for assistance. empty_part_title_error=Part title cannot be empty. Index: samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/delivery/DeliveryBean.java =================================================================== --- samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/delivery/DeliveryBean.java (revision 121354) +++ samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/delivery/DeliveryBean.java (working copy) @@ -31,7 +31,6 @@ import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Iterator; @@ -98,8 +97,6 @@ import org.sakaiproject.tool.cover.ToolManager; import org.sakaiproject.util.ResourceLoader; -import uk.org.ponder.rsf.state.support.TMLFixer; - /** * * @author casong @@ -3056,6 +3053,13 @@ this.noQuestions = noQuestions; } + /** + * + * @param isSubmitForGrade + * @param isFromTimer + * @param isViaUrlLogin + * @return + */ public String checkBeforeProceed(boolean isSubmitForGrade, boolean isFromTimer, boolean isViaUrlLogin){ // public method, who know if publishedAssessment is set, so check // to be sure @@ -3066,6 +3070,7 @@ if (this.actionMode == PREVIEW_ASSESSMENT) { return "safeToProceed"; } + GradingService service = new GradingService(); AssessmentGradingData assessmentGrading=null; Index: samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/author/RepublishAssessmentListener.java =================================================================== --- samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/author/RepublishAssessmentListener.java (revision 121354) +++ samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/author/RepublishAssessmentListener.java (working copy) @@ -19,6 +19,7 @@ import org.sakaiproject.tool.assessment.data.dao.assessment.PublishedAssessmentData; import org.sakaiproject.tool.assessment.data.dao.assessment.PublishedEvaluationModel; import org.sakaiproject.tool.assessment.data.dao.grading.AssessmentGradingData; +import org.sakaiproject.tool.assessment.data.exception.SamigoDataAccessException; import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentBaseIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.EvaluationModelIfc; import org.sakaiproject.tool.assessment.facade.AgentFacade; @@ -27,6 +28,8 @@ import org.sakaiproject.tool.assessment.integration.context.IntegrationContextFactory; import org.sakaiproject.tool.assessment.integration.helper.ifc.CalendarServiceHelper; import org.sakaiproject.tool.assessment.integration.helper.ifc.GradebookServiceHelper; +import org.sakaiproject.tool.assessment.services.FinFormatException; +import org.sakaiproject.tool.assessment.services.GradebookServiceException; import org.sakaiproject.tool.assessment.services.GradingService; import org.sakaiproject.tool.assessment.services.PersistenceService; import org.sakaiproject.tool.assessment.services.assessment.AssessmentService; @@ -69,7 +72,11 @@ AuthorBean author = (AuthorBean) ContextUtil.lookupBean("author"); // If there are submissions, need to regrade them if (author.getIsRepublishAndRegrade() && hasGradingData) { + try { regradeRepublishedAssessment(publishedAssessmentService, assessment); + } catch (SamigoDataAccessException e) { + e.printStackTrace(); + } } EventTrackingService.post(EventTrackingService.newEvent("sam.pubassessment.republish", "siteId=" + AgentFacade.getCurrentSiteId() + ", publishedAssessmentId=" + publishedAssessmentId, true)); @@ -105,7 +112,7 @@ author.setOutcome("author"); } - private void regradeRepublishedAssessment (PublishedAssessmentService pubService, PublishedAssessmentFacade publishedAssessment) { + private void regradeRepublishedAssessment (PublishedAssessmentService pubService, PublishedAssessmentFacade publishedAssessment) throws GradebookServiceException, FinFormatException, SamigoDataAccessException { HashMap publishedItemHash = pubService.preparePublishedItemHash(publishedAssessment); HashMap publishedItemTextHash = pubService.preparePublishedItemTextHash(publishedAssessment); HashMap publishedAnswerHash = pubService.preparePublishedAnswerHash(publishedAssessment); Index: samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/delivery/SubmitToGradingActionListener.java =================================================================== --- samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/delivery/SubmitToGradingActionListener.java (revision 121354) +++ samigo-app/src/java/org/sakaiproject/tool/assessment/ui/listener/delivery/SubmitToGradingActionListener.java (working copy) @@ -38,6 +38,7 @@ import org.apache.commons.logging.LogFactory; import org.sakaiproject.tool.assessment.data.dao.grading.AssessmentGradingData; import org.sakaiproject.tool.assessment.data.dao.grading.ItemGradingData; +import org.sakaiproject.tool.assessment.data.exception.SamigoDataAccessException; import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentAccessControlIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.ItemDataIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.PublishedAssessmentIfc; @@ -145,6 +146,14 @@ context.addMessage(null, new FacesMessage(err)); return; + } catch (SamigoDataAccessException e) { + e.printStackTrace(); + FacesContext context = FacesContext.getCurrentInstance(); + String err = (String) ContextUtil.getLocalizedString( + "org.sakaiproject.tool.assessment.bundle.AuthorMessages", + "saveanswer_exception_error"); + context.addMessage(null, new FacesMessage(err)); + return; } } @@ -228,9 +237,10 @@ * @param publishedAssessment * @param delivery * @return + * @throws SamigoDataAccessException */ private synchronized AssessmentGradingData submitToGradingService( - ActionEvent ae, PublishedAssessmentFacade publishedAssessment, DeliveryBean delivery, HashMap invalidFINMap, ArrayList invalidSALengthList) throws FinFormatException { + ActionEvent ae, PublishedAssessmentFacade publishedAssessment, DeliveryBean delivery, HashMap invalidFINMap, ArrayList invalidSALengthList) throws FinFormatException, SamigoDataAccessException { log.debug("****1a. inside submitToGradingService "); String submissionId = ""; HashSet itemGradingHash = new HashSet(); @@ -340,7 +350,7 @@ private AssessmentGradingData persistAssessmentGrading(ActionEvent ae, DeliveryBean delivery, HashSet itemGradingHash, PublishedAssessmentFacade publishedAssessment, HashSet adds, - HashSet removes, HashMap invalidFINMap, ArrayList invalidSALengthList) throws FinFormatException { + HashSet removes, HashMap invalidFINMap, ArrayList invalidSALengthList) throws FinFormatException, SamigoDataAccessException { AssessmentGradingData adata = null; if (delivery.getAssessmentGrading() != null) { adata = delivery.getAssessmentGrading(); Index: samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentGradingFacadeQueries.java =================================================================== --- samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentGradingFacadeQueries.java (revision 121354) +++ samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentGradingFacadeQueries.java (working copy) @@ -71,6 +71,7 @@ import org.sakaiproject.tool.assessment.data.dao.grading.ItemGradingData; import org.sakaiproject.tool.assessment.data.dao.grading.MediaData; import org.sakaiproject.tool.assessment.data.dao.grading.StudentGradingSummaryData; +import org.sakaiproject.tool.assessment.data.exception.SamigoDataAccessException; import org.sakaiproject.tool.assessment.data.ifc.assessment.AnswerIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentAttachmentIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.EvaluationModelIfc; @@ -711,7 +712,11 @@ if (itemGradingId != null) { ItemGradingData itemGradingData = getItemGrading(itemGradingId); itemGradingData.setAutoScore(Double.valueOf(0)); - saveItemGrading(itemGradingData); + try { + saveItemGrading(itemGradingData); + } catch (SamigoDataAccessException e) { + log.warn("error updating Item after media deletion", e); + } } } @@ -1020,7 +1025,7 @@ } - public void saveItemGrading(ItemGradingData item) { + public void saveItemGrading(ItemGradingData item) throws SamigoDataAccessException { int retryCount = persistenceHelper.getRetryCount().intValue(); while (retryCount > 0){ try { @@ -1030,11 +1035,14 @@ catch (Exception e) { log.warn("problem saving itemGrading: "+e.getMessage()); retryCount = persistenceHelper.retryDeadlock(e, retryCount); + if (retryCount == 0) { + throw new SamigoDataAccessException(e); + } } } } - public void saveOrUpdateAssessmentGrading(AssessmentGradingData assessment) { + public void saveOrUpdateAssessmentGrading(AssessmentGradingData assessment) throws SamigoDataAccessException { int retryCount = persistenceHelper.getRetryCount().intValue(); while (retryCount > 0){ try { @@ -1048,6 +1056,9 @@ catch (Exception e) { log.warn("problem inserting/updating assessmentGrading: "+e.getMessage()); retryCount = persistenceHelper.retryDeadlock(e, retryCount); + if (retryCount == 0) { + throw new SamigoDataAccessException(e); + } } } } @@ -1550,7 +1561,7 @@ } - public void saveOrUpdateAll(Collection c) { + public void saveOrUpdateAll(Collection c) throws SamigoDataAccessException { int retryCount = persistenceHelper.getRetryCount().intValue(); while (retryCount > 0){ try { @@ -1560,6 +1571,9 @@ catch (Exception e) { log.warn("problem inserting assessmentGrading: "+e.getMessage()); retryCount = persistenceHelper.retryDeadlock(e, retryCount); + if (retryCount == 0) { + throw new SamigoDataAccessException(e); + } } } } @@ -2923,7 +2937,12 @@ adata.setStatus(Integer.valueOf(1)); toBeAutoSubmittedList.add(adata); hasAutoSubmisionRunUpdateList.remove(adata); // for performance. don't update the same record twice - completeItemGradingData(adata, sectionSetMap); + try { + completeItemGradingData(adata, sectionSetMap); + } catch (SamigoDataAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } updateGradebookMap(adata, studentUidsToScores, gradebookMap); List eventLogDataList = eventService.getEventLogData(adata.getAssessmentGradingId()); @@ -2972,7 +2991,12 @@ adata.setStatus(Integer.valueOf(1)); toBeAutoSubmittedList.add(adata); hasAutoSubmisionRunUpdateList.remove(adata); // for performance. don't update the same record twice - completeItemGradingData(adata, sectionSetMap); + try { + completeItemGradingData(adata, sectionSetMap); + } catch (SamigoDataAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } updateGradebookMap(adata, studentUidsToScores, gradebookMap); EventTrackingService.post(EventTrackingService.newEvent("sam.auto-submit.job", AutoSubmitAssessmentsJob.safeEventLength("publishedAssessmentId=" + adata.getPublishedAssessmentId() + @@ -2997,8 +3021,15 @@ } } - this.saveOrUpdateAll(toBeAutoSubmittedList); - this.saveOrUpdateAll(hasAutoSubmisionRunUpdateList); + + try { + this.saveOrUpdateAll(toBeAutoSubmittedList); + this.saveOrUpdateAll(hasAutoSubmisionRunUpdateList); + } catch (SamigoDataAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + notifyGradebook(gradebookMap); } @@ -3177,12 +3208,12 @@ return startedCountsMap; } - public void completeItemGradingData(AssessmentGradingData assessmentGradingData) { + public void completeItemGradingData(AssessmentGradingData assessmentGradingData) throws SamigoDataAccessException { completeItemGradingData(assessmentGradingData, null); } - public void completeItemGradingData(AssessmentGradingData assessmentGradingData, HashMap sectionSetMap) { + private void completeItemGradingData(AssessmentGradingData assessmentGradingData, HashMap sectionSetMap) throws SamigoDataAccessException { ArrayList answeredPublishedItemIdList = new ArrayList(); List publishedItemIds = getPublishedItemIds(assessmentGradingData.getAssessmentGradingId()); Iterator iter = publishedItemIds.iterator(); @@ -3261,7 +3292,7 @@ } } - private void saveItemGradingData(AssessmentGradingData assessmentGradingData, Long publishedItemId) { + private void saveItemGradingData(AssessmentGradingData assessmentGradingData, Long publishedItemId) throws SamigoDataAccessException { log.debug("Adding one ItemGradingData..."); ItemGradingData itemGradingData = new ItemGradingData(); itemGradingData.setAssessmentGradingId(assessmentGradingData.getAssessmentGradingId()); Index: samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentGradingFacadeQueriesAPI.java =================================================================== --- samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentGradingFacadeQueriesAPI.java (revision 121354) +++ samigo-services/src/java/org/sakaiproject/tool/assessment/facade/AssessmentGradingFacadeQueriesAPI.java (working copy) @@ -34,6 +34,7 @@ import org.sakaiproject.tool.assessment.data.dao.grading.ItemGradingAttachment; import org.sakaiproject.tool.assessment.data.dao.grading.ItemGradingData; import org.sakaiproject.tool.assessment.data.dao.grading.MediaData; +import org.sakaiproject.tool.assessment.data.exception.SamigoDataAccessException; import org.sakaiproject.tool.assessment.data.ifc.assessment.PublishedAssessmentIfc; import org.sakaiproject.tool.assessment.data.ifc.grading.StudentGradingSummaryIfc; @@ -152,10 +153,20 @@ public List getLastSubmittedOrGradedAssessmentGradingList(Long publishedAssessmentId); - public void saveItemGrading(ItemGradingData item); + /** + * Save an itemgrading item + * @param item + * @throws SamigoDataAccessException + */ + public void saveItemGrading(ItemGradingData item) throws SamigoDataAccessException; + + /** + * Save or update an AssementGrading item + * @param assessment + * @throws SamigoDataAccessException + */ + public void saveOrUpdateAssessmentGrading(AssessmentGradingData assessment) throws SamigoDataAccessException; - public void saveOrUpdateAssessmentGrading(AssessmentGradingData assessment); - //public void setIsLate(AssessmentGradingData assessment); public List getAssessmentGradingIds(Long publishedItemId); @@ -180,7 +191,12 @@ public void deleteAll(Collection c); - public void saveOrUpdateAll(Collection c); + /** + * Save or update all objects + * @param c + * @throws SamigoDataAccessException + */ + public void saveOrUpdateAll(Collection c) throws SamigoDataAccessException; public PublishedAssessmentIfc getPublishedAssessmentByAssessmentGradingId(Long assessmentGradingId); @@ -245,7 +261,12 @@ public HashMap getSubmittedCounts(String siteId); - public void completeItemGradingData(AssessmentGradingData assessmentGradingData); + /** + * Fully populate an item grading item and perform the initial save + * @param assessmentGradingData + * @throws SamigoDataAccessException + */ + public void completeItemGradingData(AssessmentGradingData assessmentGradingData) throws SamigoDataAccessException; public List getHighestSubmittedAssessmentGradingList(final Long publishedAssessmentId); public Double getAverageSubmittedAssessmentGrading( final Long publishedAssessmentId, final String agentId); Index: samigo-services/src/java/org/sakaiproject/tool/assessment/services/GradingService.java =================================================================== --- samigo-services/src/java/org/sakaiproject/tool/assessment/services/GradingService.java (revision 121354) +++ samigo-services/src/java/org/sakaiproject/tool/assessment/services/GradingService.java (working copy) @@ -56,6 +56,7 @@ import org.sakaiproject.tool.assessment.data.dao.grading.ItemGradingAttachment; import org.sakaiproject.tool.assessment.data.dao.grading.ItemGradingData; import org.sakaiproject.tool.assessment.data.dao.grading.MediaData; +import org.sakaiproject.tool.assessment.data.exception.SamigoDataAccessException; import org.sakaiproject.tool.assessment.data.ifc.assessment.AnswerIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.AssessmentIfc; import org.sakaiproject.tool.assessment.data.ifc.assessment.EvaluationModelIfc; @@ -74,7 +75,6 @@ import org.sakaiproject.tool.assessment.services.assessment.PublishedAssessmentService; import org.sakaiproject.tool.assessment.util.SamigoExpressionError; import org.sakaiproject.tool.assessment.util.SamigoExpressionParser; -import org.sakaiproject.tool.assessment.util.TextFormat; /** @@ -751,7 +751,7 @@ */ public void storeGrades(AssessmentGradingData data, PublishedAssessmentIfc pub, HashMap publishedItemHash, HashMap publishedItemTextHash, - HashMap publishedAnswerHash, HashMap invalidFINMap, ArrayList invalidSALengthList) throws GradebookServiceException, FinFormatException + HashMap publishedAnswerHash, HashMap invalidFINMap, ArrayList invalidSALengthList) throws GradebookServiceException, FinFormatException, SamigoDataAccessException { log.debug("storeGrades: data.getSubmittedDate()" + data.getSubmittedDate()); storeGrades(data, false, pub, publishedItemHash, publishedItemTextHash, publishedAnswerHash, true, invalidFINMap, invalidSALengthList); @@ -762,7 +762,7 @@ */ public void storeGrades(AssessmentGradingData data, PublishedAssessmentIfc pub, HashMap publishedItemHash, HashMap publishedItemTextHash, - HashMap publishedAnswerHash, boolean persistToDB, HashMap invalidFINMap, ArrayList invalidSALengthList) throws GradebookServiceException, FinFormatException + HashMap publishedAnswerHash, boolean persistToDB, HashMap invalidFINMap, ArrayList invalidSALengthList) throws GradebookServiceException, FinFormatException, SamigoDataAccessException { log.debug("storeGrades (not persistToDB) : data.getSubmittedDate()" + data.getSubmittedDate()); storeGrades(data, false, pub, publishedItemHash, publishedItemTextHash, publishedAnswerHash, persistToDB, invalidFINMap, invalidSALengthList); @@ -770,7 +770,7 @@ public void storeGrades(AssessmentGradingData data, boolean regrade, PublishedAssessmentIfc pub, HashMap publishedItemHash, HashMap publishedItemTextHash, - HashMap publishedAnswerHash, boolean persistToDB) throws GradebookServiceException, FinFormatException { + HashMap publishedAnswerHash, boolean persistToDB) throws GradebookServiceException, FinFormatException, SamigoDataAccessException { log.debug("storeGrades (not persistToDB) : data.getSubmittedDate()" + data.getSubmittedDate()); storeGrades(data, regrade, pub, publishedItemHash, publishedItemTextHash, publishedAnswerHash, persistToDB, null, null); } @@ -786,7 +786,7 @@ public void storeGrades(AssessmentGradingData data, boolean regrade, PublishedAssessmentIfc pub, HashMap publishedItemHash, HashMap publishedItemTextHash, HashMap publishedAnswerHash, boolean persistToDB, HashMap invalidFINMap, ArrayList invalidSALengthList) - throws GradebookServiceException, FinFormatException { + throws GradebookServiceException, FinFormatException, SamigoDataAccessException { log.debug("****x1. regrade ="+regrade+" "+(new Date()).getTime()); try { String agent = data.getAgentId(); @@ -999,8 +999,9 @@ } catch (GradebookServiceException ge) { ge.printStackTrace(); throw ge; - } - catch (Exception e) { + } catch (SamigoDataAccessException sde) { + throw sde; + } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } @@ -1824,14 +1825,11 @@ } } - public void saveOrUpdateAll(Collection c) + public void saveOrUpdateAll(Collection c) throws SamigoDataAccessException { - try { + PersistenceService.getInstance(). getAssessmentGradingFacadeQueries().saveOrUpdateAll(c); - } catch (Exception e) { - e.printStackTrace(); - } } public PublishedAssessmentIfc getPublishedAssessmentByAssessmentGradingId(String id){ @@ -2671,8 +2669,13 @@ } public void completeItemGradingData(AssessmentGradingData assessmentGradingData) { - PersistenceService.getInstance().getAssessmentGradingFacadeQueries(). - completeItemGradingData(assessmentGradingData); + try { + PersistenceService.getInstance().getAssessmentGradingFacadeQueries(). + completeItemGradingData(assessmentGradingData); + } catch (SamigoDataAccessException e) { + //Fixme this should be escalalted as a named exception so calling code handles it + throw new RuntimeException(e); + } } /** Index: samigo-services/src/test/org/sakaiproject/assessment/facade/test/AssessmentGradingFacadeQueriesTest.java =================================================================== --- samigo-services/src/test/org/sakaiproject/assessment/facade/test/AssessmentGradingFacadeQueriesTest.java (revision 121354) +++ samigo-services/src/test/org/sakaiproject/assessment/facade/test/AssessmentGradingFacadeQueriesTest.java (working copy) @@ -27,6 +27,7 @@ import org.hibernate.SessionFactory; import org.sakaiproject.tool.assessment.data.dao.grading.AssessmentGradingData; import org.sakaiproject.tool.assessment.data.dao.grading.ItemGradingData; +import org.sakaiproject.tool.assessment.data.exception.SamigoDataAccessException; import org.sakaiproject.tool.assessment.facade.AssessmentGradingFacadeQueries; import org.sakaiproject.tool.assessment.services.PersistenceHelper; import org.springframework.test.AbstractTransactionalSpringContextTests; @@ -58,27 +59,34 @@ public void testSaveAssesmentGradingData() { //A AssemementGradingData to work with - AssessmentGradingData data = new AssessmentGradingData(); + AssessmentGradingData dataBad = new AssessmentGradingData(); //we expect a failure on this one /*FIXME this test should fail with an exception - * currently the exceptions are quietly swallowed + * currently the exceptions are quietly swallowed */ try { - queries.saveOrUpdateAssessmentGrading(data); - fail(); + queries.saveOrUpdateAssessmentGrading(dataBad); + //fail(); } catch (Exception e) { - //we expect this + //we expect this + //e.printStackTrace(); } - */ + AssessmentGradingData data = new AssessmentGradingData(); data.setPublishedAssessmentId(Long.valueOf(1)); data.setAgentId("agent"); data.setIsLate(false); data.setForGrade(false); data.setStatus(Integer.valueOf(0)); - queries.saveOrUpdateAssessmentGrading(data); + try { + queries.saveOrUpdateAssessmentGrading(data); + } catch (SamigoDataAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + fail(); + } assertNotNull(data.getAssessmentGradingId()); @@ -91,7 +99,13 @@ item1.setPublishedItemId(1L); item1.setPublishedItemTextId(1L); //saving the item should add an ID - queries.saveItemGrading(item1); + try { + queries.saveItemGrading(item1); + } catch (SamigoDataAccessException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + fail(); + } assertNotNull(item1.getItemGradingId()); @@ -107,7 +121,13 @@ /** saving the parent should save the children **/ - queries.saveOrUpdateAssessmentGrading(data); + try { + queries.saveOrUpdateAssessmentGrading(data); + } catch (SamigoDataAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + fail(); + } assertNotNull(item1.getItemGradingId()); @@ -141,7 +161,13 @@ data.setIsLate(false); data.setForGrade(false); data.setStatus(Integer.valueOf(0)); - queries.saveOrUpdateAssessmentGrading(data); + try { + queries.saveOrUpdateAssessmentGrading(data); + } catch (SamigoDataAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + fail(); + } AssessmentGradingData data2 = new AssessmentGradingData(); @@ -150,7 +176,13 @@ data2.setIsLate(false); data2.setForGrade(true); data2.setStatus(0); - queries.saveOrUpdateAssessmentGrading(data2); + try { + queries.saveOrUpdateAssessmentGrading(data2); + } catch (SamigoDataAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + fail(); + } @@ -160,7 +192,13 @@ data3.setIsLate(false); data3.setForGrade(true); data3.setStatus(0); - queries.saveOrUpdateAssessmentGrading(data3); + try { + queries.saveOrUpdateAssessmentGrading(data3); + } catch (SamigoDataAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + fail(); + } ItemGradingData item1 = new ItemGradingData(); item1.setAgentId(data.getAgentId()); @@ -180,7 +218,13 @@ data.getItemGradingSet().add(item2); data.getItemGradingSet().add(item1); - queries.saveOrUpdateAssessmentGrading(data); + try { + queries.saveOrUpdateAssessmentGrading(data); + } catch (SamigoDataAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + fail(); + } savedId = data.getAssessmentGradingId();