Java tutorial
/* * Copyright 2013 SURFnet bv, The Netherlands * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package nl.surfnet.coin.shared.log; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; /** * JDBC implementation for ApiCallLogService * */ public class ApiCallLogServiceImpl implements ApiCallLogService { private JdbcTemplate jdbcTemplate; public ApiCallLogServiceImpl(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } public ApiCallLogServiceImpl(JdbcTemplate template) { jdbcTemplate = template; } /* * (non-Javadoc) * * @see * nl.surfnet.coin.shared.log.ApiCallLogService#saveApiCallLog(nl.surfnet. * coin.shared.log.ApiCallLog) */ @Override public void saveApiCallLog(ApiCallLog log) { Object[] args = new Object[] { log.getUserId(), log.getSpEntityId(), log.getIpAddress(), log.getApiVersion(), log.getResourceUrl(), log.getConsumerKey() }; jdbcTemplate.update( "INSERT INTO api_call_log (user_id, spentity_id, ip_address, api_version, resource_url, consumer_key) VALUES (?, ?, ?, ?, ?, ?)", args); } /* * (non-Javadoc) * * @see * nl.surfnet.coin.shared.log.ApiCallLogService#findApiCallLog(java.lang.String * ) */ @Override public List<ApiCallLog> findApiCallLog(String serviceProvider) { return jdbcTemplate.query( "select user_id, spentity_id, ip_address, api_version, resource_url, consumer_key, log_timestamp from api_call_log where spentity_id = ?", new String[] { serviceProvider }, new RowMapper<ApiCallLog>() { @Override public ApiCallLog mapRow(ResultSet rs, int rowNum) throws SQLException { ApiCallLog log = new ApiCallLog(); log.setApiVersion(rs.getString("api_version")); log.setConsumerKey(rs.getString("consumer_key")); log.setIpAddress(rs.getString("ip_address")); log.setResourceUrl(rs.getString("resource_url")); log.setSpEntityId(rs.getString("spentity_id")); log.setTimestamp(rs.getDate("log_timestamp")); log.setUserId(rs.getString("user_id")); return log; } }); } /* * (non-Javadoc) * * @see nl.surfnet.coin.shared.log.ApiCallLogService#findServiceProviders() */ @Override public List<String> findServiceProviders() { return jdbcTemplate.query("select distinct spentity_id from api_call_log;", new RowMapper<String>() { @Override public String mapRow(ResultSet rs, int rowNum) throws SQLException { return rs.getString("spentity_id"); } }); } }