public void save(Answersheet answersheet) {

    int answersheetId = answersheet.getAnswersheetId();
    String name = answersheet.getAnswersheetName();
    int paperId = answersheet.getPaper().getPaperId();
    int bpId = answersheet.getBpartner().getBpartnerId();
    Date date = answersheet.getDate();
    Date start = answersheet.getStartTime();
    Date finish = answersheet.getFinishTime();

    if (answersheetId != 0) {
      dao.update(answersheetId, name, paperId, bpId, date, start, finish);

      List<Integer> auditorIds = answersheet.getAuditorIds();
      answersheetAuditorDao.delete(answersheetId);
      answersheetAuditorDao.insert(answersheetId, auditorIds);

      List<String> attendances = answersheet.getAttendances();
      answersheetAttendanceDao.delete(answersheetId);
      answersheetAttendanceDao.insert(answersheetId, attendances);

    } else {

      create(answersheet);
    }
  }
  public void create(Answersheet answersheet) {
    String name = answersheet.getAnswersheetName();
    int paperId = answersheet.getPaper().getPaperId();
    int bpId = answersheet.getBpartner().getBpartnerId();
    Date date = answersheet.getDate();
    Date start = answersheet.getStartTime();
    Date finish = answersheet.getFinishTime();

    int id = dao.insert(name, paperId, bpId, date, start, finish);
    answersheet.setAnswersheetId(id);

    List<Integer> auditorIds = answersheet.getAuditorIds();
    answersheetAuditorDao.delete(id);
    answersheetAuditorDao.insert(id, auditorIds);

    List<String> attendances = answersheet.getAttendances();
    answersheetAttendanceDao.delete(id);
    answersheetAttendanceDao.insert(id, attendances);

    // create answer list of this answersheet
    Log.i(tag, "Create list of answers for Answersheet id " + id);
    Cursor cursor = paperQuestionDao.fetchByPaperId(paperId);
    while (cursor.moveToNext()) {
      int questionId = cursor.getInt(cursor.getColumnIndex(PaperQuestionDao.COLUMN_QUESTION_ID));
      Answer answer = new Answer(answersheet.getAnswersheetId(), questionId);
      answerBo.save(answer);
    }
    cursor.close();
  }
  public Answersheet getAnswersheet(int answersheetId) {
    // TODO Auto-generated method stub
    Answersheet answersheet = null;

    Cursor cursor = dao.fetchById(answersheetId);
    if (cursor.moveToNext()) {
      int id = cursor.getInt(cursor.getColumnIndex(AnswersheetDao.COLUMN_ID));
      String answersheetName = cursor.getString(cursor.getColumnIndex(AnswersheetDao.COLUMN_NAME));
      int paperId = cursor.getInt(cursor.getColumnIndex(AnswersheetDao.COLUMN_PAPER_ID));
      int bpartnerId = cursor.getInt(cursor.getColumnIndex(AnswersheetDao.COLUMN_BP_ID));
      String startTime = cursor.getString(cursor.getColumnIndex(AnswersheetDao.COLUMN_START));
      String finishTime = cursor.getString(cursor.getColumnIndex(AnswersheetDao.COLUMN_FINISH));

      List<Integer> auditorIds = new ArrayList<Integer>();
      Cursor cursorX = answersheetAuditorDao.fetchById(answersheetId);
      while (cursorX.moveToNext()) {
        int auditorId =
            cursorX.getInt(cursorX.getColumnIndex(AnswersheetAuditorDao.COLUMN_AUDITOR_ID));
        auditorIds.add(auditorId);
      }
      cursorX.close();

      List<String> attendances = new ArrayList<String>();
      Cursor cursorY = answersheetAttendanceDao.fetchById(answersheetId);
      while (cursorY.moveToNext()) {
        String attendance =
            cursorY.getString(
                cursorY.getColumnIndex(AnswersheetAttendanceDao.COLUMN_ATTENDANCE_NAME));
        attendances.add(attendance);
      }
      cursorY.close();

      answersheet = new Answersheet();
      answersheet.setAnswersheetId(id);
      answersheet.setAnswersheetName(answersheetName);
      answersheet.setPaper(paperBo.getPaper(paperId));
      answersheet.setBpartner(bpartnerBo.getBPartner(bpartnerId));
      answersheet.setStartTime(new Date(startTime));
      answersheet.setFinishTime(new Date(finishTime));
      answersheet.setAuditorIds(auditorIds);
      answersheet.setAttendances(attendances);
    }
    cursor.close();
    return answersheet;
  }