Fix for bug# 391452 (DERIVED TYPE FOR FK/PK COLUMNS GENERATED INCORRECTLY IN TOPLINK BUILDER)
diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/util/DatabaseTypeBuilder.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/util/DatabaseTypeBuilder.java
index d101801..47055ba 100644
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/util/DatabaseTypeBuilder.java
+++ b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/util/DatabaseTypeBuilder.java
@@ -66,6 +66,7 @@
     public static final String TOPLEVEL = "TOPLEVEL";

     public static final String ROWTYPE_MACRO = PERCENT + "ROWTYPE";

     public static final String TYPE_MACRO = PERCENT + "TYPE";

+    public static final String DOT = ".";

     public static final String TRANSFORM_PREFIX =

         "DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'";

     public static final String DBMS_METADATA_GET_DDL_STMT_PREFIX =

@@ -575,15 +576,22 @@
             UnresolvedType uType = stac.pop();

             String typeName = uType.getTypeName();

             CompositeDatabaseType owningType = uType.getOwningType();

-            int dotIdx = typeName.indexOf('.');

+            int dotIdx = typeName.indexOf(DOT);

             String typeName1 = typeName;

             String typeName2 = null;

             // handle dotted scenario, i.e. "PackageName.TypeName" or "SchemaName.TypeName"

             if (dotIdx != -1) {

                 typeName1 = typeName.substring(0, dotIdx);

                 typeName2 = typeName.substring(dotIdx+1, typeName.length());

+

+                // handle second dotted scenario, i.e. "SchemaName.TableName.ColumnName"

+                dotIdx = typeName2.indexOf(DOT);

+                if (dotIdx != -1) {

+                    String tmpStr = typeName2;

+                    typeName1 = tmpStr.substring(0, dotIdx);

+                    typeName2 = tmpStr.substring(dotIdx+1, tmpStr.length());

+                }

             }

-            

             // check type repository first

             resolvedType = (CompositeDatabaseType)typesRepository.getDatabaseType(typeName);

             if (resolvedType == null) {