You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

168 lines
7.2 KiB

package xyz.wbsite.dbtool.javafx.po;
public class OracleDBmapper extends AbstractDBmapper {
@Override
public String getFieldSql(Field field) {
StringBuffer sb = new StringBuffer("");
sb.append("\"").append(field.getFieldName()).append("\" ");
String type = field.getFieldType();
if (FieldType.Boolean.name().equals(type)) {
sb.append("CHAR(1)");
} else if (FieldType.Byte.name().equals(type)) {
sb.append("NUMBER(3)");
} else if (FieldType.Bytes.name().equals(type)) {
sb.append("BLOB");
} else if (FieldType.Character.name().equals(type)) {
sb.append("CHAR(1)");
} else if (FieldType.Short.name().equals(type)) {
sb.append("NUMBER(5)");
} else if (FieldType.Integer.name().equals(type)) {
sb.append("NUMBER(10)");
} else if (FieldType.Long.name().equals(type)) {
sb.append("NUMBER(19)");
} else if (FieldType.Float.name().equals(type)) {
sb.append("NUMBER");
} else if (FieldType.Double.name().equals(type)) {
sb.append("NUMBER");
} else if (FieldType.Date.name().equals(type)) {
sb.append("DATE");
} else if (FieldType.BigDecimal.name().equals(type)) {
sb.append("NUMBER");
} else if (FieldType.Dict.name().equals(type)) {
Integer fieldLength = field.getFieldLength();
sb.append("VARCHAR(" + fieldLength + ")");
} else if (FieldType.String_1.name().equals(type)) {
sb.append("CHAR(1)");
} else if (FieldType.String_10.name().equals(type)) {
sb.append("CHAR(10)");
} else if (FieldType.String_var.name().equals(type)) {
Integer fieldLength = field.getFieldLength();
sb.append("VARCHAR2(" + fieldLength + ")");
} else if (FieldType.String_var50.name().equals(type)) {
sb.append("VARCHAR2(50)");
} else if (FieldType.String_var100.name().equals(type)) {
sb.append("VARCHAR2(100)");
} else if (FieldType.String_var255.name().equals(type)) {
sb.append("VARCHAR2(250)");
} else if (FieldType.String_var500.name().equals(type)) {
sb.append("VARCHAR2(500)");
} else if (FieldType.String_var2500.name().equals(type)) {
sb.append("VARCHAR2(2500)");
} else if (FieldType.String_var4000.name().equals(type)) {
sb.append("VARCHAR2(4000)");
} else if (FieldType.String_super.name().equals(type)) {
//Oracle中LONG最大支持2G字节
sb.append("LONG");
}
if (field.getIsMust() && field.getIsSystem()) {
sb.append(" NOT NULL");
} else {
sb.append(" NULL");
}
return sb.toString();
}
@Override
public DataBase getDataBase() {
return DataBase.Oracle;
}
@Override
public String getDataBaseType(FieldType type) {
if (FieldType.Boolean.name().equals(type.name())) {
return "CHAR";
} else if (FieldType.Byte.name().equals(type.name())) {
return "NUMBER";
} else if (FieldType.Short.name().equals(type.name())) {
return "NUMBER";
} else if (FieldType.Integer.name().equals(type.name())) {
return "NUMBER";
} else if (FieldType.Long.name().equals(type.name())) {
return "NUMBER";
} else if (FieldType.Float.name().equals(type.name())) {
return "NUMBER";
} else if (FieldType.Double.name().equals(type.name())) {
return "NUMBER";
} else if (FieldType.Date.name().equals(type.name())) {
return "TIMESTAMP";
} else if (FieldType.Bytes.name().equals(type.name())) {
return "BLOB";
} else if (FieldType.String_1.name().equals(type.name())) {
return "CHAR";
} else if (FieldType.String_10.name().equals(type.name())) {
return "CHAR";
} else if (FieldType.String_var.name().equals(type.name())) {
return "VARCHAR2";
} else if (FieldType.String_var50.name().equals(type.name())) {
return "VARCHAR2";
} else if (FieldType.String_var255.name().equals(type.name())) {
return "VARCHAR2";
} else if (FieldType.String_var500.name().equals(type.name())) {
return "VARCHAR2";
} else if (FieldType.String_var2500.name().equals(type.name())) {
return "VARCHAR2";
} else if (FieldType.String_var4000.name().equals(type.name())) {
return "VARCHAR2";
} else if (FieldType.String_super.name().equals(type.name())) {
//Oracle中LONG最大支持2G字节
return "LONG";
}
return "";
}
public String getType(String type, int lenght, int precision, int scale) {
if ("CHAR".equals(type) && lenght == 1) {
return FieldType.String_1.name();
} else if ("CHAR".equals(type) && lenght == 10) {
return FieldType.String_10.name();
} else if ("CHAR".equals(type)) {
return FieldType.String_var.name();
} else if ("VARCHAR".equals(type) && lenght == 50) {
return FieldType.String_var50.name();
} else if ("NVARCHAR".equals(type)) {
return FieldType.String_var50.name();
} else if ("VARCHAR2".equals(type) && lenght == 50) {
return FieldType.String_var50.name();
} else if ("VARCHAR2".equals(type) && lenght == 100) {
return FieldType.String_var100.name();
} else if ("VARCHAR2".equals(type) && lenght == 255) {
return FieldType.String_var255.name();
} else if ("VARCHAR2".equals(type) && lenght == 500) {
return FieldType.String_var500.name();
} else if ("VARCHAR2".equals(type) && lenght == 2500) {
return FieldType.String_var2500.name();
} else if ("VARCHAR2".equals(type) && lenght == 4000) {
return FieldType.String_var4000.name();
} else if ("VARCHAR2".equals(type)) {
return FieldType.String_var.name();
} else if ("NVARCHAR2".equals(type)) {
return FieldType.String_var100.name();
} else if ("CLOB".equals(type)) {
return FieldType.String_var50.name();
} else if ("NCLOB".equals(type)) {
return FieldType.String_var50.name();
} else if ("LONG".equals(type)) {
return FieldType.String_super.name();
} else if ("NUMBER".equals(type)) {
if (precision > 18 && scale == 0) {
return FieldType.Long.name();
} else if (precision >= 10 && precision <= 18 && scale == 0) {
return FieldType.Long.name();
} else if (precision >= 1 && precision <= 9 && scale == 0) {
return FieldType.Integer.name();
} else if (scale > 0) {
return FieldType.Double.name();
} else {
return FieldType.Long.name();
}
} else if ("DATE".equals(type)) {
return FieldType.Date.name();
} else if ("TIMESTAMP".equals(type)) {
return FieldType.Date.name();
}
return FieldType.String_var50.name();
}
}

Powered by TurnKey Linux.