private Object[] createTypeInfoRow(String typeName, String prefix, String suffix, Boolean unsigned, Boolean fixedPrecScale, int radix){ return new Object[] {typeName, new Integer(JDBCSQLTypeInfo.getSQLType(typeName)), JDBCSQLTypeInfo.getDefaultPrecision(typeName), prefix, suffix, null, new Short((short)DatabaseMetaData.typeNullable), Boolean.FALSE, new Short((short)DatabaseMetaData.typeSearchable), unsigned, fixedPrecScale, Boolean.FALSE, typeName, new Short((short)0), new Short((short)255), null, null, new Integer(radix)}; }
static Map<Integer, Object> getColumnMetadata(String tableName, String columnName, String dataType, Integer nullable, Integer searchable, Boolean writable, Boolean signed, Boolean caseSensitive, ConnectionImpl driverConnection) throws SQLException { // map that would contain metadata details Map<Integer, Object> metadataMap = new HashMap<Integer, Object>(); /******************************************************* HardCoding Column metadata details for the given column ********************************************************/ metadataMap.put(ResultsMetadataConstants.VIRTUAL_DATABASE_NAME, driverConnection.getVDBName()); metadataMap.put(ResultsMetadataConstants.GROUP_NAME, tableName); metadataMap.put(ResultsMetadataConstants.ELEMENT_NAME, columnName); metadataMap.put(ResultsMetadataConstants.DATA_TYPE, dataType); metadataMap.put(ResultsMetadataConstants.PRECISION, JDBCSQLTypeInfo.getDefaultPrecision(dataType)); metadataMap.put(ResultsMetadataConstants.RADIX, new Integer(10)); metadataMap.put(ResultsMetadataConstants.SCALE, new Integer(0)); metadataMap.put(ResultsMetadataConstants.AUTO_INCREMENTING, Boolean.FALSE); metadataMap.put(ResultsMetadataConstants.CASE_SENSITIVE, caseSensitive); metadataMap.put(ResultsMetadataConstants.NULLABLE, nullable); metadataMap.put(ResultsMetadataConstants.SEARCHABLE, searchable); metadataMap.put(ResultsMetadataConstants.SIGNED, signed); metadataMap.put(ResultsMetadataConstants.WRITABLE, writable); metadataMap.put(ResultsMetadataConstants.CURRENCY, Boolean.FALSE); metadataMap.put(ResultsMetadataConstants.DISPLAY_SIZE, JDBCSQLTypeInfo.getMaxDisplaySize(dataType)); return metadataMap; }
@Override public String getTypeName(int code, long length, int precision, int scale) { return JDBCSQLTypeInfo.getJavaClassName(code); }
public int getColumnType(int index) throws SQLException { String runtimeTypeName = getColumnTypeName(index); return JDBCSQLTypeInfo.getSQLType(runtimeTypeName); }
@Test public void testJDBCSQLTypeInfo() { Set<String> types = JDBCSQLTypeInfo.getMMTypeNames(); for (String type : types) { assertEquals("Didn't get match for "+ type, JDBCSQLTypeInfo.getSQLType(type), JDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.getDataTypeClass(type))); //$NON-NLS-1$ //the classnames will not match the runtime types for xml, clob, blob if (!type.equalsIgnoreCase(DataTypeManager.DefaultDataTypes.NULL) && !type.equalsIgnoreCase(DataTypeManager.DefaultDataTypes.VARBINARY) && !type.equalsIgnoreCase(DataTypeManager.DefaultDataTypes.XML) && !type.equalsIgnoreCase(DataTypeManager.DefaultDataTypes.CLOB) && !type.equalsIgnoreCase(DataTypeManager.DefaultDataTypes.BLOB) && !type.equalsIgnoreCase(DataTypeManager.DefaultDataTypes.JSON)) { assertEquals("Didn't get match for "+ type, JDBCSQLTypeInfo.getSQLType(type), JDBCSQLTypeInfo.getSQLTypeFromClass(DataTypeManager.getDataTypeClass(type).getName())); //$NON-NLS-1$ } } assertEquals(Types.TIMESTAMP, JDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.DefaultDataClasses.TIMESTAMP)); assertEquals(Types.SQLXML, JDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.DefaultDataClasses.XML)); assertEquals(DataTypeManager.DefaultDataTypes.STRING, JDBCSQLTypeInfo.getTypeName(Types.CHAR)); assertEquals(Types.CHAR, JDBCSQLTypeInfo.getSQLTypeFromRuntimeType(DataTypeManager.DefaultDataClasses.CHAR)); assertEquals(Types.ARRAY, JDBCSQLTypeInfo.getSQLType(DataTypeManager.getDataTypeName(DataTypeManager.getArrayType(DataTypeManager.DefaultDataClasses.BIG_DECIMAL)))); }
public static Integer getMaxDisplaySize(Class<?> dataTypeClass) { return getMaxDisplaySize(DataTypeManager.getDataTypeName(dataTypeClass)); }
public static Integer getDefaultPrecision(Class<?> dataTypeClass) { return getDefaultPrecision(DataTypeManager.getDataTypeName(dataTypeClass)); }
/** * Get the runtime type name for the given SQL type * @param sqlType * @return */ public static final String getDataTypeNameFromSQLType(int sqlType) { if (sqlType == Types.ARRAY) { return RUNTIME_NAMES.OBJECT; } return JDBCSQLTypeInfo.getTypeName(sqlType); }
/** * Get the SQL type for the given runtime type Class constant * @param type * @return */ public static final int getSQLTypeFromRuntimeType(Class<?> type) { return JDBCSQLTypeInfo.getSQLTypeFromRuntimeType(type); }
private void handleValue(Object value) { boolean isGeo = false; if (value instanceof Geospatial) { String geoLiteral = ((Geospatial)value).toString(); //extract ewkt value = geoLiteral.substring(geoLiteral.indexOf("'")+1, geoLiteral.length() - 1); //$NON-NLS-1$ isGeo = true; } org.teiid.query.sql.symbol.Expression ex = null; if (!this.prepared || value == null) { ex = new Constant(value); } else { ex = new Function( CONVERT, new org.teiid.query.sql.symbol.Expression[] { new Reference(this.params.size()), new Constant(DataTypeManager.getDataTypeName(value.getClass())) }); this.params.add(new SQLParameter(value, JDBCSQLTypeInfo.getSQLTypeFromClass(value.getClass().getName()))); } if (isGeo) { ex = new Function(SourceSystemFunctions.ST_GEOMFROMEWKT, new org.teiid.query.sql.symbol.Expression[] {ex}); } stack.add(ex); }
public int getColumnType(int index) throws SQLException { String runtimeTypeName = getColumnTypeName(index); return JDBCSQLTypeInfo.getSQLType(runtimeTypeName); }
public static Integer getMaxDisplaySize(Class<?> dataTypeClass) { return getMaxDisplaySize(DataTypeManager.getDataTypeName(dataTypeClass)); }
public static Integer getDefaultPrecision(Class<?> dataTypeClass) { return getDefaultPrecision(DataTypeManager.getDataTypeName(dataTypeClass)); }
public boolean supportsConvert(int fromType, int toType) throws SQLException { String fromName = JDBCSQLTypeInfo.getTypeName(fromType); String toName = JDBCSQLTypeInfo.getTypeName(toType); if (fromName.equals(toName)) { if (fromName.equals(DataTypeManager.DefaultDataTypes.OBJECT) && fromName != toName) { return false; } return true; } return DataTypeManager.isTransformable(fromName, toName); }
private Object[] createTypeInfoRow(String typeName, String prefix, String suffix, Boolean unsigned, Boolean fixedPrecScale, int radix){ return new Object[] {typeName, new Integer(JDBCSQLTypeInfo.getSQLType(typeName)), JDBCSQLTypeInfo.getDefaultPrecision(typeName), prefix, suffix, null, new Short((short)DatabaseMetaData.typeNullable), Boolean.FALSE, new Short((short)DatabaseMetaData.typeSearchable), unsigned, fixedPrecScale, Boolean.FALSE, typeName, new Short((short)0), new Short((short)255), null, null, new Integer(radix)}; }
public Map<Integer, Object> getDefaultColumn(String tableName, String columnName, String columnLabel, Class<?> javaType ) { Map<Integer, Object> column = new HashMap<Integer, Object>(); // set defaults column.put(ResultsMetadataConstants.VIRTUAL_DATABASE_NAME, vdbName); column.put(ResultsMetadataConstants.VIRTUAL_DATABASE_VERSION, vdbVersion); column.put(ResultsMetadataConstants.GROUP_NAME, tableName); column.put(ResultsMetadataConstants.ELEMENT_NAME, labelAsName?columnLabel:columnName); column.put(ResultsMetadataConstants.ELEMENT_LABEL, columnLabel); column.put(ResultsMetadataConstants.AUTO_INCREMENTING, Boolean.FALSE); column.put(ResultsMetadataConstants.CASE_SENSITIVE, Boolean.FALSE); column.put(ResultsMetadataConstants.NULLABLE, ResultsMetadataConstants.NULL_TYPES.NULLABLE); column.put(ResultsMetadataConstants.SEARCHABLE, ResultsMetadataConstants.SEARCH_TYPES.SEARCHABLE); column.put(ResultsMetadataConstants.WRITABLE, Boolean.TRUE); column.put(ResultsMetadataConstants.CURRENCY, Boolean.FALSE); column.put(ResultsMetadataConstants.DATA_TYPE, DataTypeManager.getDataTypeName(javaType)); column.put(ResultsMetadataConstants.RADIX, JDBCSQLTypeInfo.DEFAULT_RADIX); column.put(ResultsMetadataConstants.SCALE, JDBCSQLTypeInfo.DEFAULT_SCALE); column.put(ResultsMetadataConstants.SIGNED, Boolean.TRUE); column.put(ResultsMetadataConstants.PRECISION, JDBCSQLTypeInfo.getDefaultPrecision(javaType)); column.put(ResultsMetadataConstants.DISPLAY_SIZE, JDBCSQLTypeInfo.getMaxDisplaySize(javaType)); return column; }
/** * Get the sql type from the given runtime type * @param type * @return */ public static final int getSQLTypeFromRuntimeType(Class<?> type) { if (type == null) { return Types.NULL; } String name = DataTypeManager.getDataTypeName(type); if (name == null) { return Types.JAVA_OBJECT; } return getSQLType(name); }
return JDBCSQLTypeInfo.getMaxDisplaySize(dataType);
private int getColumnPrecision(Class<?> dataType, Object elementID) throws QueryMetadataException, TeiidComponentException { if (!Number.class.isAssignableFrom(dataType)) { int length = metadata.getElementLength(elementID); if (length > 0) { return length; } } else { int precision = metadata.getPrecision(elementID); if (precision > 0) { return precision; } } return JDBCSQLTypeInfo.getDefaultPrecision(dataType).intValue(); }
public String getColumnClassName(int index) throws SQLException { return JDBCSQLTypeInfo.getJavaClassName(getColumnType(index)); }