コード例 #1
0
  public Expense bindExpense(ExpenseDTO dto) throws ServiceException, ServiceProviderException {
    Expense expense = new Expense();
    Currency currency = null;
    Currency originalCurrency = null;
    Category category = null;
    Beneficiary beneficiary = null;
    Account account = null;
    Plan plan = null;

    // TODO: This all to CommonBinder!

    category = getCategory(dto.getCategoryAbbr());
    account = getAccount(dto.getSrcAccountNo());

    if (account == null) {
      logger.error("Account [" + dto.getSrcAccountNo() + "] is not in database");
      throw new ServiceProviderException(
          "Account [" + dto.getSrcAccountNo() + "] is not in database");
    }

    Date expDate = null;

    if (dto.getDate() != null) {
      expDate = dto.getDate();

    } else {
      expDate = new Date();
    }
    plan = facade.getCurrentAccountPlan(expDate, dto.getSrcAccountNo());

    if (plan == null) {
      logger.error("Plan must be defined for date " + expDate);
      throw new ServiceProviderException("Plan must be defined for date " + expDate);
    }

    if (dto.getBeneficiaryInitials() != null && !dto.getBeneficiaryInitials().equals("")) {
      beneficiary = facade.getBeneficiaryByInitials(dto.getBeneficiaryInitials());

    } else {
      logger.error("Beneficiary initials cannot be null nor an empty string");
      throw new ServiceProviderException("Beneficiary initials cannot be null nor an empty string");
    }

    if (beneficiary == null) {
      logger.error("Beneficiary [" + dto.getBeneficiaryInitials() + "] is not in database");
      throw new ServiceProviderException(
          "Beneficiary [" + dto.getBeneficiaryInitials() + "] is not in database");
    }

    currency = account.getCurrency();
    originalCurrency = getOriginalCurrency(dto.getOriginalCurrencyISO(), account);

    expense.setAmount(getAmount(dto.getAmount().doubleValue()));
    expense.setOriginalAmount(
        getOriginalAmount(dto.getOriginalAmount()) != 0
            ? dto.getOriginalAmount()
            : dto.getAmount().doubleValue());
    expense.setCleared(dto.isCleared());
    expense.setRefundable(dto.isRefundable());
    expense.setCurrency(currency);
    expense.setOriginalCurrency(originalCurrency);
    expense.setCategory(category);
    expense.setSrcAccount(account);
    expense.setBeneficiary(beneficiary);
    expense.setPlan(plan);
    expense.setDate(expDate);
    expense.setLocation(dto.getLocation());
    expense.setDescription(dto.getDescription());

    return expense;
  }