Package org.olat.ims.qti.export.helper

Source Code of org.olat.ims.qti.export.helper.ItemWithResponseStr

/**
* 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.
* <p>
*/

package org.olat.ims.qti.export.helper;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.dom4j.Element;
import org.olat.ims.qti.QTIResult;
import org.olat.ims.qti.QTIResultManager;


/**
* @author
*/

public class ItemWithResponseStr implements QTIItemObject{
  private boolean isEssay = true;
  private String itemIdent = null;
  private String itemTitle = null;
  private String itemMinValue = null;
  private String itemMaxValue = null;
  private String itemCutValue = null;
  private List responseColumnHeaders = new ArrayList(5);
  private List responseStrIdents = new ArrayList(5);
 
 
  /**
   * Constructor for ItemWithResponseLid.
   * @param el_item
   */
  public ItemWithResponseStr(Element el_item) {
    this.itemTitle = el_item.attributeValue("title");
    this.itemIdent = el_item.attributeValue("ident");
   
    List el_responseStrs = el_item.selectNodes(".//response_str");
    Element decvar = (Element) el_item.selectSingleNode(".//outcomes/decvar");

    if (decvar != null){
        this.itemMinValue = decvar.attributeValue("minvalue");
        this.itemMaxValue = decvar.attributeValue("maxvalue");
        this.itemCutValue = decvar.attributeValue("cutvalue");
    }
   
    int i = 1;
    for (Iterator itRespStr = el_responseStrs.iterator(); itRespStr.hasNext();) {
      Element el_respStr = (Element) itRespStr.next();
      responseStrIdents.add(el_respStr.attributeValue("ident"));
      Element render_fib = el_respStr.element("render_fib");
      if(render_fib != null){
        isEssay = (render_fib.attributeValue("rows") == null) ? false : true;
        responseColumnHeaders.add((isEssay ? "A" : "B") + i); // A -> Area, B -> Blank
      }
      else {
          responseColumnHeaders.add("unknownType");
      }
      i++;
    }
  }
 
  /**
   * @see org.olat.ims.qti.export.helper.QTIItemObject#getNumColumnHeaders()
   */
  public int getNumColumnHeaders(){
    return responseColumnHeaders.size()
  }
 
  /**
   * @see org.olat.ims.qti.export.helper.QTIItemObject#extractQTIResult(java.util.List)
   */
  public QTIResult extractQTIResult(List resultSet) {
    for (Iterator iter = resultSet.iterator(); iter.hasNext();) {
      QTIResult element = (QTIResult) iter.next();
      if(element.getItemIdent().equals(itemIdent)){
        resultSet.remove(element);
        return element;
      }
    }
    return null;
  }
 
  private void addTextAndTabs(List responseColumns, String s, int num){
    for (int i = 0; i < num; i++) {
      responseColumns.add(s);
   
  }
 
  /**
   *
   * @return itemTitle
   */
  public String getItemTitle() {
    return itemTitle;
  }

  public List getResponseColumnHeaders() {
    return responseColumnHeaders;
  }

  /**
   *
   * @see org.olat.ims.qti.export.helper.QTIItemObject#getResponseColumns(org.olat.ims.qti.QTIResult)
   */
  public List getResponseColumns(QTIResult qtiresult) {
    List responseColumns = new ArrayList();
    if (qtiresult == null){
      // item has not been choosen
      addTextAndTabs(responseColumns, "", getNumColumnHeaders());
    }else{
      String answer = qtiresult.getAnswer();
      if (answer.length() == 0) addTextAndTabs(responseColumns, ".", getNumColumnHeaders());
      else {
        Map answerMap = QTIResultManager.parseResponseStrAnswers(answer);
       
        for (Iterator iter = responseStrIdents.iterator(); iter.hasNext();) {
          String element = (String) iter.next();
          if (answerMap.containsKey(element)) {
            responseColumns.add(answerMap.get(element))
          } else {
            // should not happen
          }
        }
      } 
    }
   
    return responseColumns;
  }

  public TYPE getItemType() {
    return isEssay ? TYPE.A : TYPE.B; // A -> Area, B -> Blank
  }

 
  /**
   *
   * @see org.olat.ims.qti.export.helper.QTIItemObject#getResponseIdentifier()
   */
  public List getResponseIdentifier() {
    return responseStrIdents;
  }

  public List getResponseLabelMaterials() {
    return null;
  }

  /**
   *
   * @see org.olat.ims.qti.export.helper.QTIItemObject#getItemIdent()
   */
  public String getItemIdent() {
    return itemIdent;
  }

  public String getItemMinValue() {
    return itemMinValue;
  }

  public String getItemMaxValue() {
    return itemMaxValue;
  }

  public String getItemCutValue() {
    return itemCutValue;
  }

  public boolean hasPositionsOfResponses() {
    return false;
  }

  public String getPositionsOfResponses() {
    return null;
  }
   
}    



TOP

Related Classes of org.olat.ims.qti.export.helper.ItemWithResponseStr

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.