Java tutorial
package tomekkup.helenos.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.SqlParameterSource; import org.springframework.stereotype.Component; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import tomekkup.helenos.ClusterConfiguration; /** * ******************************************************** * Copyright: 2012 Tomek Kuprowski * * License: GPLv2: http://www.gnu.org/licences/gpl.html * * @author Tomek Kuprowski (tomekkuprowski at gmail dot com) * ******************************************************* */ @Component("clusterConfigDao") public class ClusterConfigDao extends AbstractDao implements InitializingBean { private static final String HASTEXT_ERROR_MSG = "%s must be set in default.properties file"; private @Value("${default.host}") String defaultHost; private @Value("${default.cluster.name}") String defaultClusterName; public void setDefaultClusterName(String defaultClusterName) { this.defaultClusterName = defaultClusterName; } public void setDefaultHost(String defaultHost) { this.defaultHost = defaultHost; } public ClusterConfiguration get(String alias) { return jdbcTemplate.queryForObject(queriesProperties.getProperty("clusterconfig.get.by.alias"), new MapSqlParameterSource("alias", alias), new ClusterConfigurationMapper()); } public ClusterConfiguration getActive() { List<ClusterConfiguration> configuration = jdbcTemplate.query( queriesProperties.getProperty("clusterconfig.select.star.wa"), new MapSqlParameterSource("active", true), new ClusterConfigurationMapper()); //tutaj zrobic inaczej //jesli defaultConn nie jest pusty to dodaj config nadpisujac if (CollectionUtils.isEmpty(configuration)) { this.createDefaultConfiguration(); return this.getActive(); } return configuration.get(0); } public List<ClusterConfiguration> loadAll() { return jdbcTemplate.query(queriesProperties.getProperty("clusterconfig.select.star"), new MapSqlParameterSource(), new ClusterConfigurationMapper()); } public long getConnectionsCount() { return jdbcTemplate.queryForLong(queriesProperties.getProperty("clusterconfig.count"), new HashMap<String, Object>()); } private void createDefaultConfiguration() { jdbcTemplate.update(queriesProperties.getProperty("clusterconfig.insert"), prepareParameterSource(new ClusterConfiguration("default", defaultHost, defaultClusterName, true))); } private SqlParameterSource prepareParameterSource(ClusterConfiguration configuration) { return new MapSqlParameterSource(configuration.toParametersMap()); } public void store(ClusterConfiguration configuration) { if (configuration.isActive()) { jdbcTemplate.update(queriesProperties.getProperty("clusterconfig.update.all.active.false"), new MapSqlParameterSource()); } jdbcTemplate.update(queriesProperties.getProperty("clusterconfig.merge"), prepareParameterSource(configuration)); } public void delete(String alias) { jdbcTemplate.update(queriesProperties.getProperty("clusterconfig.delete"), new MapSqlParameterSource("alias", alias)); } @Override public void afterPropertiesSet() throws Exception { Assert.hasText(defaultHost, String.format(HASTEXT_ERROR_MSG, "default.host")); Assert.hasText(defaultClusterName, String.format(HASTEXT_ERROR_MSG, "default.cluster.name")); } private static final class ClusterConfigurationMapper implements RowMapper<ClusterConfiguration> { @Override public ClusterConfiguration mapRow(ResultSet rs, int rowNum) throws SQLException { ClusterConfiguration cc = new ClusterConfiguration(); cc.setAlias(rs.getString("ALIAS")); cc.setHosts(rs.getString("HOSTS")); cc.setClusterName(rs.getString("CLUSTERNAME")); cc.setActive(rs.getBoolean("ACTIVE")); return cc; } } }