/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-archive/sam-handlers/src/java/org/sakaiproject/importer/impl/handlers/SamigoHandler.java $ * $Id: SamigoHandler.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $ *********************************************************************************** * * Copyright (c) 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.sakaiproject.importer.impl.handlers; import org.sakaiproject.importer.api.HandlesImportable; import org.sakaiproject.importer.api.Importable; import org.sakaiproject.importer.impl.importables.QuestionPool; import org.sakaiproject.importer.impl.importables.Assessment; import org.sakaiproject.tool.assessment.services.QuestionPoolService; import org.sakaiproject.tool.assessment.services.qti.QTIService; import org.sakaiproject.tool.assessment.facade.ItemFacade; import org.sakaiproject.tool.assessment.facade.QuestionPoolFacade; import org.sakaiproject.tool.assessment.qti.constants.QTIVersion; import org.sakaiproject.tool.cover.SessionManager; /** * * @author Joshua Ryan joshua.ryan@asu.edu * */ public class SamigoHandler implements HandlesImportable { //won't be needed if we can get a createImportedQuestionPool(Document, int) //added to QTIService private QuestionPoolService qps = new QuestionPoolService(); public boolean canHandleType(String typeName) { return ("sakai-question-pool".equals(typeName) || "sakai-assessment".equals(typeName)); } public void handle(Importable thing, String siteId) { if ("sakai-assessment".equals(thing.getTypeName())) { Assessment assessment = (Assessment) thing; // Document document = assessment.getQti(); // String version = assessment.getVersion(); QTIService qtiService = new QTIService(); //default to qti 2.0, the latest version Samigo can handle currently int version = QTIVersion.VERSION_2_0; if ("1.2".equals(assessment.getVersion())) version = QTIVersion.VERSION_1_2; try { qtiService.createImportedAssessment(assessment.getQti(), version); } catch (Exception e) { e.printStackTrace(); } } else if ("sakai-question-pool".equals(thing.getTypeName())){ QuestionPool sourcePool = (QuestionPool) thing; // plan 'A' // QTI question pool import support is being added to samigo // currently just use this. // plan 'B' is to use QTIService to import items then add them // to a pool like Zach did in the old brute force version... a // rough version of which is seen below. QuestionPoolService qps = new QuestionPoolService(); QuestionPoolFacade destinationPool = new QuestionPoolFacade(); destinationPool.setOwnerId(SessionManager.getCurrentSessionUserId()); destinationPool.setTitle(sourcePool.getTitle()); destinationPool.setDescription(sourcePool.getDescription()); QuestionPoolFacade savedPool = qps.savePool(destinationPool); /* for (Iterator i = questionItems.iterator();i.hasNext();) { ItemFacade item = QTIService.createImportedItem(Document document, int qtiVersion); qps.addItemToPool(item.getItemIdString(),savedPool.getQuestionPoolId()); } */ } } }