/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/osp/trunk/matrix/tool/src/java/org/theospi/portfolio/matrix/control/ViewScaffoldingController.java $
* $Id: ViewScaffoldingController.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $
***********************************************************************************
*
* 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.theospi.portfolio.matrix.control;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.sakaiproject.metaobj.security.AuthenticationManager;
import org.sakaiproject.metaobj.shared.mgt.IdManager;
import org.sakaiproject.metaobj.shared.model.Agent;
import org.sakaiproject.metaobj.shared.model.Id;
import org.sakaiproject.metaobj.utils.mvc.intf.FormController;
import org.sakaiproject.metaobj.utils.mvc.intf.LoadObjectController;
import org.sakaiproject.metaobj.worksite.mgt.WorksiteManager;
import org.sakaiproject.tool.api.ToolManager;
import org.springframework.validation.Errors;
import org.springframework.web.servlet.ModelAndView;
import org.theospi.portfolio.matrix.MatrixManager;
import org.theospi.portfolio.matrix.model.Criterion;
import org.theospi.portfolio.matrix.model.Level;
import org.theospi.portfolio.matrix.model.Scaffolding;
import org.theospi.portfolio.matrix.model.ScaffoldingCell;
import org.theospi.portfolio.security.AuthorizationFacade;
import org.theospi.portfolio.style.mgt.StyleManager;
import org.theospi.portfolio.workflow.mgt.WorkflowManager;
/**
* @author chmaurer
*/
public class ViewScaffoldingController implements FormController, LoadObjectController {
protected final Log logger = LogFactory.getLog(getClass());
private MatrixManager matrixManager;
private IdManager idManager;
private WorksiteManager worksiteManager = null;
private AuthorizationFacade authzManager;
private ToolManager toolManager;
private WorkflowManager workflowManager;
private StyleManager styleManager;
private AuthenticationManager authManager;
/* (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 {
MatrixGridBean grid = (MatrixGridBean)incomingModel;
Id sId = getIdManager().getId((String)request.get("scaffolding_id"));
Scaffolding scaffolding = getMatrixManager().getScaffolding(sId);
List<Level> levels = scaffolding.getLevels();
List<Criterion> criteria = scaffolding.getCriteria();
List matrixContents = new ArrayList();
Criterion criterion = new Criterion();
Level level = new Level();
List<ScaffoldingCell> row = new ArrayList<ScaffoldingCell>();
Set<ScaffoldingCell> cells = getMatrixManager().getScaffoldingCells(scaffolding.getId());
for (Iterator<Criterion> criteriaIterator = criteria.iterator(); criteriaIterator.hasNext();) {
row = new ArrayList<ScaffoldingCell>();
criterion = (Criterion) criteriaIterator.next();
for (Iterator<Level> levelsIterator = levels.iterator(); levelsIterator.hasNext();) {
level = (Level) levelsIterator.next();
ScaffoldingCell scaffoldingCell = getScaffoldingCell(cells, criterion, level);
row.add(scaffoldingCell);
}
matrixContents.add(row);
}
grid.setScaffolding(scaffolding);
grid.setColumnLabels(levels);
grid.setRowLabels(criteria);
grid.setMatrixContents(matrixContents);
//Make sure these are not in session.
session.remove(EditedScaffoldingStorage.STORED_SCAFFOLDING_FLAG);
session.remove(EditedScaffoldingStorage.EDITED_SCAFFOLDING_STORAGE_SESSION_KEY);
return incomingModel;
}
/* (non-Javadoc)
* @see org.theospi.utils.mvc.intf.FormController#referenceData(java.util.Map, java.lang.Object, org.springframework.validation.Errors)
*/
public Map referenceData(Map request, Object command, Errors errors) {
Agent currentAgent = getAuthManager().getAgent();
Map model = new HashMap();
String worksiteId = getWorksiteManager().getCurrentWorksiteId().getValue();
model.put("worksite", getWorksiteManager().getSite(worksiteId));
model.put("osp_agent", currentAgent);
model.put("tool", getToolManager().getCurrentPlacement());
model.put("styles",
getStyleManager().createStyleUrlList(getStyleManager().getStyles(((MatrixGridBean)command).getScaffolding().getId())));
return model;
}
/* (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) {
Map model = new HashMap();
model.put(EditedScaffoldingStorage.STORED_SCAFFOLDING_FLAG, "false");
if(request.get("toolPermissionSaved") != null)
model.put("toolPermissionSaved", request.get("toolPermissionSaved"));
return new ModelAndView("success", model);
}
private ScaffoldingCell getScaffoldingCell(Set<ScaffoldingCell> cells, Criterion criterion, Level level) {
for (Iterator<ScaffoldingCell> iter=cells.iterator(); iter.hasNext();) {
ScaffoldingCell scaffoldingCell = (ScaffoldingCell) iter.next();
if (scaffoldingCell.getRootCriterion().getId().getValue().equals(criterion.getId().getValue()) &&
scaffoldingCell.getLevel().getId().getValue().equals(level.getId().getValue())) {
return scaffoldingCell;
}
}
return null;
}
/**
* @return Returns the matrixManager.
*/
public MatrixManager getMatrixManager() {
return matrixManager;
}
/**
* @param matrixManager The matrixManager to set.
*/
public void setMatrixManager(MatrixManager matrixManager) {
this.matrixManager = matrixManager;
}
/**
* @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 worksiteManager.
*/
public WorksiteManager getWorksiteManager() {
return worksiteManager;
}
/**
* @param worksiteManager The worksiteManager to set.
*/
public void setWorksiteManager(WorksiteManager worksiteManager) {
this.worksiteManager = worksiteManager;
}
/**
* @return Returns the authzManager.
*/
public AuthorizationFacade getAuthzManager() {
return authzManager;
}
/**
* @param authzManager The authzManager to set.
*/
public void setAuthzManager(AuthorizationFacade authzManager) {
this.authzManager = authzManager;
}
public ToolManager getToolManager() {
return toolManager;
}
public void setToolManager(ToolManager toolManager) {
this.toolManager = toolManager;
}
/**
* @return Returns the workflowManager.
*/
public WorkflowManager getWorkflowManager() {
return workflowManager;
}
/**
* @param workflowManager The workflowManager to set.
*/
public void setWorkflowManager(WorkflowManager workflowManager) {
this.workflowManager = workflowManager;
}
public StyleManager getStyleManager() {
return styleManager;
}
public void setStyleManager(StyleManager styleManager) {
this.styleManager = styleManager;
}
public AuthenticationManager getAuthManager() {
return authManager;
}
public void setAuthManager(AuthenticationManager authManager) {
this.authManager = authManager;
}
}