예제 #1
0
  private void insertReminder(
      final CreateEntity command,
      final Authentication authentication,
      final AsyncCallback<CreateResult> callback) {
    final ReminderDTO reminder = buildReminderDTO(command.getProperties(), authentication);

    final RequestManager<CreateResult> requestManager =
        new RequestManager<CreateResult>(new CreateResult(reminder), callback);

    final int futureRequest = requestManager.prepareRequest();
    final RequestManager<ReminderDTO> objectRequestManager =
        new RequestManager<ReminderDTO>(
            reminder,
            new RequestManagerCallback<CreateResult, ReminderDTO>(requestManager) {

              @Override
              public void onRequestSuccess(ReminderDTO result) {
                reminderAsyncDAO.saveOrUpdate(
                    result,
                    new RequestManagerCallback<CreateResult, ReminderDTO>(
                        requestManager, futureRequest) {

                      @Override
                      public void onRequestSuccess(ReminderDTO result) {
                        // Reminder has been saved successfully.
                      }
                    });
              }
            });

    // Retrieves project.
    final Integer projectId = (Integer) command.getProperties().get(ReminderDTO.PROJECT_ID);
    projectAsyncDAO.get(
        projectId,
        new RequestManagerCallback<ReminderDTO, ProjectDTO>(objectRequestManager) {

          @Override
          public void onRequestSuccess(ProjectDTO result) {
            final Integer remindersListId = result.getRemindersList().getId();
            reminder.setParentListId(remindersListId);
          }
        });

    // Generates a negative ID
    reminderAsyncDAO.generateNegativeId(
        new RequestManagerCallback<ReminderDTO, Integer>(objectRequestManager) {

          @Override
          public void onRequestSuccess(Integer result) {
            reminder.setId(result);
          }
        });

    objectRequestManager.ready();
    requestManager.ready();
  }