package com.revolsys.oracle.recordstore; import java.io.PrintWriter; import com.revolsys.datatype.DataType; import com.revolsys.datatype.DataTypes; import com.revolsys.jdbc.JdbcUtils; import com.revolsys.record.schema.FieldDefinition; import com.revolsys.record.schema.RecordDefinition; public class OracleDdlUtil { public static void writeCreateTable(final PrintWriter out, final RecordDefinition recordDefinition) { final String typePath = recordDefinition.getPath(); out.println(); out.print("CREATE TABLE "); final String tableName = JdbcUtils.getQualifiedTableName(typePath); out.print(tableName); out.println(" ("); for (int i = 0; i < recordDefinition.getFieldCount(); i++) { if (i > 1) { out.println(","); } final FieldDefinition attribute = recordDefinition.getField(i); final String name = attribute.getName(); out.print(" "); out.print(name); for (int j = name.length(); j < 32; j++) { out.print(' '); } out.print(" : "); final DataType dataType = attribute.getDataType(); if (dataType == DataTypes.BOOLEAN) { out.print("NUMBER(1)"); } else if (dataType == DataTypes.BYTE) { out.print("NUMBER(3)"); } else if (dataType == DataTypes.SHORT) { out.print("NUMBER(5)"); } else if (dataType == DataTypes.INT) { out.print("NUMBER(9)"); } else if (dataType == DataTypes.LONG) { out.print("NUMBER(19)"); } else if (dataType == DataTypes.FLOAT) { out.print("NUMBER"); } else if (dataType == DataTypes.DOUBLE) { out.print("NUMBER"); } else if (dataType == DataTypes.STRING) { out.print("VARCHAR2("); out.print(attribute.getLength()); out.print(")"); } else if (dataType == DataTypes.GEOMETRY) { out.print("MDSYS.SDO_GEOMETRY"); } if (attribute.isRequired()) { out.print(" NOT NULL"); } } out.println(); out.println(");"); } }