Package org.olat.ims.qti.container

Examples of org.olat.ims.qti.container.AssessmentContext


  /**
   * @see org.olat.qti.process.Navigator#goToSection(int)
   */
  public void goToSection(int sectionPos) {
    clearInfo();
    AssessmentContext ac = getAssessmentContext();
    SectionContext sc = ac.getSectionContext(sectionPos);
    // check if section still open
    if (!ac.isOpen()) {
      getInfo().setError(QTIConstants.ERROR_ASSESSMENT_OUTOFTIME);
      getInfo().setRenderItems(false);
    } else if (!sc.isOpen()) {
      getInfo().setError(QTIConstants.ERROR_SECTION_OUTOFTIME);
      getInfo().setRenderItems(false);
    } else {
      getInfo().setStatus(QTIConstants.ASSESSMENT_RUNNING);
      getInfo().setMessage(QTIConstants.MESSAGE_SECTION_INFODEMANDED); //show section info (title and description)
      getInfo().setRenderItems(true);
      ac.setCurrentSectionContextPos(sectionPos);
      sc = ac.getCurrentSectionContext();
      startSection(sc);
    }
    getAssessmentInstance().persist();
  }
View Full Code Here


   * @see org.olat.qti.process.Navigator#goToItem(int, int)
   */
  public void goToItem(int sectionPos, int itemPos) {
    if (getInfo().getStatus() != QTIConstants.ASSESSMENT_RUNNING) throw new RuntimeException("assessment is NOT running yet or anymore");
    clearInfo();
    AssessmentContext ac = getAssessmentContext();
    SectionContext sc = ac.getSectionContext(sectionPos);
    ItemContext target = sc.getItemContext(itemPos);
    // check if targeted item is still open
   
    if (!ac.isOpen()) {
      getInfo().setError(QTIConstants.ERROR_ASSESSMENT_OUTOFTIME);
      getInfo().setRenderItems(false)
    } else if (!sc.isOpen()) {
      getInfo().setError(QTIConstants.ERROR_SECTION_OUTOFTIME);
      getInfo().setRenderItems(false)
    } else if (!target.isOpen()) {
      getInfo().setError(QTIConstants.ERROR_ITEM_OUTOFTIME);
      getInfo().setRenderItems(false)
    else {
      getInfo().setStatus(QTIConstants.ASSESSMENT_RUNNING);
      getInfo().setRenderItems(true);
      ac.setCurrentSectionContextPos(sectionPos);
      sc.start();
      sc.setCurrentItemContextPos(itemPos);
      sc.getCurrentItemContext().start();
    }
    getAssessmentInstance().persist();
View Full Code Here

   * @see org.olat.qti.process.Navigator#goToSection(int)
   */
  public void goToSection(int sectionPos) {
    if (getInfo().getStatus() != QTIConstants.ASSESSMENT_RUNNING) throw new RuntimeException("assessment is NOT running yet or anymore");   
    clearInfo();
    AssessmentContext ac = getAssessmentContext();
    ac.setCurrentSectionContextPos(sectionPos);
    SectionContext sc = ac.getCurrentSectionContext();
    if (!ac.isOpen()) {
      getInfo().setError(QTIConstants.ERROR_ASSESSMENT_OUTOFTIME);
      getInfo().setRenderItems(false)
    } else if (!sc.isOpen()) {
      getInfo().setError(QTIConstants.ERROR_SECTION_OUTOFTIME);
      getInfo().setRenderItems(false)
View Full Code Here

  /**
   * starts the assessment: assuming we have at least one section with at least
   * one item
   */
  public void startAssessment() {
    AssessmentContext ac = getAssessmentContext();
    ac.setCurrentSectionContextPos(0);
    ac.getCurrentSectionContext().setCurrentItemContextPos(0);
    // start assessment, section, and item
    getAssessmentInstance().start();
    ac.getCurrentSectionContext().start();
    ac.getCurrentSectionContext().getCurrentItemContext().start();
    getInfo().setStatus(QTIConstants.ASSESSMENT_RUNNING);
    if (!ac.isOpen()) {
      getInfo().setError(QTIConstants.ERROR_ASSESSMENT_OUTOFTIME);
      getInfo().setRenderItems(false);
    } else {     
      getInfo().setMessage(QTIConstants.MESSAGE_ASSESSMENT_INFODEMANDED); //show test title and description first
      getInfo().setRenderItems(false); // do not show items as first step           
View Full Code Here

  /**
   * @see org.olat.ims.qti.navigator.Navigator#submitItems(org.olat.ims.qti.container.ItemsInput)
   */
  public void submitItems(ItemsInput curitsinp) {
    clearInfo();
    AssessmentContext ac = getAssessmentContext();
    SectionContext sc = ac.getCurrentSectionContext();
    int st = submitOneItem(curitsinp);
    if (st != QTIConstants.ITEM_SUBMITTED) {
      // time expired or too many attempts-> display a message above the next
      // item or assessment-finished-text
      if (st == QTIConstants.ERROR_SUBMITTEDITEM_TOOMANYATTEMPTS) {
        throw new RuntimeException("import check failed: there was a maxattempts in a item, but mode is sequential/item");
      } else if (st == QTIConstants.ERROR_ASSESSMENT_OUTOFTIME) {
        getInfo().setError(st);
        getInfo().setRenderItems(false);
      } else if (st == QTIConstants.ERROR_SUBMITTEDITEM_OUTOFTIME) {
        getInfo().setError(st);
        getInfo().setRenderItems(true); // still continue to next item
      }
    } else { // ok, display feedback
      ItemContext itc = getAssessmentContext().getCurrentSectionContext().getCurrentItemContext();
      Output outp = itc.getOutput();
      if (outp != null) getInfo().setCurrentOutput(outp);
      // check on item feedback
      if (itc.isFeedback()) { // feedback allowed
        getInfo().setFeedback(itc.getOutput().hasItem_Responses());
      }
      getInfo().setMessage(QTIConstants.MESSAGE_ITEM_SUBMITTED);
      getInfo().setRenderItems(true);
    }

    // find next item
    int itpos = sc.getCurrentItemContextPos();
    if (itpos < sc.getItemContextCount() - 1 && sc.isOpen()) {
      //there are still further items in the current section
      sc.setCurrentItemContextPos(++itpos);
      sc.getCurrentItemContext().start();
    } else { // fetch next section     
      if (!sc.isOpen()) {
        getInfo().setError(QTIConstants.ERROR_SECTION_OUTOFTIME);
        getInfo().setRenderItems(true);
      }
      ac.getCurrentSectionContext().sectionWasSubmitted();

      int secPos = ac.getCurrentSectionContextPos();
      int secPosMax = ac.getSectionContextCount() - 1;

      if (!ac.isOpen()) {
        getInfo().setError(QTIConstants.ERROR_ASSESSMENT_OUTOFTIME);
        getInfo().setRenderItems(false);
        submitAssessment();
      } else if (secPos == secPosMax) submitAssessment();
      else {
        while (secPos < secPosMax) { // there are still further section(s)
          secPos++;
          if (ac.getSectionContext(secPos).getItemContextCount() != 0) break;
        }

        if (secPos == secPosMax && ac.getSectionContext(secPos).getItemContextCount() == 0) {
          // reached last section but section is empty -> finish assessment
          submitAssessment();
        } else {
          ac.setCurrentSectionContextPos(secPos);
          ac.getCurrentSectionContext().setCurrentItemContextPos(0);
          ac.getCurrentSectionContext().start();
          ac.getCurrentSectionContext().getCurrentItemContext().start();
                   
          getInfo().setRenderItems(false);//since new section starts, show next the section title and description
        }
      }
    }
View Full Code Here

  /**
   * @see org.olat.ims.qti.navigator.Navigator#goToItem(int, int)
   */
  public void goToItem(int sectionPos, int itemPos) {     
    AssessmentContext ac = getAssessmentContext();
    ac.setCurrentSectionContextPos(sectionPos);
    SectionContext sc = ac.getCurrentSectionContext();
    sc.setCurrentItemContextPos(itemPos);
    getInfo().setRenderItems(true);
    getInfo().setMessage(QTIConstants.MESSAGE_NONE);
  }
View Full Code Here

  /**
   * @see org.olat.ims.qti.navigator.Navigator#goToSection(int)
   */
  public void goToSection(int sectionPos) {   
    AssessmentContext ac = getAssessmentContext();
    ac.setCurrentSectionContextPos(sectionPos);
    getInfo().setMessage(QTIConstants.MESSAGE_SECTION_INFODEMANDED);
  }
View Full Code Here

    int cnt = curitsinp.getItemCount();
    if (cnt == 0) throw new RuntimeException("program bug: not even one iteminput in the answer");
    if (cnt > 1) throw new RuntimeException("may only submit 1 item");
    ItemInput itemInput = (ItemInput) curitsinp.getItemInputIterator().next();
    String ident = itemInput.getIdent();
    AssessmentContext ac = getAssessmentContext();
    SectionContext sc = ac.getCurrentSectionContext();
    ItemContext it = sc.getCurrentItemContext();
    ItemContext ict = sc.getItemContext(ident);
    if (ict == null) throw new RuntimeException("submitted item id ("+ident+")not found in xml");
    if (ict != it) throw new RuntimeException("answering to a non-current item");
    if (!ac.isOpen()) {
      // assessment must also be open (=on time)
      return QTIConstants.ERROR_ASSESSMENT_OUTOFTIME;
    }
    if (!sc.onTime()) {
      // section of the current item must also be open (=on time)
View Full Code Here

  public int submitMultipleItems(ItemsInput curitsinp) {
    // = submit a whole section at once
    if (info.getStatus() != QTIConstants.ASSESSMENT_RUNNING) throw new RuntimeException("assessment is NOT running yet or anymore");
    int cnt = curitsinp.getItemCount();
    if (cnt == 0) throw new RuntimeException("bug: not even one iteminput in the answer");
    AssessmentContext ac = getAssessmentContext();
    SectionContext sc = ac.getCurrentSectionContext();

    if (!ac.isOpen())
      return QTIConstants.ERROR_ASSESSMENT_OUTOFTIME;
    if (!sc.isOpen())
      return QTIConstants.ERROR_SUBMITTEDSECTION_OUTOFTIME;

    int sectionResult = QTIConstants.SECTION_SUBMITTED;
View Full Code Here

TOP

Related Classes of org.olat.ims.qti.container.AssessmentContext

Copyright © 2018 www.massapicom. 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.