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
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();
|
|
}
|
|
}
|