/**
   * Called from the table selection handler
   *
   * @param anamnesisCheck
   */
  @Override
  public void showDetails(AnamnesisCheckProxy anamnesisCheck) {

    Log.debug(anamnesisCheck.getId().toString());

    goTo(new AnamnesisCheckDetailsPlace(anamnesisCheck.stableId(), Operation.DETAILS));
  }
  private void init() {
    request = requests.anamnesisCheckRequest();

    if (anamnesisCheck == null) {
      AnamnesisCheckProxy anamnesisCheck = request.create(AnamnesisCheckProxy.class);
      this.anamnesisCheck = anamnesisCheck;
      view.setEditTitle(false);
    } else {
      // cannot be set via editor...
      view.setEditTitle(true);
    }

    //		GWT.log("$$$$$$$$$$$$$$$$ anamnesisCheck be
    // title="+anamnesisCheck.getAnamnesisCheckTitle().getText());
    //		GWT.log("$$$$$$$$$$$$$$$$ anamnesisCheck be sort oder="+anamnesisCheck.getSort_order());
    anamnesisCheckBefore = anamnesisCheck;

    Log.info("edit");

    Log.info("persist");

    request.persist().using(anamnesisCheck);
    editorDriver.edit(anamnesisCheck, request);

    Log.info("flush");
    //		editorDriver.flush();
    Log.debug("Create für: " + anamnesisCheck.getId());

    // manually update value fields... (no editor support)

    view.update(anamnesisCheck);

    initInsideTitle();
    if (place.getOperation() == Operation.EDIT) {
      getQuestionsByselected(anamnesisCheck.getAnamnesisCheckTitle());
    } else if (place.getOperation() == Operation.CREATE) {
      requests
          .anamnesisCheckTitleRequest()
          .findAnamnesisCheckTitle(Long.valueOf(place.getTitleId()))
          .fire(
              new Receiver<AnamnesisCheckTitleProxy>() {

                @Override
                public void onSuccess(AnamnesisCheckTitleProxy response) {
                  getQuestionsByselected(response);
                }
              });
    }
  }
 @Override
 public void cancelClicked() {
   if (this.place.getOperation() == Operation.EDIT)
     placeController.goTo(
         new AnamnesisCheckDetailsPlace(anamnesisCheck.stableId(), Operation.DETAILS));
   else placeController.goTo(new AnamnesisCheckPlace("AnamnesisCheckPlace!CANCEL"));
 }
  private void initPreviousQuestion(List<AnamnesisCheckProxy> anamnesisCheckList) {
    AnamnesisCheckProxy deleteAnamnesisCheckProxy = null;
    for (AnamnesisCheckProxy anamnesisCheckProxy : anamnesisCheckList) {
      if (anamnesisCheck.getId() != null
          && String.valueOf(anamnesisCheckProxy.getId())
              .equals(String.valueOf(anamnesisCheck.getId()))) {
        deleteAnamnesisCheckProxy = anamnesisCheckProxy;
      }
    }
    if (deleteAnamnesisCheckProxy != null) {
      anamnesisCheckList.remove(deleteAnamnesisCheckProxy);
    }
    view.setPreviousQuestionListBox(anamnesisCheckList);

    if (anamnesisCheck.getSort_order() != null
        && anamnesisCheck.getSort_order() > 1
        && anamnesisCheck.getAnamnesisCheckTitle() != null) {
      requests
          .anamnesisCheckRequest()
          .findPreviousAnamnesisCheck(
              anamnesisCheck.getSort_order(), anamnesisCheck.getAnamnesisCheckTitle())
          .fire(
              new Receiver<AnamnesisCheckProxy>() {

                @Override
                public void onSuccess(AnamnesisCheckProxy response) {
                  Log.info("inside success" + response);
                  if (response != null && response.getSort_order() != null) {
                    // Issue # 122 : Replace pull down with autocomplete.
                    // view.setSeletedPreviousQuestion(String.valueOf(response.getSort_order()));
                    view.setSeletedPreviousQuestion(response);
                    // Issue # 122 : Replace pull down with autocomplete.
                    Log.info("inside success if " + response);
                  }
                }
              });
    }
  }
  @SuppressWarnings("deprecation")
  @Override
  public void saveClicked() {

    Log.info("saveClicked");
    request = (AnamnesisCheckRequest) editorDriver.flush();
    anamnesisCheck = request.edit(anamnesisCheck);

    anamnesisCheck.setValue(view.getValue());

    Long selectedInsideTitle = -1L;
    if (view.getSelectedInsideTitle() != null
        && !view.getSelectedInsideTitle().equals("")
        && view.getSelectedInsideTitle().length() != 0) {
      selectedInsideTitle = Long.valueOf(view.getSelectedInsideTitle());
    }
    if (selectedInsideTitle != -1L) {
      requests
          .anamnesisCheckTitleRequest()
          .findAnamnesisCheckTitle(selectedInsideTitle)
          .fire(
              new Receiver<AnamnesisCheckTitleProxy>() {
                public void onFailure(ServerFailure error) {
                  Log.error(error.getMessage());
                }

                @Override
                public void onSuccess(AnamnesisCheckTitleProxy response) {

                  // GWT.log("$$$$$$$$$$$$$$$$$$$$ anamnesisCheck.getAnamnesisCheckTitle().getText()
                  // = "+anamnesisCheck.getAnamnesisCheckTitle().getText());
                  // GWT.log("$$$$$$$$$$$$$$$$$$$$ response.getText() = "+response.getText());

                  // if(anamnesisCheckTitleBefore != null &&
                  // anamnesisCheckTitleBefore.getId() ==
                  // response.getId()){
                  // isTitleChange = false ;
                  // }else{
                  // isTitleChange = true ;
                  // }
                  // GWT.log("$$$$$$$$$$$$$$$$$$$$ isTitleChange = "+isTitleChange);
                  anamnesisCheck.setAnamnesisCheckTitle(response);

                  // if(isTitleChange == true && place.getOperation()
                  // == Operation.EDIT){
                  // reSorting(anamnesisCheckTitleBefore,
                  // anamnesisCheck.getSort_order());
                  // }else{
                  // saveData();
                  // }

                  // save data
                  // Highlight onViolation
                  Log.info("Map Size: " + view.getAnamnesisCheckMap().size());
                  request.fire(
                      new OSCEReceiver<Void>(view.getAnamnesisCheckMap()) {
                        // E Highlight onViolation

                        public void onFailure(ServerFailure error) {
                          Log.error(error.getMessage());
                        }

                        // Highlight onViolation
                        /*@Override
                        public void onViolation(Set<Violation> errors) {
                        	Iterator<Violation> iter = errors
                        			.iterator();
                        	String message = "";
                        	while (iter.hasNext()) {
                        		message += iter.next().getMessage()
                        				+ "<br>";
                        	}
                        	Log.warn(" in AnamnesisCheck -" + message);

                        }*/
                        // E Highlight onViolation

                        @Override
                        public void onSuccess(Void response) {
                          Log.info("AnamnesisCheck successfully saved.");

                          save = true;

                          saveOrEditAnamnesisCheckTitleInSpportal(anamnesisCheck);
                          sortOderByPrevious();
                          // placeController.goTo(new
                          // AnamnesisCheckDetailsPlace(anamnesisCheck.stableId(),
                          // Operation.NEW));
                        }
                      });
                }
              });
    } else {
      Window.alert("Please choose a title!");
    }
  }
  @SuppressWarnings("deprecation")
  private void sortOderByPrevious() {

    int previousSortOder = 0;
    if (view.getSelectedPreviousQuestion() != null
        && !view.getSelectedPreviousQuestion().equals("")
        && view.getSelectedPreviousQuestion().length() != 0) {

      // System.out.println("inside if--"+view.getSelectedPreviousQuestion());
      // System.out.println("inside if--"+Integer.valueOf(view.getSelectedPreviousQuestion()));
      // TODO: If remove comment then null pointer exceptin occurs from server side. Need to check
      // in detail.
      /*previousSortOder = Integer.valueOf(view
      .getSelectedPreviousQuestion());*/

    }
    // GWT.log("@@@@@@@@@@@@@@@@@@anamnesisCheckBefore =
    // "+anamnesisCheckBefore.getAnamnesisCheckTitle().getText());
    if (place.getOperation() == Operation.EDIT
        && anamnesisCheckBefore != null
        && anamnesisCheck != null
        && anamnesisCheckBefore.getAnamnesisCheckTitle() != null
        && anamnesisCheck.getAnamnesisCheckTitle() != null
        && anamnesisCheckBefore.getAnamnesisCheckTitle().getId()
            == anamnesisCheck.getAnamnesisCheckTitle().getId()) {
      GWT.log("################call oderByPreviousAnamnesisCheck ");
      requests
          .anamnesisCheckRequest()
          .oderByPreviousAnamnesisCheck(previousSortOder)
          .using(anamnesisCheck)
          .fire(
              new Receiver<Void>() {

                @Override
                public void onSuccess(Void response) {
                  GWT.log(">>>>>>>>>>>>>>>>>>> oderByPreviousAnamnesisCheck success !");
                  placeController.goTo(
                      new AnamnesisCheckDetailsPlace(anamnesisCheck.stableId(), Operation.NEW));
                }
              });
    } else {
      GWT.log("################call insertAnamnesisCheck ");
      // System.out.println("sort order--"+previousSortOder);
      // System.out.println("id--"+anamnesisCheck.getId());

      requests
          .anamnesisCheckRequest()
          .insertAnamnesisCheck(previousSortOder)
          .using(anamnesisCheck)
          .fire(
              new Receiver<Void>() {

                @Override
                public void onSuccess(Void response) {
                  GWT.log(">>>>>>>>>>>>>>>>>>> insertAnamnesisCheck success !");
                  if (place.getOperation() == Operation.EDIT
                      && anamnesisCheckBefore != null
                      && anamnesisCheckBefore.getAnamnesisCheckTitle() != null
                      && anamnesisCheckBefore.getSort_order() != null) {

                    GWT.log(">>>>>>>>>>>>>>>>>>> reSorting call !");
                    requests
                        .anamnesisCheckRequest()
                        .reSorting(
                            anamnesisCheckBefore.getAnamnesisCheckTitle(),
                            anamnesisCheckBefore.getSort_order() + 1)
                        .fire(
                            new Receiver<Void>() {

                              @Override
                              public void onSuccess(Void response) {
                                GWT.log(">>>>>>>>>>>>>>>>>>> reSorting success !");
                                placeController.goTo(
                                    new AnamnesisCheckDetailsPlace(
                                        anamnesisCheck.stableId(), Operation.NEW));
                              }
                            });

                  } else {
                    placeController.goTo(
                        new AnamnesisCheckDetailsPlace(anamnesisCheck.stableId(), Operation.NEW));
                  }
                }
              });
    }
  }
 private void gotoDetailsPlace() {
   placeController.goTo(new AnamnesisCheckDetailsPlace(anamnesisCheck.stableId(), Operation.NEW));
 }