public void syncQuestions(JSONArray questionResultArray)
      throws AuthenticationException, ParseException, OperationCanceledException,
          AuthenticatorException, JSONException, IOException, RemoteException {

    // JSONArray questionsToUpload = new JSONArray();
    ArrayList<JSONObject> questionsToAddToDB = new ArrayList<JSONObject>();
    // Log.d("sync", questionResultArray.toString());
    Uri uri = BackendContentProvider.CONTENT_QUESTIONS;

    Cursor questionsCursor;

    questionsCursor = contentProviderClient.query(uri, null, null, null, null);
    Log.d("sync", "uri");
    idColumn = questionsCursor.getColumnIndex(QuestionsEntry.COLUMN_BACKEND_ID);
    int localIdColumn = questionsCursor.getColumnIndex(QuestionsEntry.COLUMN_BACKEND_ID);

    //			questionColumn = questionsCursor.getColumnIndex(QuestionsEntry.COLUMN_QUESTION);
    //			dateColumn = questionsCursor.getColumnIndex(QuestionsEntry.COLUMN_DATE);
    //			titleColumn = questionsCursor.getColumnIndex(QuestionsEntry.COLUMN_TITLE);
    //			answerIdColumn = questionsCursor.getColumnIndex(QuestionsEntry.COLUMN_ANSWER_ID);
    //			answererIdColumn = questionsCursor.getColumnIndex(QuestionsEntry.COLUMN_ANSWERER_ID);
    //			isPrivateColumn = questionsCursor.getColumnIndex(QuestionsEntry.COLUMN_IS_PRIVATE);
    //			askerIdColumn = questionsCursor.getColumnIndex(QuestionsEntry.COLUMN_ASKER_ID);
    //			questionStateColumn = questionsCursor.getColumnIndex(QuestionsEntry.COLUMN_QUESTIONSTATE);

    questionsCursor.moveToFirst();

    for (int i = 0; i < questionResultArray.length(); i++) {
      questionsToAddToDB.add(questionResultArray.getJSONObject(i));
    }

    while (!questionsCursor.isAfterLast()) {

      JSONObject serverQuestion = null;
      boolean questionFoundInResult = false;

      for (int i = 0; i < questionsToAddToDB.size(); i++) {

        serverQuestion = questionsToAddToDB.get(i);

        if (SyncHelper.getIdFromURI(serverQuestion.getString("Id"))
            == (questionsCursor.getInt(idColumn))) {
          questionFoundInResult = true;
          questionsToAddToDB.remove(i);

          if (SyncHelper.isServerObjectNewer(serverQuestion, questionsCursor)) {
            updateQuestion(serverQuestion, questionsCursor.getInt(localIdColumn));
          }
          break;
        }
      }
      if (!questionFoundInResult) {

        String deleteUri = uri + "/" + questionsCursor.getInt(localIdColumn);
        questionsCursor.moveToNext();
        contentProviderClient.delete(Uri.parse(deleteUri), null, null);
      }
      questionsCursor.moveToNext();
    }

    questionsCursor.close();

    for (int i = 0; i < questionsToAddToDB.size(); i++) {
      addQuestionToDb(questionsToAddToDB.get(i));
    }
  }