/** * Copyright 2016 Hortonworks. * * 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.hortonworks.registries.storage.impl.jdbc.util; import java.lang.reflect.Field; import java.sql.Date; import java.sql.Time; import java.sql.Timestamp; import java.sql.Types; import java.util.List; import java.util.Map; public class Util { private static String getSqlTypeName(int sqlType) { try { Integer val = sqlType; for (Field field : Types.class.getFields()) { if (val.equals(field.get(null))) { return field.getName(); } } } catch (IllegalAccessException e) { throw new RuntimeException("Could not get sqlTypeName ", e); } throw new RuntimeException("Unknown sqlType " + sqlType); } public static Class getJavaType(int sqlType) { switch (sqlType) { case Types.CHAR: case Types.VARCHAR: case Types.LONGVARCHAR: case Types.CLOB: return String.class; case Types.BINARY: case Types.VARBINARY: case Types.LONGVARBINARY: return byte[].class; case Types.BIT: return Boolean.class; case Types.TINYINT: case Types.SMALLINT: return Short.class; case Types.INTEGER: return Integer.class; case Types.BIGINT: return Long.class; case Types.REAL: return Float.class; case Types.DOUBLE: case Types.FLOAT: return Double.class; case Types.DATE: return Date.class; case Types.TIME: return Time.class; case Types.TIMESTAMP: return Timestamp.class; default: throw new RuntimeException("We do not support tables with SqlType: " + getSqlTypeName(sqlType)); } } public static void validateJDBCProperties(Map<String, Object> jdbcProps, List<String> propertyNames) { if(jdbcProps == null || jdbcProps.isEmpty()) { throw new IllegalArgumentException("jdbc properties can neither be null nor empty"); } for (String property : propertyNames) { if(!jdbcProps.containsKey(property)) { throw new IllegalArgumentException("jdbc properties should contain "+property); } } } }