-- Create sql in-place upgrade patch for some up.xml
-- property changes. The sql will be shown (as much as 
-- possible) in-line with associated segment of up.xml.
-- The xml will be set off from the sql by commenting each
-- line with "-- up.xml ->".
--
-- Bug #'s/Properties added
--
--  TLO: update property 'TARGET_LOAD_ORDERING', set init value to 'false', add validator for property.  
-- 

SET SERVEROUTPUT ON
SET LINESIZE 500
DECLARE -- Outer block for utility functions/variables BUGBUG: Should these be packagized (uprop_util)
-- ##########################################################################

  SCRIPTID CONSTANT VARCHAR2(40) := 'TLO Update'; -- For output logging
  EOL      CONSTANT VARCHAR2(01) := CHR(10); -- new line
  TRACEON  CONSTANT BOOLEAN      := TRUE; -- Provide function level trace output
  OUTINITED         BOOLEAN      := FALSE; -- Flag indicating output has been enabled

  
  PROPERTYTYPE_CORE          NUMBER:= 0;
  PROPERTYTYPE_LOGICAL       NUMBER:= 1;
  PROPERTYTYPE_PHYSICAL      NUMBER:= 2;
  PROPERTYTYPE_CONFIGURATION NUMBER:= 2;
  PROPERTYTYPE_USERDEFINED   NUMBER:= 3;

  -- Record definitions for the various views
  -- Handy sql to make record definitions (some hand editing required (in sqlworksheet anyway)

-- ==========================================================================
  TYPE CMPPrimitiveType IS RECORD (
-- ==========================================================================
   WORKSPACEID                CMPPrimitiveType_r.WORKSPACEID%TYPE                      DEFAULT  1                        -- NUMBER(9,0)                 1
  ,DELETIONPARENT             CMPPrimitiveType_r.DELETIONPARENT%TYPE                   DEFAULT  null                     -- NUMBER(9,0)                 2
  ,AGGREGATEDSIGNATURE        CMPPrimitiveType_r.AGGREGATEDSIGNATURE%TYPE              DEFAULT  null --sysdate           -- TIMESTAMP(6)                3
  ,CLASSNAME                  CMPPrimitiveType_r.CLASSNAME%TYPE                        DEFAULT  'CMPPrimitiveType'                               -- VARCHAR2(255)               4
  ,COMPLETED                  CMPPrimitiveType_r.COMPLETED%TYPE                        DEFAULT  1                        -- CHAR(1)                     5
  ,CREATEDBY                  CMPPrimitiveType_r.CREATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                6
  ,CREATIONTIMESTAMP          CMPPrimitiveType_r.CREATIONTIMESTAMP%TYPE                DEFAULT  null --sysdate           -- DATE                        7
  ,CUSTOMERDELETABLE          CMPPrimitiveType_r.CUSTOMERDELETABLE%TYPE                DEFAULT  1                        -- CHAR(1)                     8
  ,CUSTOMERRENAMABLE          CMPPrimitiveType_r.CUSTOMERRENAMABLE%TYPE                DEFAULT  0                        -- CHAR(1)                     9
  ,DELETEINOVERRIDE           CMPPrimitiveType_r.DELETEINOVERRIDE%TYPE                 DEFAULT  0                        -- CHAR(1)                     10
  ,DESCRIPTION                CMPPrimitiveType_r.DESCRIPTION%TYPE                      DEFAULT  null --DEFINITIONKEY     -- VARCHAR2(4000)              11
  ,EDITABLE                   CMPPrimitiveType_r.EDITABLE%TYPE                         DEFAULT  1                        -- CHAR(1)                     12
  ,ELEMENTID                  CMPPrimitiveType_r.ELEMENTID%TYPE                        DEFAULT  null --ELEMENTID         -- NUMBER(9,0)                 13
  ,IMPORTED                   CMPPrimitiveType_r.IMPORTED%TYPE                         DEFAULT  0                        -- CHAR(1)                     14
  ,LOGICALNAME                CMPPrimitiveType_r.LOGICALNAME%TYPE                      DEFAULT  null --NAME              -- VARCHAR2(1000)              15
  ,METADATASIGNATURE          CMPPrimitiveType_r.METADATASIGNATURE%TYPE                DEFAULT  null --METADATASIGNATURE -- VARCHAR2(255)               16
  ,NAME                       CMPPrimitiveType_r.NAME%TYPE                             DEFAULT  null --NAME              -- VARCHAR2(1000)              17
  ,NOTE                       CMPPrimitiveType_r.NOTE%TYPE                             DEFAULT  null                     -- VARCHAR2(4000)              18
  ,NOTM                       CMPPrimitiveType_r.NOTM%TYPE                             DEFAULT  0                        -- NUMBER(9,0)                 19
  ,OVERRIDEATTRIBUTES         CMPPrimitiveType_r.OVERRIDEATTRIBUTES%TYPE               DEFAULT  0                        -- CHAR(1)                     20
  ,OVERRIDECHILDREN           CMPPrimitiveType_r.OVERRIDECHILDREN%TYPE                 DEFAULT  0                        -- CHAR(1)                     21
  ,OVERRIDEROLES              CMPPrimitiveType_r.OVERRIDEROLES%TYPE                    DEFAULT  0                        -- CHAR(1)                     22
  ,PERSISTENT                 CMPPrimitiveType_r.PERSISTENT%TYPE                       DEFAULT  1                        -- CHAR(1)                     23
  ,SEEDED                     CMPPrimitiveType_r.SEEDED%TYPE            
  DEFAULT  0                        -- CHAR(1)                     24
  ,STRONGTYPENAME             CMPPrimitiveType_r.STRONGTYPENAME%TYPE                   DEFAULT  null                     -- VARCHAR2(255)               25
  ,UOID                       CMPPrimitiveType_r.UOID%TYPE                             DEFAULT  null --UOID              -- VARCHAR2(40)                26
  ,UPDATEDBY                  CMPPrimitiveType_r.UPDATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                27
  ,UPDATETIMESTAMP            CMPPrimitiveType_r.UPDATETIMESTAMP%TYPE                  DEFAULT  null --sysdate           -- DATE                        28
  ,ICONOBJECT                 CMPPrimitiveType_r.ICONOBJECT%TYPE                       DEFAULT  null                     -- NUMBER(9,0)                 29
  ,EDITORCLASSNAME            CMPPrimitiveType_r.EDITORCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               30
  ,PROPERTYSHEETCLASSNAME     CMPPrimitiveType_r.PROPERTYSHEETCLASSNAME%TYPE           DEFAULT  null                     -- VARCHAR2(255)               31
  ,WIZARDCLASSNAME            CMPPrimitiveType_r.WIZARDCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               32
  ,COMPARATOR                 CMPPrimitiveType_r.COMPARATOR%TYPE                               DEFAULT  'oracle.wh.repos.impl.domain.comparator.PrimitiveValueComparator'                     -- VARCHAR2(255)               33
  ,OWNINGMODEL                CMPPrimitiveType_r.OWNINGMODEL%TYPE                              DEFAULT  null                     -- NUMBER(9,0)                 34
  ,ACLCONTAINER               CMPPrimitiveType_r.ACLCONTAINER%TYPE                     DEFAULT  null                     -- NUMBER(9,0)                 35
  ,VALIDATIONRESULT           CMPPrimitiveType_r.VALIDATIONRESULT%TYPE                 DEFAULT  null                     -- NUMBER(9,0)                 36
  ,OWNINGFOLDER               CMPPrimitiveType_r.OWNINGFOLDER%TYPE                     DEFAULT  null                     -- NUMBER(9,0)                 37
  ,POSITION                   CMPPrimitiveType_r.POSITION%TYPE                                         DEFAULT  0                        -- NUMBER(9,0)                 38
  ,FORMATOR                   CMPPrimitiveType_r.FORMATOR%TYPE                                         DEFAULT  null                     -- VARCHAR2(255)               39
  );

-- ==========================================================================
  TYPE CMPPrimitiveModelAttribute IS RECORD (
-- ==========================================================================
   WORKSPACEID                CMPPrimitiveModelAttribute_r.WORKSPACEID%TYPE                      DEFAULT  1                        -- NUMBER(9,0)                 1
  ,DELETIONPARENT             CMPPrimitiveModelAttribute_r.DELETIONPARENT%TYPE                   DEFAULT  null                     -- NUMBER(9,0)                 2
  ,AGGREGATEDSIGNATURE        CMPPrimitiveModelAttribute_r.AGGREGATEDSIGNATURE%TYPE              DEFAULT  null --sysdate           -- TIMESTAMP(6)                3
  ,CLASSNAME                  CMPPrimitiveModelAttribute_r.CLASSNAME%TYPE                        DEFAULT  'CMPPrimitiveModelAttribute'                                   -- VARCHAR2(255)               4
  ,COMPLETED                  CMPPrimitiveModelAttribute_r.COMPLETED%TYPE                        DEFAULT  1                        -- CHAR(1)                     5
  ,CREATEDBY                  CMPPrimitiveModelAttribute_r.CREATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                6
  ,CREATIONTIMESTAMP          CMPPrimitiveModelAttribute_r.CREATIONTIMESTAMP%TYPE                DEFAULT  null --sysdate           -- DATE                        7
  ,CUSTOMERDELETABLE          CMPPrimitiveModelAttribute_r.CUSTOMERDELETABLE%TYPE                DEFAULT  1                        -- CHAR(1)                     8
  ,CUSTOMERRENAMABLE          CMPPrimitiveModelAttribute_r.CUSTOMERRENAMABLE%TYPE                DEFAULT  0                        -- CHAR(1)                     9
  ,DELETEINOVERRIDE           CMPPrimitiveModelAttribute_r.DELETEINOVERRIDE%TYPE                 DEFAULT  0                        -- CHAR(1)                     10
  ,DESCRIPTION                CMPPrimitiveModelAttribute_r.DESCRIPTION%TYPE                      DEFAULT  null --DEFINITIONKEY     -- VARCHAR2(4000)              11
  ,EDITABLE                   CMPPrimitiveModelAttribute_r.EDITABLE%TYPE                         DEFAULT  1                        -- CHAR(1)                     12
  ,ELEMENTID                  CMPPrimitiveModelAttribute_r.ELEMENTID%TYPE                        DEFAULT  null --ELEMENTID         -- NUMBER(9,0)                 13
  ,IMPORTED                   CMPPrimitiveModelAttribute_r.IMPORTED%TYPE                         DEFAULT  0                        -- CHAR(1)                     14
  ,LOGICALNAME                CMPPrimitiveModelAttribute_r.LOGICALNAME%TYPE                      DEFAULT  null --NAME              -- VARCHAR2(1000)              15
  ,METADATASIGNATURE          CMPPrimitiveModelAttribute_r.METADATASIGNATURE%TYPE                DEFAULT  null --METADATASIGNATURE -- VARCHAR2(255)               16
  ,NAME                       CMPPrimitiveModelAttribute_r.NAME%TYPE                             DEFAULT  null --NAME              -- VARCHAR2(1000)              17
  ,NOTE                       CMPPrimitiveModelAttribute_r.NOTE%TYPE                             DEFAULT  null                     -- VARCHAR2(4000)              18
  ,NOTM                       CMPPrimitiveModelAttribute_r.NOTM%TYPE                             DEFAULT  0                        -- NUMBER(9,0)                 19
  ,OVERRIDEATTRIBUTES         CMPPrimitiveModelAttribute_r.OVERRIDEATTRIBUTES%TYPE               DEFAULT  0                        -- CHAR(1)                     20
  ,OVERRIDECHILDREN           CMPPrimitiveModelAttribute_r.OVERRIDECHILDREN%TYPE                 DEFAULT  0                        -- CHAR(1)                     21
  ,OVERRIDEROLES              CMPPrimitiveModelAttribute_r.OVERRIDEROLES%TYPE                    DEFAULT  0                        -- CHAR(1)                     22
  ,PERSISTENT                 CMPPrimitiveModelAttribute_r.PERSISTENT%TYPE                       DEFAULT  1                        -- CHAR(1)                     23
  ,SEEDED                     CMPPrimitiveModelAttribute_r.SEEDED%TYPE                           DEFAULT  0                        -- CHAR(1)                     24
,STRONGTYPENAME             CMPPrimitiveModelAttribute_r.STRONGTYPENAME%TYPE                   DEFAULT  null                     -- VARCHAR2(255)               25
  ,UOID                       CMPPrimitiveModelAttribute_r.UOID%TYPE                             DEFAULT  null --UOID              -- VARCHAR2(40)                26
  ,UPDATEDBY                  CMPPrimitiveModelAttribute_r.UPDATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                27
  ,UPDATETIMESTAMP            CMPPrimitiveModelAttribute_r.UPDATETIMESTAMP%TYPE                  DEFAULT  null --sysdate           -- DATE                        28
  ,ICONOBJECT                 CMPPrimitiveModelAttribute_r.ICONOBJECT%TYPE                       DEFAULT  null                     -- NUMBER(9,0)                 29
  ,EDITORCLASSNAME            CMPPrimitiveModelAttribute_r.EDITORCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               30
  ,PROPERTYSHEETCLASSNAME     CMPPrimitiveModelAttribute_r.PROPERTYSHEETCLASSNAME%TYPE           DEFAULT  null                     -- VARCHAR2(255)               31
  ,WIZARDCLASSNAME            CMPPrimitiveModelAttribute_r.WIZARDCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               32
  ,ATTRIBUTETYPEAGSG          CMPPrimitiveModelAttribute_r.ATTRIBUTETYPEAGSG%TYPE                DEFAULT  null                     -- TIMESTAMP(6)                33
  ,ATTRIBUTETYPEFQN           CMPPrimitiveModelAttribute_r.ATTRIBUTETYPEFQN%TYPE                 DEFAULT  null                     -- VARCHAR2(4000)              34
  ,ATTRIBUTETYPELUPD          CMPPrimitiveModelAttribute_r.ATTRIBUTETYPELUPD%TYPE                DEFAULT  null                     -- TIMESTAMP(6)                35
  ,ATTRIBUTETYPEUOID          CMPPrimitiveModelAttribute_r.ATTRIBUTETYPEUOID%TYPE                DEFAULT  null                     -- VARCHAR2(40)                36
  ,HASNAME                                      CMPPrimitiveModelAttribute_r.HASNAME%TYPE                                                DEFAULT  '0'                      -- CHAR(1)                     37
  ,ATTRIBUTETYPE                CMPPrimitiveModelAttribute_r.ATTRIBUTETYPE%TYPE                    DEFAULT  null                     -- NUMBER(9,0)                 38
  ,MODELATTRIBUTEOWNER        CMPPrimitiveModelAttribute_r.MODELATTRIBUTEOWNER%TYPE              DEFAULT  null                     -- NUMBER(9,0)                 39
  ,FIRSTCLASSOBJECT           CMPPrimitiveModelAttribute_r.FIRSTCLASSOBJECT%TYPE                 DEFAULT  null                     -- NUMBER(9,0)                 40
  ,POSITION                                     CMPPrimitiveModelAttribute_r.POSITION%TYPE                                       DEFAULT  0                        -- NUMBER(9,0)                 41
  ,VALUE                                                CMPPrimitiveModelAttribute_r.VALUE%TYPE                            DEFAULT  null                     -- VARCHAR2(4000)              42
  );

-- ==========================================================================
 TYPE CMPPropertyGroupDefinition IS RECORD (
-- ==========================================================================
   WORKSPACEID                 CMPPropertyGroupDefinition_r.WORKSPACEID%TYPE                      DEFAULT  1                        -- NUMBER(9,0)                 1
  ,DELETIONPARENT              CMPPropertyGroupDefinition_r.DELETIONPARENT%TYPE                   DEFAULT  null                     -- NUMBER(9,0)                 2
  ,AGGREGATEDSIGNATURE         CMPPropertyGroupDefinition_r.AGGREGATEDSIGNATURE%TYPE              DEFAULT  null --sysdate           -- TIMESTAMP(6)                3
  ,CLASSNAME                   CMPPropertyGroupDefinition_r.CLASSNAME%TYPE                        DEFAULT  'CMPPropertyGroupDefinition'  -- VARCHAR2(255)               4
  ,COMPLETED                   CMPPropertyGroupDefinition_r.COMPLETED%TYPE                        DEFAULT  1                        -- CHAR(1)                     5
  ,CREATEDBY                   CMPPropertyGroupDefinition_r.CREATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                6
  ,CREATIONTIMESTAMP           CMPPropertyGroupDefinition_r.CREATIONTIMESTAMP%TYPE                DEFAULT  null --sysdate           -- DATE                        7
  ,CUSTOMERDELETABLE           CMPPropertyGroupDefinition_r.CUSTOMERDELETABLE%TYPE                DEFAULT  1                        -- CHAR(1)                     8
  ,CUSTOMERRENAMABLE           CMPPropertyGroupDefinition_r.CUSTOMERRENAMABLE%TYPE                DEFAULT  0                        -- CHAR(1)                     9
  ,DELETEINOVERRIDE            CMPPropertyGroupDefinition_r.DELETEINOVERRIDE%TYPE                 DEFAULT  0                        -- CHAR(1)                     10
  ,DESCRIPTION                 CMPPropertyGroupDefinition_r.DESCRIPTION%TYPE                      DEFAULT  null                     -- VARCHAR2(4000)              11
  ,EDITABLE                    CMPPropertyGroupDefinition_r.EDITABLE%TYPE                         DEFAULT  1                        -- CHAR(1)                     12
  ,ELEMENTID                   CMPPropertyGroupDefinition_r.ELEMENTID%TYPE                        DEFAULT  null --ELEMENTID         -- NUMBER(9,0)                 13
  ,IMPORTED                    CMPPropertyGroupDefinition_r.IMPORTED%TYPE                         DEFAULT  0                        -- CHAR(1)                     14
  ,LOGICALNAME                 CMPPropertyGroupDefinition_r.LOGICALNAME%TYPE                      DEFAULT  null --DEFINITIONKEY     -- VARCHAR2(1000)              15
  ,METADATASIGNATURE           CMPPropertyGroupDefinition_r.METADATASIGNATURE%TYPE                DEFAULT  null --METADATASIGNATURE -- VARCHAR2(255)               16
  ,NAME                        CMPPropertyGroupDefinition_r.NAME%TYPE                             DEFAULT  null --NAME              -- VARCHAR2(1000)              17
  ,NOTE                        CMPPropertyGroupDefinition_r.NOTE%TYPE                             DEFAULT  null                     -- VARCHAR2(4000)              18
  ,NOTM                        CMPPropertyGroupDefinition_r.NOTM%TYPE                             DEFAULT  0                        -- NUMBER(9,0)                 19
  ,OVERRIDEATTRIBUTES          CMPPropertyGroupDefinition_r.OVERRIDEATTRIBUTES%TYPE               DEFAULT  0                        -- CHAR(1)                     20
  ,OVERRIDECHILDREN            CMPPropertyGroupDefinition_r.OVERRIDECHILDREN%TYPE                 DEFAULT  0                        -- CHAR(1)                     21
  ,OVERRIDEROLES               CMPPropertyGroupDefinition_r.OVERRIDEROLES%TYPE                    DEFAULT  0                        -- CHAR(1)                     22
  ,PERSISTENT                  CMPPropertyGroupDefinition_r.PERSISTENT%TYPE                       DEFAULT  1                        -- CHAR(1)                     23
  ,SEEDED                      CMPPropertyGroupDefinition_r.SEEDED%TYPE                           DEFAULT  0                        -- CHAR(1)                     24
  ,STRONGTYPENAME              CMPPropertyGroupDefinition_r.STRONGTYPENAME%TYPE                   DEFAULT  null                     -- VARCHAR2(255)               25
  ,UOID                        CMPPropertyGroupDefinition_r.UOID%TYPE                             DEFAULT  null --UOID              -- VARCHAR2(40)                26
  ,UPDATEDBY                   CMPPropertyGroupDefinition_r.UPDATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                27
  ,UPDATETIMESTAMP             CMPPropertyGroupDefinition_r.UPDATETIMESTAMP%TYPE                  DEFAULT  null --sysdate           -- DATE                        28
  ,ICONOBJECT                  CMPPropertyGroupDefinition_r.ICONOBJECT%TYPE                       DEFAULT  null                     -- NUMBER(9,0)                 29
  ,EDITORCLASSNAME             CMPPropertyGroupDefinition_r.EDITORCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               30
  ,PROPERTYSHEETCLASSNAME      CMPPropertyGroupDefinition_r.PROPERTYSHEETCLASSNAME%TYPE           DEFAULT  null                     -- VARCHAR2(255)               31
  ,WIZARDCLASSNAME             CMPPropertyGroupDefinition_r.WIZARDCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               32
  ,FIRSTCLASSOBJECT            CMPPropertyGroupDefinition_r.FIRSTCLASSOBJECT%TYPE                 DEFAULT  null --FIRSTCLASSOBJECT  -- NUMBER(9,0)                 33
  ,POSITION                    CMPPropertyGroupDefinition_r.POSITION%TYPE                         DEFAULT  0    --POSITION          -- NUMBER(9,0)                 34
  ,DEFINITIONKEY               CMPPropertyGroupDefinition_r.DEFINITIONKEY%TYPE                    DEFAULT  null                     -- VARCHAR2(255)               35
  ,HIDDEN                      CMPPropertyGroupDefinition_r.HIDDEN%TYPE                           DEFAULT  0                        -- CHAR(1)                     36
  ,TYPE                        CMPPropertyGroupDefinition_r.TYPE%TYPE                             DEFAULT  null                     -- NUMBER(9,0)                 37
  ,PROPERTYGROUPOWNER          CMPPropertyGroupDefinition_r.PROPERTYGROUPOWNER%TYPE               DEFAULT  null --property set      -- NUMBER(9,0)                 38
  );

-- ==========================================================================
  TYPE CMPClassDefinition IS RECORD (
-- ==========================================================================
   WORKSPACEID                CMPClassDefinition_r.WORKSPACEID%TYPE                   DEFAULT  1                        -- NUMBER(9,0)                 1 
  ,DELETIONPARENT             CMPClassDefinition_r.DELETIONPARENT%TYPE                DEFAULT  null                     -- NUMBER(9,0)                 2 
  ,AGGREGATEDSIGNATURE        CMPClassDefinition_r.AGGREGATEDSIGNATURE%TYPE           DEFAULT  null --sysdate           -- TIMESTAMP(6)                3 
  ,CLASSNAME                  CMPClassDefinition_r.CLASSNAME%TYPE                     DEFAULT  'CMPClassDefinition'  		-- VARCHAR2(255)               4 
  ,COMPLETED                  CMPClassDefinition_r.COMPLETED%TYPE                     DEFAULT  1                        -- CHAR(1)                     5 
  ,CREATEDBY                  CMPClassDefinition_r.CREATEDBY%TYPE                     DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                6 
  ,CREATIONTIMESTAMP          CMPClassDefinition_r.CREATIONTIMESTAMP%TYPE             DEFAULT  null --sysdate           -- DATE                        7 
  ,CUSTOMERDELETABLE          CMPClassDefinition_r.CUSTOMERDELETABLE%TYPE             DEFAULT  1                        -- CHAR(1)                     8 
  ,CUSTOMERRENAMABLE          CMPClassDefinition_r.CUSTOMERRENAMABLE%TYPE             DEFAULT  0                        -- CHAR(1)                     9 
  ,DELETEINOVERRIDE           CMPClassDefinition_r.DELETEINOVERRIDE%TYPE              DEFAULT  0                        -- CHAR(1)                     10
  ,DESCRIPTION                CMPClassDefinition_r.DESCRIPTION%TYPE                   DEFAULT  null --DEFINITIONKEY     -- VARCHAR2(4000)              11
  ,EDITABLE                   CMPClassDefinition_r.EDITABLE%TYPE                      DEFAULT  1                        -- CHAR(1)                     12
  ,ELEMENTID                  CMPClassDefinition_r.ELEMENTID%TYPE                     DEFAULT  null --ELEMENTID         -- NUMBER(9,0)                 13
  ,IMPORTED                   CMPClassDefinition_r.IMPORTED%TYPE                      DEFAULT  0                        -- CHAR(1)                     14
  ,LOGICALNAME                CMPClassDefinition_r.LOGICALNAME%TYPE                   DEFAULT  null --NAME              -- VARCHAR2(1000)              15
  ,METADATASIGNATURE          CMPClassDefinition_r.METADATASIGNATURE%TYPE             DEFAULT  null --METADATASIGNATURE -- VARCHAR2(255)               16
  ,NAME                       CMPClassDefinition_r.NAME%TYPE                          DEFAULT  null --NAME              -- VARCHAR2(1000)              17
  ,NOTE                       CMPClassDefinition_r.NOTE%TYPE                          DEFAULT  null                     -- VARCHAR2(4000)              18
  ,NOTM                       CMPClassDefinition_r.NOTM%TYPE                          DEFAULT  1                        -- NUMBER(9,0)                 19
  ,OVERRIDEATTRIBUTES         CMPClassDefinition_r.OVERRIDEATTRIBUTES%TYPE            DEFAULT  0                        -- CHAR(1)                     20
  ,OVERRIDECHILDREN           CMPClassDefinition_r.OVERRIDECHILDREN%TYPE              DEFAULT  0                        -- CHAR(1)                     21
  ,OVERRIDEROLES              CMPClassDefinition_r.OVERRIDEROLES%TYPE                 DEFAULT  0                        -- CHAR(1)                     22
  ,PERSISTENT                 CMPClassDefinition_r.PERSISTENT%TYPE                    DEFAULT  1                        -- CHAR(1)                     23
  ,SEEDED                     CMPClassDefinition_r.SEEDED%TYPE                        DEFAULT  0                        -- CHAR(1)                     24
  ,STRONGTYPENAME             CMPClassDefinition_r.STRONGTYPENAME%TYPE                DEFAULT  null                     -- VARCHAR2(255)               25
  ,UOID                       CMPClassDefinition_r.UOID%TYPE                          DEFAULT  null --UOID              -- VARCHAR2(40)                26
  ,UPDATEDBY                  CMPClassDefinition_r.UPDATEDBY%TYPE                     DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                27
  ,UPDATETIMESTAMP            CMPClassDefinition_r.UPDATETIMESTAMP%TYPE               DEFAULT  null --sysdate           -- DATE                        28
  ,ICONOBJECT                 CMPClassDefinition_r.ICONOBJECT%TYPE                    DEFAULT  null                     -- NUMBER(9,0)                 29
  ,EDITORCLASSNAME            CMPClassDefinition_r.EDITORCLASSNAME%TYPE               DEFAULT  null                     -- VARCHAR2(255)               30
  ,PROPERTYSHEETCLASSNAME     CMPClassDefinition_r.PROPERTYSHEETCLASSNAME%TYPE        DEFAULT  null                     -- VARCHAR2(255)               31
  ,WIZARDCLASSNAME            CMPClassDefinition_r.WIZARDCLASSNAME%TYPE             	DEFAULT  null                     -- VARCHAR2(255)               32
  ,COMPARATOR             		CMPClassDefinition_r.COMPARATOR%TYPE                  	DEFAULT  'oracle.wh.repos.impl.domain.comparator.ElementNameComparator'                     -- VARCHAR2(255)               33
  ,OWNINGMODEL             		CMPClassDefinition_r.OWNINGMODEL%TYPE                  	DEFAULT  null                     -- NUMBER(9,0)               	 34
  ,ACLCONTAINER             	CMPClassDefinition_r.ACLCONTAINER%TYPE                  DEFAULT  null                     -- NUMBER(9,0)                 35
  ,VALIDATIONRESULT           CMPClassDefinition_r.VALIDATIONRESULT%TYPE              DEFAULT  null                     -- NUMBER(9,0)                 36
  ,OWNINGFOLDER             	CMPClassDefinition_r.OWNINGFOLDER%TYPE                  DEFAULT  null                     -- NUMBER(9,0)                 37
  ,POSITION             			CMPClassDefinition_r.POSITION%TYPE                  		DEFAULT  0                     		-- NUMBER(9,0)                 38
  ,ABSTRACT             			CMPClassDefinition_r.ABSTRACT%TYPE                  		DEFAULT  '0'                     	-- CHAR(1)                     39
  ,CLASSPERSISTENT            CMPClassDefinition_r.CLASSPERSISTENT%TYPE               DEFAULT  '1'                     	-- CHAR(1)                     40
  ,DISPLAYNAME             		CMPClassDefinition_r.DISPLAYNAME%TYPE                  	DEFAULT  null                     -- VARCHAR2(255)               41
  ,EXTENSIBLE             		CMPClassDefinition_r.EXTENSIBLE%TYPE                  	DEFAULT  '1'                     	-- CHAR(1)                     42
  ,FOLDERTREEICON             CMPClassDefinition_r.FOLDERTREEICON%TYPE                DEFAULT  null                     -- VARCHAR2(255)               43
  ,GENERATABLE             		CMPClassDefinition_r.GENERATABLE%TYPE                  	DEFAULT  '0'                     	-- CHAR(1)                     44
  ,NAMESPACEDOMAIN            CMPClassDefinition_r.NAMESPACEDOMAIN%TYPE               DEFAULT  null                     -- VARCHAR2(255)               45
  ,PACKAGENAME             		CMPClassDefinition_r.PACKAGENAME%TYPE                  	DEFAULT  null                     -- VARCHAR2(255)               46
  ,PUBLICCLASSNAME            CMPClassDefinition_r.PUBLICCLASSNAME%TYPE               DEFAULT  null                     -- VARCHAR2(255)               47
  ,PUBLICWEAKLYTYPED          CMPClassDefinition_r.PUBLICWEAKLYTYPED%TYPE             DEFAULT  '1'                     	-- CHAR(1)                     48
  ,SHORTCUTTREEICON           CMPClassDefinition_r.SHORTCUTTREEICON%TYPE              DEFAULT  null                     -- VARCHAR2(255)               49
  ,STEREOTYPE             		CMPClassDefinition_r.STEREOTYPE%TYPE                  	DEFAULT  2                     		-- NUMBER(9,0)                 50
  ,TREEICON             			CMPClassDefinition_r.TREEICON%TYPE                  		DEFAULT  null                     -- VARCHAR2(255)               51
  ,WEAKLYTYPED             		CMPClassDefinition_r.WEAKLYTYPED%TYPE                  	DEFAULT  '1'                     	-- CHAR(1)                     52
  ,OVERRIDEE             			CMPClassDefinition_r.OVERRIDEE%TYPE                  		DEFAULT  null                     -- NUMBER(9,0)                 53
  ,SUPERCLASS             		CMPClassDefinition_r.SUPERCLASS%TYPE                  	DEFAULT  null                     -- NUMBER(9,0)                 54
  );

  
-- ==========================================================================
  TYPE CMPPropertySetDefinition IS RECORD (
-- ==========================================================================
   WORKSPACEID                 CMPPropertySetDefinition_r.WORKSPACEID%TYPE                      DEFAULT  1                        -- NUMBER(9,0)                 1 
  ,DELETIONPARENT              CMPPropertySetDefinition_r.DELETIONPARENT%TYPE                   DEFAULT  null                     -- NUMBER(9,0)                 2 
  ,AGGREGATEDSIGNATURE         CMPPropertySetDefinition_r.AGGREGATEDSIGNATURE%TYPE              DEFAULT  null --sysdate           -- TIMESTAMP(6)                3 
  ,CLASSNAME                   CMPPropertySetDefinition_r.CLASSNAME%TYPE                        DEFAULT  'CMPPropertySetDefinition'  -- VARCHAR2(255)               4 
  ,COMPLETED                   CMPPropertySetDefinition_r.COMPLETED%TYPE                        DEFAULT  1                        -- CHAR(1)                     5 
  ,CREATEDBY                   CMPPropertySetDefinition_r.CREATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                6 
  ,CREATIONTIMESTAMP           CMPPropertySetDefinition_r.CREATIONTIMESTAMP%TYPE                DEFAULT  null --sysdate           -- DATE                        7 
  ,CUSTOMERDELETABLE           CMPPropertySetDefinition_r.CUSTOMERDELETABLE%TYPE                DEFAULT  1                        -- CHAR(1)                     8 
  ,CUSTOMERRENAMABLE           CMPPropertySetDefinition_r.CUSTOMERRENAMABLE%TYPE                DEFAULT  0                        -- CHAR(1)                     9 
  ,DELETEINOVERRIDE            CMPPropertySetDefinition_r.DELETEINOVERRIDE%TYPE                 DEFAULT  0                        -- CHAR(1)                     10
  ,DESCRIPTION                 CMPPropertySetDefinition_r.DESCRIPTION%TYPE                      DEFAULT  null --DEFINITIONKEY     -- VARCHAR2(4000)              11
  ,EDITABLE                    CMPPropertySetDefinition_r.EDITABLE%TYPE                         DEFAULT  1                        -- CHAR(1)                     12
  ,ELEMENTID                   CMPPropertySetDefinition_r.ELEMENTID%TYPE                        DEFAULT  null --ELEMENTID         -- NUMBER(9,0)                 13
  ,IMPORTED                    CMPPropertySetDefinition_r.IMPORTED%TYPE                         DEFAULT  0                        -- CHAR(1)                     14
  ,LOGICALNAME                 CMPPropertySetDefinition_r.LOGICALNAME%TYPE                      DEFAULT  null --NAME              -- VARCHAR2(1000)              15
  ,METADATASIGNATURE           CMPPropertySetDefinition_r.METADATASIGNATURE%TYPE                DEFAULT  null --METADATASIGNATURE -- VARCHAR2(255)               16
  ,NAME                        CMPPropertySetDefinition_r.NAME%TYPE                             DEFAULT  null --NAME              -- VARCHAR2(1000)              17
  ,NOTE                        CMPPropertySetDefinition_r.NOTE%TYPE                             DEFAULT  null                     -- VARCHAR2(4000)              18
  ,NOTM                        CMPPropertySetDefinition_r.NOTM%TYPE                             DEFAULT  0                        -- NUMBER(9,0)                 19
  ,OVERRIDEATTRIBUTES          CMPPropertySetDefinition_r.OVERRIDEATTRIBUTES%TYPE               DEFAULT  0                        -- CHAR(1)                     20
  ,OVERRIDECHILDREN            CMPPropertySetDefinition_r.OVERRIDECHILDREN%TYPE                 DEFAULT  0                        -- CHAR(1)                     21
  ,OVERRIDEROLES               CMPPropertySetDefinition_r.OVERRIDEROLES%TYPE                    DEFAULT  0                        -- CHAR(1)                     22
  ,PERSISTENT                  CMPPropertySetDefinition_r.PERSISTENT%TYPE                       DEFAULT  1                        -- CHAR(1)                     23
  ,SEEDED                      CMPPropertySetDefinition_r.SEEDED%TYPE                           DEFAULT  0                        -- CHAR(1)                     24
  ,STRONGTYPENAME              CMPPropertySetDefinition_r.STRONGTYPENAME%TYPE                   DEFAULT  null                     -- VARCHAR2(255)               25
  ,UOID                        CMPPropertySetDefinition_r.UOID%TYPE                             DEFAULT  null --UOID              -- VARCHAR2(40)                26
  ,UPDATEDBY                   CMPPropertySetDefinition_r.UPDATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                27
  ,UPDATETIMESTAMP             CMPPropertySetDefinition_r.UPDATETIMESTAMP%TYPE                  DEFAULT  null --sysdate           -- DATE                        28
  ,ICONOBJECT                  CMPPropertySetDefinition_r.ICONOBJECT%TYPE                       DEFAULT  null                     -- NUMBER(9,0)                 29
  ,EDITORCLASSNAME             CMPPropertySetDefinition_r.EDITORCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               30
  ,PROPERTYSHEETCLASSNAME      CMPPropertySetDefinition_r.PROPERTYSHEETCLASSNAME%TYPE           DEFAULT  null                     -- VARCHAR2(255)               31
  ,WIZARDCLASSNAME             CMPPropertySetDefinition_r.WIZARDCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               32
  ,FIRSTCLASSOBJECT            CMPPropertySetDefinition_r.FIRSTCLASSOBJECT%TYPE                 DEFAULT  null --FIRSTCLASSOBJECT  -- NUMBER(9,0)                 33
  ,POSITION                    CMPPropertySetDefinition_r.POSITION%TYPE                         DEFAULT  0    --POSITION          -- NUMBER(9,0)                 34
  ,PROPERTYTYPE                CMPPropertySetDefinition_r.PROPERTYTYPE%TYPE                     DEFAULT  PROPERTYTYPE_PHYSICAL    --PROPERTYTYPE -- NUMBER(9,0)  35
  ,OWNINGCLASSDEFINITION       CMPPropertySetDefinition_r.OWNINGCLASSDEFINITION%TYPE            DEFAULT  0    --OWNINGCLASSDEFINITION   -- NUMBER(9,0)           36
  ,OVERRIDEE                   CMPPropertySetDefinition_r.OVERRIDEE%TYPE                        DEFAULT  null    --OVERRIDEE         -- NUMBER(9,0)                 37
  ,PARENTPROPERTYSET           CMPPropertySetDefinition_r.PARENTPROPERTYSET%TYPE                DEFAULT  null    --PARENTPROPERTYSET -- NUMBER(9,0)                 38
  ,SUPERPROPERTYSET            CMPPropertySetDefinition_r.SUPERPROPERTYSET%TYPE                 DEFAULT  null    --SUPERPROPERTYSET  -- NUMBER(9,0)                 39
  );  

  
-- ==========================================================================
  TYPE CMPPropertyDefinition IS RECORD (
-- ==========================================================================
   WORKSPACEID                 CMPPropertyDefinition_r.WORKSPACEID%TYPE                      DEFAULT  1                        -- NUMBER(9,0)                 1 
  ,DELETIONPARENT              CMPPropertyDefinition_r.DELETIONPARENT%TYPE                   DEFAULT  null                     -- NUMBER(9,0)                 2 
  ,AGGREGATEDSIGNATURE         CMPPropertyDefinition_r.AGGREGATEDSIGNATURE%TYPE              DEFAULT  null --sysdate           -- TIMESTAMP(6)                3 
  ,CLASSNAME                   CMPPropertyDefinition_r.CLASSNAME%TYPE                        DEFAULT  'CMPPropertyDefinition'  -- VARCHAR2(255)               4 
  ,COMPLETED                   CMPPropertyDefinition_r.COMPLETED%TYPE                        DEFAULT  1                        -- CHAR(1)                     5 
  ,CREATEDBY                   CMPPropertyDefinition_r.CREATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                6 
  ,CREATIONTIMESTAMP           CMPPropertyDefinition_r.CREATIONTIMESTAMP%TYPE                DEFAULT  null --sysdate           -- DATE                        7 
  ,CUSTOMERDELETABLE           CMPPropertyDefinition_r.CUSTOMERDELETABLE%TYPE                DEFAULT  1                        -- CHAR(1)                     8 
  ,CUSTOMERRENAMABLE           CMPPropertyDefinition_r.CUSTOMERRENAMABLE%TYPE                DEFAULT  0                        -- CHAR(1)                     9 
  ,DELETEINOVERRIDE            CMPPropertyDefinition_r.DELETEINOVERRIDE%TYPE                 DEFAULT  0                        -- CHAR(1)                     10
  ,DESCRIPTION                 CMPPropertyDefinition_r.DESCRIPTION%TYPE                      DEFAULT  null --DEFINITIONKEY     -- VARCHAR2(4000)              11
  ,EDITABLE                    CMPPropertyDefinition_r.EDITABLE%TYPE                         DEFAULT  1                        -- CHAR(1)                     12
  ,ELEMENTID                   CMPPropertyDefinition_r.ELEMENTID%TYPE                        DEFAULT  null --ELEMENTID         -- NUMBER(9,0)                 13
  ,IMPORTED                    CMPPropertyDefinition_r.IMPORTED%TYPE                         DEFAULT  0                        -- CHAR(1)                     14
  ,LOGICALNAME                 CMPPropertyDefinition_r.LOGICALNAME%TYPE                      DEFAULT  null --NAME              -- VARCHAR2(1000)              15
  ,METADATASIGNATURE           CMPPropertyDefinition_r.METADATASIGNATURE%TYPE                DEFAULT  null --METADATASIGNATURE -- VARCHAR2(255)               16
  ,NAME                        CMPPropertyDefinition_r.NAME%TYPE                             DEFAULT  null --NAME              -- VARCHAR2(1000)              17
  ,NOTE                        CMPPropertyDefinition_r.NOTE%TYPE                             DEFAULT  null                     -- VARCHAR2(4000)              18
  ,NOTM                        CMPPropertyDefinition_r.NOTM%TYPE                             DEFAULT  0                        -- NUMBER(9,0)                 19
  ,OVERRIDEATTRIBUTES          CMPPropertyDefinition_r.OVERRIDEATTRIBUTES%TYPE               DEFAULT  0                        -- CHAR(1)                     20
  ,OVERRIDECHILDREN            CMPPropertyDefinition_r.OVERRIDECHILDREN%TYPE                 DEFAULT  0                        -- CHAR(1)                     21
  ,OVERRIDEROLES               CMPPropertyDefinition_r.OVERRIDEROLES%TYPE                    DEFAULT  0                        -- CHAR(1)                     22
  ,PERSISTENT                  CMPPropertyDefinition_r.PERSISTENT%TYPE                       DEFAULT  1                        -- CHAR(1)                     23
  ,SEEDED                      CMPPropertyDefinition_r.SEEDED%TYPE                           DEFAULT  0                        -- CHAR(1)                     24
  ,STRONGTYPENAME              CMPPropertyDefinition_r.STRONGTYPENAME%TYPE                   DEFAULT  null                     -- VARCHAR2(255)               25
  ,UOID                        CMPPropertyDefinition_r.UOID%TYPE                             DEFAULT  null --UOID              -- VARCHAR2(40)                26
  ,UPDATEDBY                   CMPPropertyDefinition_r.UPDATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                27
  ,UPDATETIMESTAMP             CMPPropertyDefinition_r.UPDATETIMESTAMP%TYPE                  DEFAULT  null --sysdate           -- DATE                        28
  ,ICONOBJECT                  CMPPropertyDefinition_r.ICONOBJECT%TYPE                       DEFAULT  null                     -- NUMBER(9,0)                 29
  ,EDITORCLASSNAME             CMPPropertyDefinition_r.EDITORCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               30
  ,PROPERTYSHEETCLASSNAME      CMPPropertyDefinition_r.PROPERTYSHEETCLASSNAME%TYPE           DEFAULT  null                     -- VARCHAR2(255)               31
  ,WIZARDCLASSNAME             CMPPropertyDefinition_r.WIZARDCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               32
  ,FIRSTCLASSOBJECT            CMPPropertyDefinition_r.FIRSTCLASSOBJECT%TYPE                 DEFAULT  null --FIRSTCLASSOBJECT  -- NUMBER(9,0)                 33
  ,POSITION                    CMPPropertyDefinition_r.POSITION%TYPE                         DEFAULT  0    --POSITION          -- NUMBER(9,0)                 34
  ,ADVANCED                    CMPPropertyDefinition_r.ADVANCED%TYPE                         DEFAULT  0                        -- CHAR(1)                     35
  ,CONTRIBUTETOSIGNATURE       CMPPropertyDefinition_r.CONTRIBUTETOSIGNATURE%TYPE            DEFAULT  1 --CONTRIBUTETOSIGNATURE-- CHAR(1)                     36
  ,CUSTOMEDITOR                CMPPropertyDefinition_r.CUSTOMEDITOR%TYPE                     DEFAULT  null                     -- VARCHAR2(255)               37
  ,DEFAULTVALUE                CMPPropertyDefinition_r.DEFAULTVALUE%TYPE                     DEFAULT  null                     -- VARCHAR2(4000)              38
  ,DEFINITIONKEY               CMPPropertyDefinition_r.DEFINITIONKEY%TYPE                    DEFAULT  null --DEFINITIONKEY     -- VARCHAR2(255)               39
  ,DYNAMICDEFAULT              CMPPropertyDefinition_r.DYNAMICDEFAULT%TYPE                   DEFAULT  null                     -- VARCHAR2(255)               40
  ,EXPORTCONTROL               CMPPropertyDefinition_r.EXPORTCONTROL%TYPE                    DEFAULT  0                        -- NUMBER(9,0)                 41
  ,HIDDEN                      CMPPropertyDefinition_r.HIDDEN%TYPE                           DEFAULT  0                        -- CHAR(1)                     42
  ,INPLACEEDITOR               CMPPropertyDefinition_r.INPLACEEDITOR%TYPE                    DEFAULT  null                     -- VARCHAR2(255)               43
  ,ISPUBLISHEDTOPUBLICAPI      CMPPropertyDefinition_r.ISPUBLISHEDTOPUBLICAPI%TYPE           DEFAULT  1                        -- CHAR(1)                     44
  ,ISROLE                      CMPPropertyDefinition_r.ISROLE%TYPE                           DEFAULT  0                        -- CHAR(1)                     45
  ,NAMECHECKED                 CMPPropertyDefinition_r.NAMECHECKED%TYPE                      DEFAULT  0                        -- CHAR(1)                     46
  ,OVERRIDE                    CMPPropertyDefinition_r.OVERRIDE%TYPE                         DEFAULT  0                        -- CHAR(1)                     47
  ,PASSWORD                    CMPPropertyDefinition_r.PASSWORD%TYPE                         DEFAULT  0                        -- CHAR(1)                     48
  ,PROPERTYREADONLY            CMPPropertyDefinition_r.PROPERTYREADONLY%TYPE                 DEFAULT  0                        -- CHAR(1)                     49
  ,PROPERTYTYPE                CMPPropertyDefinition_r.PROPERTYTYPE%TYPE                     DEFAULT  null --propertyset type  -- NUMBER(9,0)                 50
  ,TRANSLATABLE                CMPPropertyDefinition_r.TRANSLATABLE%TYPE                     DEFAULT  0                        -- CHAR(1)                     51
  ,USERCHOICEALLOWED           CMPPropertyDefinition_r.USERCHOICEALLOWED%TYPE                DEFAULT  0                        -- CHAR(1)                     52
  ,TYPE                        CMPPropertyDefinition_r.TYPE%TYPE                             DEFAULT  null --datatype id       -- NUMBER(9,0)                 53
  ,OVERRIDEE                   CMPPropertyDefinition_r.OVERRIDEE%TYPE                        DEFAULT  null                     -- NUMBER(9,0)                 54
  ,PROPERTYGROUPDEFINITION     CMPPropertyDefinition_r.PROPERTYGROUPDEFINITION%TYPE          DEFAULT  null --property group    -- NUMBER(9,0)                 55
  ,OWNINGPROPERTYSETDEFINITION CMPPropertyDefinition_r.OWNINGPROPERTYSETDEFINITION%TYPE      DEFAULT  null --propertyset       -- NUMBER(9,0)                 56
  );

  
-- ==========================================================================
  TYPE CMPAnonymousDomain IS RECORD (
-- ==========================================================================
   WORKSPACEID                CMPAnonymousDomain_r.WORKSPACEID%TYPE                     DEFAULT  1                        -- NUMBER(9,0)                1 
  ,DELETIONPARENT             CMPAnonymousDomain_r.DELETIONPARENT%TYPE                  DEFAULT  null                     -- NUMBER(9,0)                2 
  ,AGGREGATEDSIGNATURE        CMPAnonymousDomain_r.AGGREGATEDSIGNATURE%TYPE             DEFAULT  null           					-- TIMESTAMP(6)               3 
  ,CLASSNAME                  CMPAnonymousDomain_r.CLASSNAME%TYPE                       DEFAULT  'CMPAnonymousDomain'  		-- VARCHAR2(255)              4 
  ,COMPLETED                  CMPAnonymousDomain_r.COMPLETED%TYPE                       DEFAULT  1                        -- CHAR(1)                    5 
  ,CREATEDBY                  CMPAnonymousDomain_r.CREATEDBY%TYPE                       DEFAULT  'OWBSYS'                 -- VARCHAR2(40)               6 
  ,CREATIONTIMESTAMP          CMPAnonymousDomain_r.CREATIONTIMESTAMP%TYPE               DEFAULT  null           					-- DATE                       7 
  ,CUSTOMERDELETABLE          CMPAnonymousDomain_r.CUSTOMERDELETABLE%TYPE               DEFAULT  1                        -- CHAR(1)                    8 
  ,CUSTOMERRENAMABLE          CMPAnonymousDomain_r.CUSTOMERRENAMABLE%TYPE               DEFAULT  0                        -- CHAR(1)                    9 
  ,DELETEINOVERRIDE           CMPAnonymousDomain_r.DELETEINOVERRIDE%TYPE                DEFAULT  0                        -- CHAR(1)                    10
  ,DESCRIPTION                CMPAnonymousDomain_r.DESCRIPTION%TYPE                     DEFAULT  null --DEFINITIONKEY     -- VARCHAR2(4000)             11
  ,EDITABLE                   CMPAnonymousDomain_r.EDITABLE%TYPE                        DEFAULT  1                        -- CHAR(1)                    12
  ,ELEMENTID                  CMPAnonymousDomain_r.ELEMENTID%TYPE                       DEFAULT  null --ELEMENTID         -- NUMBER(9,0)                13
  ,IMPORTED                   CMPAnonymousDomain_r.IMPORTED%TYPE                        DEFAULT  0                        -- CHAR(1)                    14
  ,LOGICALNAME                CMPAnonymousDomain_r.LOGICALNAME%TYPE                     DEFAULT  null --NAME              -- VARCHAR2(1000)             15
  ,METADATASIGNATURE          CMPAnonymousDomain_r.METADATASIGNATURE%TYPE               DEFAULT  null --METADATASIGNATURE -- VARCHAR2(255)              16
  ,NAME                       CMPAnonymousDomain_r.NAME%TYPE                            DEFAULT  null --NAME              -- VARCHAR2(1000)             17
  ,NOTE                       CMPAnonymousDomain_r.NOTE%TYPE                            DEFAULT  null                     -- VARCHAR2(4000)             18
  ,NOTM                       CMPAnonymousDomain_r.NOTM%TYPE                            DEFAULT  1                        -- NUMBER(9,0)                19
  ,OVERRIDEATTRIBUTES         CMPAnonymousDomain_r.OVERRIDEATTRIBUTES%TYPE              DEFAULT  0                        -- CHAR(1)                    20
  ,OVERRIDECHILDREN           CMPAnonymousDomain_r.OVERRIDECHILDREN%TYPE                DEFAULT  0                        -- CHAR(1)                    21
  ,OVERRIDEROLES              CMPAnonymousDomain_r.OVERRIDEROLES%TYPE                   DEFAULT  0                        -- CHAR(1)                    22
  ,PERSISTENT                 CMPAnonymousDomain_r.PERSISTENT%TYPE                      DEFAULT  1                        -- CHAR(1)                    23
  ,SEEDED                     CMPAnonymousDomain_r.SEEDED%TYPE                          DEFAULT  0                        -- CHAR(1)                    24
  ,STRONGTYPENAME             CMPAnonymousDomain_r.STRONGTYPENAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)              25
  ,UOID                       CMPAnonymousDomain_r.UOID%TYPE                            DEFAULT  null --UOID              -- VARCHAR2(40)               26
  ,UPDATEDBY                  CMPAnonymousDomain_r.UPDATEDBY%TYPE                       DEFAULT  'OWBSYS'                 -- VARCHAR2(40)               27
  ,UPDATETIMESTAMP            CMPAnonymousDomain_r.UPDATETIMESTAMP%TYPE                 DEFAULT  null           					-- DATE                       28
  ,ICONOBJECT                 CMPAnonymousDomain_r.ICONOBJECT%TYPE                      DEFAULT  null                     -- NUMBER(9,0)                29
  ,EDITORCLASSNAME            CMPAnonymousDomain_r.EDITORCLASSNAME%TYPE                 DEFAULT  null                     -- VARCHAR2(255)              30
  ,PROPERTYSHEETCLASSNAME     CMPAnonymousDomain_r.PROPERTYSHEETCLASSNAME%TYPE          DEFAULT  null                     -- VARCHAR2(255)              31
  ,WIZARDCLASSNAME            CMPAnonymousDomain_r.WIZARDCLASSNAME%TYPE                 DEFAULT  null                     -- VARCHAR2(255)              32
  ,COMPARATOR             		CMPAnonymousDomain_r.COMPARATOR%TYPE                  		DEFAULT  'oracle.wh.repos.impl.domain.comparator.PrimitiveValueComparator'                     -- VARCHAR2(255)              33
  ,OWNINGMODEL             		CMPAnonymousDomain_r.OWNINGMODEL%TYPE                  		DEFAULT  null                     -- NUMBER(9,0)               	34
  ,CHOOSER             				CMPAnonymousDomain_r.CHOOSER%TYPE                  				DEFAULT  null                     -- VARCHAR2(255)              35
  ,DATATYPEAGSG             	CMPAnonymousDomain_r.DATATYPEAGSG%TYPE                  	DEFAULT  null                  		-- TIMESTAMP(6)               36
  ,DATATYPEFQN             		CMPAnonymousDomain_r.DATATYPEFQN%TYPE                  		DEFAULT  null                     -- VARCHAR2(4000)             37
  ,DATATYPELUPD             	CMPAnonymousDomain_r.DATATYPELUPD%TYPE                  	DEFAULT  null                     -- TIMESTAMP(6)               38
  ,DATATYPEUOID             	CMPAnonymousDomain_r.DATATYPEUOID%TYPE                  	DEFAULT  null                     -- VARCHAR2(40)               39
  ,USERCHOICEALLOWED          CMPAnonymousDomain_r.USERCHOICEALLOWED%TYPE               DEFAULT  0                     		-- CHAR(1)               			40
  ,VALUEINTERPRETER           CMPAnonymousDomain_r.VALUEINTERPRETER%TYPE                DEFAULT  null                     -- VARCHAR2(255)              41
  ,DATATYPE             			CMPAnonymousDomain_r.DATATYPE%TYPE                  			DEFAULT  null                     -- NUMBER(9,0)              	42
  ,ACLCONTAINER             	CMPAnonymousDomain_r.ACLCONTAINER%TYPE                  	DEFAULT  null                     -- NUMBER(9,0)               	43
  ,VALIDATIONRESULT           CMPAnonymousDomain_r.VALIDATIONRESULT%TYPE                DEFAULT  null                     -- NUMBER(9,0)               	44
  ,OWNINGFOLDER             	CMPAnonymousDomain_r.OWNINGFOLDER%TYPE                  	DEFAULT  null                     -- NUMBER(9,0)               	45
  ,POSITION             			CMPAnonymousDomain_r.POSITION%TYPE                  			DEFAULT  0                     		-- NUMBER(9,0)               	46  
  );  
 
-- ==========================================================================
  TYPE CMPArrayType IS RECORD (
-- ==========================================================================
   WORKSPACEID                CMPArrayType_r.WORKSPACEID%TYPE                      DEFAULT  1                        -- NUMBER(9,0)                 1 
  ,DELETIONPARENT             CMPArrayType_r.DELETIONPARENT%TYPE                   DEFAULT  null                     -- NUMBER(9,0)                 2 
  ,AGGREGATEDSIGNATURE        CMPArrayType_r.AGGREGATEDSIGNATURE%TYPE              DEFAULT  null --sysdate           -- TIMESTAMP(6)                3 
  ,CLASSNAME                  CMPArrayType_r.CLASSNAME%TYPE                        DEFAULT  'CMPArrayType'  				 -- VARCHAR2(255)               4 
  ,COMPLETED                  CMPArrayType_r.COMPLETED%TYPE                        DEFAULT  1                        -- CHAR(1)                     5 
  ,CREATEDBY                  CMPArrayType_r.CREATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                6 
  ,CREATIONTIMESTAMP          CMPArrayType_r.CREATIONTIMESTAMP%TYPE                DEFAULT  null --sysdate           -- DATE                        7 
  ,CUSTOMERDELETABLE          CMPArrayType_r.CUSTOMERDELETABLE%TYPE                DEFAULT  1                        -- CHAR(1)                     8 
  ,CUSTOMERRENAMABLE          CMPArrayType_r.CUSTOMERRENAMABLE%TYPE                DEFAULT  0                        -- CHAR(1)                     9 
  ,DELETEINOVERRIDE           CMPArrayType_r.DELETEINOVERRIDE%TYPE                 DEFAULT  0                        -- CHAR(1)                     10
  ,DESCRIPTION                CMPArrayType_r.DESCRIPTION%TYPE                      DEFAULT  null --DEFINITIONKEY     -- VARCHAR2(4000)              11
  ,EDITABLE                   CMPArrayType_r.EDITABLE%TYPE                         DEFAULT  1                        -- CHAR(1)                     12
  ,ELEMENTID                  CMPArrayType_r.ELEMENTID%TYPE                        DEFAULT  null --ELEMENTID         -- NUMBER(9,0)                 13
  ,IMPORTED                   CMPArrayType_r.IMPORTED%TYPE                         DEFAULT  0                        -- CHAR(1)                     14
  ,LOGICALNAME                CMPArrayType_r.LOGICALNAME%TYPE                      DEFAULT  null --NAME              -- VARCHAR2(1000)              15
  ,METADATASIGNATURE          CMPArrayType_r.METADATASIGNATURE%TYPE                DEFAULT  null --METADATASIGNATURE -- VARCHAR2(255)               16
  ,NAME                       CMPArrayType_r.NAME%TYPE                             DEFAULT  null --NAME              -- VARCHAR2(1000)              17
  ,NOTE                       CMPArrayType_r.NOTE%TYPE                             DEFAULT  null                     -- VARCHAR2(4000)              18
  ,NOTM                       CMPArrayType_r.NOTM%TYPE                             DEFAULT  0                        -- NUMBER(9,0)                 19
  ,OVERRIDEATTRIBUTES         CMPArrayType_r.OVERRIDEATTRIBUTES%TYPE               DEFAULT  0                        -- CHAR(1)                     20
  ,OVERRIDECHILDREN           CMPArrayType_r.OVERRIDECHILDREN%TYPE                 DEFAULT  0                        -- CHAR(1)                     21
  ,OVERRIDEROLES              CMPArrayType_r.OVERRIDEROLES%TYPE                    DEFAULT  0                        -- CHAR(1)                     22
  ,PERSISTENT                 CMPArrayType_r.PERSISTENT%TYPE                       DEFAULT  1                        -- CHAR(1)                     23
  ,SEEDED                     CMPArrayType_r.SEEDED%TYPE                           DEFAULT  0                        -- CHAR(1)                     24
  ,STRONGTYPENAME             CMPArrayType_r.STRONGTYPENAME%TYPE                   DEFAULT  null                     -- VARCHAR2(255)               25
  ,UOID                       CMPArrayType_r.UOID%TYPE                             DEFAULT  null --UOID              -- VARCHAR2(40)                26
  ,UPDATEDBY                  CMPArrayType_r.UPDATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                27
  ,UPDATETIMESTAMP            CMPArrayType_r.UPDATETIMESTAMP%TYPE                  DEFAULT  null --sysdate           -- DATE                        28
  ,ICONOBJECT                 CMPArrayType_r.ICONOBJECT%TYPE                       DEFAULT  null                     -- NUMBER(9,0)                 29
  ,EDITORCLASSNAME            CMPArrayType_r.EDITORCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               30
  ,PROPERTYSHEETCLASSNAME     CMPArrayType_r.PROPERTYSHEETCLASSNAME%TYPE           DEFAULT  null                     -- VARCHAR2(255)               31
  ,WIZARDCLASSNAME            CMPArrayType_r.WIZARDCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               32
  ,COMPARATOR             		CMPArrayType_r.COMPARATOR%TYPE                  		 DEFAULT  'oracle.wh.repos.impl.domain.comparator.CollectionValueComparator'                     -- VARCHAR2(255)               33
  ,OWNINGMODEL             		CMPArrayType_r.OWNINGMODEL%TYPE                  		 DEFAULT  null                     -- NUMBER(9,0)                 34
  ,ACLCONTAINER             	CMPArrayType_r.ACLCONTAINER%TYPE                  	 DEFAULT  null                     -- NUMBER(9,0)                 35
  ,VALIDATIONRESULT           CMPArrayType_r.VALIDATIONRESULT%TYPE                 DEFAULT  null                     -- NUMBER(9,0)                 36
  ,OWNINGFOLDER             	CMPArrayType_r.OWNINGFOLDER%TYPE                  	 DEFAULT  null                     -- NUMBER(9,0)                 37
  ,POSITION             			CMPArrayType_r.POSITION%TYPE                  		 	 DEFAULT  0                        -- NUMBER(9,0)                 38
  ,BASEELEMENTTYPEAGSG        CMPArrayType_r.BASEELEMENTTYPEAGSG%TYPE              DEFAULT  null                     -- TIMESTAMP(6)                39
  ,BASEELEMENTTYPEFQN         CMPArrayType_r.BASEELEMENTTYPEFQN%TYPE               DEFAULT  null                     -- VARCHAR2(4000)              40
  ,BASEELEMENTTYPELUPD        CMPArrayType_r.BASEELEMENTTYPELUPD%TYPE              DEFAULT  null                     -- TIMESTAMP(6)                41
  ,BASEELEMENTTYPEUOID        CMPArrayType_r.BASEELEMENTTYPEUOID%TYPE              DEFAULT  null                     -- VARCHAR2(40)                42
  ,BASEELEMENTTYPE            CMPArrayType_r.BASEELEMENTTYPE%TYPE                  DEFAULT  null                     -- NUMBER(9,0)                 43
  );  
 
-- ==========================================================================
  TYPE CMPArrayModelAttribute IS RECORD (
-- ==========================================================================
   WORKSPACEID                CMPArrayModelAttribute_r.WORKSPACEID%TYPE                      DEFAULT  1                        -- NUMBER(9,0)                 1 
  ,DELETIONPARENT             CMPArrayModelAttribute_r.DELETIONPARENT%TYPE                   DEFAULT  null                     -- NUMBER(9,0)                 2 
  ,AGGREGATEDSIGNATURE        CMPArrayModelAttribute_r.AGGREGATEDSIGNATURE%TYPE              DEFAULT  null --sysdate           -- TIMESTAMP(6)                3 
  ,CLASSNAME                  CMPArrayModelAttribute_r.CLASSNAME%TYPE                        DEFAULT  'CMPArrayModelAttribute'  				 -- VARCHAR2(255)               4 
  ,COMPLETED                  CMPArrayModelAttribute_r.COMPLETED%TYPE                        DEFAULT  1                        -- CHAR(1)                     5 
  ,CREATEDBY                  CMPArrayModelAttribute_r.CREATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                6 
  ,CREATIONTIMESTAMP          CMPArrayModelAttribute_r.CREATIONTIMESTAMP%TYPE                DEFAULT  null --sysdate           -- DATE                        7 
  ,CUSTOMERDELETABLE          CMPArrayModelAttribute_r.CUSTOMERDELETABLE%TYPE                DEFAULT  1                        -- CHAR(1)                     8 
  ,CUSTOMERRENAMABLE          CMPArrayModelAttribute_r.CUSTOMERRENAMABLE%TYPE                DEFAULT  0                        -- CHAR(1)                     9 
  ,DELETEINOVERRIDE           CMPArrayModelAttribute_r.DELETEINOVERRIDE%TYPE                 DEFAULT  0                        -- CHAR(1)                     10
  ,DESCRIPTION                CMPArrayModelAttribute_r.DESCRIPTION%TYPE                      DEFAULT  null --DEFINITIONKEY     -- VARCHAR2(4000)              11
  ,EDITABLE                   CMPArrayModelAttribute_r.EDITABLE%TYPE                         DEFAULT  1                        -- CHAR(1)                     12
  ,ELEMENTID                  CMPArrayModelAttribute_r.ELEMENTID%TYPE                        DEFAULT  null --ELEMENTID         -- NUMBER(9,0)                 13
  ,IMPORTED                   CMPArrayModelAttribute_r.IMPORTED%TYPE                         DEFAULT  0                        -- CHAR(1)                     14
  ,LOGICALNAME                CMPArrayModelAttribute_r.LOGICALNAME%TYPE                      DEFAULT  null --NAME              -- VARCHAR2(1000)              15
  ,METADATASIGNATURE          CMPArrayModelAttribute_r.METADATASIGNATURE%TYPE                DEFAULT  null --METADATASIGNATURE -- VARCHAR2(255)               16
  ,NAME                       CMPArrayModelAttribute_r.NAME%TYPE                             DEFAULT  null --NAME              -- VARCHAR2(1000)              17
  ,NOTE                       CMPArrayModelAttribute_r.NOTE%TYPE                             DEFAULT  null                     -- VARCHAR2(4000)              18
  ,NOTM                       CMPArrayModelAttribute_r.NOTM%TYPE                             DEFAULT  0                        -- NUMBER(9,0)                 19
  ,OVERRIDEATTRIBUTES         CMPArrayModelAttribute_r.OVERRIDEATTRIBUTES%TYPE               DEFAULT  0                        -- CHAR(1)                     20
  ,OVERRIDECHILDREN           CMPArrayModelAttribute_r.OVERRIDECHILDREN%TYPE                 DEFAULT  0                        -- CHAR(1)                     21
  ,OVERRIDEROLES              CMPArrayModelAttribute_r.OVERRIDEROLES%TYPE                    DEFAULT  0                        -- CHAR(1)                     22
  ,PERSISTENT                 CMPArrayModelAttribute_r.PERSISTENT%TYPE                       DEFAULT  1                        -- CHAR(1)                     23
  ,SEEDED                     CMPArrayModelAttribute_r.SEEDED%TYPE                           DEFAULT  0                        -- CHAR(1)                     24
  ,STRONGTYPENAME             CMPArrayModelAttribute_r.STRONGTYPENAME%TYPE                   DEFAULT  null                     -- VARCHAR2(255)               25
  ,UOID                       CMPArrayModelAttribute_r.UOID%TYPE                             DEFAULT  null --UOID              -- VARCHAR2(40)                26
  ,UPDATEDBY                  CMPArrayModelAttribute_r.UPDATEDBY%TYPE                        DEFAULT  'OWBSYS'                 -- VARCHAR2(40)                27
  ,UPDATETIMESTAMP            CMPArrayModelAttribute_r.UPDATETIMESTAMP%TYPE                  DEFAULT  null --sysdate           -- DATE                        28
  ,ICONOBJECT                 CMPArrayModelAttribute_r.ICONOBJECT%TYPE                       DEFAULT  null                     -- NUMBER(9,0)                 29
  ,EDITORCLASSNAME            CMPArrayModelAttribute_r.EDITORCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               30
  ,PROPERTYSHEETCLASSNAME     CMPArrayModelAttribute_r.PROPERTYSHEETCLASSNAME%TYPE           DEFAULT  null                     -- VARCHAR2(255)               31
  ,WIZARDCLASSNAME            CMPArrayModelAttribute_r.WIZARDCLASSNAME%TYPE                  DEFAULT  null                     -- VARCHAR2(255)               32
  ,ATTRIBUTETYPEAGSG          CMPArrayModelAttribute_r.ATTRIBUTETYPEAGSG%TYPE                DEFAULT  null                     -- TIMESTAMP(6)                33
  ,ATTRIBUTETYPEFQN           CMPArrayModelAttribute_r.ATTRIBUTETYPEFQN%TYPE                 DEFAULT  null                     -- VARCHAR2(4000)              34
  ,ATTRIBUTETYPELUPD          CMPArrayModelAttribute_r.ATTRIBUTETYPELUPD%TYPE                DEFAULT  null                     -- TIMESTAMP(6)                35
  ,ATTRIBUTETYPEUOID          CMPArrayModelAttribute_r.ATTRIBUTETYPEUOID%TYPE                DEFAULT  null                     -- VARCHAR2(40)                36
  ,HASNAME            				CMPArrayModelAttribute_r.HASNAME%TYPE                  				 DEFAULT  '0'                      -- CHAR(1)                     37
  ,ATTRIBUTETYPE            	CMPArrayModelAttribute_r.ATTRIBUTETYPE%TYPE                    DEFAULT  null                     -- NUMBER(9,0)                 38
  ,MODELATTRIBUTEOWNER        CMPArrayModelAttribute_r.MODELATTRIBUTEOWNER%TYPE              DEFAULT  null                     -- NUMBER(9,0)                 39
  ,FIRSTCLASSOBJECT           CMPArrayModelAttribute_r.FIRSTCLASSOBJECT%TYPE                 DEFAULT  null                     -- NUMBER(9,0)                 40
  ,POSITION            				CMPArrayModelAttribute_r.POSITION%TYPE                  			 DEFAULT  0                        -- NUMBER(9,0)                 41
  );  
    
-- **************************************************************************
-- **************************************************************************
--                      Useful functions/procedures
-- **************************************************************************
-- **************************************************************************

-- ==========================================================================
-- put message to output (uses DBMS_OUTPUT)
  PROCEDURE put(msg VARCHAR2) IS
-- ==========================================================================
  BEGIN
    IF NOT OUTINITED THEN
      OUTINITED := TRUE;
      DBMS_OUTPUT.ENABLE(200000);
      put('DBMS_OUTPUT Enabled.');
    END IF;
    
    IF (LENGTH(msg) + LENGTH(SCRIPTID) + 2) > 255 THEN
      -- 10.1 database can't handle messages with length > 255
      --DBMS_OUTPUT.put_line('Message length > 255');
      --DBMS_OUTPUT.put_line(SUBSTR(msg, 0, 255));
      -- Break the string up into lines or 255-byte chunks
      DECLARE
        l_msg_line VARCHAR2(255);
        l_eol_index NUMBER;
        l_curr_index NUMBER;
        l_msg_len NUMBER := LENGTH(msg);
        l_loop_index NUMBER := 0;
      BEGIN
        DBMS_OUTPUT.PUT_LINE(SCRIPTID || ':');
        l_eol_index := 1;
        l_curr_index := 1;
        l_loop_index := 0;
        WHILE (l_curr_index < l_msg_len AND l_loop_index < 10) LOOP
          l_eol_index := INSTR(msg, EOL, l_curr_index);
          --DBMS_OUTPUT.put_line('l_eol_index = ' || TO_CHAR(l_eol_index));
          IF (l_eol_index <= 0) OR (l_eol_index - l_curr_index) > 255 THEN
            l_msg_line := SUBSTR(msg, l_curr_index, 255);
            l_curr_index := l_curr_index + 255;
          ELSE 
            l_msg_line := SUBSTR(msg, l_curr_index, l_eol_index - l_curr_index);
            l_curr_index := l_eol_index + 1;
          END IF;
          DBMS_OUTPUT.PUT_LINE(l_msg_line);        
          l_loop_index := l_loop_index + 1;
        END LOOP;
      EXCEPTION WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE(SQLERRM);
      END;
    ELSE 
      DBMS_OUTPUT.put_line(SCRIPTID || ': ' || msg);
    END IF;  

  END;

-- ==========================================================================
-- put message to output controlled by TRACEON variable (uses put)
  PROCEDURE putTrace(msg VARCHAR2) IS
-- ==========================================================================
  BEGIN
    IF TRACEON THEN
      put(msg);
    END IF;
  END;

-- ==========================================================================
-- return next element id for new objects
  FUNCTION getNextElementId RETURN NUMBER
-- ==========================================================================
  IS
    l_id NUMBER;
  BEGIN
      SELECT cwmseq.nextval
        INTO l_id
        FROM DUAL;
      RETURN l_id;
  END;

-- ==========================================================================
  FUNCTION getPlatformIdByName(
    p_platformName VARCHAR2
  )
  RETURN NUMBER
-- ==========================================================================
  IS
    p_id NUMBER(9,0);
  BEGIN
  	SELECT ELEMENTID INTO p_id FROM CMPPlatform_r WHERE WORKSPACEID=1 AND NAME=p_platformName;
  	put( 'Found Platform [name: ' || p_platformName || '; elementid: ' || p_id || ']' || EOL);
    RETURN p_id;
  END;

-- ==========================================================================
  FUNCTION getClassIdByName(
    p_platformId NUMBER,
    p_className VARCHAR2
  )
  RETURN NUMBER
-- ==========================================================================
  IS
    p_classId NUMBER(9,0);
  BEGIN
  	SELECT ELEMENTID INTO p_classId FROM CMPClassDefinition_r WHERE NAME=p_className AND OWNINGFOLDER=p_platformId;
  	put( 'Found ClassDefinition [name: ' || p_className || '; elementid: ' || p_classId || '; owningPlatform: ' || p_platformId || ']' || EOL); 
    RETURN p_classId;
  END;


-- ==========================================================================
  FUNCTION getPropertySetId(
    p_classId NUMBER,
    p_propertyType NUMBER,
    p_name VARCHAR2
  )
  RETURN NUMBER
-- ==========================================================================
  IS
    p_propertySetId NUMBER(9,0);
  BEGIN
  	SELECT ELEMENTID INTO p_propertySetId FROM CMPPropertySetDefinition_r 
  	    WHERE FIRSTCLASSOBJECT=p_classId AND PROPERTYTYPE=p_propertyType
  	          AND NAME LIKE '%'||p_name||'%';
  	put( 'Found PropertySetDefinition [name: ' || p_name || '; elementid: ' || p_propertySetId || '; owningClassDef: ' || p_classId || ']' || EOL);          
    RETURN p_propertySetId;
  END;
  

-- ==========================================================================
  FUNCTION getPropertyGroupId(
    p_propertySetId NUMBER,
    p_definitionKey VARCHAR2
  )
  RETURN NUMBER
-- ==========================================================================
  IS
    p_propertyGroupId NUMBER(9,0);
  BEGIN
  	SELECT ELEMENTID INTO p_propertyGroupId FROM CMPPropertyGroupDefinition_r
  	    WHERE PROPERTYGROUPOWNER=p_propertySetId AND LOGICALNAME=p_definitionKey;
    RETURN p_propertyGroupId;
  END;
  
-- ==========================================================================
  FUNCTION getPropertyDefinitionId(
    p_propertySetId NUMBER,
    p_definitionKey VARCHAR2
  )
  RETURN NUMBER
-- ==========================================================================
  IS
    p_propertyDefinitionId NUMBER(9,0);
  BEGIN
  	SELECT ELEMENTID INTO p_propertyDefinitionId FROM CMPPropertyDefinition_r
  	    WHERE OWNINGPROPERTYSETDEFINITION=p_propertySetId AND DEFINITIONKEY=p_definitionKey;
    RETURN p_propertyDefinitionId;
  END;  

-- ==========================================================================
-- Get ElementID of PrimitiveType from name.
-- Valid values for parameter p_name: Timestamp, String, Double, Integer,
--                                    Long, Boolean, Date, Float
  FUNCTION getPrimitiveTypeId(
  	p_name IN VARCHAR2
  )
  RETURN NUMBER
-- ==========================================================================
  IS
    p_datatypeId NUMBER(9,0);
  BEGIN
  	SELECT ELEMENTID INTO p_datatypeId FROM CMPPrimitiveType_r
  	    WHERE NAME = p_name;
    RETURN p_datatypeId;
  END;  
  
-- ==========================================================================
  FUNCTION getStringDatatypeId
  RETURN NUMBER
-- ==========================================================================
  IS
    p_datatypeId NUMBER(9,0);
  BEGIN
  	p_datatypeId := getPrimitiveTypeId('String');   
    RETURN p_datatypeId;
  END;
  
-- ==========================================================================
  FUNCTION getIntegerDatatypeId
  RETURN NUMBER
-- ==========================================================================
  IS
    p_datatypeId NUMBER(9,0);
  BEGIN
  	p_datatypeId := getPrimitiveTypeId('Integer');   
    RETURN p_datatypeId;
  END;
  
-- ==========================================================================
--                         CMPClassDefinition
  FUNCTION newCMPClassDefinition(
     logicalName               IN VARCHAR2 DEFAULT null
    ,name                      IN VARCHAR2 DEFAULT null
    ,metadataSignature         IN VARCHAR2 DEFAULT null
    ,owningModel        			 IN NUMBER   DEFAULT 0
    ,owningFolder              IN NUMBER   DEFAULT 0
    ,packageName     					 IN VARCHAR2  DEFAULT null
    ,publicClassName           IN VARCHAR2   DEFAULT null
    ,superClass                IN NUMBER   DEFAULT 0
  ) RETURN CMPClassDefinition
-- ==========================================================================
  IS
    cdef CMPClassDefinition;
  BEGIN
	  
    cdef.AGGREGATEDSIGNATURE := SYSDATE;
    cdef.CREATIONTIMESTAMP := SYSDATE;
    cdef.ELEMENTID := getNextElementId;
    cdef.LOGICALNAME := logicalName;
    cdef.METADATASIGNATURE := metadataSignature;
    cdef.NAME := name;
    cdef.UOID := RAWTOHEX(SYS_GUID());
    cdef.UPDATETIMESTAMP := SYSDATE;
    cdef.OWNINGMODEL := owningModel;
    cdef.OWNINGFOLDER := owningFolder;
    cdef.PACKAGENAME := packageName;
    cdef.PUBLICCLASSNAME := publicClassName;
    cdef.SUPERCLASS := superClass;

    RETURN cdef;
  END newCMPClassDefinition;  

-- ==========================================================================  
  PROCEDURE AddCMPClassDefinition(
    cdef IN OUT CMPClassDefinition
  )
-- ==========================================================================
  IS
    l_count NUMBER := 0;
    l_str VARCHAR2(4000);
  BEGIN
	  select count(1) into l_count from CMPClassDefinition_r where name = cdef.NAME and owningModel=cdef.OWNINGMODEL 
	  		and owningFolder=cdef.OWNINGFOLDER and workspaceid=cdef.WORKSPACEID;
	  If l_count = 1 then
	    put('Found ClassDefinition with name ''' || cdef.NAME ||'''. Will Retrieve it from Repository.' || EOL);
	    l_str := 'select * from CMPClassDefinition_r where name = ''' || cdef.NAME || ''' and owningModel=' ||
	    					cdef.OWNINGMODEL || ' and owningFolder=' || cdef.OWNINGFOLDER || ' and workspaceid=' || cdef.WORKSPACEID;
	    EXECUTE IMMEDIATE l_str INTO cdef;					
	  else
	    If l_count = 0 then
	      put('Add ClassDefinition with name ''' || cdef.NAME ||'''.' || EOL);
	      insert into CMPClassDefinition_r VALUES cdef;
	    else
	      put('Error! Found ' || l_count || ' ClassDefinitions with same name ''' || cdef.NAME || '''!' || EOL);
	    end if;
	  end if;
	  
  END;  
  

-- ==========================================================================
--                         CMPPropertySetDefinition
  FUNCTION newCMPPropertySetDefinition(
     description               IN VARCHAR2 DEFAULT null
    ,logicalName               IN VARCHAR2 DEFAULT null
    ,metadataSignature         IN VARCHAR2 DEFAULT null
    ,name                      IN VARCHAR2 DEFAULT null    
    ,firstClassObject        	 IN NUMBER   DEFAULT 0
    ,propertyType              IN NUMBER   DEFAULT 0
    ,owningClassDefinition     IN NUMBER   DEFAULT null
    ,parentPropertySet         IN NUMBER   DEFAULT null
  ) RETURN CMPPropertySetDefinition
-- ==========================================================================
  IS
    psdef CMPPropertySetDefinition;
  BEGIN
	  
    psdef.AGGREGATEDSIGNATURE := SYSDATE;
    psdef.CREATIONTIMESTAMP := SYSDATE;
    psdef.DESCRIPTION := description;
    psdef.ELEMENTID := getNextElementId;
    psdef.LOGICALNAME := logicalName;
    psdef.METADATASIGNATURE := metadataSignature;
    psdef.NAME := name;
    psdef.UOID := RAWTOHEX(SYS_GUID());
    psdef.UPDATETIMESTAMP := SYSDATE;
    psdef.FIRSTCLASSOBJECT := firstClassObject;
    psdef.PROPERTYTYPE := propertyType;
    psdef.OWNINGCLASSDEFINITION := owningClassDefinition;
    psdef.PARENTPROPERTYSET := parentPropertySet;

    RETURN psdef;
  END newCMPPropertySetDefinition;  
 
-- ==========================================================================  
  PROCEDURE AddCMPPropertySetDefinition(
    psdef IN OUT CMPPropertySetDefinition
  )
-- ==========================================================================
  IS
    l_count NUMBER := 0;
    l_str VARCHAR2(4000);
  BEGIN
	  select count(1) into l_count from CMPPropertySetDefinition_r where 
	      name = psdef.NAME 
	      and logicalname=psdef.LOGICALNAME
	      and owningClassDefinition=psdef.OWNINGCLASSDEFINITION 
	  		and propertyType=psdef.PROPERTYTYPE 
	  		and workspaceid=psdef.WORKSPACEID;
	  If l_count = 1 then
	    put('Found PropertySetDefinition with name ''' || psdef.NAME ||'''. Will Retrieve it from Repository.' || EOL);
	    l_str := 'select * from CMPPropertySetDefinition_r where name = ''' || psdef.NAME || 
	              ''' and logicalname=''' || psdef.LOGICALNAME || 
	              ''' and owningClassDefinition=' || psdef.OWNINGCLASSDEFINITION || 
	              ' and propertyType=' || psdef.PROPERTYTYPE ||
	              ' and workspaceid=' || psdef.WORKSPACEID;
	    EXECUTE IMMEDIATE l_str INTO psdef;					
	  else
	    If l_count = 0 then
	      put('Add PropertySetDefinition with name ''' || psdef.NAME ||'''.' || EOL);
	      insert into CMPPropertySetDefinition_r VALUES psdef;
	    else
	      put('Error! Found ' || l_count || ' PropertySetDefinitions with same name ''' || psdef.NAME || '''!' || EOL);
	    end if;
	  end if;
	  
  END;
  
  
-- ==========================================================================
--                         CMPPropertyDefinition
  FUNCTION newCMPPropertyDefinition(
     definitionKey             IN VARCHAR2 DEFAULT null
    ,name                      IN VARCHAR2 DEFAULT null
    ,metadataSignature         IN VARCHAR2 DEFAULT null
    ,firstClassObjectId        IN NUMBER   DEFAULT null
    ,position                  IN NUMBER   DEFAULT 0
    ,contributeToSignature     IN VARCHAR  DEFAULT null
    ,propertyTypeId            IN NUMBER   DEFAULT null
    ,datatypeId                IN NUMBER   DEFAULT 0
    ,propertyGroupId           IN NUMBER   DEFAULT 0
    ,propertySetId             IN NUMBER   DEFAULT 0
  ) RETURN CMPPropertyDefinition
-- ==========================================================================
  IS
    pdef CMPPropertyDefinition;
  BEGIN
    pdef.AGGREGATEDSIGNATURE              := SYSDATE;
    pdef.CREATIONTIMESTAMP                := SYSDATE;
    pdef.DESCRIPTION                      := definitionKey;
    pdef.ELEMENTID                        := getNextElementId;
    pdef.LOGICALNAME                      := name;
    pdef.METADATASIGNATURE                := metadataSignature;
    pdef.NAME                             := name;
    pdef.UOID                             := RAWTOHEX(SYS_GUID());
    pdef.UPDATETIMESTAMP                  := SYSDATE;
    pdef.FIRSTCLASSOBJECT                 := firstClassObjectId;
    pdef.POSITION                         := position;
    pdef.CONTRIBUTETOSIGNATURE            := contributeToSignature;
    pdef.DEFINITIONKEY                    := definitionKey;
    pdef.PROPERTYTYPE                     := propertyTypeId;
    pdef.TYPE                             := datatypeId;
    pdef.PROPERTYGROUPDEFINITION          := propertyGroupId;
    pdef.OWNINGPROPERTYSETDEFINITION      := propertySetId;

    RETURN pdef;
  END newCMPPropertyDefinition;

-- ==========================================================================  
  PROCEDURE AddCMPPropertyDefinition(
    pdef IN OUT CMPPropertyDefinition
  )
-- ==========================================================================
  IS
    l_count NUMBER := 0;
    l_str VARCHAR2(4000);
  BEGIN
	  select count(1) into l_count from CMPPropertyDefinition_r where 
	      name = pdef.NAME 
	      and logicalname=pdef.LOGICALNAME
	      and firstclassobject=pdef.FIRSTCLASSOBJECT
	      and definitionkey=pdef.DEFINITIONKEY
	  		and propertyType=pdef.PROPERTYTYPE 
	  		and owningPropertySetDefinition=pdef.OWNINGPROPERTYSETDEFINITION
	  		and workspaceid=pdef.WORKSPACEID;
	  If l_count = 1 then
	    put('Found PropertyDefinition with name ''' || pdef.NAME ||'''. Will Retrieve it from Repository.' || EOL);
	    l_str := 'select * from CMPPropertyDefinition_r where name = ''' || pdef.NAME || 
	              ''' and logicalname=''' || pdef.LOGICALNAME || 
	              ''' and firstclassobject=' || pdef.FIRSTCLASSOBJECT || 
	              ' and definitionkey=''' || pdef.DEFINITIONKEY ||
	              ''' and propertyType=' || pdef.PROPERTYTYPE ||
	              ' and owningPropertySetDefinition=' || pdef.OWNINGPROPERTYSETDEFINITION ||
	              ' and workspaceid=' || pdef.WORKSPACEID;
	    EXECUTE IMMEDIATE l_str INTO pdef;					
	  else
	    If l_count = 0 then
	      put('Add PropertyDefinition with name ''' || pdef.NAME ||'''.' || EOL);
	      insert into CMPPropertyDefinition_r VALUES pdef;
	    else
	      put('Error! Found ' || l_count || ' PropertyDefinitions with same name ''' || pdef.NAME || '''!' || EOL);
	    end if;
	  end if;
	  
  END;   
  
-- ==========================================================================
  FUNCTION getCMPPropertyDefinition(
     definitionKey             IN VARCHAR2 DEFAULT null
    ,name                      IN VARCHAR2 DEFAULT null
    ,propertyTypeId            IN NUMBER   DEFAULT null
    ,datatypeId                IN NUMBER   DEFAULT null
    ,propertyGroupId           IN NUMBER   DEFAULT null
    ,propertySetId             IN NUMBER   DEFAULT null
  ) RETURN CMPPropertyDefinition
-- ==========================================================================
  IS
    pdef CMPPropertyDefinition;
    l_str VARCHAR2(4000);
  BEGIN
	  
    l_str := 'SELECT * FROM CMPPropertyDefinition_r WHERE 1=1';
    if (definitionKey is not null) then
    	l_str := l_str || ' and DEFINITIONKEY=''' || definitionKey || '''';
    end if;
    if (name is not null) then
    	l_str := l_str || ' and NAME=''' || name || '''';
    end if;
    if (propertyTypeId is not null) then
    	l_str := l_str || ' and PROPERTYTYPE=' || propertyTypeId;
    end if;
    if (datatypeId is not null) then
    	l_str := l_str || ' and TYPE=' || datatypeId;
    end if;
    if (propertyGroupId is not null) then
    	l_str := l_str || ' and PROPERTYGROUPDEFINITION=' || propertyGroupId;
    end if;
    if (propertySetId is not null) then
    	l_str := l_str || ' and OWNINGPROPERTYSETDEFINITION=' || propertySetId;
    end if;
    
    EXECUTE IMMEDIATE l_str INTO pdef;
    RETURN pdef;
    EXCEPTION
	    WHEN NO_DATA_FOUND THEN
	    BEGIN
	    	put ('Not found -->' || l_str || EOL);
	      RETURN null;
      END; -- NO_DATA_FOUND
      /* should not happen. Developers have to pass in the correct params that have only one record.
      WHEN TOO_MANY_ROWS THEN
      BEGIN
      	put ('Too many rows -->' || l_str);
	      RETURN null;
      END;*/
    RETURN pdef;
  END getCMPPropertyDefinition;

-- ==========================================================================
--                         					CMPArrayType
  FUNCTION newCMPArrayType(
     logicalName               IN VARCHAR2 DEFAULT null    
    ,metadataSignature         IN VARCHAR2 DEFAULT null
    ,name                      IN VARCHAR2 DEFAULT null
    ,owningModel        			 IN NUMBER   DEFAULT 0
    ,owningFolder              IN NUMBER   DEFAULT 0
    ,baseElementTypeFqn        IN VARCHAR2 DEFAULT null
    ,baseType                  IN CMPClassDefinition DEFAULT null
  ) RETURN CMPArrayType
-- ==========================================================================
  IS
    adef CMPArrayType;
  BEGIN
	  
    adef.AGGREGATEDSIGNATURE := SYSDATE;
    adef.CREATIONTIMESTAMP := SYSDATE;
    adef.ELEMENTID := getNextElementId;
    adef.LOGICALNAME := logicalName;
    adef.METADATASIGNATURE := metadataSignature;
    adef.NAME := name;
    adef.UOID := RAWTOHEX(SYS_GUID());
    adef.UPDATETIMESTAMP := SYSDATE;
    adef.OWNINGMODEL := owningModel;
    adef.OWNINGFOLDER := owningFolder;
    adef.BASEELEMENTTYPEAGSG := baseType.AGGREGATEDSIGNATURE;
    adef.BASEELEMENTTYPEFQN := baseElementTypeFqn;
    adef.BASEELEMENTTYPELUPD := baseType.UPDATETIMESTAMP;
    adef.BASEELEMENTTYPEUOID := baseType.UOID;
    adef.BASEELEMENTTYPE := baseType.ELEMENTID;
    RETURN adef;
  END newCMPArrayType;  

-- ==========================================================================  
  PROCEDURE AddCMPArrayType(
    adef IN OUT CMPArrayType
  )
-- ==========================================================================
  IS
    l_count NUMBER := 0;
    l_str VARCHAR2(4000);
  BEGIN
	  select count(1) into l_count from CMPArrayType_r where name = adef.NAME and owningModel=adef.OWNINGMODEL 
	  		and owningFolder=adef.OWNINGFOLDER and workspaceid=adef.WORKSPACEID and baseElementType=adef.BASEELEMENTTYPE;
	  If l_count = 1 then
	    put('Found ArrayType with name ''' || adef.NAME ||'''. Will Retrieve it from Repository.' || EOL);
	    l_str := 'select * from CMPArrayType_r where name = ''' || adef.NAME || ''' and owningModel=' ||
	    					adef.OWNINGMODEL || ' and owningFolder=' || adef.OWNINGFOLDER || ' and workspaceid=' || adef.WORKSPACEID ||
	    					' and baseElementType=' || adef.BASEELEMENTTYPE;
	    EXECUTE IMMEDIATE l_str INTO adef;					
	  else
	    If l_count = 0 then
	      put('Add ArrayType with name ''' || adef.NAME ||'''.' || EOL);
	      insert into CMPArrayType_r VALUES adef;
	    else
	      put('Error! Found ' || l_count || ' ArrayTypes with same name ''' || adef.NAME || '''!' || EOL);
	    end if;
	  end if;
	  
  END;  
 

-- ==========================================================================
  FUNCTION getCMPAnonymousDomain(
     pdef             IN CMPPropertyDefinition
  ) RETURN CMPAnonymousDomain
-- ==========================================================================
  IS
    ddef CMPAnonymousDomain;
    l_str VARCHAR2(4000);
  BEGIN
  	l_str := 'SELECT * FROM CMPAnonymousDomain_r WHERE ELEMENTID=' || pdef.TYPE;
    
    EXECUTE IMMEDIATE l_str INTO ddef;
    put('Found (' || l_str || ')' || EOL);
    RETURN ddef;
    EXCEPTION
	    WHEN NO_DATA_FOUND THEN
	    BEGIN
	    	put ('Not found -->' || l_str || EOL);
	      RETURN null;
      END; -- NO_DATA_FOUND
      /* should not happen. Developers have to pass in the correct params that have only one record.
      WHEN TOO_MANY_ROWS THEN
      BEGIN
      	put ('Too many rows -->' || l_str);
	      RETURN null;
      END;*/
    RETURN ddef;
  END getCMPAnonymousDomain;

-- ==========================================================================
--                         CMPAnonymousDomai
  FUNCTION newCMPAnonymousDomain(
    name                       IN VARCHAR2 DEFAULT null
    ,metadataSignature         IN VARCHAR2 DEFAULT null
  ) RETURN CMPAnonymousDomain
-- ==========================================================================
  IS
    pdef CMPAnonymousDomain;
  BEGIN
    pdef.AGGREGATEDSIGNATURE              := SYSDATE;
    pdef.classname                        := 'CMPAnonymousDomain';
    pdef.CREATIONTIMESTAMP                := SYSDATE;
    pdef.DESCRIPTION                      := null;
    pdef.ELEMENTID                        := getNextElementId;
    pdef.LOGICALNAME                      := name;
    pdef.METADATASIGNATURE                := metadataSignature;
    pdef.NAME                             := name;
    pdef.UOID                             := RAWTOHEX(SYS_GUID());
    pdef.UPDATETIMESTAMP                  := SYSDATE;
    pdef.comparator                       := 'oracle.wh.repos.impl.domain.comparator.PrimitiveValueComparator';
    pdef.datatypeagsg                     := sysdate;
    RETURN pdef;
  END newCMPAnonymousDomain;

-- ==========================================================================  
  PROCEDURE AddCMPAnonymousDomain(
    pdef IN OUT CMPAnonymousDomain
  )
-- ==========================================================================
  IS
    l_count NUMBER := 0;
    l_str VARCHAR2(4000);
  BEGIN
	  select count(1) into l_count from CMPAnonymousDomain_r where 
	      name = pdef.NAME 
	      and logicalname=pdef.LOGICALNAME
	  		and workspaceid=pdef.WORKSPACEID;
	  If l_count = 1 then
	    put('Found PropertyDefinition with name ''' || pdef.NAME ||'''. Will Retrieve it from Repository.' || EOL);
	    l_str := 'select * from CMPAnonymousDomain_r where name = ''' || pdef.NAME || 
	              ''' and logicalname=''' || pdef.LOGICALNAME || 
	              ''' and workspaceid=' || pdef.WORKSPACEID;
	    EXECUTE IMMEDIATE l_str INTO pdef;					
	  else
	    If l_count = 0 then
	      put('Add PropertyDefinition with name ''' || pdef.NAME ||'''.' || EOL);
	      insert into CMPAnonymousDomain_r VALUES pdef;
	    else
	      put('Error! Found ' || l_count || ' PropertyDefinitions with same name ''' || pdef.NAME || '''!' || EOL);
	    end if;
	  end if;
	  
  END; 

-- ==========================================================================
-- toString CMPPropertyGroupDefinition
  FUNCTION toSPropertyGroupDefinition(pType CMPPropertyGroupDefinition) RETURN VARCHAR2 IS
-- ==========================================================================
        l_str VARCHAR2(4000);
  BEGIN
    l_str := 'CMPPropertyGroupDefinition [ ';
    if (pType.NAME is not null) then
        l_str := l_str || '[NAME: ' || pType.NAME || '] ';
    end if;
    if (pType.LOGICALNAME is not null) then
        l_str := l_str || '[LOGICALNAME: ' || pType.LOGICALNAME || '] ';
    end if;
    if (pType.ELEMENTID is not null) then
        l_str := l_str || '[ELEMENTID: ' || pType.ELEMENTID || '] ';
    end if;
    if (pType.UOID is not null) then
        l_str := l_str || '[UOID: ' || pType.UOID || '] ';
    end if;
    if (pType.POSITION is not null) then
        l_str := l_str || '[POSITION: ' || pType.POSITION || '] ';
    end if;
    if (pType.DEFINITIONKEY is not null) then
        l_str := l_str || '[DEFINITIONKEY: ' || pType.DEFINITIONKEY || '] ';
    end if;
    if (pType.PROPERTYGROUPOWNER is not null) then
        l_str := l_str || '[PROPERTYGROUPOWNER: ' || pType.PROPERTYGROUPOWNER || '] ';
    end if;
    if (pType.FIRSTCLASSOBJECT is not null) then
        l_str := l_str || '[FIRSTCLASSOBJECT: ' || pType.FIRSTCLASSOBJECT || '] ';
    end if;
    l_str := l_str || ']';
    return l_str;
  END toSPropertyGroupDefinition;
  
 
 -- ==========================================================================
--                         NewCMPPropertyGroupdefinition
  FUNCTION newCMPPropertyGroupdefinition(
     definitionKey             IN VARCHAR2 DEFAULT null
    ,name                      IN VARCHAR2 DEFAULT null
    ,metadataSignature         IN VARCHAR2 DEFAULT null
    ,firstClassObjectId        IN NUMBER   DEFAULT null
    ,position                  IN NUMBER   DEFAULT 0
    ,propertySetId             IN NUMBER   DEFAULT 0
  ) RETURN CMPPropertyGroupdefinition
-- ==========================================================================
  IS
    pgdef CMPPropertyGroupdefinition;
  BEGIN
    pgdef.AGGREGATEDSIGNATURE              := SYSDATE;
    pgdef.CREATIONTIMESTAMP                := SYSDATE;
    pgdef.ELEMENTID                        := getNextElementId;
    pgdef.LOGICALNAME                      := definitionKey;
    pgdef.METADATASIGNATURE                := metadataSignature;
    pgdef.NAME                             := name;
    pgdef.UOID                             := RAWTOHEX(SYS_GUID());
    pgdef.UPDATETIMESTAMP                  := SYSDATE;
    pgdef.FIRSTCLASSOBJECT                 := firstClassObjectId;
    pgdef.POSITION                         := position;
    pgdef.PROPERTYGROUPOWNER               := propertySetId;

    RETURN pgdef;
  END newCMPPropertyGroupdefinition;

-- ==========================================================================
  PROCEDURE AddCMPPropertyGroupDefinition(
    pgdeg IN OUT CMPPropertyGroupDefinition
  )
-- ==========================================================================
  IS
    l_count NUMBER := 0;
    l_str VARCHAR2(4000);
  BEGIN
          select count(1) into l_count from CMPPropertyGroupDefinition_r where
              name = pgdeg.NAME
              and logicalname=pgdeg.LOGICALNAME
              and firstclassobject=pgdeg.FIRSTCLASSOBJECT
                        and propertyGroupOwner=pgdeg.PROPERTYGROUPOWNER
                        and workspaceid=pgdeg.WORKSPACEID;
          If l_count = 1 then
            l_str := 'select * from CMPPropertyGroupDefinition_r where name = ''' || pgdeg.NAME ||
                      ''' and logicalname=''' || pgdeg.LOGICALNAME ||
                      ''' and firstclassobject=' || pgdeg.FIRSTCLASSOBJECT ||
                      ' and propertyGroupOwner=' || pgdeg.propertyGroupOwner ||
                      ' and workspaceid=' || pgdeg.WORKSPACEID;
            EXECUTE IMMEDIATE l_str INTO pgdeg;
            putTrace('Found ' || toSPropertyGroupdefinition(pgdeg) || EOL);
          else
            If l_count = 0 then
              insert into CMPPropertyGroupDefinition_r VALUES pgdeg;
              putTrace('Inserted ' || toSPropertyGroupdefinition(pgdeg) || EOL);
            else
              putTrace('Error! Found ' || l_count || ' PropertyGroupDefinitions with same name ''' || pgdeg.NAME || '''!' || EOL);
            end if;
          end if;

  END; 


-- ============================================================================
  FUNCTION getBatchMapPlSqlsetId RETURN NUMBER IS
-- ============================================================================
  tmpNum NUMBER;
  platform NUMBER;
  classid NUMBER;
  BEGIN 
    platform := getplatformidbyname('GENERIC');
    classid := getclassidbyname(platform,'oracle.wh.repos.impl.mapping.CMPBatchMap');
    select elementid into tmpNum  from cmppropertysetdefinition_r where firstclassobject = classid and name = 'CONFIGURATION:PLSQL';
    return tmpNum;
  END;
  
-- =============================================================================
  FUNCTION getKMMapPlSqlSetId RETURN NUMBER IS
-- =============================================================================
  tmpNum NUMBER;
  platform NUMBER;
  classid NUMBER;
  BEGIN
    platform := getplatformidbyname('GENERIC');
    classid := getclassidbyname(platform,'oracle.wh.repos.impl.mapping.CMPKMMap');
    SELECT elementid INTO tmpNum  FROM cmppropertysetdefinition_r WHERE firstclassobject = classid AND name = 'CONFIGURATION:PLSQL';
    RETURN tmpNum;
  END;
 
-- ==========================================================================
-- toString CMPArrayType
  FUNCTION toSArrayType(pType CMPArrayType) RETURN VARCHAR2 IS
-- ==========================================================================
  	l_str VARCHAR2(4000);
  BEGIN
    l_str := 'CMPArrayType [ ';
    if (pType.NAME is not null) then
    	l_str := l_str || '[NAME: ' || pType.NAME || '] ';
    end if;
    if (pType.LOGICALNAME is not null) then
    	l_str := l_str || '[LOGICALNAME: ' || pType.LOGICALNAME || '] ';
    end if;
    if (pType.ELEMENTID is not null) then
    	l_str := l_str || '[ELEMENTID: ' || pType.ELEMENTID || '] ';
    end if;
    if (pType.UOID is not null) then
    	l_str := l_str || '[UOID: ' || pType.UOID || '] ';
    end if;
    if (pType.BASEELEMENTTYPEFQN is not null) then
    	l_str := l_str || '[BASEELEMENTTYPEFQN: ' || pType.BASEELEMENTTYPEFQN || '] ';
    end if;
    if (pType.BASEELEMENTTYPE is not null) then
    	l_str := l_str || '[BASEELEMENTTYPE: ' || pType.BASEELEMENTTYPE || '] ';
    end if;
    if (pType.OWNINGMODEL is not null) then
    	l_str := l_str || '[OWNINGMODEL: ' || pType.OWNINGMODEL || '] ';
    end if;
    if (pType.OWNINGFOLDER is not null) then
    	l_str := l_str || '[OWNINGFOLDER: ' || pType.OWNINGFOLDER || '] ';
    end if;
    l_str := l_str || ']';
    return l_str;
  END toSArrayType;  
  
-- ==========================================================================
-- toString CMPArrayModelAttribute
  FUNCTION toSArrayModelAttribute(pType CMPArrayModelAttribute) RETURN VARCHAR2 IS
-- ==========================================================================
  	l_str VARCHAR2(4000);
  BEGIN
    l_str := 'CMPArrayModelAttribute [ ';
    if (pType.NAME is not null) then
    	l_str := l_str || '[NAME: ' || pType.NAME || '] ';
    end if;
    if (pType.LOGICALNAME is not null) then
    	l_str := l_str || '[LOGICALNAME: ' || pType.LOGICALNAME || '] ';
    end if;
    if (pType.ELEMENTID is not null) then
    	l_str := l_str || '[ELEMENTID: ' || pType.ELEMENTID || '] ';
    end if;
    if (pType.UOID is not null) then
    	l_str := l_str || '[UOID: ' || pType.UOID || '] ';
    end if;
    if (pType.ATTRIBUTETYPEFQN is not null) then
    	l_str := l_str || '[ATTRIBUTETYPEFQN: ' || pType.ATTRIBUTETYPEFQN || '] ';
    end if;
    if (pType.ATTRIBUTETYPE is not null) then
    	l_str := l_str || '[ATTRIBUTETYPE: ' || pType.ATTRIBUTETYPE || '] ';
    end if;
    if (pType.MODELATTRIBUTEOWNER is not null) then
    	l_str := l_str || '[MODELATTRIBUTEOWNER: ' || pType.MODELATTRIBUTEOWNER || '] ';
    end if;
    if (pType.FIRSTCLASSOBJECT is not null) then
    	l_str := l_str || '[FIRSTCLASSOBJECT: ' || pType.FIRSTCLASSOBJECT || '] ';
    end if;
    l_str := l_str || ']';
    return l_str;
  END toSArrayModelAttribute;

  -- ==========================================================================
-- toString CMPPrimitiveModelAttribute
  FUNCTION toSPrimitiveModelAttribute(pType CMPPrimitiveModelAttribute) RETURN VARCHAR2 IS
-- ==========================================================================
  	l_str VARCHAR2(4000);
  BEGIN
    l_str := 'CMPPrimitiveModelAttribute [ ';
    if (pType.NAME is not null) then
    	l_str := l_str || '[NAME: ' || pType.NAME || '] ';
    end if;
    if (pType.LOGICALNAME is not null) then
    	l_str := l_str || '[LOGICALNAME: ' || pType.LOGICALNAME || '] ';
    end if;
    if (pType.ELEMENTID is not null) then
    	l_str := l_str || '[ELEMENTID: ' || pType.ELEMENTID || '] ';
    end if;
    if (pType.UOID is not null) then
    	l_str := l_str || '[UOID: ' || pType.UOID || '] ';
    end if;
    if (pType.ATTRIBUTETYPEFQN is not null) then
    	l_str := l_str || '[ATTRIBUTETYPEFQN: ' || pType.ATTRIBUTETYPEFQN || '] ';
    end if;
    if (pType.ATTRIBUTETYPE is not null) then
    	l_str := l_str || '[ATTRIBUTETYPE: ' || pType.ATTRIBUTETYPE || '] ';
    end if;
    if (pType.MODELATTRIBUTEOWNER is not null) then
    	l_str := l_str || '[MODELATTRIBUTEOWNER: ' || pType.MODELATTRIBUTEOWNER || '] ';
    end if;
    if (pType.FIRSTCLASSOBJECT is not null) then
    	l_str := l_str || '[FIRSTCLASSOBJECT: ' || pType.FIRSTCLASSOBJECT || '] ';
    end if;
    if (pType.POSITION is not null) then
    	l_str := l_str || '[POSITION: ' || pType.POSITION || '] ';
    end if;
    if (pType.VALUE is not null) then
    	l_str := l_str || '[VALUE: ' || pType.VALUE || '] ';
    end if;
    l_str := l_str || ']';
    return l_str;
  END toSPrimitiveModelAttribute;
  
-- ==========================================================================
  FUNCTION getCMPPrimitiveType(
     logicalName               IN VARCHAR2 DEFAULT null
    ,name                      IN VARCHAR2 DEFAULT null
    ,owningModel               IN NUMBER   DEFAULT null
    ,owningFolder              IN NUMBER   DEFAULT null
  ) RETURN CMPPrimitiveType
-- ==========================================================================
  IS
    ptype CMPPrimitiveType;
    l_str VARCHAR2(4000);
  BEGIN

          l_str := 'SELECT * FROM CMPPrimitiveType_r WHERE 1=1';
    if (logicalName is not null) then
        l_str := l_str || ' and LOGICALNAME=''' || logicalName || '''';
    end if;
    if (name is not null) then
        l_str := l_str || ' and NAME=''' || name || '''';
    end if;
    if (owningModel is not null) then
        l_str := l_str || ' and OWNINGMODEL=' || owningModel;
    end if;
    if (owningFolder is not null) then
        l_str := l_str || ' and OWNINGFOLDER=' || owningFolder;
    end if;
    putTrace(l_str || EOL);
    EXECUTE IMMEDIATE l_str INTO ptype;
    RETURN ptype;
    EXCEPTION
            WHEN NO_DATA_FOUND THEN
            BEGIN
                putTrace ('Not found -->' || l_str || EOL);
              RETURN null;
      END;
    RETURN ptype;
  END getCMPPrimitiveType;

-- ==========================================================================
--                                                              NewCMPPrimitiveModelAttribute
  FUNCTION newCMPPrimitiveModelAttribute(
     logicalName               IN VARCHAR2 DEFAULT null
    ,metadataSignature         IN VARCHAR2 DEFAULT null
    ,name                      IN VARCHAR2 DEFAULT null
    ,attributeTypeFqn          IN VARCHAR2 DEFAULT null
    ,primitiveType             IN CMPPrimitiveType DEFAULT null
    ,modelAttributeOwner       IN NUMBER   DEFAULT 0
    ,firstClassObject          IN NUMBER   DEFAULT 0
    ,value                     IN VARCHAR2 DEFAULT null
  ) RETURN CMPPrimitiveModelAttribute
-- ==========================================================================
  IS
    ptype CMPPrimitiveModelAttribute;
  BEGIN

    ptype.AGGREGATEDSIGNATURE := SYSDATE;
    ptype.CREATIONTIMESTAMP := SYSDATE;
    ptype.ELEMENTID := getNextElementId;
    ptype.LOGICALNAME := logicalName;
    ptype.METADATASIGNATURE := metadataSignature;
    ptype.NAME := name;
    ptype.UOID := RAWTOHEX(SYS_GUID());
    ptype.UPDATETIMESTAMP := SYSDATE;
    ptype.ATTRIBUTETYPEAGSG := primitiveType.AGGREGATEDSIGNATURE;
    ptype.ATTRIBUTETYPEFQN := attributeTypeFqn;
    ptype.ATTRIBUTETYPELUPD := primitiveType.UPDATETIMESTAMP;
    ptype.ATTRIBUTETYPEUOID := primitiveType.UOID;
    ptype.ATTRIBUTETYPE := primitiveType.ELEMENTID;
    ptype.MODELATTRIBUTEOWNER := modelAttributeOwner;
    ptype.FIRSTCLASSOBJECT := firstClassObject;
    ptype.VALUE := value;
  
    RETURN ptype;
  END newCMPPrimitiveModelAttribute;

-- =============================================================================
FUNCTION newCMPPrimitiveModelAttribute2(
     logicalName               IN VARCHAR2 DEFAULT null
    ,metadataSignature         IN VARCHAR2 DEFAULT null
    ,name                      IN VARCHAR2 DEFAULT null
    ,attributeTypeFqn          IN VARCHAR2 DEFAULT null
    ,modelAttributeOwner       IN NUMBER   DEFAULT 0
    ,firstClassObject          IN NUMBER   DEFAULT 0
    ,value                     IN VARCHAR2 DEFAULT null
  ) RETURN CMPPrimitiveModelAttribute
-- ==========================================================================
  IS
    ptype CMPPrimitiveModelAttribute;
  BEGIN

    ptype.AGGREGATEDSIGNATURE := SYSDATE;
    ptype.CREATIONTIMESTAMP := SYSDATE;
    ptype.ELEMENTID := getNextElementId;
    ptype.LOGICALNAME := logicalName;
    ptype.METADATASIGNATURE := metadataSignature;
    ptype.NAME := name;
    ptype.UOID := RAWTOHEX(SYS_GUID());
    ptype.UPDATETIMESTAMP := SYSDATE;
    ptype.ATTRIBUTETYPEFQN := attributeTypeFqn;
    ptype.MODELATTRIBUTEOWNER := modelAttributeOwner;
    ptype.FIRSTCLASSOBJECT := firstClassObject;
    ptype.VALUE := value;
  
    RETURN ptype;
  END newCMPPrimitiveModelAttribute2;

-- ==========================================================================
  PROCEDURE AddCMPPrimitiveModelAttribute(
    ptype IN OUT CMPPrimitiveModelAttribute
  )
-- ==========================================================================
  IS
    l_count NUMBER := 0;
    l_str VARCHAR2(4000);
  BEGIN
          select count(1) into l_count from CMPPrimitiveModelAttribute_r where name = ptype.NAME and attributeType=ptype.ATTRIBUTETYPE
                        and modelAttributeOwner=ptype.MODELATTRIBUTEOWNER and workspaceid=ptype.WORKSPACEID and firstClassObject=ptype.FIRSTCLASSOBJECT;
          If l_count = 1 then
            putTrace('Found PrimitiveModelAttribute with name ''' || ptype.NAME ||'''. Will Retrieve it from Repository.' || EOL);
            l_str := 'select * from CMPPrimitiveModelAttribute_r where name = ''' || ptype.NAME ||
                     ''' and attributeType=' || ptype.ATTRIBUTETYPE ||
                     ' and modelAttributeOwner=' || ptype.MODELATTRIBUTEOWNER ||
                     ' and workspaceid=' || ptype.WORKSPACEID ||
                                         ' and firstClassObject=' || ptype.FIRSTCLASSOBJECT;
            EXECUTE IMMEDIATE l_str INTO ptype;
          else
            If l_count = 0 then
              putTrace('Add PrimitiveModelAttribute with name ''' || ptype.NAME ||'''.' || EOL);
              insert into CMPPrimitiveModelAttribute_r VALUES ptype;
            else
              putTrace('Error! Found ' || l_count || ' PrimitiveModelAttributes with same name ''' || ptype.NAME || '''!' || EOL);
            end if;
          end if;

  END;

-- ==========================================================================
  FUNCTION getCMPArrayType(
     logicalName               IN VARCHAR2 DEFAULT null 
    ,name                      IN VARCHAR2 DEFAULT null
    ,owningModel        			 IN NUMBER   DEFAULT null
    ,owningFolder              IN NUMBER   DEFAULT null
    ,baseElementTypeFqn        IN VARCHAR2 DEFAULT null
    ,baseElementType           IN NUMBER   DEFAULT null
  ) RETURN CMPArrayType
-- ==========================================================================
  IS
    adef CMPArrayType;
    l_str VARCHAR2(4000);
  BEGIN
	  
	  l_str := 'SELECT * FROM CMPArrayType_r WHERE 1=1';
    if (logicalName is not null) then
    	l_str := l_str || ' and LOGICALNAME=''' || logicalName || '''';
    end if;
    if (name is not null) then
    	l_str := l_str || ' and NAME=''' || name || '''';
    end if;
    if (owningModel is not null) then
    	l_str := l_str || ' and OWNINGMODEL=' || owningModel;
    end if;
    if (owningFolder is not null) then
    	l_str := l_str || ' and OWNINGFOLDER=' || owningFolder;
    end if;
    if (baseElementTypeFqn is not null) then
    	l_str := l_str || ' and BASEELEMENTTYPEFQN=''' || baseElementTypeFqn || '''';
    end if;
    if (baseElementType is not null) then
    	l_str := l_str || ' and BASEELEMENTTYPE=' || baseElementType;
    end if;
    EXECUTE IMMEDIATE l_str INTO adef;
    putTrace('Queried ' || toSArrayType(adef) || EOL);
    RETURN adef;
    EXCEPTION
	    WHEN NO_DATA_FOUND THEN
	    BEGIN
	    	putTrace ('Not found -->' || l_str || EOL);
	      RETURN null;
      END;
    RETURN adef;
  END getCMPArrayType;  

-- ==========================================================================
--                         					NewCMPArrayModelAttribute
  FUNCTION newCMPArrayModelAttribute(
     logicalName               IN VARCHAR2 DEFAULT null    
    ,metadataSignature         IN VARCHAR2 DEFAULT null
    ,name                      IN VARCHAR2 DEFAULT null    
    ,arrayTypeFqn              IN VARCHAR2 DEFAULT null
    ,arrayType                 IN CMPArrayType DEFAULT null
    ,modelAttributeOwner       IN NUMBER   DEFAULT 0
    ,firstClassObject          IN NUMBER   DEFAULT 0
  ) RETURN CMPArrayModelAttribute
-- ==========================================================================
  IS
    adef CMPArrayModelAttribute;
  BEGIN
	  
    adef.AGGREGATEDSIGNATURE := SYSDATE;
    adef.CREATIONTIMESTAMP := SYSDATE;
    adef.ELEMENTID := getNextElementId;
    adef.LOGICALNAME := logicalName;
    adef.METADATASIGNATURE := metadataSignature;
    adef.NAME := name;
    adef.UOID := RAWTOHEX(SYS_GUID());
    adef.UPDATETIMESTAMP := SYSDATE;
    adef.ATTRIBUTETYPEAGSG := arrayType.AGGREGATEDSIGNATURE;
    adef.ATTRIBUTETYPEFQN := arrayTypeFqn;
    adef.ATTRIBUTETYPELUPD := arrayType.UPDATETIMESTAMP;
    adef.ATTRIBUTETYPEUOID := arrayType.UOID;
    adef.ATTRIBUTETYPE := arrayType.ELEMENTID;
    adef.MODELATTRIBUTEOWNER := modelAttributeOwner;
    adef.FIRSTCLASSOBJECT := firstClassObject;
    
    putTrace('Created ' || toSArrayModelAttribute(adef) || EOL);
    RETURN adef;
  END newCMPArrayModelAttribute;  
  
-- ==========================================================================  
  PROCEDURE AddCMPArrayModelAttribute(
    adef IN OUT CMPArrayModelAttribute
  )
-- ==========================================================================
  IS
    l_count NUMBER := 0;
    l_str VARCHAR2(4000);
  BEGIN
	  select count(1) into l_count from CMPArrayModelAttribute_r where name = adef.NAME and attributeType=adef.ATTRIBUTETYPE 
	  		and modelAttributeOwner=adef.MODELATTRIBUTEOWNER and workspaceid=adef.WORKSPACEID and firstClassObject=adef.FIRSTCLASSOBJECT;
	  If l_count = 1 then
	    l_str := 'select * from CMPArrayModelAttribute_r where name = ''' || adef.NAME || 
	             ''' and attributeType=' || adef.ATTRIBUTETYPE || 
	             ' and modelAttributeOwner=' || adef.MODELATTRIBUTEOWNER || 
	             ' and workspaceid=' || adef.WORKSPACEID ||
	    				 ' and firstClassObject=' || adef.FIRSTCLASSOBJECT;
	    EXECUTE IMMEDIATE l_str INTO adef;
	    putTrace('Found ' || toSArrayModelAttribute(adef) || EOL);
	  else
	    If l_count = 0 then
	      insert into CMPArrayModelAttribute_r VALUES adef;
	      putTrace('Inserted ' || toSArrayModelAttribute(adef) || EOL);
	    else
	      putTrace('Error! Found ' || l_count || ' ArrayModelAttributes with same name ''' || adef.NAME || '''!' || EOL);
	    end if;
	  end if;
	  
  END;
  
-- ##########################################################################
-- ##########################################################################
BEGIN --    Outer block - utility functions/variables now defined
-- ##########################################################################
-- ########################################################################## 
  -- =======================================================
  DECLARE -- Inner block for utility function/variable usage
          -- aka 'user' declarations
  -- =======================================================
          cdef                                 CMPClassDefinition              := null;	
	  psdef                                CMPPropertySetDefinition        := null;
	  pdef                                 CMPPropertyDefinition           := null;
	  adef                                 CMPArrayType                    := null;
	  datatypeId                           NUMBER;
	  platformId                           NUMBER;
	  superClassId                         NUMBER;
	  stringTypeId                         NUMBER;
	  classDefId                           NUMBER;
	  integerTypeId                        NUMBER; 
          tmpNum                               NUMBER; 
          padef                                CMPAnonymousDomain;
          pgdef                                CMPPropertyGroupdefinition;
          primitiveModelAttribute              CMPPrimitiveModelAttribute;
          primitiveModelAttribute_0            CMPPrimitiveModelAttribute;
          primitiveType                        CMPPrimitiveType;
          kmMapGroupDefId                      NUMBER;
          batchMapGroupDefId                   NUMBER;
          batchMapClassId                      NUMBER;
          kmMapClassId                         NUMBER;
          trickMapClassId                      NUMBER;
          
	  domain                               CMPAnonymousDomain;
	  arrayType                            CMPArrayType;
	  arrayModelAttribute                  CMPArrayModelAttribute;

  -- =======================================================
  BEGIN -- start handling data types defined in up.xml
  -- =======================================================	  
    putTrace('******************************************************************');
    putTrace('Start to upgrade TLO...');
   
   platformId := getPlatformIdByName('GENERIC');
   primitiveType := getCMPPrimitiveType('Boolean','Boolean',platformId,platformId);
   padef := newCMPAnonymousDomain('TARGET_LOAD_ORDERING',
                                   '06ec9b3be39aa61094f92908f4624032');                                 
   padef.DATATYPEFQN := 'OMB//\oracle.wh.repos.impl.platform.CMPPlatform\GENERIC\oracle.wh.repos.impl.domain.CMPPrimitiveType\Boolean';
   padef.datatype := getPrimitiveTypeId('Boolean');
   padef.DATATYPEUOID := primitiveType.UOID;
   padef.OWNINGMODEL := getPlatformIdByname('GENERIC');
   padef.OWNINGFOLDER := getPlatformIdByname('GENERIC');
   padef.chooser := null;
   padef.userchoiceallowed := 0;
   padef.comparator := 'oracle.wh.repos.impl.domain.comparator.PrimitiveValueComparator';
   AddCMPAnonymousDomain(padef);

   primitiveModelAttribute := newCMPPrimitiveModelAttribute2(
                           'DEFAULTVALUE',--logicalName
                           '1b43f8c036605ed0c2d3fea08138d33c',--metadataSignature
                           'DEFAULTVALUE',--name
                           'OMB//\oracle.wh.repos.impl.platform.CMPPlatform\GENERIC\oracle.wh.repos.impl.domain.CMPAnonymousDomain\TARGET_LOAD_ORDERING',--attributeTypeFqn
                            padef.ELEMENTID,--modelAttributeOwner
                            padef.ELEMENTID,--firstClassObject
                            'false' --value
                               );
    primitiveModelAttribute.attributetypeagsg := padef.AGGREGATEDSIGNATURE;
    primitiveModelAttribute.attributetype := padef.elementid;
    primitiveModelAttribute.attributetypeuoid := padef.uoid;
    AddCMPPrimitiveModelAttribute(primitiveModelAttribute);
    
    
    batchMapClassId := getclassidbyname(platformid,'oracle.wh.repos.impl.mapping.CMPBatchMap');
    trickMapClassId := getclassidbyname(platformid,'oracle.wh.repos.impl.mapping.CMPTrickleFeedMap');
    kmMapClassId    := getclassidbyname(platformid,'oracle.wh.repos.impl.mapping.CMPKMMap');
    
       
    -- Let's update the TARGET_LOAD_ORDERING directly.
    UPDATE cmppropertydefinition_r SET type = padef.elementid WHERE firstclassobject 
      in (batchMapClassId,trickMapClassId,kmMapClassId) AND name = 'TARGET_LOAD_ORDERING';
    putTrace('Update TLO for batch mapping, trick-feed mapping and CT mapping!');
    putTrace('Using SQL: UPDATE cmppropertydefinition_r SET type = padef.elementid WHERE firstclassobject 
      in (batchMapClassId,trickMapClassId,kmMapClassId) AND name = ''TARGET_LOAD_ORDERING'' !');
    
    -- Update validator: 'oracle.wh.service.impl.mapping.generation.TargetLoadOrderingValidator'
    	arrayType := getCMPArrayType(
                   'String[]',--logicalName 
                   'String[]',--name
                   platformId,--owningModel
                   platformId,--owningFolder
                   null,--baseElementTypeFqn
                   getStringDatatypeId()--baseElementType
                 );
    arrayModelAttribute := newCMPArrayModelAttribute(
                             'VALIDATORS',--logicalName    
                             'f5949ccd94ddf06d035b5e741d0a2c21',--metadataSignature
                             'VALIDATORS',--name    
                             'OMB//\oracle.wh.repos.impl.platform.CMPPlatform\GENERIC\oracle.wh.repos.impl.domain.CMPArrayType\String[]',--arrayTypeFqn
                             arrayType,--arrayType
                             padef.ELEMENTID,--modelAttributeOwner
                             padef.ELEMENTID--firstClassObject
                           );	
    AddCMPArrayModelAttribute(arrayModelAttribute);
    primitiveType := getCMPPrimitiveType(
    									'String',--logicalName
    									'String',--name
    									platformId,--owningModel
    									platformId--owningFolder
                     );    
    primitiveModelAttribute := newCMPPrimitiveModelAttribute(
    														'0',--logicalName    
    														'06c6474d3145caa0e1d939b23daecad9',--metadataSignature
    														'0',--name    
    														'OMB//\oracle.wh.repos.impl.platform.CMPPlatform\GENERIC\oracle.wh.repos.impl.domain.CMPPrimitiveType\String',--attributeTypeFqn
    														primitiveType,--primitiveType
    														arrayModelAttribute.ELEMENTID,--modelAttributeOwner
    														padef.ELEMENTID,--firstClassObject
    														'oracle.wh.service.impl.mapping.generation.TargetLoadOrderingValidator'--value
                               );
    AddCMPPrimitiveModelAttribute(primitiveModelAttribute);     
    
    putTrace('Reset old cmpprimitivemodelattribute');
    update cmpprimitivemodelattribute_r set value='false' where elementid in (
            select p.elementid from cmpprimitivemodelattribute_r p, cmpclassdefinition_r fco, cmppropertydefinition_r owner, cmpworkspace_r wksp
            where p.logicalname like 'DEFAULTVALUE' and p.value like 'true'
            and fco.elementid = p.firstclassobject and owner.elementid = p.modelattributeowner
            and ( fco.name like '%CMPBatchMap' or fco.name like '%CMPKMMap' or fco.name like '%CMPTrickleFeedMap' )
            and owner.name like '%TARGET_LOAD_ORDER%'
            and p.workspaceid=wksp.workspaceid and wksp.name like 'GLOBAL_WORKSPACE'
            );

    putTrace('*************  TLO upgrade is done!!!   **********************');
     
  -- =======================================================
  END; -- Inner block for utility function/variable usage
  -- =======================================================    
  
-- ##########################################################################
END; -- Outer block for utility functions/variables
-- ##########################################################################
/