/*
* Copyright (c) 2014 Dennis Fischer.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0+
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors: Dennis Fischer
*/
package de.chaosfisch.uploader.persistence.dao;
import com.google.common.eventbus.EventBus;
import com.google.inject.Inject;
import de.chaosfisch.google.account.Account;
import de.chaosfisch.google.account.events.AccountAdded;
import de.chaosfisch.google.account.events.AccountRemoved;
import de.chaosfisch.google.account.events.AccountUpdated;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;
class AccountDaoImpl implements IAccountDao {
private final List<Account> accounts = new CopyOnWriteArrayList<>();
@Inject
private EventBus eventBus;
@Inject
private IPersistenceService persistenceService;
@Override
public List<Account> getAll() {
return accounts;
}
@Override
public Account get(final String id) {
for (final Account account : accounts) {
if (account.getId().equals(id)) {
return account;
}
}
return null;
}
@Override
public void insert(final Account account) {
account.setId(UUID.randomUUID().toString());
accounts.add(account);
persistenceService.saveToStorage();
eventBus.post(new AccountAdded(account));
}
@Override
public void update(final Account account) {
persistenceService.saveToStorage();
eventBus.post(new AccountUpdated(account));
}
@Override
public void delete(final Account account) {
accounts.remove(account);
persistenceService.saveToStorage();
eventBus.post(new AccountRemoved(account));
}
@Override
public void setAccounts(final List<Account> accounts) {
this.accounts.clear();
this.accounts.addAll(accounts);
}
@Override
public List<Account> getAccounts() {
return accounts;
}
}