public void index(MainSessionController mainSessionCtrl, ComponentContext context)
     throws QuizzException {
   try {
     scc = new QuizzSessionController(mainSessionCtrl, context);
     Collection<QuestionContainerHeader> quizzes = scc.getAdminQuizzList();
     for (QuestionContainerHeader questionContainerHeader : quizzes) {
       scc.updateQuizzHeader(questionContainerHeader, questionContainerHeader.getPK().getId());
     }
   } catch (Exception e) {
     throw new QuizzException(
         "QuizzIndexer.index", QuizzException.WARNING, "Quizz.EX_CANNOT_UPDATE_QUIZZ_HEADER", e);
   }
 }
 /**
  * return a list of silverContent according to a list of publicationPK
  *
  * @param ids a list of publicationPK
  * @return a list of publicationDetail
  */
 private List getHeaders(List ids) {
   QuestionContainerHeader containerHeader = null;
   ArrayList headers = new ArrayList();
   try {
     ArrayList questionHeaders =
         (ArrayList) getQuestionBm().getQuestionContainerHeaders((ArrayList) ids);
     for (int i = 0; i < questionHeaders.size(); i++) {
       containerHeader = (QuestionContainerHeader) questionHeaders.get(i);
       containerHeader.setIconUrl("quizzSmall.gif");
       headers.add(containerHeader);
     }
   } catch (RemoteException e) {
     // skip unknown and ill formed id.
   }
   return headers;
 }
  public String getDestination(String objectId, HttpServletRequest req, HttpServletResponse res)
      throws Exception {
    QuestionContainerPK questionContainerPK = new QuestionContainerPK(objectId);
    QuestionContainerHeader quizz =
        getQuestionContainerBm().getQuestionContainerHeader(questionContainerPK);

    if (quizz != null) {
      String componentId = quizz.getInstanceId();

      SilverTrace.info(
          "quizz",
          "GoToQuizz.getDestination",
          "root.MSG_GEN_PARAM_VALUE",
          "quizz = " + quizz.getId() + "componentId = " + componentId);

      String gotoURL = URLManager.getURL(null, componentId) + quizz.getURL();

      return "goto=" + URLEncoder.encode(gotoURL, "UTF-8");
    }
    return null;
  }
  /**
   * Method declaration
   *
   * @param con
   * @param questionContainerHeader
   * @throws SQLException
   * @see
   */
  public static void updateQuestionContainerHeader(
      Connection con, QuestionContainerHeader questionContainerHeader) throws SQLException {
    SilverTrace.info(
        "questionContainer",
        "QuestionContainerDAO.updateQuestionContainerHeader()",
        "root.MSG_GEN_ENTER_METHOD",
        "questionContainerHeader = " + questionContainerHeader);

    String insertStatement =
        "update "
            + questionContainerHeader.getPK().getTableName()
            + " set qcTitle = ?,"
            + " qcDescription = ?,"
            + " qcComment = ?,"
            + " qcBeginDate = ?,"
            + " qcEndDate = ?,"
            + " qcNbVoters = ?,"
            + " qcNbQuestionsPage = ?,"
            + " qcNbMaxParticipations = ?,"
            + " qcNbTriesBeforeSolution = ?,"
            + " qcMaxTime = ?, "
            + " instanceId = ?, "
            + " anonymous = ?"
            + " where qcId = ?";

    PreparedStatement prepStmt = null;

    try {
      prepStmt = con.prepareStatement(insertStatement);
      prepStmt.setString(1, questionContainerHeader.getTitle());
      prepStmt.setString(2, questionContainerHeader.getDescription());
      prepStmt.setString(3, questionContainerHeader.getComment());
      if (questionContainerHeader.getBeginDate() == null) {
        prepStmt.setString(4, nullBeginDate);
      } else {
        prepStmt.setString(4, questionContainerHeader.getBeginDate());
      }
      if (questionContainerHeader.getEndDate() == null) {
        prepStmt.setString(5, nullEndDate);
      } else {
        prepStmt.setString(5, questionContainerHeader.getEndDate());
      }
      prepStmt.setInt(6, questionContainerHeader.getNbVoters());
      prepStmt.setInt(7, questionContainerHeader.getNbQuestionsPerPage());
      prepStmt.setInt(8, questionContainerHeader.getNbMaxParticipations());
      prepStmt.setInt(9, questionContainerHeader.getNbParticipationsBeforeSolution());
      prepStmt.setInt(10, questionContainerHeader.getMaxTime());
      prepStmt.setString(11, questionContainerHeader.getPK().getComponentName());
      if (questionContainerHeader.isAnonymous()) {
        prepStmt.setInt(12, 1);
      } else {
        prepStmt.setInt(12, 0);
      }
      prepStmt.setInt(13, Integer.parseInt(questionContainerHeader.getPK().getId()));
      prepStmt.executeUpdate();
    } finally {
      DBUtil.close(prepStmt);
    }
  }
  /**
   * Method declaration
   *
   * @param con
   * @param questionContainerHeader
   * @return
   * @throws SQLException
   * @see
   */
  public static QuestionContainerPK createQuestionContainerHeader(
      Connection con, QuestionContainerHeader questionContainerHeader) throws SQLException {
    SilverTrace.info(
        "questionContainer",
        "QuestionContainerDAO.createQuestionContainerHeader()",
        "root.MSG_GEN_ENTER_METHOD",
        "questionContainerHeader = " + questionContainerHeader);
    int newId = 0;

    String insertStatement =
        "insert into "
            + questionContainerHeader.getPK().getTableName()
            + " values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";

    try {
      /* Retrieve next sequence identifier */
      newId = DBUtil.getNextId(questionContainerHeader.getPK().getTableName(), "qcId");
    } catch (Exception e) {
      throw new QuestionContainerRuntimeException(
          "QuestionContainerDAO.createQuestionContainerHeader()",
          SilverpeasRuntimeException.ERROR,
          "root.EX_GET_NEXTID_FAILED",
          e);
    }

    QuestionContainerPK questionContainerPK = questionContainerHeader.getPK();

    questionContainerPK.setId(Integer.toString(newId));

    PreparedStatement prepStmt = null;

    try {
      prepStmt = con.prepareStatement(insertStatement);
      prepStmt.setInt(1, newId);
      prepStmt.setString(2, questionContainerHeader.getTitle());
      prepStmt.setString(3, questionContainerHeader.getDescription());
      prepStmt.setString(4, questionContainerHeader.getComment());
      prepStmt.setString(5, questionContainerHeader.getCreatorId());
      prepStmt.setString(6, formatter.format(new java.util.Date()));
      if (questionContainerHeader.getBeginDate() == null) {
        prepStmt.setString(7, nullBeginDate);
      } else {
        prepStmt.setString(7, questionContainerHeader.getBeginDate());
      }
      if ((questionContainerHeader.getEndDate() == null)
          || (questionContainerHeader.getEndDate().length() < 10)) {
        prepStmt.setString(8, nullEndDate);
      } else {
        prepStmt.setString(8, questionContainerHeader.getEndDate());
      }
      prepStmt.setInt(9, 0);
      prepStmt.setInt(10, 0);
      prepStmt.setInt(11, questionContainerHeader.getNbQuestionsPerPage());
      prepStmt.setInt(12, questionContainerHeader.getNbMaxParticipations());
      prepStmt.setInt(13, questionContainerHeader.getNbParticipationsBeforeSolution());
      prepStmt.setInt(14, questionContainerHeader.getMaxTime());
      prepStmt.setString(15, questionContainerHeader.getPK().getComponentName());
      if (questionContainerHeader.isAnonymous()) {
        prepStmt.setInt(16, 1);
      } else {
        prepStmt.setInt(16, 0);
      }

      prepStmt.executeUpdate();
    } finally {
      DBUtil.close(prepStmt);
    }
    return questionContainerPK;
  }