package com.clouck.service; import java.util.Collection; import java.util.List; import org.apache.commons.lang3.Validate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.clouck.model.Account; import com.clouck.repository.AccountDao; import com.google.common.base.Optional; import com.google.common.collect.Lists; @Service public class AccountServiceImpl implements AccountService { private static final Logger log = LoggerFactory.getLogger(AccountServiceImpl.class); @Autowired private AwsService awsService; @Autowired private AccountDao accountDao; @Override public List<Account> findNonDemoAccounts() { return accountDao.findNonDemoAccounts(); } @Override public Optional<Account> findDemoAccount() { return accountDao.findDemoAccount(); } @Override public Optional<Account> find(String accountId) { Validate.notNull(accountId); Account account = accountDao.findOne(accountId); if (account == null) { return Optional.absent(); } else { return Optional.of(account); } } @Override public Account findAccount(String accountId) { Validate.notNull(accountId); Account account = accountDao.findOne(accountId); if (account == null) { throw new IllegalArgumentException(String.format("invalid account id:%s", accountId)); } else { return account; } } @Override public List<Account> find(Collection<String> accountIds) { return Lists.newArrayList(accountDao.findAll(accountIds)); } @Override public void delete(String accountId) { accountDao.delete(accountId); } @Override public Account createAccount(String fullName, String accessKeyId, String secretAccessKey, String accountNumber) { Validate.noNullElements(new Object[]{fullName, accessKeyId, secretAccessKey, accountNumber}); Account account = new Account(); account.setName(fullName); account.setAccessKeyId(accessKeyId); account.setSecretAccessKey(secretAccessKey); account.setAccountNumber(accountNumber); return accountDao.save(account); } }