/* * 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.uploader.template.Template; import de.chaosfisch.uploader.template.events.TemplateAdded; import de.chaosfisch.uploader.template.events.TemplateRemoved; import de.chaosfisch.uploader.template.events.TemplateUpdated; import java.util.List; import java.util.UUID; import java.util.concurrent.CopyOnWriteArrayList; class TemplateDaoImpl implements ITemplateDao { private final List<Template> templates = new CopyOnWriteArrayList<>(); @Inject private EventBus eventBus; @Inject private IPersistenceService persistenceService; @Override public List<Template> getAll() { return templates; } @Override public Template get(final String id) { for (final Template template : templates) { if (template.getId().equals(id)) { return template; } } return null; } @Override public void insert(final Template template) { template.setId(UUID.randomUUID().toString()); templates.add(template); persistenceService.saveToStorage(); eventBus.post(new TemplateAdded(template)); } @Override public void update(final Template template) { persistenceService.saveToStorage(); eventBus.post(new TemplateUpdated(template)); } @Override public void delete(final Template template) { templates.remove(template); persistenceService.saveToStorage(); eventBus.post(new TemplateRemoved(template)); } @Override public void setTemplates(final List<Template> templates) { this.templates.clear(); this.templates.addAll(templates); } @Override public List<Template> getTemplates() { return templates; } }