/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/osp/trunk/matrix/tool/src/java/org/theospi/portfolio/matrix/control/FormDeleteController.java $ * $Id: FormDeleteController.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $ *********************************************************************************** * * Copyright (c) 2005, 2006, 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.theospi.portfolio.matrix.control; import java.util.HashMap; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.content.api.ContentHostingService; import org.sakaiproject.metaobj.shared.mgt.IdManager; import org.sakaiproject.metaobj.shared.model.Id; import org.sakaiproject.metaobj.utils.mvc.intf.CustomCommandController; import org.sakaiproject.metaobj.utils.mvc.intf.LoadObjectController; import org.springframework.validation.Errors; import org.springframework.web.servlet.ModelAndView; import org.theospi.portfolio.matrix.MatrixManager; import org.theospi.portfolio.matrix.WizardPageHelper; import org.theospi.portfolio.matrix.model.Cell; import org.theospi.portfolio.matrix.model.WizardPage; import org.theospi.portfolio.review.model.Review; import org.theospi.portfolio.review.mgt.ReviewManager; import org.sakaiproject.content.api.LockManager; /** * @author chmaurer */ public class FormDeleteController implements LoadObjectController, CustomCommandController { protected final Log logger = LogFactory.getLog(getClass()); private IdManager idManager = null; private MatrixManager matrixManager = null; private ReviewManager reviewManager; private ContentHostingService contentHosting; private LockManager lockManager; private String DELETE_FORM = "delete"; private String DELETE_FEEDBACK = "deleteReview"; /* (non-Javadoc) * @see org.theospi.utils.mvc.intf.CustomCommandController#formBackingObject(java.util.Map, java.util.Map, java.util.Map) */ public Object formBackingObject(Map request, Map session, Map application) { return new HashMap(); } /* (non-Javadoc) * @see org.theospi.utils.mvc.intf.LoadObjectController#fillBackingObject(java.lang.Object, java.util.Map, java.util.Map, java.util.Map) */ public Object fillBackingObject(Object incomingModel, Map request, Map session, Map application) throws Exception { return incomingModel; } /* (non-Javadoc) * @see org.theospi.utils.mvc.intf.Controller#handleRequest(java.lang.Object, java.util.Map, java.util.Map, java.util.Map, org.springframework.validation.Errors) */ public ModelAndView handleRequest(Object requestModel, Map request, Map session, Map application, Errors errors) { WizardPage page = (WizardPage) session.get(WizardPageHelper.WIZARD_PAGE); Id cellId = idManager.getId((String) request.get("page_id")); Id formId = idManager.getId((String) request.get("current_form_id")); Cell cell = getMatrixManager().getCellFromPage(cellId); boolean sessionPage = true; if (page == null) { sessionPage = false; page = cell.getWizardPage(); } String submitAction = (String)request.get("submit"); session.remove(WizardPageHelper.WIZARD_PAGE); getMatrixManager().removeFromSession(page); if ( submitAction.equals(DELETE_FORM) ) { getMatrixManager().detachForm(page.getId(), formId); } else // (submitAction.equals(DELETE_FEEDBACK)) { Id reviewId = idManager.getId((String)request.get("review_id")); Review review = getReviewManager().getReview(reviewId); if ( review != null ) getReviewManager().deleteReview(review); else logger.warn("Null feedback form (perhaps multiple submits):" + reviewId ); } if (sessionPage) session.put(WizardPageHelper.WIZARD_PAGE, getMatrixManager().getWizardPage(page.getId())); try { // unlock and delete content String reviewContentId = contentHosting.getUuid( formId.getValue() ); if ( getLockManager().isLocked(reviewContentId) ) getLockManager().removeLock(reviewContentId, cellId.getValue() ); getContentHosting().removeResource(formId.getValue()); } catch(Exception e) { logger.warn("Error removing form: "+ e.toString() ); } // if not submit, then cancel, but both submit and cancel have the some view, so return new ModelAndView("continue", "page_id", page.getId().getValue()); } /** * @return Returns the idManager. */ public IdManager getIdManager() { return idManager; } /** * @param idManager The idManager to set. */ public void setIdManager(IdManager idManager) { this.idManager = idManager; } /** * @return Returns the matrixManager. */ public MatrixManager getMatrixManager() { return matrixManager; } /** * @param matrixManager The matrixManager to set. */ public void setMatrixManager(MatrixManager matrixManager) { this.matrixManager = matrixManager; } /** * @return the contentHosting */ public ContentHostingService getContentHosting() { return contentHosting; } /** * @param contentHosting the contentHosting to set */ public void setContentHosting(ContentHostingService contentHosting) { this.contentHosting = contentHosting; } /** * @return Returns the reviewManager. */ public ReviewManager getReviewManager() { return reviewManager; } /** * @param reviewManager The reviewManager to set. */ public void setReviewManager(ReviewManager reviewManager) { this.reviewManager = reviewManager; } public LockManager getLockManager() { return lockManager; } public void setLockManager(LockManager lockManager) { this.lockManager = lockManager; } }