/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/osp/trunk/matrix/tool/src/java/org/theospi/portfolio/matrix/control/SubmitCellConfirmationController.java $
* $Id: SubmitCellConfirmationController.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $
***********************************************************************************
*
* Copyright (c) 2005, 2006, 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.theospi.portfolio.matrix.control;
import java.util.HashMap;
import java.util.Map;
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.MatrixFunctionConstants;
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.wizard.WizardFunctionConstants;
import org.theospi.portfolio.wizard.mgt.WizardManager;
import org.theospi.portfolio.wizard.model.WizardPageSequence;
/**
* @author chmaurer
*/
public class SubmitCellConfirmationController implements LoadObjectController, CustomCommandController {
IdManager idManager = null;
MatrixManager matrixManager = null;
WizardManager wizardManager = null;
/* (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) {
boolean isCellPage = false;
String view = "continueSeq";
WizardPage page = (WizardPage) session.get(WizardPageHelper.WIZARD_PAGE);
Cell cell = null;
if (page == null) {
Id pageId = idManager.getId((String) request.get("page_id"));
cell = getMatrixManager().getCellFromPage(pageId);
page = cell.getWizardPage();
isCellPage = true;
} else {
WizardPageSequence seq = wizardManager.getWizardPageSeqByDef(page.getPageDefinition().getId());
if(seq.getCategory().getWizard().getType().equals(WizardFunctionConstants.WIZARD_TYPE_HIERARCHICAL))
view = "continueHier";
}
String submitAction = (String)request.get("submit");
String cancelAction = (String)request.get("cancel");
if (submitAction != null) {
Id reviewObjectId = null;
String parentTitle = "";
if(isCellPage){
if(cell.getScaffoldingCell().isDefaultEvaluators()){
reviewObjectId = cell.getScaffoldingCell().getScaffolding().getId();
}else{
reviewObjectId = cell.getScaffoldingCell().getWizardPageDefinition().getId();
}
parentTitle = cell.getScaffoldingCell().getScaffolding().getTitle();
}else{
parentTitle = wizardManager.getWizardPageSeqByDef(page.getPageDefinition().getId()).getCategory().getWizard().getName();
reviewObjectId = page.getPageDefinition().getId();
}
getMatrixManager().notifyAudience(page, reviewObjectId, true, null, null, parentTitle, MatrixFunctionConstants.EVALUATE_MATRIX);
if (!isCellPage) {
getMatrixManager().submitPageForEvaluation(page);
session.put("altDoneURL", "submitWizardPage");
session.put("submittedPage", page);
if (isLast(session)) {
view = "done";
}
return new ModelAndView(view, "page_id", page.getId().getValue());
}
else {
getMatrixManager().submitCellForEvaluation(cell);
}
return new ModelAndView(view, "page_id", page.getId().getValue());
}
if (cancelAction != null) {
// the current page is set to the next page after the submitted page for confirmation.
// So the current step needs to be rolled back
Object stepObj = (Object) session.get(WizardPageHelper.SEQUENTIAL_WIZARD_CURRENT_STEP);
if (stepObj != null && stepObj instanceof Integer && !isLast(session)) {
session.put(WizardPageHelper.SEQUENTIAL_WIZARD_CURRENT_STEP, Integer.valueOf(((Integer)stepObj).intValue() - 1) );
}
return new ModelAndView(view, "page_id", page.getId().getValue());
}
return new ModelAndView("success", "page", page);
}
protected boolean isLast(Map session) {
return session.get(WizardPageHelper.IS_LAST_STEP) != null;
}
/**
* @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;
}
public WizardManager getWizardManager() {
return wizardManager;
}
public void setWizardManager(WizardManager wizardManager) {
this.wizardManager = wizardManager;
}
}