AccountService.java
- package de.japrost.jabudget.service;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Optional;
- import de.japrost.jabudget.domain.DomainException;
- import de.japrost.jabudget.domain.DomainFailure;
- import de.japrost.jabudget.domain.account.Account;
- import de.japrost.jabudget.domain.account.Entry;
- import de.japrost.jabudget.repository.AccountRepository;
- /**
- * Business service for {@link Account}s.
- */
- public class AccountService {
- private final AccountRepository accountRepository;
- /**
- * Initialize with all dependencies.
- *
- * @param accountRepository the {@link AccountRepository} to use.
- */
- public AccountService(final AccountRepository accountRepository) {
- this.accountRepository = accountRepository;
- }
- /**
- * Create a new {@link Account}.
- *
- * @param account the Account to be created
- * @return the new Account.
- * @throws DomainException when the Account already exists.
- */
- public Account create(final Account account) throws DomainException {
- // TODO the service creates the ID. Do not use create to import an existing account (e.g. created in an offline application).
- return accountRepository.create(account);
- }
- /**
- * Update an existing {@link Account}.
- *
- * @param account the Account to be updated
- * @return the updated Account.
- * @throws DomainException when the Account does not exist.
- */
- public Account update(final Account account) throws DomainException {
- return accountRepository.update(account);
- }
- /**
- * Retrieve all accounts.
- *
- * @return all available accounts.
- */
- public List<Account> retrieveAll() {
- return new ArrayList<>(accountRepository.findAll());
- }
- /**
- * Retrieve a single {@link Account} by its id.
- *
- * @param id the id of the {@link Account}.
- * @return the {@link Account} with the id. An empty {@link Optional} if no {@link Account} is available for the given
- * id.
- */
- public Optional<Account> retrieveById(final String id) {
- return accountRepository.findById(id);
- }
- /**
- * Delete a single {@link Account} by its id.
- *
- * @param id of the {@link Account} to delete.
- * @return {@link Boolean#TRUE} if the account is removed after this operation.
- */
- public Boolean erase(final String id) {
- return accountRepository.delete(id);
- }
- /**
- * Create a new {@link Entry} with the given values.
- *
- * @param entry the entry to create.
- * @return The entry as stored in the repository.
- * @throws DomainException with {@link DomainFailure#DUPLICATE_ENTITY} if the given entry already exists.
- * @throws DomainException with {@link DomainFailure#MISSING_ENTITY_REFERENCE} if the account for the entry does not exists.
- */
- public Entry create(final Entry entry) throws DomainException {
- // TODO who creates the Entry-Code.
- return accountRepository.create(entry);
- }
- }