final Datatype dt = new Datatype(); dt.setBasetypeName(basetypeID); dt.setName(fullName); dt.setUUID(getObjectValue(tokens.get(tokenIndex++))); dt.setNameInSource(getObjectValue(tokens.get(tokenIndex++))); dt.setVarietyType(Variety.values()[Short.parseShort(tokens.get(tokenIndex++))]); tokenIndex++; dt.setRuntimeTypeName(getObjectValue(tokens.get(tokenIndex++))); dt.setJavaClassName(getObjectValue(tokens.get(tokenIndex++))); dt.setType(Datatype.Type.values()[Short.parseShort(tokens.get(tokenIndex++))]); dt.setSearchType(SearchType.values()[3 - Integer.parseInt(tokens.get(tokenIndex++))]); dt.setNullType(NullType.values()[Integer.parseInt(tokens.get(tokenIndex++))]); dt.setSigned(getBooleanValue(booleanValues[0])); dt.setAutoIncrement(getBooleanValue(booleanValues[1])); dt.setCaseSensitive(getBooleanValue(booleanValues[2])); dt.setLength( Integer.parseInt(tokens.get(tokenIndex++)) ); dt.setPrecision( Integer.parseInt(tokens.get(tokenIndex++)) ); dt.setScale( Integer.parseInt(tokens.get(tokenIndex++)) );
VDBMetaData vdb, TransformationMetadata metadata, CommandContext cc, SimpleIterator<Datatype> iter) { row.add(datatype.getName()); row.add(datatype.isBuiltin()); row.add(datatype.getType().name()); row.add(datatype.getName()); row.add(datatype.getJavaClassName()); row.add(datatype.getScale()); row.add(datatype.getLength()); row.add(datatype.getNullType().toString()); row.add(datatype.isSigned()); row.add(datatype.isAutoIncrement()); row.add(datatype.isCaseSensitive()); Integer precision = datatype.getPrecision(); if (datatype.isBuiltin() && !Number.class.isAssignableFrom(DataTypeManager.getDataTypeClass(datatype.getRuntimeTypeName()))) { precision = JDBCSQLTypeInfo.getDefaultPrecision(datatype.getName()); } else if (precision != null && precision == 0) { precision = JDBCSQLTypeInfo.getDefaultPrecision(datatype.getRuntimeTypeName()); row.add(datatype.getRadix()); row.add(datatype.getSearchType().toString()); row.add(datatype.getUUID()); row.add(datatype.getRuntimeTypeName()); row.add(datatype.getBasetypeName()); row.add(datatype.getAnnotation()); row.add(JDBCSQLTypeInfo.getSQLType(datatype.getRuntimeTypeName())); List<String> prefix = PREFIX_MAP.get(datatype.getRuntimeTypeName()); if (prefix != null) { row.add(prefix.get(0));
public void setDatatype(Datatype datatype, boolean copyAttributes, int arrayDimensions) { this.datatype = datatype; this.arrayDimensions = arrayDimensions; if (datatype != null) { this.datatypeUUID = this.datatype.getUUID(); this.runtimeType = this.datatype.getRuntimeTypeName(); if (arrayDimensions > 0) { this.runtimeType += StringUtil.join(Collections.nCopies(arrayDimensions, "[]"), ""); //$NON-NLS-1$ //$NON-NLS-2$ } if (copyAttributes) { this.radix = this.datatype.getRadix(); this.length = this.datatype.getLength(); if (!datatype.getName().equals(DataTypeManager.DefaultDataTypes.BIG_DECIMAL)) { this.precision = this.datatype.getPrecision(); this.scale = this.datatype.getScale(); } this.nullType = this.datatype.getNullType(); } } }
public String toString() { StringBuffer sb = new StringBuffer(100); sb.append(getClass().getSimpleName()); sb.append(" name="); //$NON-NLS-1$ sb.append(getName()); sb.append(", basetype name="); //$NON-NLS-1$ sb.append(getBasetypeName()); sb.append(", runtimeType="); //$NON-NLS-1$ sb.append(getRuntimeTypeName()); sb.append(", javaClassName="); //$NON-NLS-1$ sb.append(getJavaClassName()); sb.append(", ObjectID="); //$NON-NLS-1$ sb.append(getUUID()); return sb.toString(); }
String[] props = s.split("\\|"); //$NON-NLS-1$ while ((s = br.readLine()) != null) { Datatype dt = new Datatype(); String[] vals = s.split("\\|"); //$NON-NLS-1$ Properties p = new Properties(); if ("string".equals(dt.getName())) { //$NON-NLS-1$ dt.setLength(DataTypeManager.MAX_STRING_LENGTH); } else if ("varbinary".equals(dt.getName())) { //$NON-NLS-1$ dt.setLength(DataTypeManager.MAX_VARBINARY_BYTES); if (dt.isBuiltin()) { if (!dt.getName().equals(dt.getRuntimeTypeName())) { dt.setName(dt.getRuntimeTypeName()); typeMap.put(dt.getRuntimeTypeName(), dt);
if (base == null || !base.isBuiltin()) { throw new MetadataException(DataPlugin.Event.TEIID60032, DataPlugin.Util.gs(DataPlugin.Event.TEIID60032, baseType)); throw new DuplicateRecordException(DataPlugin.Event.TEIID60034, DataPlugin.Util.gs(DataPlugin.Event.TEIID60032, existing)); Datatype dataType = base.clone(); dataType.setName(name); dataType.setBasetypeName(baseType); dataType.setType(Datatype.Type.Domain); dataType.setUUID(null); if (!Number.class.isAssignableFrom(DataTypeManager.getDataTypeClass(base.getRuntimeTypeName()))) { dataType.setLength(precision); } else { dataType.setPrecision(precision); dataType.setScale(scale); dataType.setNullType(NullType.No_Nulls);
private void visit(Datatype dt) { append(CREATE).append(SPACE).append(DOMAIN).append(SPACE); append(SQLStringVisitor.escapeSinglePart(dt.getName())).append(SPACE).append(AS).append(SPACE); String runtimeTypeName = dt.getBasetypeName(); append(runtimeTypeName); Datatype base = SystemMetadata.getInstance().getRuntimeTypeMap().get(runtimeTypeName); if (LENGTH_DATATYPES.contains(runtimeTypeName)) { if (dt.getLength() != base.getLength()) { append(LPAREN).append(dt.getLength()).append(RPAREN); } } else if (PRECISION_DATATYPES.contains(runtimeTypeName) && (dt.getPrecision() != base.getPrecision() || dt.getScale() != base.getScale())) { append(LPAREN).append(dt.getPrecision()); if (dt.getScale() != 0) { append(COMMA).append(dt.getScale()); } append(RPAREN); } if (dt.getNullType() == NullType.No_Nulls) { append(SPACE).append(NOT_NULL); } append(SEMICOLON); }
boolean domain = false; if (datatype != null) { runtimeTypeName = datatype.getRuntimeTypeName(); domain = datatype.getType() == Datatype.Type.Domain; append(datatype.getName()); } else { append(runtimeTypeName); if (LENGTH_DATATYPES.contains(runtimeTypeName)) { if (column.getLength() != 0 && (datatype == null || column.getLength() != datatype.getLength())) { append(LPAREN).append(column.getLength()).append(RPAREN); if (column.getNullType() == NullType.No_Nulls && (!domain || datatype.getNullType() != NullType.No_Nulls)) { append(SPACE).append(NOT_NULL);
String typeName = column.getRuntimeType(); if (dt != null) { if (dt.isBuiltin() || dt.getType() == Datatype.Type.Domain) { typeName = dt.getName(); } else { typeName = dt.getRuntimeTypeName();
@Test public void testCorrectName() { ModelMetaData mmd = new ModelMetaData(); mmd.setName("foo"); HashMap<String, Datatype> types = new HashMap<String, Datatype>(); Datatype value = new Datatype(); value.setName("string"); types.put("string", value); MetadataFactory factory = new MetadataFactory("x", 1, types, mmd); Table x = factory.addTable("x"); Column c = factory.addColumn("a.b", "string", x); assertEquals("a_b", c.getName()); }
Datatype type = new Datatype(); type.setName(TypeFacility.RUNTIME_NAMES.OBJECT); type.setJavaClassName(Object.class.getCanonicalName()); column.setDatatype(type, true); columns.add(column);
private void appendColumnOptions(BaseColumn column) { StringBuilder options = new StringBuilder(); addCommonOptions(options, column); if (!column.getDatatype().isBuiltin() && column.getDatatype().getType() != Datatype.Type.Domain) { //an enterprise type addOption(options, UDT, column.getDatatype().getName() + "("+column.getLength()+ ", " +column.getPrecision()+", " + column.getScale()+ ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } if (column.getDatatype().getRadix() != 0 && column.getRadix() != column.getDatatype().getRadix()) { addOption(options, RADIX, column.getRadix()); } buildColumnOptions(column, options); if (options.length() != 0) { append(SPACE).append(OPTIONS).append(SPACE).append(LPAREN).append(options).append(RPAREN); } }
/** * Get the type information excluding aliases and case sensitive by name * @return */ public NavigableMap<String, Datatype> getDatatypesExcludingAliases() { TreeMap<String, Datatype> result = new TreeMap<String, Datatype>(); for (Map.Entry<String, Datatype> entry : this.datatypes.entrySet()) { if (entry.getKey().equals(entry.getValue().getName())) { result.put(entry.getKey(), entry.getValue()); } } return result; }
@Test public void testTypeCorrection() throws Exception { MetadataFactory mf = new MetadataFactory(null, 1, "x", SystemMetadata.getInstance().getRuntimeTypeMap(), new Properties(), null); //$NON-NLS-1$ Table t = mf.addTable("y"); //$NON-NLS-1$ mf.addColumn("test", "string", t); mf.addColumn("array", "string[]", t); Datatype unknown = new Datatype(); unknown.setName("unknown"); Column col = mf.addColumn("arg", "string", t); col.setDatatype(unknown, false, 0); MetadataFactory mf1 = UnitTestUtil.helpSerialize(mf); Column column = mf1.getSchema().getTable("y").getColumns().get(0); Datatype dt = column.getDatatype(); assertNotSame(mf.getDataTypes().get(dt.getName()), column.getDatatype()); assertEquals(1, mf1.getSchema().getTable("y").getColumns().get(1).getArrayDimensions()); mf1.correctDatatypes(mf.getDataTypes()); assertSame(mf.getDataTypes().get(dt.getName()), column.getDatatype()); assertEquals(1, mf1.getSchema().getTable("y").getColumns().get(1).getArrayDimensions()); }
private String findContentType(Procedure procedure) { String contentType = "plain"; ColumnSet<Procedure> rs = procedure.getResultSet(); if (rs != null) { Column returnColumn = rs.getColumns().get(0); if (returnColumn.getDatatype().getRuntimeTypeName().equals(DataTypeManager.DefaultDataTypes.XML)) { contentType = "xml"; //$NON-NLS-1$ } else if (returnColumn.getDatatype().getRuntimeTypeName().equals(DataTypeManager.DefaultDataTypes.CLOB)) { contentType = "json"; } } else { for (ProcedureParameter pp:procedure.getParameters()) { if (pp.getType().equals(ProcedureParameter.Type.ReturnValue)) { if (pp.getDatatype().getRuntimeTypeName().equals(DataTypeManager.DefaultDataTypes.XML)) { contentType = "xml"; //$NON-NLS-1$ } else if (pp.getDatatype().getRuntimeTypeName().equals(DataTypeManager.DefaultDataTypes.CLOB)) { contentType = "json"; //$NON-NLS-1$ } } } } return contentType; }
if (systemDatatypes != null) { for (Datatype datatype : systemDatatypes) { uuidToRecord.put(datatype.getUUID(), datatype);
@Test public void testCreateDomainUsedInSchema() throws Exception { String ddl = "CREATE DATABASE FOO VERSION '2.0.0'; USE DATABASE FOO VERSION '2.0.0';" + "CREATE DOMAIN my_string AS string(1000) not null;" + "CREATE SCHEMA S1; SET SCHEMA S1;" + "CREATE VIEW X (y my_string) as select 'a';"; Database db = helpParse(ddl); assertEquals(1000, db.getMetadataStore().getDatatypes().get("my_string").getLength()); }
@Test public void testCreateDomain() throws Exception { String ddl = "CREATE DATABASE FOO VERSION '2.0.0'; USE DATABASE FOO VERSION '2.0.0';" + "CREATE DOMAIN nnint AS integer not null;"; Database db = helpParse(ddl); assertEquals(NullType.No_Nulls, db.getMetadataStore().getDatatypes().get("NNINT").getNullType()); }
String[] props = s.split("\\|"); //$NON-NLS-1$ while ((s = br.readLine()) != null) { Datatype dt = new Datatype(); String[] vals = s.split("\\|"); //$NON-NLS-1$ Properties p = new Properties(); if ("string".equals(dt.getName())) { //$NON-NLS-1$ dt.setLength(DataTypeManager.MAX_STRING_LENGTH); } else if ("varbinary".equals(dt.getName())) { //$NON-NLS-1$ dt.setLength(DataTypeManager.MAX_VARBINARY_BYTES); if (dt.isBuiltin()) { if (!dt.getName().equals(dt.getRuntimeTypeName())) { dt.setName(dt.getRuntimeTypeName()); typeMap.put(dt.getRuntimeTypeName(), dt);
private void visit(Datatype dt) { append(CREATE).append(SPACE).append(DOMAIN).append(SPACE); append(SQLStringVisitor.escapeSinglePart(dt.getName())).append(SPACE).append(AS).append(SPACE); String runtimeTypeName = dt.getBasetypeName(); append(runtimeTypeName); Datatype base = SystemMetadata.getInstance().getRuntimeTypeMap().get(runtimeTypeName); if (DataTypeManager.hasLength(runtimeTypeName)) { if (dt.getLength() != base.getLength()) { append(LPAREN).append(dt.getLength()).append(RPAREN); } } else if (PRECISION_DATATYPES.contains(runtimeTypeName) && (dt.getPrecision() != base.getPrecision() || dt.getScale() != base.getScale())) { append(LPAREN).append(dt.getPrecision()); if (dt.getScale() != 0) { append(COMMA).append(dt.getScale()); } append(RPAREN); } if (dt.getNullType() == NullType.No_Nulls) { append(SPACE).append(NOT_NULL); } append(SEMICOLON); }