private void executeCommand(
      CreateEntity command,
      CreateResult result,
      Authentication authentication,
      AsyncCallback<CreateResult> callback) {
    if (ProjectDTO.ENTITY_NAME.equals(command.getEntityName())) {
      exception(command, callback != null);

    } else if (PersonalEventDTO.ENTITY_NAME.equals(command.getEntityName())) {
      insertPersonalEvent(command, callback);

    } else if (ProjectReportDTO.ENTITY_NAME.equals(command.getEntityName())) {
      exception(command, callback != null);

    } else if (ReminderDTO.ENTITY_NAME.equals(command.getEntityName())) {
      if (result != null) {
        reminderAsyncDAO.saveOrUpdate((ReminderDTO) result.getEntity());
      } else {
        insertReminder(command, authentication, callback);
      }

    } else if (MonitoredPointDTO.ENTITY_NAME.equals(command.getEntityName())) {
      if (result != null) {
        monitoredPointAsyncDAO.saveOrUpdate((MonitoredPointDTO) result.getEntity());
      } else {
        insertMonitoredPoint(command, authentication, callback);
      }

    } else {
      exception(command, callback != null);
    }
  }
 private void exception(CreateEntity command, boolean throwException)
     throws UnavailableCommandException {
   if (throwException) {
     throw new UnavailableCommandException(
         "Creation of type '" + command.getEntityName() + "' is not supported yet.");
   }
 }