/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.mifosplatform.useradministration.service;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import org.mifosplatform.infrastructure.core.domain.JdbcSupport;
import org.mifosplatform.infrastructure.core.service.RoutingDataSource;
import org.mifosplatform.useradministration.data.PasswordValidationPolicyData;
import org.mifosplatform.useradministration.exception.PasswordValidationPolicyNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Service;
@Service
public class PasswordValidationPolicyReadPlatformServiceImpl implements PasswordValidationPolicyReadPlatformService {
private final JdbcTemplate jdbcTemplate;
private final PasswordValidationPolicyMapper passwordValidationPolicyMapper;
@Autowired
public PasswordValidationPolicyReadPlatformServiceImpl(final RoutingDataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
this.passwordValidationPolicyMapper = new PasswordValidationPolicyMapper();
}
@Override
public Collection<PasswordValidationPolicyData> retrieveAll() {
final String sql = "select " + this.passwordValidationPolicyMapper.schema() + " order by pvp.id";
return this.jdbcTemplate.query(sql, this.passwordValidationPolicyMapper);
}
@Override
public PasswordValidationPolicyData retrieveActiveValidationPolicy() {
try {
final String sql = "select " + this.passwordValidationPolicyMapper.schema() + " where pvp.active = true";
return this.jdbcTemplate.queryForObject(sql, this.passwordValidationPolicyMapper);
} catch (final EmptyResultDataAccessException e) {
throw new PasswordValidationPolicyNotFoundException();
}
}
protected static final class PasswordValidationPolicyMapper implements RowMapper<PasswordValidationPolicyData> {
@Override
public PasswordValidationPolicyData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException {
final Long id = JdbcSupport.getLong(rs, "id");
final Boolean active = rs.getBoolean("active");
final String description = rs.getString("description");
final String key = rs.getString("key");
return new PasswordValidationPolicyData(id, active, description, key);
}
public String schema() {
return " pvp.id as id, pvp.active as active, pvp.description as description, pvp.`key` as `key`"
+ " from m_password_validation_policy pvp";
}
}
}