/********************************************************************************** * $URL:https://source.sakaiproject.org/svn/osp/trunk/matrix/tool/src/java/org/theospi/portfolio/matrix/control/BaseScaffoldingCellController.java $ * $Id:BaseScaffoldingCellController.java 9134 2006-05-08 20:28:42Z chmaurer@iupui.edu $ *********************************************************************************** * * 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.Date; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.sakaiproject.taggable.api.TaggingManager; import org.sakaiproject.metaobj.shared.mgt.IdManager; import org.sakaiproject.metaobj.shared.model.Id; import org.sakaiproject.tool.api.SessionManager; import org.theospi.portfolio.guidance.mgt.GuidanceManager; import org.theospi.portfolio.guidance.model.Guidance; import org.theospi.portfolio.matrix.MatrixFunctionConstants; import org.theospi.portfolio.matrix.MatrixManager; import org.theospi.portfolio.matrix.model.Cell; import org.theospi.portfolio.matrix.model.ScaffoldingCell; import org.theospi.portfolio.matrix.model.WizardPageDefinition; import org.theospi.portfolio.security.AuthorizationFacade; import org.theospi.portfolio.workflow.mgt.WorkflowManager; import org.theospi.portfolio.workflow.model.Workflow; public class BaseScaffoldingCellController { private AuthorizationFacade authzManager; private MatrixManager matrixManager; private IdManager idManager; private GuidanceManager guidanceManager; private WorkflowManager workflowManager; private TaggingManager taggingManager; private SessionManager sessionManager; protected static final String PROVIDERS_PARAM = "providers"; public Object fillBackingObject(Object incomingModel, Map request, Map session, Map application) throws Exception { ScaffoldingCell scaffoldingCell = (ScaffoldingCell) incomingModel; if (request.get(EditedScaffoldingStorage.STORED_SCAFFOLDING_FLAG) == null && session .get(EditedScaffoldingStorage.STORED_SCAFFOLDING_FLAG) == null) { Id sCellId = ((ScaffoldingCell) incomingModel).getId(); if (sCellId == null) { sCellId = getIdManager().getId( (String) request.get("scaffoldingCell_id")); } scaffoldingCell = getMatrixManager().getScaffoldingCell(sCellId); EditedScaffoldingStorage sessionBean = new EditedScaffoldingStorage( scaffoldingCell); session .put( EditedScaffoldingStorage.EDITED_SCAFFOLDING_STORAGE_SESSION_KEY, sessionBean); } else { EditedScaffoldingStorage sessionBean = (EditedScaffoldingStorage) session .get(EditedScaffoldingStorage.EDITED_SCAFFOLDING_STORAGE_SESSION_KEY); scaffoldingCell = sessionBean.getScaffoldingCell(); } // Check for guidance checkForGuidance(session, scaffoldingCell); // Traversing the collection to un-lazily load scaffoldingCell.getWizardPageDefinition().getEvalWorkflows().size(); for (Iterator i = scaffoldingCell.getWizardPageDefinition() .getEvalWorkflows().iterator(); i.hasNext();) { Workflow w = (Workflow) i.next(); w.getItems().size(); } getMatrixManager().removeFromSession(scaffoldingCell); scaffoldingCell.getScaffolding().isPublished(); return scaffoldingCell; } protected void checkForGuidance(Map session, ScaffoldingCell scaffoldingCell) { if (session.get(GuidanceManager.CURRENT_GUIDANCE) != null) { Guidance guidance = (Guidance) session .get(GuidanceManager.CURRENT_GUIDANCE); scaffoldingCell.setGuidanceId(guidance.getId()); session.remove(GuidanceManager.CURRENT_GUIDANCE); } if (scaffoldingCell.getGuidanceId() != null && scaffoldingCell.getGuidance() == null) { scaffoldingCell.setGuidance(getGuidanceManager().getGuidance( scaffoldingCell.getGuidanceId())); scaffoldingCell.setGuidanceId(null); } } protected void saveScaffoldingCell(Map request, ScaffoldingCell scaffoldingCell) { getMatrixManager().removeFromSession(scaffoldingCell); ScaffoldingCell oldScaffoldingCell = getMatrixManager() .getScaffoldingCell(scaffoldingCell.getRootCriterion(), scaffoldingCell.getLevel()); // String oldStatus = // matrixManager.getScaffoldingCellsStatus(scaffoldingCell.getId()); getMatrixManager().removeFromSession(oldScaffoldingCell); String oldStatus = oldScaffoldingCell.getInitialStatus(); Set<Workflow> evalWorkflows = new HashSet<Workflow>(); if (scaffoldingCell.isDefaultEvaluationForm()) { evalWorkflows = getWorkflowManager().createEvalWorkflows(scaffoldingCell.getWizardPageDefinition(), scaffoldingCell.getScaffolding().getEvaluationDevice()); } else { evalWorkflows = getWorkflowManager().createEvalWorkflows(scaffoldingCell.getWizardPageDefinition()); } scaffoldingCell.getWizardPageDefinition().setEvalWorkflows(new HashSet(evalWorkflows)); getMatrixManager().storeScaffoldingCell(scaffoldingCell); scaffoldingCell.getScaffolding().setModifiedDate(new Date(System.currentTimeMillis())); getMatrixManager().storeScaffolding(scaffoldingCell.getScaffolding()); List cells = getMatrixManager().getCellsByScaffoldingCell( scaffoldingCell.getId()); for (Iterator iter = cells.iterator(); iter.hasNext();) { Cell cell = (Cell) iter.next(); if (!oldStatus.equals(scaffoldingCell.getInitialStatus()) && (cell.getStatus().equals( MatrixFunctionConstants.LOCKED_STATUS) || cell .getStatus().equals( MatrixFunctionConstants.READY_STATUS))) { cell.setStatus(scaffoldingCell.getInitialStatus()); getMatrixManager().storeCell(cell); } } if (scaffoldingCell.getDeleteGuidanceId() != null) { Guidance guidance = getGuidanceManager().getGuidance( scaffoldingCell.getDeleteGuidanceId()); getGuidanceManager().deleteGuidance(guidance); } } protected Set createEvalWorkflows(WizardPageDefinition wpd) { return getWorkflowManager().createEvalWorkflows(wpd); } public AuthorizationFacade getAuthzManager() { return authzManager; } public void setAuthzManager(AuthorizationFacade authzManager) { this.authzManager = authzManager; } public MatrixManager getMatrixManager() { return matrixManager; } public void setMatrixManager(MatrixManager matrixManager) { this.matrixManager = matrixManager; } public IdManager getIdManager() { return idManager; } public void setIdManager(IdManager idManager) { this.idManager = idManager; } /** * @return Returns the guidanceManager. */ public GuidanceManager getGuidanceManager() { return guidanceManager; } /** * @param guidanceManager * The guidanceManager to set. */ public void setGuidanceManager(GuidanceManager guidanceManager) { this.guidanceManager = guidanceManager; } /** * @return Returns the workflowManager. */ public WorkflowManager getWorkflowManager() { return workflowManager; } /** * @param workflowManager * The workflowManager to set. */ public void setWorkflowManager(WorkflowManager workflowManager) { this.workflowManager = workflowManager; } public TaggingManager getTaggingManager() { return taggingManager; } public void setTaggingManager(TaggingManager taggingManager) { this.taggingManager = taggingManager; } public SessionManager getSessionManager() { return sessionManager; } public void setSessionManager(SessionManager sessionManager) { this.sessionManager = sessionManager; } }