/*
* 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 com.facebook.presto.verifier;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import io.airlift.json.JsonCodec;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
public class QueryPairMapper
implements ResultSetMapper<QueryPair>
{
private static final JsonCodec<Map<String, String>> propertiesJsonCodec = JsonCodec.mapJsonCodec(String.class, String.class);
private static final JsonCodec<List<String>> queriesJsonCodec = JsonCodec.listJsonCodec(String.class);
@Override
public QueryPair map(int index, ResultSet resultSet, StatementContext statementContext)
throws SQLException
{
Map<String, String> sessionProperties = ImmutableMap.of();
String json = resultSet.getString("session_properties_json");
if (json != null) {
sessionProperties = propertiesJsonCodec.fromJson(json);
}
return new QueryPair(
resultSet.getString("suite"),
resultSet.getString("name"),
new Query(resultSet.getString("test_catalog"), resultSet.getString("test_schema"), fromJsonString(resultSet.getString("test_prequeries")), resultSet.getString("test_query"),
fromJsonString(resultSet.getString("test_postqueries")),
resultSet.getString("test_username"), resultSet.getString("test_password"), sessionProperties),
new Query(resultSet.getString("control_catalog"), resultSet.getString("control_schema"), fromJsonString(resultSet.getString("control_prequeries")), resultSet.getString("control_query"),
fromJsonString(resultSet.getString("control_postqueries")),
resultSet.getString("control_username"), resultSet.getString("control_password"), sessionProperties));
}
private static List<String> fromJsonString(String jsonString)
throws SQLException
{
return jsonString == null ? ImmutableList.of() : queriesJsonCodec.fromJson(jsonString);
}
}