Added statics, visit methods, implemented visit for Function and Procedure.
Signed-off-by: minorman <michael.norman@oracle.com>
diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/BaseDatabaseTypeVisitor.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/BaseDatabaseTypeVisitor.java
index da3ba35..16ff181 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/BaseDatabaseTypeVisitor.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/BaseDatabaseTypeVisitor.java
@@ -17,144 +17,154 @@
public class BaseDatabaseTypeVisitor implements DatabaseTypeVisitor {
- //scalar visit callbacks
- public void visit(BinaryType databaseType) {
- }
- public void visit(BlobType databaseType) {
- }
- public void visit(LongRawType databaseType) {
- }
- public void visit(RawType databaseType) {
- }
- public void visit(CharType databaseType) {
- }
- public void visit(ClobType databaseType) {
- }
- public void visit(DecimalType databaseType) {
- }
- public void visit(DoubleType databaseType) {
- }
- public void visit(FloatType databaseType) {
- }
- public void visit(IntervalDayToSecond databaseType) {
- }
- public void visit(IntervalYearToMonth databaseType) {
- }
- public void visit(NClobType databaseType) {
- }
- public void visit(NumericType databaseType) {
- }
- public void visit(RealType databaseType) {
- }
- public void visit(ScalarDatabaseTypeEnum databaseType) {
- }
- public void visit(UnresolvedType databaseType) {
- }
- public void visit(UnresolvedSizedType databaseType) {
- }
- public void visit(URowIdType databaseType) {
- }
- public void visit(VarCharType databaseType) {
- }
- public void visit(VarChar2Type databaseType) {
- }
- public void visit(LongType databaseType) {
- }
+ //scalar visit callbacks
+ public void visit(BinaryType databaseType) {
+ }
+ public void visit(BlobType databaseType) {
+ }
+ public void visit(LongRawType databaseType) {
+ }
+ public void visit(RawType databaseType) {
+ }
+ public void visit(CharType databaseType) {
+ }
+ public void visit(ClobType databaseType) {
+ }
+ public void visit(DecimalType databaseType) {
+ }
+ public void visit(DoubleType databaseType) {
+ }
+ public void visit(FloatType databaseType) {
+ }
+ public void visit(IntervalDayToSecond databaseType) {
+ }
+ public void visit(IntervalYearToMonth databaseType) {
+ }
+ public void visit(NClobType databaseType) {
+ }
+ public void visit(NumericType databaseType) {
+ }
+ public void visit(RealType databaseType) {
+ }
+ public void visit(ScalarDatabaseTypeEnum databaseType) {
+ }
+ public void visit(UnresolvedType databaseType) {
+ }
+ public void visit(UnresolvedSizedType databaseType) {
+ }
+ public void visit(URowIdType databaseType) {
+ }
+ public void visit(VarCharType databaseType) {
+ }
+ public void visit(VarChar2Type databaseType) {
+ }
+ public void visit(LongType databaseType) {
+ }
- //composite visit callbacks
- public void beginVisit(ArgumentType databaseType) {
- }
- public void visit(ArgumentType databaseType) {
- beginVisit(databaseType);
- DatabaseType dt = databaseType.getDataType();
- if (dt != null) {
- dt.accept(this);
- }
- endVisit(databaseType);
- }
- public void endVisit(ArgumentType databaseType) {
- }
-
- public void beginVisit(FieldType databaseType) {
- }
- public void visit(FieldType databaseType) {
- beginVisit(databaseType);
- DatabaseType dt = databaseType.getDataType();
- if (dt != null) {
- dt.accept(this);
- }
- endVisit(databaseType);
- }
- public void endVisit(FieldType databaseType) {
- }
+ //composite visit callbacks
+ public void beginVisit(ArgumentType databaseType) {
+ }
+ public void visit(ArgumentType databaseType) {
+ beginVisit(databaseType);
+ DatabaseType dt = databaseType.getDataType();
+ if (dt != null) {
+ dt.accept(this);
+ }
+ endVisit(databaseType);
+ }
+ public void endVisit(ArgumentType databaseType) {
+ }
+
+ public void beginVisit(FieldType databaseType) {
+ }
+ public void visit(FieldType databaseType) {
+ beginVisit(databaseType);
+ DatabaseType dt = databaseType.getDataType();
+ if (dt != null) {
+ dt.accept(this);
+ }
+ endVisit(databaseType);
+ }
+ public void endVisit(FieldType databaseType) {
+ }
- public void beginVisit(PLSQLCursorType databaseType) {
- }
- public void visit(PLSQLCursorType databaseType) {
- beginVisit(databaseType);
- DatabaseType dt = databaseType.getDataType();
- if (dt != null) {
- dt.accept(this);
- }
- endVisit(databaseType);
- }
- public void endVisit(PLSQLCursorType databaseType) {
- }
+ public void beginVisit(PLSQLCursorType databaseType) {
+ }
+ public void visit(PLSQLCursorType databaseType) {
+ beginVisit(databaseType);
+ DatabaseType dt = databaseType.getDataType();
+ if (dt != null) {
+ dt.accept(this);
+ }
+ endVisit(databaseType);
+ }
+ public void endVisit(PLSQLCursorType databaseType) {
+ }
- public void beginVisit(PLSQLPackageType databaseType) {
- }
- public void visit(PLSQLPackageType databaseType) {
- beginVisit(databaseType);
- //TODO
- endVisit(databaseType);
- }
- public void endVisit(PLSQLPackageType databaseType) {
- }
+ public void beginVisit(PLSQLPackageType databaseType) {
+ }
+ public void visit(PLSQLPackageType databaseType) {
+ beginVisit(databaseType);
+ //TODO
+ endVisit(databaseType);
+ }
+ public void endVisit(PLSQLPackageType databaseType) {
+ }
- public void beginVisit(PLSQLRecordType databaseType) {
- }
- public void visit(PLSQLRecordType databaseType) {
- //TODO
- }
- public void endVisit(PLSQLRecordType databaseType) {
- }
+ public void beginVisit(PLSQLRecordType databaseType) {
+ }
+ public void visit(PLSQLRecordType databaseType) {
+ //TODO
+ }
+ public void endVisit(PLSQLRecordType databaseType) {
+ }
- public void beginVisit(PLSQLCollectionType databaseType) {
- }
- public void visit(PLSQLCollectionType databaseType) {
- //TODO
- }
- public void endVisit(PLSQLCollectionType databaseType) {
- }
+ public void beginVisit(PLSQLCollectionType databaseType) {
+ }
+ public void visit(PLSQLCollectionType databaseType) {
+ //TODO
+ }
+ public void endVisit(PLSQLCollectionType databaseType) {
+ }
- public void beginVisit(ProcedureType databaseType) {
- }
- public void visit(ProcedureType databaseType) {
- //TODO
- }
- public void endVisit(ProcedureType databaseType) {
- }
+ public void beginVisit(ProcedureType databaseType) {
+ }
+ public void visit(ProcedureType databaseType) {
+ beginVisit(databaseType);
+ List<ArgumentType> arguments = databaseType.getArguments();
+ for (ArgumentType argument : arguments) {
+ argument.accept(this);
+ }
+ endVisit(databaseType);
+ }
+ public void endVisit(ProcedureType databaseType) {
+ }
- public void beginVisit(FunctionType databaseType) {
- }
- public void visit(FunctionType databaseType) {
- //TODO
- }
- public void endVisit(FunctionType databaseType) {
- }
+ public void beginVisit(FunctionType databaseType) {
+ }
+ public void visit(FunctionType databaseType) {
+ beginVisit(databaseType);
+ List<ArgumentType> arguments = databaseType.getArguments();
+ for (ArgumentType argument : arguments) {
+ argument.accept(this);
+ }
+ endVisit(databaseType);
+ }
+ public void endVisit(FunctionType databaseType) {
+ }
- public void beginVisit(TableType databaseType) {
- }
- public void visit(TableType databaseType) {
- beginVisit(databaseType);
- List<FieldType> columns = databaseType.getColumns();
- for (FieldType column : columns) {
- column.accept(this);
- }
- endVisit(databaseType);
- }
- public void endVisit(TableType databaseType) {
- }
+ public void beginVisit(TableType databaseType) {
+ }
+ public void visit(TableType databaseType) {
+ beginVisit(databaseType);
+ List<FieldType> columns = databaseType.getColumns();
+ for (FieldType column : columns) {
+ column.accept(this);
+ }
+ endVisit(databaseType);
+ }
+ public void endVisit(TableType databaseType) {
+ }
public void beginVisit(ObjectType databaseType) {
}
diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/BlobType.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/BlobType.java
index 0040164..dacf9fa 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/BlobType.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/BlobType.java
@@ -14,13 +14,14 @@
public class BlobType extends SizedType implements DatabaseTypeVisitable {
+ static final String TYPENAME = "BLOB";
static long DEFAULT_SIZE = 0l;
public BlobType() {
- super("BLOB", DEFAULT_SIZE);
+ super(TYPENAME, DEFAULT_SIZE);
}
public BlobType(long size) {
- super("BLOB", size);
+ super(TYPENAME, size);
}
public BlobType(String typeName, long size) {
super(typeName, size);
diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/ClobType.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/ClobType.java
index d7057fb..43d60f0 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/ClobType.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/ClobType.java
@@ -14,13 +14,14 @@
public class ClobType extends SizedType implements DatabaseTypeVisitable {
+ static final String TYPENAME = "CLOB";
static final long DEFAULT_SIZE = 0l;
public ClobType() {
- super("CLOB", DEFAULT_SIZE);
+ super(TYPENAME, DEFAULT_SIZE);
}
public ClobType(long size) {
- super("CLOB", size);
+ super(TYPENAME, size);
}
public ClobType(String typeName, long size) {
super(typeName, size);
diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/FunctionType.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/FunctionType.java
index 45427e5..a9cfb27 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/FunctionType.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/FunctionType.java
@@ -28,9 +28,37 @@
this.returnArgument = returnArgument;
}
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder("FUNCTION ");
+ if (schema != null) {
+ sb.append(schema);
+ sb.append(".");
+ }
+ sb.append(procedureName);
+ sb.append(" (");
+ for (int i=0; i<arguments.size();) {
+ ArgumentType arg = arguments.get(i);
+ sb.append(arg.argumentName);
+ if (arg.optional) {
+ sb.append("(opt) ");
+ } else {
+ sb.append(" ");
+ }
+ sb.append(arg.getDirection());
+ sb.append(" ");
+ sb.append(arg.getDataType());
+ if (++i < arguments.size()) {
+ sb.append(", ");
+ }
+ }
+ sb.append(") RETURN ");
+ sb.append(returnArgument.getTypeName());
+ return sb.toString();
+ }
+
@Override
public void accept(DatabaseTypeVisitor visitor) {
visitor.visit(this);
}
-
}
diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/LongRawType.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/LongRawType.java
index 1127db8..61084a9 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/LongRawType.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/LongRawType.java
@@ -13,12 +13,17 @@
package org.eclipse.persistence.tools.oracleddl.metadata;
public class LongRawType extends BlobType {
+
+ static final String TYPENAME = "LONG RAW";
public LongRawType() {
- super("LONG RAW", BlobType.DEFAULT_SIZE);
+ super(TYPENAME, BlobType.DEFAULT_SIZE);
}
public LongRawType(long size) {
- super("LONG RAW", size);
+ super(TYPENAME, size);
+ }
+ public void accept(DatabaseTypeVisitor visitor) {
+ visitor.visit(this);
}
}
\ No newline at end of file
diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/LongType.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/LongType.java
index 976a201..746bbfa 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/LongType.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/LongType.java
@@ -14,11 +14,13 @@
public class LongType extends VarChar2Type {
+ static final String TYPENAME = "LONG";
+
public LongType() {
- super("LONG", VarCharType.DEFAULT_SIZE);
+ super(TYPENAME, VarCharType.DEFAULT_SIZE);
}
public LongType(long size) {
- super("LONG", size);
+ super(TYPENAME, size);
}
@Override
diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/NCharType.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/NCharType.java
index 95c9abd..6e17b3e 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/NCharType.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/NCharType.java
@@ -15,7 +15,6 @@
public class NCharType extends CharType {
static final String TYPENAME = "NCHAR";
- static final long DEFAULT_SIZE = 1l;
public NCharType() {
super(TYPENAME, DEFAULT_SIZE);
diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/NClobType.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/NClobType.java
index 031ac41..b74677e 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/NClobType.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/NClobType.java
@@ -14,10 +14,10 @@
public class NClobType extends ClobType {
- static long DEFAULT_SIZE = 0l;
-
+ static final String TYPENAME = "NCLOB";
+
public NClobType() {
- super("NCLOB", DEFAULT_SIZE);
+ super(TYPENAME, DEFAULT_SIZE);
}
@Override
diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/ProcedureType.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/ProcedureType.java
index 31bcf37..6987bb2 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/ProcedureType.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/ProcedureType.java
@@ -49,7 +49,7 @@
@Override
public void addCompositeType(DatabaseType enclosedType) {
- //TODO
+ arguments.add((ArgumentType)enclosedType);
}
@Override
@@ -60,8 +60,23 @@
sb.append(".");
}
sb.append(procedureName);
- sb.append(" (\n");
-
+ sb.append(" (");
+ for (int i=0; i<arguments.size();) {
+ ArgumentType arg = arguments.get(i);
+ sb.append(arg.argumentName);
+ if (arg.optional) {
+ sb.append("(opt) ");
+ } else {
+ sb.append(" ");
+ }
+ sb.append(arg.getDirection());
+ sb.append(" ");
+ sb.append(arg.getDataType());
+ if (++i < arguments.size()) {
+ sb.append(", ");
+ }
+ }
+ sb.append(")");
return sb.toString();
}
diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/RawType.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/RawType.java
index 2bccecf..b7a8641 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/RawType.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/RawType.java
@@ -14,11 +14,16 @@
public class RawType extends BlobType {
+ static final String TYPENAME = "RAW";
+
public RawType() {
- super("RAW", BlobType.DEFAULT_SIZE);
+ super(TYPENAME, BlobType.DEFAULT_SIZE);
}
public RawType(long size) {
- super("RAW", size);
+ super(TYPENAME, size);
+ }
+ public void accept(DatabaseTypeVisitor visitor) {
+ visitor.visit(this);
}
}
\ No newline at end of file
diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/URowIdType.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/URowIdType.java
index 51df037..44f6f25 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/URowIdType.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/URowIdType.java
@@ -14,13 +14,14 @@
public class URowIdType extends SizedType implements DatabaseTypeVisitable {
+ static final String TYPENAME = "UROWID";
static long DEFAULT_SIZE = 4000l;
public URowIdType() {
- super("UROWID", DEFAULT_SIZE);
+ super(TYPENAME, DEFAULT_SIZE);
}
public URowIdType(long size) {
- super("UROWID", size);
+ super(TYPENAME, size);
}
@Override
diff --git a/src/org/eclipse/persistence/tools/oracleddl/metadata/VarCharType.java b/src/org/eclipse/persistence/tools/oracleddl/metadata/VarCharType.java
index ce25ca7..887b35f 100644
--- a/src/org/eclipse/persistence/tools/oracleddl/metadata/VarCharType.java
+++ b/src/org/eclipse/persistence/tools/oracleddl/metadata/VarCharType.java
@@ -14,13 +14,14 @@
public class VarCharType extends SizedType implements DatabaseTypeVisitable {
+ static final String TYPENAME = "VARCHAR";
static long DEFAULT_SIZE = 1l;
public VarCharType() {
- super("VARCHAR", DEFAULT_SIZE);
+ super(TYPENAME, DEFAULT_SIZE);
}
public VarCharType(long size) {
- super("VARCHAR", size);
+ super(TYPENAME, size);
}
@Override