protected Hashtable buildFieldTypes() { Hashtable fieldTypeMapping; fieldTypeMapping = new Hashtable(); fieldTypeMapping.put(Boolean.class, new FieldTypeDefinition("NUMBER", 1)); fieldTypeMapping.put(Integer.class, new FieldTypeDefinition("NUMBER", 11)); fieldTypeMapping.put(Long.class, new FieldTypeDefinition("NUMBER", 19)); fieldTypeMapping.put(Float.class, new FieldTypeDefinition("NUMBER", 12, 5).setLimits(19, 0, 19)); fieldTypeMapping.put(Double.class, new FieldTypeDefinition("NUMBER", 10, 5).setLimits(19, 0, 19)); fieldTypeMapping.put(Short.class, new FieldTypeDefinition("NUMBER", 6)); fieldTypeMapping.put(Byte.class, new FieldTypeDefinition("NUMBER", 4)); fieldTypeMapping.put(java.math.BigInteger.class, new FieldTypeDefinition("NUMBER", 19)); fieldTypeMapping.put(java.math.BigDecimal.class, new FieldTypeDefinition("NUMBER", 19).setLimits(19, 0, 9)); fieldTypeMapping.put(Number.class, new FieldTypeDefinition("NUMBER", 19).setLimits(19, 0, 9)); fieldTypeMapping.put(String.class, new FieldTypeDefinition("CHAR", DEFAULT_VARCHAR_SIZE)); fieldTypeMapping.put(Character.class, new FieldTypeDefinition("CHAR", 1)); fieldTypeMapping.put(Byte[].class, new FieldTypeDefinition("BINARY")); fieldTypeMapping.put(Character[].class, new FieldTypeDefinition("MEMO")); fieldTypeMapping.put(byte[].class, new FieldTypeDefinition("BINARY")); fieldTypeMapping.put(char[].class, new FieldTypeDefinition("MEMO")); fieldTypeMapping.put(java.sql.Blob.class, new FieldTypeDefinition("BINARY")); fieldTypeMapping.put(java.sql.Clob.class, new FieldTypeDefinition("MEMO")); fieldTypeMapping.put(java.sql.Date.class, new FieldTypeDefinition("DATE", false)); fieldTypeMapping.put(java.sql.Time.class, new FieldTypeDefinition("CHAR", 15)); fieldTypeMapping.put(java.sql.Timestamp.class, new FieldTypeDefinition("CHAR", 25)); return fieldTypeMapping; }
/** * Set this type to optionally have a size specification. */ public void setSizeOptional() { setIsSizeRequired(false); setIsSizeAllowed(true); }
/** * Set the maximum precision and the minimum and maximum scale. * @return this Allowing the method to be invoked inline with constructor */ public FieldTypeDefinition setLimits(int maxPrecision, int minScale, int maxScale) { setMaxPrecision(maxPrecision); setMinScale(minScale); setMaxScale(maxScale); return this; }
/** * Return a new field type with a required size defaulting to the defaultSize. */ public FieldTypeDefinition(String databaseTypeName, int defaultSize, int defaultSubSize) { this(); this.name = databaseTypeName; this.defaultSize = defaultSize; this.defaultSubSize = defaultSubSize; this.isSizeRequired = true; setMaxPrecision(defaultSize); setMaxScale(defaultSubSize); }
/** * INTERNAL: * Append the type. * @param writer Target writer where to write type string. * @param session Current session context. * @throws ValidationException When invalid or inconsistent data were found. */ public void appendTypeString(final Writer writer, final AbstractSession session) throws ValidationException { try { final FieldTypeDefinition fieldType = getFieldTypeDefinition(session, type, typeName); writer.write(fieldType.getName()); if ((fieldType.isSizeAllowed()) && ((typeSize != 0) || (fieldType.isSizeRequired()))) { writer.write("("); if (typeSize == 0) { writer.write(Integer.toString(fieldType.getDefaultSize())); } else { writer.write(Integer.toString(typeSize)); } writer.write(")"); } } catch (IOException ioException) { throw ValidationException.fileError(ioException); } }
protected Hashtable buildFieldTypes() { Hashtable fieldTypeMapping; fieldTypeMapping = super.buildFieldTypes(); fieldTypeMapping.put(Boolean.class, new FieldTypeDefinition("BOOLEAN")); fieldTypeMapping.put(Long.class, new FieldTypeDefinition("NUMERIC", 19)); fieldTypeMapping.put(Short.class, new FieldTypeDefinition("NUMERIC", 5)); fieldTypeMapping.put(Byte.class, new FieldTypeDefinition("NUMERIC", 3)); fieldTypeMapping.put(java.math.BigInteger.class, new FieldTypeDefinition("NUMERIC", 19)); fieldTypeMapping.put(Integer.class, new FieldTypeDefinition("INTEGER", false)); fieldTypeMapping.put(Float.class, new FieldTypeDefinition("REAL", false)); fieldTypeMapping.put(Double.class, new FieldTypeDefinition("DOUBLE", false)); fieldTypeMapping.put(Short.class, new FieldTypeDefinition("SMALLINT", false)); fieldTypeMapping.put(java.math.BigDecimal.class, new FieldTypeDefinition("DECIMAL")); fieldTypeMapping.put(Number.class, new FieldTypeDefinition("DECIMAL")); fieldTypeMapping.put(Character.class, new FieldTypeDefinition("CHARACTER")); return fieldTypeMapping; }
fieldTypeMapping.put(Boolean.class, new FieldTypeDefinition("TINYINT(1) default 0", false)); fieldTypeMapping.put(Integer.class, new FieldTypeDefinition("INTEGER", false)); fieldTypeMapping.put(Long.class, new FieldTypeDefinition("BIGINT", false)); fieldTypeMapping.put(Float.class, new FieldTypeDefinition("FLOAT", false)); fieldTypeMapping.put(Double.class, new FieldTypeDefinition("DOUBLE", false)); fieldTypeMapping.put(Short.class, new FieldTypeDefinition("SMALLINT", false)); fieldTypeMapping.put(Byte.class, new FieldTypeDefinition("TINYINT", false)); fieldTypeMapping.put(java.math.BigInteger.class, new FieldTypeDefinition("BIGINT", false)); fieldTypeMapping.put(java.math.BigDecimal.class, new FieldTypeDefinition("DECIMAL",38)); fieldTypeMapping.put(Number.class, new FieldTypeDefinition("DECIMAL",38)); fieldTypeMapping.put(String.class, new FieldTypeDefinition("NVARCHAR", DEFAULT_VARCHAR_SIZE)); } else { fieldTypeMapping.put(String.class, new FieldTypeDefinition("VARCHAR", DEFAULT_VARCHAR_SIZE)); fieldTypeMapping.put(Character.class, new FieldTypeDefinition("CHAR", 1)); fieldTypeMapping.put(Byte[].class, new FieldTypeDefinition("LONGBLOB", false)); fieldTypeMapping.put(Character[].class, new FieldTypeDefinition("LONGTEXT", false)); fieldTypeMapping.put(byte[].class, new FieldTypeDefinition("LONGBLOB", false)); fieldTypeMapping.put(char[].class, new FieldTypeDefinition("LONGTEXT", false)); fieldTypeMapping.put(java.sql.Blob.class, new FieldTypeDefinition("LONGBLOB", false)); fieldTypeMapping.put(java.sql.Clob.class, new FieldTypeDefinition("LONGTEXT", false)); fieldTypeMapping.put(java.sql.Date.class, new FieldTypeDefinition("DATE", false)); FieldTypeDefinition fd = new FieldTypeDefinition("TIME"); if (!isFractionalTimeSupported) { fd.setIsSizeAllowed(false);
/** * INTERNAL: * Append the type. */ public void appendTypeString(Writer writer, AbstractSession session) throws ValidationException { try { FieldTypeDefinition fieldType; if (getType() == null) { throw ValidationException.oracleObjectTypeIsNotDefined(getTypeName()); } else if (getTypeName() == "") { throw ValidationException.oracleObjectTypeNameIsNotDefined(getType()); } else { fieldType = new FieldTypeDefinition(getTypeName()); } writer.write(fieldType.getName()); if (!isNullAllowed) { writer.write(" NOT NULL"); } } catch (IOException ioException) { throw ValidationException.fileError(ioException); } }
@Override /** * EclipseLink does not support length dependent type mapping. * Map varchar types with length > MAX_VARCHAR_UNICODE_LENGTH to CLOB (i.e clob); shorter types to NVARCHAR (n) * See also bugs 317597, 317448 */ protected void printFieldTypeSize(Writer writer, FieldDefinition field, FieldTypeDefinition fieldType) throws IOException { String typeName = fieldType.getName(); if ("NVARCHAR".equals(typeName)) { if (field.getSize() > MAX_VARTYPE_LENGTH) { fieldType = new FieldTypeDefinition("NCLOB", false); } } else if ("VARBINARY".equals(typeName)) { if (field.getSize() > MAX_VARTYPE_LENGTH || field.getSize() == 0) { fieldType = new FieldTypeDefinition("BLOB", false); } } super.printFieldTypeSize(writer, field, fieldType); if (fieldType.getTypesuffix() != null) { writer.append(" " + fieldType.getTypesuffix()); } }
/** * * Taken from org.eclipse.persistence\foundation\org.eclipse.persistence.core\src\org\eclipse\persistence\platform\database\AccessPlatform.java */ @Override public void printFieldTypeSize(Writer writer, FieldDefinition field,FieldTypeDefinition fieldType, boolean shouldPrintFieldIdentityClause) throws IOException { if (!shouldPrintFieldIdentityClause) { // if type requires both precision and scale: NUMERIC, DECIMAL if ((fieldType.getName().equals("NUMERIC")) || (fieldType.getName().equals("DECIMAL"))) { writer.write(fieldType.getName()); writer.write("("); if (field.getSize() == 0) { writer.write(Integer.toString(fieldType.getDefaultSize())); } else { writer.write(Integer.toString(field.getSize())); } writer.write(","); if (field.getSubSize() != 0) { writer.write(Integer.toString(field.getSubSize())); } else { writer.write(Integer.toString(fieldType.getDefaultSubSize())); } writer.write(")"); } else { super.printFieldTypeSize(writer, field, fieldType, shouldPrintFieldIdentityClause); } } }
fieldTypeMapping.put(Boolean.class, new FieldTypeDefinition("TINYINT(1) default 0", false)); fieldTypeMapping.put(Integer.class, new FieldTypeDefinition("INTEGER", false)); fieldTypeMapping.put(Long.class, new FieldTypeDefinition("BIGINT", false)); fieldTypeMapping.put(Float.class, new FieldTypeDefinition("FLOAT", false)); fieldTypeMapping.put(Double.class, new FieldTypeDefinition("DOUBLE", false)); fieldTypeMapping.put(Short.class, new FieldTypeDefinition("SMALLINT", false)); fieldTypeMapping.put(Byte.class, new FieldTypeDefinition("TINYINT", false)); fieldTypeMapping.put(java.math.BigInteger.class, new FieldTypeDefinition("BIGINT", false)); fieldTypeMapping.put(java.math.BigDecimal.class, new FieldTypeDefinition("DECIMAL",38)); fieldTypeMapping.put(Number.class, new FieldTypeDefinition("DECIMAL",38)); fieldTypeMapping.put(String.class, new FieldTypeDefinition("NVARCHAR", DEFAULT_VARCHAR_SIZE)); } else { fieldTypeMapping.put(String.class, new FieldTypeDefinition("VARCHAR", DEFAULT_VARCHAR_SIZE)); fieldTypeMapping.put(Character.class, new FieldTypeDefinition("CHAR", 1)); fieldTypeMapping.put(Byte[].class, new FieldTypeDefinition("LONGBLOB", false)); fieldTypeMapping.put(Character[].class, new FieldTypeDefinition("LONGTEXT", false)); fieldTypeMapping.put(byte[].class, new FieldTypeDefinition("LONGBLOB", false)); fieldTypeMapping.put(char[].class, new FieldTypeDefinition("LONGTEXT", false)); fieldTypeMapping.put(java.sql.Blob.class, new FieldTypeDefinition("LONGBLOB", false)); fieldTypeMapping.put(java.sql.Clob.class, new FieldTypeDefinition("LONGTEXT", false)); fieldTypeMapping.put(java.sql.Date.class, new FieldTypeDefinition("DATE", false)); FieldTypeDefinition fd = new FieldTypeDefinition("TIME"); if (!isFractionalTimeSupported) { fd.setIsSizeAllowed(false);
public String toString() { return Helper.getShortClassName(getClass()) + "(" + getName() + ")"; } }
@Override /** * EclipseLink does not support length dependent type mapping. * Map VARCHAR types with length > MAX_VARCHAR_UNICODE_LENGTH to LONG UNICODE (i.e clob); shorter types to VARCHAR (n) UNICODE * See also bugs 317597, 317448 */ protected void printFieldTypeSize(Writer writer, FieldDefinition field, FieldTypeDefinition fieldType) throws IOException { String typeName = fieldType.getName(); if ("VARCHAR".equals(typeName) && "UNICODE".equals(fieldType.getTypesuffix())) { if (field.getSize() > MAX_VARCHAR_UNICODE_LENGTH) { fieldType = FIELD_TYPE_DEFINITION_CLOB; } } super.printFieldTypeSize(writer, field, fieldType); if (fieldType.getTypesuffix() != null) { writer.append(" " + fieldType.getTypesuffix()); } }
/** * Set this type to not allow a size specification. */ public void setSizeDisallowed() { setIsSizeAllowed(false); }
/** * Return a new field type with a required size defaulting to the defaultSize. */ public FieldTypeDefinition(String databaseTypeName, int defaultSize) { this(); this.name = databaseTypeName; this.defaultSize = defaultSize; this.isSizeRequired = true; setMaxPrecision(defaultSize); }
/** * Set this type to require to have a size specification. */ public void setSizeRequired() { setIsSizeRequired(true); }
protected void printFieldTypeSize(Writer writer, FieldDefinition field, FieldTypeDefinition fieldType) throws IOException { writer.write(fieldType.getName()); if ((fieldType.isSizeAllowed()) && ((field.getSize() != 0) || (fieldType.isSizeRequired()))) { writer.write("("); if (field.getSize() == 0) { writer.write(Integer.toString(fieldType.getDefaultSize())); } else { writer.write(Integer.toString(field.getSize())); } if (field.getSubSize() != 0) { writer.write(","); writer.write(Integer.toString(field.getSubSize())); } else if (fieldType.getDefaultSubSize() != 0) { writer.write(","); writer.write(Integer.toString(fieldType.getDefaultSubSize())); } writer.write(")"); } }
protected Hashtable buildFieldTypes() { Hashtable fieldTypeMapping; fieldTypeMapping = super.buildFieldTypes(); fieldTypeMapping.put(Boolean.class, new FieldTypeDefinition("BOOLEAN")); fieldTypeMapping.put(Long.class, new FieldTypeDefinition("NUMERIC", 19)); fieldTypeMapping.put(Short.class, new FieldTypeDefinition("NUMERIC", 5)); fieldTypeMapping.put(Byte.class, new FieldTypeDefinition("NUMERIC", 3)); fieldTypeMapping.put(java.math.BigInteger.class, new FieldTypeDefinition("NUMERIC", 19)); fieldTypeMapping.put(Integer.class, new FieldTypeDefinition("INTEGER", false)); fieldTypeMapping.put(Float.class, new FieldTypeDefinition("REAL", false)); fieldTypeMapping.put(Double.class, new FieldTypeDefinition("DOUBLE", false)); fieldTypeMapping.put(Short.class, new FieldTypeDefinition("SMALLINT", false)); fieldTypeMapping.put(java.math.BigDecimal.class, new FieldTypeDefinition("DECIMAL")); fieldTypeMapping.put(Number.class, new FieldTypeDefinition("DECIMAL")); fieldTypeMapping.put(Character.class, new FieldTypeDefinition("CHARACTER")); return fieldTypeMapping; }
/** * INTERNAL: * Append the type. */ public void appendTypeString(Writer writer, AbstractSession session) throws ValidationException { try { FieldTypeDefinition fieldType; if (getType() == null) { throw ValidationException.oracleObjectTypeIsNotDefined(getTypeName()); } else if (getTypeName() == "") { throw ValidationException.oracleObjectTypeNameIsNotDefined(getType()); } else { fieldType = new FieldTypeDefinition(getTypeName()); } writer.write(fieldType.getName()); if (!isNullAllowed) { writer.write(" NOT NULL"); } } catch (IOException ioException) { throw ValidationException.fileError(ioException); } }
@Override /** * EclipseLink does not support length dependent type mapping. * Map varchar types with length > MAX_VARCHAR_UNICODE_LENGTH to CLOB (i.e clob); shorter types to NVARCHAR (n) * See also bugs 317597, 317448 */ protected void printFieldTypeSize(Writer writer, FieldDefinition field, FieldTypeDefinition fieldType) throws IOException { String typeName = fieldType.getName(); Class javaFieldType = field.getType(); if ("NVARCHAR".equals(typeName)) { if (field.getSize() > MAX_VARTYPE_LENGTH) { fieldType = new FieldTypeDefinition("NCLOB", false); } } else if ("VARBINARY".equals(typeName)) { if (field.getSize() > MAX_VARTYPE_LENGTH || field.getSize() == 0) { fieldType = new FieldTypeDefinition("BLOB", false); } } super.printFieldTypeSize(writer, field, fieldType); if (fieldType.getTypesuffix() != null) { writer.append(" " + fieldType.getTypesuffix()); } }