/** * OLAT - Online Learning and Training<br> * http://www.olat.org * <p> * Licensed under the Apache License, Version 2.0 (the "License"); <br> * you may not use this file except in compliance with the License.<br> * You may obtain a copy of the License at * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * Unless required by applicable law or agreed to in writing,<br> * software distributed under the License is distributed on an "AS IS" BASIS, <br> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> * See the License for the specific language governing permissions and <br> * limitations under the License. * <p> * Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> * University of Zurich, Switzerland. * <hr> * <a href="http://www.openolat.org"> * OpenOLAT - Online Learning and Training</a><br> * This file has been modified by the OpenOLAT community. Changes are licensed * under the Apache 2.0 license as the original file. */ package org.olat.ims.qti.editor.beecom.objects; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.dom4j.Element; import org.olat.core.util.CodeHelper; import org.olat.ims.qti.editor.QTIEditHelper; /** * @author rkulow * */ public class Assessment implements QTIObject { // Assesment Attributes private String ident = ""; // required, max 256 chars private String title = ""; // optional, max 256 chars private String xml_lang = null; // optional, max 32 chars // Elements private QTIObject qticomment = null; // occurs 0 ore 1 time private QTIObject duration = null; // occurs 0 ore 1 time private String objectives = null; // occurs 0 to many, 1st if available is processed private List rubrics = new ArrayList(); // occurs 0 to many private List assessmentcontrols = new ArrayList();// occurs 0 to many private QTIObject presentation_material = null; // occurs 0 to 1 time private OutcomesProcessing outcomes_processing = null; // ? private Metadata metadata = new Metadata(); // occurs 0 to 1 time private List assessfeedbacks = new ArrayList(); // occurs 0 to many private SelectionOrdering selection_ordering; private QTIObject reference = null; //occurs 0 to 1 time private List<Section> sections = new ArrayList<Section>(); // occurs 0 to 1 time ( sections and section_references) private List<Item> items = new ArrayList<Item>(); private boolean inheritControls = false; public Assessment() { setIdent(String.valueOf(CodeHelper.getRAMUniqueID())); setTitle("New QTI Document"); getAssessmentcontrols().add(new Control()); setSelection_ordering(new SelectionOrdering()); } public void addToElement(Element root) { Element assessment = root.addElement("assessment"); assessment.addAttribute("ident",ident); assessment.addAttribute("title",title); // DURATION QTIObject obj_duration = this.getDuration(); if(obj_duration != null) { obj_duration.addToElement(assessment); } // METADATA QTIObject meta = this.getMetadata(); if(meta != null) { meta.addToElement(assessment); } // OBJECTIVES QTIEditHelper.addObjectives(assessment, objectives); // CONTROL if (isInheritControls()) { for(Iterator i=this.assessmentcontrols.iterator();i.hasNext();) { QTIObject obj = (QTIObject)i.next(); obj.addToElement(assessment); } } // OUTCOMES PROCESSING QTIObject obj_outcomes_processing = this.getOutcomes_processing(); if(obj_outcomes_processing != null) { obj_outcomes_processing.addToElement(assessment); } //SELECTION ORDERING SelectionOrdering selectionOrdering = this.getSelection_ordering(); if(selectionOrdering!=null) { selectionOrdering.addToElement(assessment); } // SECTIONS for(Iterator i= this.sections.iterator(); i.hasNext();) { QTIObject obj = (QTIObject)i.next(); if(obj!=null) { obj.addToElement(assessment); } } // ITEMS for(Iterator i= this.items.iterator(); i.hasNext();) { QTIObject obj = (QTIObject)i.next(); if(obj!=null) { obj.addToElement(assessment); } } } /** * Returns the ident. * @return String */ public String getIdent() { return ident; } /** * Returns the title. * @return String */ public String getTitle() { return title; } /** * Sets the ident. * @param ident The ident to set */ public void setIdent(String ident) { this.ident = ident; } /** * Sets the title. * @param title The title to set */ public void setTitle(String title) { this.title = title; } /** * Returns the sections. * @return List */ public List<Section> getSections() { return sections; } /** * Sets the sections. * @param sections The sections to set */ public void setSections(List<Section> sections) { this.sections = sections; } /** * Returns the assessmentcontrols. * @return Switches */ public List getAssessmentcontrols() { return assessmentcontrols; } /** * Sets the assessmentcontrols. * @param assessmentcontrols The assessmentcontrols to set */ public void setAssessmentcontrols(List assessmentcontrols) { this.assessmentcontrols = assessmentcontrols; } /** * Returns the assessfeedbacks. * @return List */ public List getAssessfeedbacks() { return assessfeedbacks; } /** * Returns the assessproc_extension. * @return QTIObject */ public Metadata getMetadata() { return metadata; } /** * Returns the objectives. * @return List */ public String getObjectives() { return objectives; } /** * Returns the outcomes_processing. * @return OutcomesProcessing */ public OutcomesProcessing getOutcomes_processing() { return outcomes_processing; } /** * Returns the presentation_material. * @return QTIObject */ public QTIObject getPresentation_material() { return presentation_material; } /** * Returns the qticomment. * @return QTIObject */ public QTIObject getQticomment() { return qticomment; } /** * Returns the reference. * @return QTIObject */ public QTIObject getReference() { return reference; } /** * Returns the rubrics. * @return List */ public List getRubrics() { return rubrics; } /** * Returns the selection_ordering. * @return QTIObject */ public SelectionOrdering getSelection_ordering() { return selection_ordering; } /** * Returns the xml_lang. * @return String */ public String getXml_lang() { return xml_lang; } /** * Sets the assessfeedbacks. * @param assessfeedbacks The assessfeedbacks to set */ public void setAssessfeedbacks(List assessfeedbacks) { this.assessfeedbacks = assessfeedbacks; } /** * Sets the assessproc_extension. * @param assessproc_extension The assessproc_extension to set */ public void setMetadata(Metadata metadata) { this.metadata = metadata; } /** * Sets the objectives. * @param objectives The objectives to set */ public void setObjectives(String objectives) { this.objectives = objectives; } /** * Sets the outcomes_processing. * @param outcomes_processing The outcomes_processing to set */ public void setOutcomes_processing(OutcomesProcessing outcomes_processing) { this.outcomes_processing = outcomes_processing; } /** * Sets the presentation_material. * @param presentation_material The presentation_material to set */ public void setPresentation_material(QTIObject presentation_material) { this.presentation_material = presentation_material; } /** * Sets the qticomment. * @param qticomment The qticomment to set */ public void setQticomment(QTIObject qticomment) { this.qticomment = qticomment; } /** * Sets the reference. * @param reference The reference to set */ public void setReference(QTIObject reference) { this.reference = reference; } /** * Sets the rubrics. * @param rubrics The rubrics to set */ public void setRubrics(List rubrics) { this.rubrics = rubrics; } /** * Sets the selection_ordering. * @param selection_ordering The selection_ordering to set */ public void setSelection_ordering(SelectionOrdering selection_ordering) { this.selection_ordering = selection_ordering; } /** * Sets the xml_lang. * @param xml_lang The xml_lang to set */ public void setXml_lang(String xml_lang) { this.xml_lang = xml_lang; } /** * Returns the items. * @return List */ public List getItems() { return items; } /** * Sets the items. * @param items The items to set */ public void setItems(List items) { this.items = items; } /** * @return */ public boolean isInheritControls() { return inheritControls; } /** * @param b */ public void setInheritControls(boolean b) { inheritControls = b; } /** * Sets the duration. * @param duration The duration to set */ public void setDuration(QTIObject duration) { this.duration = duration; } /** * Returns the duration. * @return QTIObject */ public QTIObject getDuration() { return duration; } /** * Checks if this assessment contains any questions of type 'essay' * @return */ public boolean containsEssayQuestions(){ for(Iterator i= this.sections.iterator(); i.hasNext();) { Section section = (Section)i.next(); if(section != null && section.containsEssayQuestions()) { return true; } } return false; } }