/* * Copyright (C) 2011 4th Line GmbH, Switzerland * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.fourthline.konto.server.service; import org.fourthline.konto.client.service.CurrencyService; import org.seamless.gwt.server.HibernateRemoteServiceServlet; import org.fourthline.konto.server.dao.CurrencyDAO; import org.fourthline.konto.server.download.CurrencyDownloader; import org.fourthline.konto.server.download.YahooCurrencyDownloader; import org.fourthline.konto.shared.entity.CurrencyPair; import org.fourthline.konto.shared.entity.MonetaryUnit; import org.seamless.gwt.validation.shared.Validatable; import org.seamless.gwt.validation.shared.ValidationError; import org.seamless.gwt.validation.shared.ValidationException; import java.util.Date; import java.util.List; /** * @author Christian Bauer */ public class CurrencyServiceImpl extends HibernateRemoteServiceServlet implements CurrencyService { @Override public List<MonetaryUnit> getMonetaryUnits() { CurrencyDAO dao = new CurrencyDAO(); return dao.getMonetaryUnits(); } @Override public void store(MonetaryUnit unit) throws ValidationException { List<ValidationError> errors = unit.validate(Validatable.GROUP_SERVER); if (errors.size() > 0) throw new ValidationException( "Can't persist monetary unit, validation errors.", errors ); CurrencyDAO currencyDAO = new CurrencyDAO(); currencyDAO.persist(unit); } @Override public boolean remove(MonetaryUnit unit) { CurrencyDAO currencyDAO = new CurrencyDAO(); return currencyDAO.delete(unit); } @Override public CurrencyPair getCurrencyPair(MonetaryUnit fromUnit, MonetaryUnit toUnit, Date forDay) { return new DefaultCurrencyProvider(new CurrencyDAO()) .getCurrencyPair(fromUnit, toUnit, forDay); } @Override public List<CurrencyPair> getCurrencyPairs(MonetaryUnit fromUnit, MonetaryUnit toUnit) { CurrencyDAO dao = new CurrencyDAO(); return dao.getCurrencyPairs(fromUnit.getCurrencyCode(), toUnit.getCurrencyCode()); } @Override public void store(CurrencyPair pair) throws ValidationException { List<ValidationError> errors = pair.validate(Validatable.GROUP_SERVER); if (errors.size() > 0) throw new ValidationException( "Can't persist exchange rate, validation errors.", errors ); CurrencyDAO currencyDAO = new CurrencyDAO(); currencyDAO.persist(pair); } @Override public void remove(CurrencyPair pair) { CurrencyDAO currencyDAO = new CurrencyDAO(); currencyDAO.delete(pair); } @Override public void removeAll(CurrencyPair pair) { CurrencyDAO currencyDAO = new CurrencyDAO(); currencyDAO.deleteAll(pair); } @Override public String download(CurrencyPair pair) { try { CurrencyDAO currencyDAO = new CurrencyDAO(); CurrencyDownloader downloader = new YahooCurrencyDownloader(currencyDAO); downloader.updateCurrencies(pair); return null; } catch (Exception ex) { return ex.getMessage(); } } }