/* * DSS - Digital Signature Services * * Copyright (C) 2013 European Commission, Directorate-General Internal Market and Services (DG MARKT), B-1049 Bruxelles/Brussel * * Developed by: 2013 ARHS Developments S.A. (rue Nicolas Bové 2B, L-1253 Luxembourg) http://www.arhs-developments.com * * This file is part of the "DSS - Digital Signature Services" project. * * "DSS - Digital Signature Services" is free software: you can redistribute it and/or modify it under the terms of * the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the * License, or (at your option) any later version. * * DSS 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along with * "DSS - Digital Signature Services". If not, see <http://www.gnu.org/licenses/>. */ package eu.europa.ec.markt.dss.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Required; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.SqlParameterSource; import eu.europa.ec.markt.dss.model.Preference; import eu.europa.ec.markt.dss.model.PreferenceKey; /** * * TODO * * <p> * DISCLAIMER: Project owner DG-MARKT. * * @version $Revision: 1016 $ - $Date: 2011-06-17 15:30:45 +0200 (Fri, 17 Jun 2011) $ * @author <a href="mailto:dgmarkt.Project-DSS@arhs-developments.com">ARHS Developments</a> */ public class PreferencesJdbcDao implements PreferencesDao { /** * * @see RowMapper * * <p> * DISCLAIMER: Project owner DG-MARKT. * * @version $Revision: 1016 $ - $Date: 2011-06-17 15:30:45 +0200 (Fri, 17 Jun 2011) $ * @author <a href="mailto:dgmarkt.Project-DSS@arhs-developments.com">ARHS Developments</a> */ private class PreferenceRowMapper implements RowMapper<Preference> { /* * (non-Javadoc) * * @see org.springframework.jdbc.core.RowMapper#mapRow(java.sql.ResultSet, int) */ @Override public Preference mapRow(ResultSet rs, int row) throws SQLException { final Preference preference = new Preference(); preference.setKey(rs.getString(COLUMN_KEY)); preference.setValue(rs.getString(COLUMN_VALUE)); return preference; } } private static final String TABLE_NAME = "PREFERENCES"; private static final String COLUMN_KEY = "PREF_KEY"; private static final String COLUMN_VALUE = "PREF_VALUE"; /** * @see JdbcTemplate */ private JdbcTemplate jdbcTemplate; /** * @see NamedParameterJdbcTemplate */ private NamedParameterJdbcTemplate namedParameterJdbcTemplate; /* * (non-Javadoc) * * @see eu.europa.ec.markt.dss.dao.GenericDao#get(java.lang.Object) */ @Override public Preference get(PreferenceKey id) { final String query = "select * from " + TABLE_NAME + " where " + COLUMN_KEY + " = :key"; final SqlParameterSource namedParameters = new MapSqlParameterSource("key", id); return namedParameterJdbcTemplate.queryForObject(query, namedParameters, new PreferenceRowMapper()); } /* * (non-Javadoc) * * @see eu.europa.ec.markt.dss.dao.GenericDao#getAll() */ @Override public List<Preference> getAll() { final String query = "select * from " + TABLE_NAME; return jdbcTemplate.query(query, new PreferenceRowMapper()); } /** * Set the datasource * * @param dataSource The datasource */ @Required public void setDataSource(final DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); } /* * (non-Javadoc) * * @see eu.europa.ec.markt.dss.dao.GenericDao#update(java.lang.Object) */ @Override public void update(Preference entity) { final String query = "update " + TABLE_NAME + " set " + COLUMN_VALUE + " = :value where " + COLUMN_KEY + " = :key"; final Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("key", entity.getKey()); parameters.put("value", entity.getValue()); final SqlParameterSource namedParameters = new MapSqlParameterSource(parameters); namedParameterJdbcTemplate.update(query, namedParameters); } }