-- CONNECT RELEASE_MANAGER -- new object type path is: SCHEMA_EXPORT/USER -- CONNECT SYSTEM CREATE USER "RELEASE_MANAGER" IDENTIFIED BY VALUES '1F0884EAE574CCCE' DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP"; -- new object type path is: SCHEMA_EXPORT/TABLESPACE_QUOTA DECLARE TEMP_COUNT NUMBER; SQLSTR VARCHAR2(200); BEGIN SQLSTR := 'ALTER USER "RELEASE_MANAGER" QUOTA UNLIMITED ON "USERS"'; EXECUTE IMMEDIATE SQLSTR; EXCEPTION WHEN OTHERS THEN IF SQLCODE = -30041 THEN SQLSTR := 'SELECT COUNT(*) FROM USER_TABLESPACES WHERE TABLESPACE_NAME = ''USERS'' AND CONTENTS = ''TEMPORARY'''; EXECUTE IMMEDIATE SQLSTR INTO TEMP_COUNT; IF TEMP_COUNT = 1 THEN RETURN; ELSE RAISE; END IF; ELSE RAISE; END IF; END; / -- new object type path is: SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA -- CONNECT RELEASE_MANAGER BEGIN sys.dbms_logrep_imp.instantiate_schema(schema_name=>SYS_CONTEXT('USERENV','CURRENT_SCHEMA'), export_db_name=>'RELMAND1', inst_scn=>'192130887'); COMMIT; END; / -- new object type path is: SCHEMA_EXPORT/SYNONYM/SYNONYM CREATE SYNONYM "RELEASE_MANAGER"."APPLICATIONS" FOR "ACCESS_MANAGER"."APPLICATIONS"; CREATE SYNONYM "RELEASE_MANAGER"."APPLICATION_PAGES" FOR "ACCESS_MANAGER"."APPLICATION_PAGES"; CREATE SYNONYM "RELEASE_MANAGER"."CONTROL_OBJECTS" FOR "ACCESS_MANAGER"."CONTROL_OBJECTS"; CREATE SYNONYM "RELEASE_MANAGER"."DATA_PERMISSIONS" FOR "ACCESS_MANAGER"."DATA_PERMISSIONS"; CREATE SYNONYM "RELEASE_MANAGER"."DATA_TABLES" FOR "ACCESS_MANAGER"."DATA_TABLES"; CREATE SYNONYM "RELEASE_MANAGER"."PAGE_CONTROL_OBJECTS" FOR "ACCESS_MANAGER"."PAGE_CONTROL_OBJECTS"; CREATE SYNONYM "RELEASE_MANAGER"."PERMISSION_TYPES" FOR "ACCESS_MANAGER"."PERMISSION_TYPES"; CREATE SYNONYM "RELEASE_MANAGER"."PK_AMUTILS" FOR "ACCESS_MANAGER"."PK_AMUTILS"; CREATE SYNONYM "RELEASE_MANAGER"."PK_SECURITY" FOR "ACCESS_MANAGER"."PK_SECURITY"; CREATE SYNONYM "RELEASE_MANAGER"."ROLES" FOR "ACCESS_MANAGER"."ROLES"; CREATE SYNONYM "RELEASE_MANAGER"."ROLE_PRIVILEGES" FOR "ACCESS_MANAGER"."ROLE_PRIVILEGES"; CREATE SYNONYM "RELEASE_MANAGER"."USERS" FOR "ACCESS_MANAGER"."USERS"; CREATE SYNONYM "RELEASE_MANAGER"."USER_APPLICATIONS" FOR "ACCESS_MANAGER"."USER_APPLICATIONS"; CREATE SYNONYM "RELEASE_MANAGER"."USER_ROLES" FOR "ACCESS_MANAGER"."USER_ROLES"; -- new object type path is: SCHEMA_EXPORT/TYPE/TYPE_SPEC CREATE TYPE "RELEASE_MANAGER"."RELMGR_NUMBER_TAB_T" OID 'B3A08BE610F011D8BD1F00104B0E428C' as TABLE of NUMBER / ALTER TYPE "RELEASE_MANAGER"."RELMGR_NUMBER_TAB_T" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE / CREATE TYPE "RELEASE_MANAGER"."RELMGR_VARCHAR2_TAB_T" OID 'F7327D0030312415E0340003BA71070D' as TABLE of VARCHAR2(4000) / ALTER TYPE "RELEASE_MANAGER"."RELMGR_VARCHAR2_TAB_T" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE / CREATE TYPE "RELEASE_MANAGER"."TDICTIONARY" OID 'F7327D00302E2415E0340003BA71070D' AS TABLE OF VARCHAR2(4000) INDEX BY VARCHAR2(4000) / ALTER TYPE "RELEASE_MANAGER"."TDICTIONARY" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE / -- new object type path is: SCHEMA_EXPORT/SEQUENCE/SEQUENCE CREATE SEQUENCE "RELEASE_MANAGER"."MICROSOFTSEQDTPROPERTIES" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 50 NOORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_ADDITIONAL_NOTES" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 21669 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_CR_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 2221 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_GBE_ID" MINVALUE 40 MAXVALUE 9999999999999999999999990 INCREMENT BY 10 START WITH 840 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_GROUP_EMAIL_ID" MINVALUE 1 MAXVALUE 999999999999999999999999 INCREMENT BY 1 START WITH 722 CACHE 20 NOORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_MSG_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 402 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_PKG_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 28845 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_PROJ_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 481 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_PV_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 157986 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_RCON_ID" MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 4023 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_RTAG_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 9763 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_SCHEDULED_ID" MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 16741 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_SESSION_NUM" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 221309 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_UNIT_TESTS" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 93390 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_USER_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 3961 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_VIEW_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 3701 CACHE 20 ORDER NOCYCLE ; CREATE SEQUENCE "RELEASE_MANAGER"."SEQ_VTREE_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 6582 CACHE 20 ORDER NOCYCLE ; -- new object type path is: SCHEMA_EXPORT/TABLE/TABLE CREATE TABLE "RELEASE_MANAGER"."ACTION_LOG" ( "USER_ID" NUMBER NOT NULL ENABLE, "ACTION_DATETIME" DATE NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE, "DESCRIPTION" VARCHAR2(4000), "ACTTYPE_ID" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."ACTION_TYPE" ( "ACTTYPE_ID" NUMBER NOT NULL ENABLE, "NAME" VARCHAR2(255) NOT NULL ENABLE, "DESCRIPTION" VARCHAR2(4000) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."ADDITIONAL_NOTES" ( "NOTE_ID" NUMBER NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE, "NOTE_TITLE" VARCHAR2(2000) NOT NULL ENABLE, "NOTE_BODY" VARCHAR2(4000), "MOD_DATE" DATE NOT NULL ENABLE, "MOD_USER" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."BUILD_ENVIRONMENTS" ( "BE_ID" NUMBER NOT NULL ENABLE, "BE_NAME" VARCHAR2(255) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."BUILD_ENV_DOCUMENTS" ( "BE_ID" NUMBER NOT NULL ENABLE, "DOC_NUM" VARCHAR2(255) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."CODE_REVIEWS" ( "PV_ID" NUMBER NOT NULL ENABLE, "DATE_OF_REVIEW" DATE, "TIME_SPENT" FLOAT(126), "REVIEW_REASON" VARCHAR2(4000), "RTEAM_DOMAIN_EXPERT" VARCHAR2(4000), "RTEAM_LANGUAGE_EXPERT" VARCHAR2(4000), "RTEAM_PEER_DEVELOPER" VARCHAR2(4000), "RTEAM_AUTHOR" VARCHAR2(4000), "FILES_REVIEWED" VARCHAR2(4000), "REVIEW_RESULTS" NUMBER, "ISSUES_RAISED" VARCHAR2(4000), "REVIEW_COMMENTS" VARCHAR2(4000), "FNC_S_MEETS_FUNCTIONALITY" CHAR(1), "FNC_C_MEETS_FUNCTIONALITY" VARCHAR2(4000), "RBS_S_BOUND_COND_HANDLED" CHAR(1), "RBS_C_BOUND_COND_HANDLED" VARCHAR2(4000), "RBS_S_CLASS_INTERF_PRECOND" CHAR(1), "RBS_C_CLASS_INTERF_PRECOND" VARCHAR2(4000), "RBS_S_NO_UNITIALISED_DATE" CHAR(1), "RBS_C_NO_UNITIALISED_DATE" VARCHAR2(4000), "RBS_S_EXCEP_HANDING" CHAR(1), "RBS_C_EXCEP_HANDING" VARCHAR2(4000), "RBS_S_RESOURCE_MNG" CHAR(1), "RBS_C_RESOURCE_MNG" VARCHAR2(4000), "RBS_S_TRANS_COMPLET" CHAR(1), "RBS_C_TRANS_COMPLET" VARCHAR2(4000), "RBS_S_THREADSAFETY" CHAR(1), "RBS_C_THREADSAFETY" VARCHAR2(4000), "RBS_S_RET_VALS" CHAR(1), "RBS_C_RET_VALS" VARCHAR2(4000), "RBS_S_CORR_ERR_HANDLING" CHAR(1), "RBS_C_CORR_ERR_HANDLING" VARCHAR2(4000), "RBS_S_SQL_STD" CHAR(1), "RBS_C_SQL_STD" VARCHAR2(4000), "MNT_S_EXT_REF" CHAR(1), "MNT_C_EXT_REF" VARCHAR2(4000), "MNT_S_CLASS_SIZE" CHAR(1), "MNT_C_CLASS_SIZE" VARCHAR2(4000), "MNT_S_METHOD_SIZE" CHAR(1), "MNT_C_METHOD_SIZE" VARCHAR2(4000), "MNT_S_APPROP_COMM" CHAR(1), "MNT_C_APPROP_COMM" VARCHAR2(4000), "MNT_S_IDENT_NAME_STD" CHAR(1), "MNT_C_IDENT_NAME_STD" VARCHAR2(4000), "MNT_S_SWITCH_HAVE_DEFAULTS" CHAR(1), "MNT_C_SWITCH_HAVE_DEFAULTS" VARCHAR2(4000), "MNT_S_NO_LIT_NUM" CHAR(1), "MNT_C_NO_LIT_NUM" VARCHAR2(4000), "MNT_S_NO_DEAD_CODE" CHAR(1), "MNT_C_NO_DEAD_CODE" VARCHAR2(4000), "DEI_S_STD_DES_PATT" CHAR(1), "DEI_C_STD_DES_PATT" VARCHAR2(4000), "DEI_S_APPROP_ALGOR" CHAR(1), "DEI_C_APPROP_ALGOR" VARCHAR2(4000), "DEI_S_APPROP_OBJ" CHAR(1), "DEI_C_APPROP_OBJ" VARCHAR2(4000), "DEI_S_APPROP_ERR_MSG" CHAR(1), "DEI_C_APPROP_ERR_MSG" VARCHAR2(4000), "DEI_S_STD_FRAMEW_COMP" CHAR(1), "DEI_C_STD_FRAMEW_COMP" VARCHAR2(4000), "DEI_S_APPROP_LOGGING" CHAR(1), "DEI_C_APPROP_LOGGING" VARCHAR2(4000) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."CQ_ISSUES" ( "PV_ID" NUMBER NOT NULL ENABLE, "ISS_DB" NUMBER NOT NULL ENABLE, "ISS_ID" NUMBER NOT NULL ENABLE, "ISS_STATE" NUMBER NOT NULL ENABLE, "MOD_DATE" DATE NOT NULL ENABLE, "NOTES" VARCHAR2(255) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."IGNORE_WARNINGS" ( "RTAG_ID" NUMBER NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE, "DPV_ID" NUMBER NOT NULL ENABLE, "IS_PATCH_IGNORE" CHAR(1) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."MESSAGE_BOARD" ( "MSG_ID" NUMBER NOT NULL ENABLE, "MSG_DETAILS" VARCHAR2(2000) NOT NULL ENABLE, "SUBMITION_DATE" DATE NOT NULL ENABLE, "EXPIRY_DATE" DATE, "DUE_DATE" DATE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."MICROSOFTDTPROPERTIES" ( "ID" NUMBER CONSTRAINT "MICROSOFT_NN_ID" NOT NULL ENABLE, "OBJECTID" NUMBER, "PROPERTY" VARCHAR2(64) CONSTRAINT "MICROSOFT_NN_PROPERTY" NOT NULL ENABLE, "VALUE" VARCHAR2(255), "LVALUE" LONG RAW, "VERSION" NUMBER DEFAULT (0) CONSTRAINT "MICROSOFT_NN_VERSION" NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."NOTE_MANAGER" ( "NID" VARCHAR2(30) NOT NULL ENABLE, "LAST_USER" VARCHAR2(20), "LAST_DATE" DATE, "DESCRIPTION" VARCHAR2(4000) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."NOTIFICATION_HISTORY" ( "RTAG_ID" NUMBER NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE, "USER_ID" NUMBER NOT NULL ENABLE, "DATE_TIME_STAMP" DATE NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PACKAGES" ( "PKG_ID" NUMBER NOT NULL ENABLE, "PKG_NAME" VARCHAR2(255) NOT NULL ENABLE, "SUNOS_ELECTRONIC_NAME" VARCHAR2(255), "WIN_ELECTRONIC_NAME" VARCHAR2(255) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."PACKAGE_BUILD_ENV" ( "PV_ID" NUMBER NOT NULL ENABLE, "BE_ID" NUMBER NOT NULL ENABLE, "BUILD_TYPE" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PACKAGE_DEPENDENCIES" ( "PV_ID" NUMBER NOT NULL ENABLE, "DPV_ID" NUMBER NOT NULL ENABLE, "PKG_ID" NUMBER NOT NULL ENABLE, "DPKG_ID" NUMBER NOT NULL ENABLE, "BUILD_TYPE" CHAR(1) NOT NULL ENABLE, "DISPLAY_ORDER" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 327680 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."PACKAGE_DOCUMENTS" ( "PV_ID" NUMBER NOT NULL ENABLE, "TEST_ID" NUMBER, "DOC_ID" NUMBER NOT NULL ENABLE, "DOC_NUM" VARCHAR2(50) NOT NULL ENABLE, "IS_LATEST" CHAR(1) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PACKAGE_PATCHES" ( "PV_ID" NUMBER NOT NULL ENABLE, "PATCH_ID" NUMBER NOT NULL ENABLE, "INSTALL_ORDER" NUMBER NOT NULL ENABLE, "PATCH_OBSOLETED_BY" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PACKAGE_VERSIONS" ( "PV_ID" NUMBER NOT NULL ENABLE, "PKG_ID" NUMBER NOT NULL ENABLE, "PKG_VERSION" VARCHAR2(50) NOT NULL ENABLE, "DLOCKED" CHAR(1) NOT NULL ENABLE, "RELEASED_AT" NUMBER, "MODIFIED_STAMP" DATE, "MODIFIER_ID" NUMBER NOT NULL ENABLE, "CREATED_STAMP" DATE, "CREATOR_ID" NUMBER NOT NULL ENABLE, "COMMENTS" VARCHAR2(4000), "V_MM" VARCHAR2(50), "V_NMM" VARCHAR2(50), "V_EXT" VARCHAR2(50), "PKG_LABEL" VARCHAR2(60), "SRC_PATH" VARCHAR2(2000), "PV_DESCRIPTION" VARCHAR2(4000), "OWNER_ID" NUMBER NOT NULL ENABLE, "PV_OVERVIEW" VARCHAR2(4000), "IS_PATCH" CHAR(1), "LAST_PV_ID" NUMBER NOT NULL ENABLE, "RELEASE_NOTES_INFO" VARCHAR2(1000), "IS_DEPLOYABLE" CHAR(1), "IS_BUILD_ENV_REQUIRED" CHAR(1), "IS_OBSOLETE" CHAR(1), "OBSOLETE_COMMENTS" VARCHAR2(4000), "BUILD_TYPE" CHAR(1) NOT NULL ENABLE, "CHANGE_TYPE" CHAR(1), "LINK" VARCHAR2(4000), "PATCH_ELECTRONIC_NAME" VARCHAR2(4000), "BS_ID" NUMBER, "IS_AUTOBUILDABLE" CHAR(1), "SBOM_PRIORITY" CHAR(1), "RIPPLE_FIELD" CHAR(1 CHAR), "MAXIMUM_BUILD_TIME" NUMBER, "ESTIMATED_COMPLETION_TIME" DATE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 196608 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."PROCESSES" ( "PROC_ID" NUMBER NOT NULL ENABLE, "PROC_NAME" VARCHAR2(255) NOT NULL ENABLE, "PROC_DESCRIPTION" VARCHAR2(255), "RUN_AS" VARCHAR2(255), "PKG_OWNER" VARCHAR2(4000), "IS_INTERFACE" CHAR(1) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PROJECTS" ( "PROJ_ID" NUMBER NOT NULL ENABLE, "PROJ_NAME" VARCHAR2(50) NOT NULL ENABLE, "BASE_URL" VARCHAR2(4000) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."PROJECT_EXTENTIONS" ( "PROJ_ID" NUMBER NOT NULL ENABLE, "EXT_NAME" VARCHAR2(10) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."RELEASE_COMPONENTS" ( "PV_ID" NUMBER NOT NULL ENABLE, "FILE_NAME" VARCHAR2(255), "FILE_PATH" VARCHAR2(2000), "BYTE_SIZE" NUMBER, "CRC_CKSUM" VARCHAR2(50), "CRC_MODCRC" VARCHAR2(50) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."RELEASE_CONTENT" ( "RTAG_ID" NUMBER NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE, "BASE_VIEW_ID" NUMBER NOT NULL ENABLE, "INSERT_STAMP" DATE NOT NULL ENABLE, "INSERTOR_ID" NUMBER NOT NULL ENABLE, "PKG_STATE" NUMBER NOT NULL ENABLE, "PKG_ID" NUMBER, "DEPRECATED_STATE" NUMBER, "PRODUCT_STATE" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."RELEASE_TAGS" ( "RTAG_ID" NUMBER NOT NULL ENABLE, "VTREE_ID" NUMBER, "RTAG_NAME" VARCHAR2(50) NOT NULL ENABLE, "DESCRIPTION" VARCHAR2(4000), "CREATED_STAMP" DATE, "CREATOR_ID" NUMBER, "OFFICIAL_STAMP" DATE, "RELEASOR_ID" NUMBER, "OFFICIAL" CHAR(1) NOT NULL ENABLE, "REBUILD_ENV" CHAR(1) NOT NULL ENABLE, "REBUILD_STAMP" NUMBER NOT NULL ENABLE, "RTAG_VERSION" VARCHAR2(4000), "RTAG_LIFE_CYCLE" NUMBER, "PARENT_RTAG_ID" NUMBER NOT NULL ENABLE, "PROJ_ID" NUMBER NOT NULL ENABLE, "DISPLAY_ORDER" NUMBER, "OWNER_EMAIL" VARCHAR2(1000), "ASSOC_MASS_REF" NUMBER, "OWNER_PERSONAL_EMAIL" VARCHAR2(1000), "CONFIG_SPEC_BRANCH" VARCHAR2(4000), "PRODUCT_STATE_USED" CHAR(1) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."RUNTIME_DEPENDENCIES" ( "PV_ID" NUMBER NOT NULL ENABLE, "RTD_ID" NUMBER, "RTD_COMMENTS" VARCHAR2(2000), "RTD_URL" VARCHAR2(2000), "MOD_DATE" DATE NOT NULL ENABLE, "MOD_USER" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."TEMP_ENV_STATES" ( "SESSION_NUM" NUMBER NOT NULL ENABLE, "LEVEL_NUM" NUMBER NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE, "PKG_ID" NUMBER NOT NULL ENABLE, "V_EXT" VARCHAR2(50), "TES_STATE" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."TEST_TYPES" ( "TEST_TYPE_ID" NUMBER NOT NULL ENABLE, "TEST_TYPE_NAME" VARCHAR2(50) NOT NULL ENABLE, "DISPLAY_ORDER" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."UNIT_TESTS" ( "TEST_ID" NUMBER NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE, "TEST_TYPES_FK" NUMBER NOT NULL ENABLE, "TEST_SUMMARY" VARCHAR2(4000), "COMPLETION_DATE" DATE, "COMPLETED_BY" NUMBER, "RESULTS_URL" VARCHAR2(2000), "RESULTS_ATTACHMENT_NAME" VARCHAR2(2000), "TEST_ACCEPTED" CHAR(1), "ACCEPTANCE_DATE" DATE, "ACCEPTED_BY" NUMBER, "REVIEW_COMMENTS" VARCHAR2(4000), "NUMOF_TEST" VARCHAR2(50) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."VALIDATION_RULES" ( "FIELD_NAME" VARCHAR2(1000) NOT NULL ENABLE, "IS_REQUIRED" CHAR(1) NOT NULL ENABLE, "IS_NUMERIC" CHAR(1), "MIN_NUMERIC_VALUE" NUMBER, "MAX_NUMERIC_VALUE" NUMBER, "IS_DATE" CHAR(1), "START_DATE" DATE, "END_DATE" DATE, "MIN_STRING_LENGTH" NUMBER, "MAX_STRING_LENGTH" NUMBER, "REGEXP" VARCHAR2(4000), "REGEXP_DESCRIPTION" VARCHAR2(50) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."VIEWS" ( "VIEW_ID" NUMBER NOT NULL ENABLE, "VIEW_NAME" VARCHAR2(30) NOT NULL ENABLE, "OWNER_ID" NUMBER NOT NULL ENABLE, "BASE_VIEW" CHAR(1) NOT NULL ENABLE, "PUBLIC_READ" CHAR(1) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."VIEW_DEF" ( "VIEW_ID" NUMBER NOT NULL ENABLE, "PKG_ID" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."VIEW_SETTINGS" ( "USER_ID" NUMBER NOT NULL ENABLE, "VIEW_ID" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."VTREES" ( "VTREE_ID" NUMBER NOT NULL ENABLE, "PROJ_ID" NUMBER NOT NULL ENABLE, "VTREE_NAME" VARCHAR2(50) NOT NULL ENABLE, "HIDE" CHAR(1) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."VTREES_WORLD" ( "WORLD_ID" NUMBER NOT NULL ENABLE, "VTREE_ID" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."WORLDS" ( "WORLD_ID" NUMBER NOT NULL ENABLE, "WORLD_NAME" VARCHAR2(30) NOT NULL ENABLE, "WORLD_DESC" VARCHAR2(255) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."TEMP_TREE_BROWSE" ( "SESSION_NUM" NUMBER, "LEVEL_NUM" NUMBER, "PV_ID" NUMBER, "PKG_ID" NUMBER, "V_EXT" VARCHAR2(50), "DIRECTION" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."BUILD_ORDER" ( "RTAG_ID" NUMBER NOT NULL ENABLE, "STEP_NUM" NUMBER NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE, "UNRESOLVED" CHAR(1) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PRODUCT_COMPONENTS" ( "PV_ID" NUMBER NOT NULL ENABLE, "OS_ID" NUMBER NOT NULL ENABLE, "FILE_PATH" VARCHAR2(4000), "FILE_NAME" VARCHAR2(4000), "DESTINATION_PATH" VARCHAR2(4000), "BYTE_SIZE" NUMBER, "CRC_CKSUM" VARCHAR2(2000) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."RM_PACKAGE_ISSUES" ( "PKG_ID" NUMBER, "PKG_NAME" VARCHAR2(50), "PV_ID" NUMBER, "PKG_VERSION" VARCHAR2(50), "DPV_ID" NUMBER, "DPKG_NAME" VARCHAR2(50), "DPKG_VERSION" VARCHAR2(50), "ISS_DB" NUMBER, "ISS_ID" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."WORK_IN_PROGRESS" ( "RTAG_ID" NUMBER NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE, "VIEW_ID" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PLANNED" ( "RTAG_ID" NUMBER NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE, "VIEW_ID" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."DEF_ACTION_BUTTONS" ( "ABTN_ID" NUMBER NOT NULL ENABLE, "ABTN_NAME" VARCHAR2(1000) NOT NULL ENABLE, "TEXT" VARCHAR2(50), "ACTION_LINK" VARCHAR2(4000), "EVENT_HANDLER" VARCHAR2(4000), "IMG_ENABLED" VARCHAR2(1000), "IMG_DISABLED" VARCHAR2(1000), "HINT" VARCHAR2(255), "VISIBLE" CHAR(1) NOT NULL ENABLE, "ACTIVE" CHAR(1) NOT NULL ENABLE, "IS_READONLY_ACTION" CHAR(1) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PLATFORMS" ( "CODE" NUMBER NOT NULL ENABLE, "NAME" VARCHAR2(255) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."RELEASE_LINKS" ( "RTAG_ID" NUMBER NOT NULL ENABLE, "REF_RTAG_ID" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PROJECT_ACTION_LOG" ( "USER_ID" NUMBER NOT NULL ENABLE, "ACTION_DATETIME" DATE NOT NULL ENABLE, "PROJ_ID" NUMBER NOT NULL ENABLE, "DESCRIPTION" VARCHAR2(4000), "ACTTYPE_ID" NUMBER NOT NULL ENABLE, "RTAG_ID" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."TEMP_SASH" ( "RTAG_ID" NUMBER, "PROJ_ID" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."JIRA_ISSUES" ( "PV_ID" NUMBER NOT NULL ENABLE, "ISS_KEY" VARCHAR2(4000), "DATE_TIME_STAMP" DATE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ; CREATE TABLE "RELEASE_MANAGER"."DO_NOT_RIPPLE" ( "RTAG_ID" NUMBER NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."DEPRECATED_PACKAGES" ( "RTAG_ID" NUMBER NOT NULL ENABLE, "PKG_ID" NUMBER NOT NULL ENABLE, "COMMENTS" VARCHAR2(4000) NOT NULL ENABLE, "V_EXT" VARCHAR2(50) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."AUTOBUILD_FAILURE" ( "GROUP_EMAIL_ID" NUMBER NOT NULL ENABLE, "PROJ_ID" NUMBER, "VIEW_ID" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."MEMBERS_GROUP" ( "GROUP_EMAIL_ID" NUMBER NOT NULL ENABLE, "USER_ID" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PACKAGE_INTEREST" ( "PKG_ID" NUMBER NOT NULL ENABLE, "PROJ_ID" NUMBER NOT NULL ENABLE, "USER_ID" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PACKAGE_PROCESSES" ( "PV_ID" NUMBER NOT NULL ENABLE, "PROC_ID" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."ARCHIVE_DATA" ( "RTAG_ID" NUMBER(*,0) NOT NULL ENABLE, "PV_ID" NUMBER(*,0) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."ARCHIVE_ACTION_LOG" ( "USER_ID" NUMBER NOT NULL ENABLE, "DATE_TIME_STAMP" DATE NOT NULL ENABLE, "RTAG_ID" NUMBER NOT NULL ENABLE, "DESCRIPTION" VARCHAR2(4000) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 0 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."BUILD_MACHINES" ( "BM_ID" NUMBER NOT NULL ENABLE, "BM_NAME" VARCHAR2(20) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."BUILD_STANDARDS" ( "BS_ID" NUMBER NOT NULL ENABLE, "BS_NAME" VARCHAR2(20) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PACKAGE_BUILD_INFO" ( "PV_ID" NUMBER NOT NULL ENABLE, "BM_ID" NUMBER NOT NULL ENABLE, "BSA_ID" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."BUILD_SERVICE_CONFIG" ( "SERVICE" VARCHAR2(50) NOT NULL ENABLE, "CONFIG" VARCHAR2(2000) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."GBE_MACHTYPE" ( "GBE_ID" NUMBER NOT NULL ENABLE, "GBE_VALUE" VARCHAR2(20) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."RELEASE_CONFIG" ( "RCON_ID" NUMBER NOT NULL ENABLE, "RTAG_ID" NUMBER NOT NULL ENABLE, "GBE_ID" NUMBER NOT NULL ENABLE, "DAEMON_HOSTNAME" VARCHAR2(50), "DAEMON_MODE" CHAR(1 CHAR), "GBE_BUILDFILTER" VARCHAR2(255) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."DASH_BOARD" ( "PROJ_ID" NUMBER NOT NULL ENABLE, "RTAG_ID" NUMBER NOT NULL ENABLE, "LAST_BUILD_TIME" DATE NOT NULL ENABLE, "AUTOMATED_PACKAGES" NUMBER NOT NULL ENABLE, "TOTAL_PACKAGES" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PRODUCT_STATES" ( "STATE_ID" NUMBER NOT NULL ENABLE, "STATE" VARCHAR2(4000) NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."BUILD_STANDARDS_ADDENDUM" ( "BSA_ID" NUMBER NOT NULL ENABLE, "BSA_NAME" VARCHAR2(4000) NOT NULL ENABLE, "BS_ID" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PLANNED_VERSIONS" ( "PKG_ID" NUMBER, "PKG_VERSION" VARCHAR2(50) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."ADVISORY_RIPPLE" ( "RTAG_ID" NUMBER NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."RIPPLE_FIELD_STATES" ( "STATE_ID" NUMBER NOT NULL ENABLE, "STATE_ACRONYM" CHAR(1) NOT NULL DISABLE, "STATE_NAME" VARCHAR2(50) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."REPEAT_SCHEDULE" ( "RPT_ID" NUMBER, "REPEAT" CHAR(1) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."RUN_LEVEL_SCHEDULE" ( "SCHEDULED_ID" NUMBER NOT NULL ENABLE, "SCHEDULED_PAUSE" DATE, "SCHEDULED_RESUME" DATE, "REPEAT" CHAR(1), "INDEFINITE_PAUSE" CHAR(1) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."DAEMON_ACTION_LOG" ( "USER_ID" NUMBER NOT NULL ENABLE, "ACTION_DATETIME" DATE, "RCON_ID" NUMBER NOT NULL ENABLE, "DESCRIPTION" VARCHAR2(4000), "ACTTYPE_ID" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."CODE_REVIEW_URL" ( "CR_ID" NUMBER NOT NULL ENABLE, "PV_ID" NUMBER NOT NULL ENABLE, "PROJ_ID" NUMBER NOT NULL ENABLE, "URL" VARCHAR2(4000) NOT NULL ENABLE, "REASON" VARCHAR2(4000), "DATE_OF_REVIEW" DATE NOT NULL ENABLE, "LAST_MODIFIED" DATE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."ABT_ACTION_LOG" ( "RCON_ID" NUMBER NOT NULL ENABLE, "ACTION_DATETIME" DATE, "ACTION" VARCHAR2(4000) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."PACKAGE_METRICS" ( "PV_ID" NUMBER NOT NULL ENABLE, "BRANCHES" NUMBER, "BRANCH_LIST" VARCHAR2(4000), "CODE_FILES" NUMBER, "IGNORED_FILES" NUMBER, "DIRECTORIES" NUMBER, "DIRECTORY_DEPTH" NUMBER, "TOTAL_FILES" NUMBER, "MAKEFILES" NUMBER, "BLANK_LINES" NUMBER, "CODE_LINES" NUMBER, "COMMENT_LINES" NUMBER, "CREATED_STAMP" DATE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "RELEASE_MANAGER"."RELEASE_METRICS" ( "RTAG_ID" NUMBER NOT NULL ENABLE, "TOTAL_PACKAGES" NUMBER, "AUTOBUILT" NUMBER, "LINES_OF_CODE" NUMBER, "UNIT_TESTED" NUMBER, "AUTOTESTED" NUMBER, "BRANCHES" NUMBER, "LAST_BUILD_TIME" DATE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE GLOBAL TEMPORARY TABLE "RELEASE_MANAGER"."RM_PKG_ISSUES" ( "PKG_ID" NUMBER, "PKG_NAME" VARCHAR2(50), "PV_ID" NUMBER, "PKG_VERSION" VARCHAR2(50), "DPV_ID" NUMBER, "DPKG_NAME" VARCHAR2(50), "DPKG_VERSION" VARCHAR2(50), "ISS_DB" NUMBER, "ISS_ID" NUMBER ) ON COMMIT PRESERVE ROWS ; CREATE TABLE "RELEASE_MANAGER"."RUN_LEVEL" ( "RCON_ID" NUMBER, "CURRENT_BUILD_FILES" CLOB, "CURRENT_RUN_LEVEL" NUMBER, "PAUSE" NUMBER, "CURRENT_PKG_ID_BEING_BUILT" NUMBER ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" LOB ("CURRENT_BUILD_FILES") STORE AS ( TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10 NOCACHE LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) ; -- new object type path is: SCHEMA_EXPORT/TABLE/INDEX/INDEX CREATE INDEX "RELEASE_MANAGER"."INX_ACTION_LOG_PV_ID" ON "RELEASE_MANAGER"."ACTION_LOG" ("PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_ACTION_LOG_PV_ID" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_ACTION_DATE_TIME" ON "RELEASE_MANAGER"."ACTION_LOG" ("ACTION_DATETIME") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_ACTION_DATE_TIME" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_ACTTYPE_ID" ON "RELEASE_MANAGER"."ACTION_TYPE" ("ACTTYPE_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_ACTTYPE_ID" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_AN_PART1" ON "RELEASE_MANAGER"."ADDITIONAL_NOTES" ("PV_ID", "NOTE_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_AN_PART1" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_AN_PART2" ON "RELEASE_MANAGER"."ADDITIONAL_NOTES" ("PV_ID", "NOTE_TITLE") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_AN_PART2" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_BUILD_ENVIRONMENTS" ON "RELEASE_MANAGER"."BUILD_ENVIRONMENTS" ("BE_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PK_BUILD_ENVIRONMENTS" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_BUILD_ENV" ON "RELEASE_MANAGER"."BUILD_ENVIRONMENTS" ("BE_NAME") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_BUILD_ENV" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_BUILD_ENV_DOCS" ON "RELEASE_MANAGER"."BUILD_ENV_DOCUMENTS" ("BE_ID", "DOC_NUM") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_BUILD_ENV_DOCS" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."INX_CODE_REVIEW" ON "RELEASE_MANAGER"."CODE_REVIEWS" ("PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_CODE_REVIEW" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_CQ" ON "RELEASE_MANAGER"."CQ_ISSUES" ("PV_ID", "ISS_ID", "ISS_DB") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_CQ" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_IGW" ON "RELEASE_MANAGER"."IGNORE_WARNINGS" ("RTAG_ID", "PV_ID", "DPV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_IGW" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_IS_PATCH_IGNORE" ON "RELEASE_MANAGER"."IGNORE_WARNINGS" ("IS_PATCH_IGNORE") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_IS_PATCH_IGNORE" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_MESSAGE_BOARD" ON "RELEASE_MANAGER"."MESSAGE_BOARD" ("MSG_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PK_MESSAGE_BOARD" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_MSGBOARD" ON "RELEASE_MANAGER"."MESSAGE_BOARD" ("EXPIRY_DATE", "DUE_DATE") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_MSGBOARD" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."MICROSOFT_PK_DTPROPERTIES" ON "RELEASE_MANAGER"."MICROSOFTDTPROPERTIES" ("ID", "PROPERTY") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."MICROSOFT_PK_DTPROPERTIES" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PKNOTE_MANAGER1" ON "RELEASE_MANAGER"."NOTE_MANAGER" ("NID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PKNOTE_MANAGER1" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_NOTIFICATION_HISTORY" ON "RELEASE_MANAGER"."NOTIFICATION_HISTORY" ("RTAG_ID", "PV_ID", "USER_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PK_NOTIFICATION_HISTORY" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_PACKAGES" ON "RELEASE_MANAGER"."PACKAGES" ("PKG_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PK_PACKAGES" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PACKAGES" ON "RELEASE_MANAGER"."PACKAGES" ("PKG_NAME") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_PACKAGES" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PKG_BUILD_ENV" ON "RELEASE_MANAGER"."PACKAGE_BUILD_ENV" ("PV_ID", "BE_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_PKG_BUILD_ENV" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_DEPENDENCIES" ON "RELEASE_MANAGER"."PACKAGE_DEPENDENCIES" ("PV_ID", "DPV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 393216 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_DEPENDENCIES" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_PV_ID" ON "RELEASE_MANAGER"."PACKAGE_DEPENDENCIES" ("PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 393216 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_PV_ID" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_DPKG_ID" ON "RELEASE_MANAGER"."PACKAGE_DEPENDENCIES" ("DPKG_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 262144 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_DPKG_ID" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_DPV_ID" ON "RELEASE_MANAGER"."PACKAGE_DEPENDENCIES" ("DPV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 393216 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_DPV_ID" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_PKG_ID" ON "RELEASE_MANAGER"."PACKAGE_DEPENDENCIES" ("PKG_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 262144 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGE_DEPS_PKG_ID" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PV_ID_PKGDOC" ON "RELEASE_MANAGER"."PACKAGE_DOCUMENTS" ("PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PV_ID_PKGDOC" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PV_ID_TEST_ID_PKGDOC" ON "RELEASE_MANAGER"."PACKAGE_DOCUMENTS" ("PV_ID", "TEST_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PV_ID_TEST_ID_PKGDOC" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PKG_DOC" ON "RELEASE_MANAGER"."PACKAGE_DOCUMENTS" ("PV_ID", "DOC_NUM") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_PKG_DOC" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PP_PV_ID" ON "RELEASE_MANAGER"."PACKAGE_PATCHES" ("PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PP_PV_ID" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_PATCHES" ON "RELEASE_MANAGER"."PACKAGE_PATCHES" ("PATCH_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_PATCHES" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_PACKAGE_VERSIONS" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PK_PACKAGE_VERSIONS" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_VERSIONS" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("PKG_ID", "PKG_VERSION") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_VERSIONS" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGES_PKG_NAME" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("PKG_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGES_PKG_NAME" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGES_PKG_VERSION" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("PKG_VERSION") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGES_PKG_VERSION" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGES_V_MM" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("V_MM") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGES_V_MM" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGES_V_NMM" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("V_NMM") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGES_V_NMM" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PACKAGES_V_EXT" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("V_EXT") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PACKAGES_V_EXT" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PV_OWNER_ID" ON "RELEASE_MANAGER"."PACKAGE_VERSIONS" ("OWNER_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PV_OWNER_ID" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PROCESSES_PK" ON "RELEASE_MANAGER"."PROCESSES" ("PROC_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PROCESSES_PK" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_PROJECTS" ON "RELEASE_MANAGER"."PROJECTS" ("PROJ_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PK_PROJECTS" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PROJECTS" ON "RELEASE_MANAGER"."PROJECTS" ("PROJ_NAME") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_PROJECTS" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PROJECT_EXT" ON "RELEASE_MANAGER"."PROJECT_EXTENTIONS" ("PROJ_ID", "EXT_NAME") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_PROJECT_EXT" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_RCOMP_PV_ID" ON "RELEASE_MANAGER"."RELEASE_COMPONENTS" ("PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_RCOMP_PV_ID" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_REL_COMPONENTS" ON "RELEASE_MANAGER"."RELEASE_COMPONENTS" ("PV_ID", "FILE_NAME", "FILE_PATH") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_REL_COMPONENTS" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_RELEASE_CONTENTS" ON "RELEASE_MANAGER"."RELEASE_CONTENT" ("RTAG_ID", "PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_RELEASE_CONTENTS" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_RC_BASE_VIEW_ID" ON "RELEASE_MANAGER"."RELEASE_CONTENT" ("BASE_VIEW_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_RC_BASE_VIEW_ID" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_RC_PKG_STATE" ON "RELEASE_MANAGER"."RELEASE_CONTENT" ("PKG_STATE") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_RC_PKG_STATE" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_RELEASE_TAGS" ON "RELEASE_MANAGER"."RELEASE_TAGS" ("RTAG_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PK_RELEASE_TAGS" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."FK_PROJ_ID_RELEASE_TAGS" ON "RELEASE_MANAGER"."RELEASE_TAGS" ("PROJ_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."FK_PROJ_ID_RELEASE_TAGS" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."UNQ_RTD" ON "RELEASE_MANAGER"."RUNTIME_DEPENDENCIES" ("PV_ID", "RTD_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_RTD" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_TES_PKGEXT" ON "RELEASE_MANAGER"."TEMP_ENV_STATES" ("PKG_ID", "V_EXT") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_TES_PKGEXT" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_TES_PV" ON "RELEASE_MANAGER"."TEMP_ENV_STATES" ("PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_TES_PV" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_TES_TES_STATE" ON "RELEASE_MANAGER"."TEMP_ENV_STATES" ("TES_STATE") PCTFREE 10 INITRANS 2 MAXTRANS 255 NOLOGGING STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_TES_TES_STATE" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_TEST_TYPES" ON "RELEASE_MANAGER"."TEST_TYPES" ("TEST_TYPE_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PK_TEST_TYPES" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_TEST_TYPE_NAME" ON "RELEASE_MANAGER"."TEST_TYPES" ("TEST_TYPE_NAME") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_TEST_TYPE_NAME" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_UT_COMPLETED" ON "RELEASE_MANAGER"."UNIT_TESTS" ("COMPLETION_DATE", "COMPLETED_BY") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_UT_COMPLETED" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_UT_PART1" ON "RELEASE_MANAGER"."UNIT_TESTS" ("PV_ID", "TEST_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_UT_PART1" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_UT_PV_TEST_TYPE" ON "RELEASE_MANAGER"."UNIT_TESTS" ("PV_ID", "TEST_TYPES_FK") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_UT_PV_TEST_TYPE" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_VALIDATION_RULES" ON "RELEASE_MANAGER"."VALIDATION_RULES" ("FIELD_NAME") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_VALIDATION_RULES" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_VIEWS" ON "RELEASE_MANAGER"."VIEWS" ("VIEW_NAME", "OWNER_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_VIEWS" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_VIEWS" ON "RELEASE_MANAGER"."VIEWS" ("VIEW_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PK_VIEWS" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_VIEW_DEF" ON "RELEASE_MANAGER"."VIEW_DEF" ("VIEW_ID", "PKG_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_VIEW_DEF" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_VIEW_SETTINGS" ON "RELEASE_MANAGER"."VIEW_SETTINGS" ("USER_ID", "VIEW_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_VIEW_SETTINGS" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_VTREES" ON "RELEASE_MANAGER"."VTREES" ("VTREE_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PK_VTREES" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_VTREES" ON "RELEASE_MANAGER"."VTREES" ("PROJ_ID", "VTREE_NAME") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_VTREES" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_VTREE_WORLD" ON "RELEASE_MANAGER"."VTREES_WORLD" ("WORLD_ID", "VTREE_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_VTREE_WORLD" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_WORLDS" ON "RELEASE_MANAGER"."WORLDS" ("WORLD_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PK_WORLDS" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_TTB_PKG" ON "RELEASE_MANAGER"."TEMP_TREE_BROWSE" ("PKG_ID", "V_EXT") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_TTB_PKG" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_TTB_SESSION" ON "RELEASE_MANAGER"."TEMP_TREE_BROWSE" ("SESSION_NUM") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_TTB_SESSION" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_TTB_LEVEL_NUM" ON "RELEASE_MANAGER"."TEMP_TREE_BROWSE" ("LEVEL_NUM") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_TTB_LEVEL_NUM" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_BUILD_ORDER" ON "RELEASE_MANAGER"."BUILD_ORDER" ("RTAG_ID", "PV_ID", "STEP_NUM") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_BUILD_ORDER" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PCOMP_FK_PV_ID" ON "RELEASE_MANAGER"."PRODUCT_COMPONENTS" ("PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PCOMP_FK_PV_ID" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_WORK_IN_PROGRESS" ON "RELEASE_MANAGER"."WORK_IN_PROGRESS" ("RTAG_ID", "PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_WORK_IN_PROGRESS" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."UNQ_PLANNED" ON "RELEASE_MANAGER"."PLANNED" ("RTAG_ID", "PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_PLANNED" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PK_DEF_ACTION_BUTTONS" ON "RELEASE_MANAGER"."DEF_ACTION_BUTTONS" ("ABTN_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PK_DEF_ACTION_BUTTONS" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_ABTN_DEF" ON "RELEASE_MANAGER"."DEF_ACTION_BUTTONS" ("ABTN_NAME") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_ABTN_DEF" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PLATFORM" ON "RELEASE_MANAGER"."PLATFORMS" ("NAME") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_PLATFORM" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_RELEASE_LINKS" ON "RELEASE_MANAGER"."RELEASE_LINKS" ("RTAG_ID", "REF_RTAG_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_RELEASE_LINKS" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_RL_RTAG_ID" ON "RELEASE_MANAGER"."RELEASE_LINKS" ("RTAG_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_RL_RTAG_ID" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_RL_REFRTAG_ID" ON "RELEASE_MANAGER"."RELEASE_LINKS" ("REF_RTAG_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_RL_REFRTAG_ID" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PROJ_ACTION_DATE_TIME" ON "RELEASE_MANAGER"."PROJECT_ACTION_LOG" ("ACTION_DATETIME") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PROJ_ACTION_DATE_TIME" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PROJ_ACTION_LOG_PROJ" ON "RELEASE_MANAGER"."PROJECT_ACTION_LOG" ("PROJ_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PROJ_ACTION_LOG_PROJ" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."BUILD_MACHINES_PK" ON "RELEASE_MANAGER"."BUILD_MACHINES" ("BM_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."BUILD_MACHINES_PK" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."BUILD_STANDARDS_PK" ON "RELEASE_MANAGER"."BUILD_STANDARDS" ("BS_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."BUILD_STANDARDS_PK" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."PRODUCT_STATES_PK" ON "RELEASE_MANAGER"."PRODUCT_STATES" ("STATE_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."PRODUCT_STATES_PK" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."BUILD_STANDARDS_ADDENDUM_PK" ON "RELEASE_MANAGER"."BUILD_STANDARDS_ADDENDUM" ("BSA_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."BUILD_STANDARDS_ADDENDUM_PK" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."CODE_REVIEW_URL_PK" ON "RELEASE_MANAGER"."CODE_REVIEW_URL" ("CR_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."CODE_REVIEW_URL_PK" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_METRICS" ON "RELEASE_MANAGER"."PACKAGE_METRICS" ("PV_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_PACKAGE_METRICS" NOPARALLEL; CREATE UNIQUE INDEX "RELEASE_MANAGER"."UNQ_RELEASE_METRICS" ON "RELEASE_MANAGER"."RELEASE_METRICS" ("RTAG_ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."UNQ_RELEASE_METRICS" NOPARALLEL; -- new object type path is: SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT ALTER TABLE "RELEASE_MANAGER"."ACTION_TYPE" ADD CONSTRAINT "UNQ_ACTTYPE_ID" PRIMARY KEY ("ACTTYPE_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."BUILD_ENVIRONMENTS" ADD CONSTRAINT "PK_BUILD_ENVIRONMENTS" PRIMARY KEY ("BE_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."MESSAGE_BOARD" ADD CONSTRAINT "PK_MESSAGE_BOARD" PRIMARY KEY ("MSG_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ENABLE; ALTER TABLE "RELEASE_MANAGER"."MICROSOFTDTPROPERTIES" ADD CONSTRAINT "MICROSOFT_PK_DTPROPERTIES" PRIMARY KEY ("ID", "PROPERTY") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."NOTE_MANAGER" ADD CONSTRAINT "PKNOTE_MANAGER1" PRIMARY KEY ("NID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."NOTIFICATION_HISTORY" ADD CONSTRAINT "PK_NOTIFICATION_HISTORY" PRIMARY KEY ("RTAG_ID", "PV_ID", "USER_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."PACKAGES" ADD CONSTRAINT "PK_PACKAGES" PRIMARY KEY ("PKG_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ENABLE; ALTER TABLE "RELEASE_MANAGER"."PACKAGE_VERSIONS" ADD CONSTRAINT "PK_PACKAGE_VERSIONS" PRIMARY KEY ("PV_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ENABLE; ALTER TABLE "RELEASE_MANAGER"."PROCESSES" ADD CONSTRAINT "PROCESSES_PK" PRIMARY KEY ("PROC_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."PROJECTS" ADD CONSTRAINT "PK_PROJECTS" PRIMARY KEY ("PROJ_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ENABLE; ALTER TABLE "RELEASE_MANAGER"."RELEASE_TAGS" ADD CONSTRAINT "PK_RELEASE_TAGS" PRIMARY KEY ("RTAG_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ENABLE; ALTER TABLE "RELEASE_MANAGER"."TEST_TYPES" ADD CONSTRAINT "PK_TEST_TYPES" PRIMARY KEY ("TEST_TYPE_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."VIEWS" ADD CONSTRAINT "PK_VIEWS" PRIMARY KEY ("VIEW_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ENABLE; ALTER TABLE "RELEASE_MANAGER"."VTREES" ADD CONSTRAINT "PK_VTREES" PRIMARY KEY ("VTREE_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 65536 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "SYSTEM" ENABLE; ALTER TABLE "RELEASE_MANAGER"."WORLDS" ADD CONSTRAINT "PK_WORLDS" PRIMARY KEY ("WORLD_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."PLANNED" ADD CONSTRAINT "UNIQUE_PV_RTAG" UNIQUE ("PV_ID", "RTAG_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."DEF_ACTION_BUTTONS" ADD CONSTRAINT "PK_DEF_ACTION_BUTTONS" PRIMARY KEY ("ABTN_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."AUTOBUILD_FAILURE" ADD PRIMARY KEY ("GROUP_EMAIL_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."BUILD_MACHINES" ADD CONSTRAINT "BUILD_MACHINES_PK" PRIMARY KEY ("BM_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."BUILD_STANDARDS" ADD CONSTRAINT "BUILD_STANDARDS_PK" PRIMARY KEY ("BS_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."GBE_MACHTYPE" ADD PRIMARY KEY ("GBE_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."RELEASE_CONFIG" ADD PRIMARY KEY ("RCON_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."PRODUCT_STATES" ADD CONSTRAINT "PRODUCT_STATES_PK" PRIMARY KEY ("STATE_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."BUILD_STANDARDS_ADDENDUM" ADD CONSTRAINT "BUILD_STANDARDS_ADDENDUM_PK" PRIMARY KEY ("BSA_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."REPEAT_SCHEDULE" ADD PRIMARY KEY ("RPT_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."RUN_LEVEL_SCHEDULE" ADD PRIMARY KEY ("SCHEDULED_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PK" PRIMARY KEY ("CR_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."PACKAGE_METRICS" ADD CONSTRAINT "UNQ_PACKAGE_METRICS" UNIQUE ("PV_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; ALTER TABLE "RELEASE_MANAGER"."RELEASE_METRICS" ADD CONSTRAINT "UNQ_RELEASE_METRICS" UNIQUE ("RTAG_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ENABLE; -- new object type path is: SCHEMA_EXPORT/TABLE/COMMENT COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."PKG_ID" IS ''; COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."PKG_NAME" IS ''; COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."PV_ID" IS ''; COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."PKG_VERSION" IS ''; COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."DPV_ID" IS ''; COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."DPKG_NAME" IS ''; COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."DPKG_VERSION" IS ''; COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."ISS_DB" IS ''; COMMENT ON COLUMN "RELEASE_MANAGER"."RM_PACKAGE_ISSUES"."ISS_ID" IS ''; COMMENT ON TABLE "RELEASE_MANAGER"."RM_PACKAGE_ISSUES" IS ''; -- new object type path is: SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC CREATE PACKAGE "RELEASE_MANAGER"."PK_APP_UTILS" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 26/Apr/2005 || Spec Version: 1.0 ------------------------------ */ TYPE typeCur IS REF CURSOR; /*================================================================================================*/ PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur); /*================================================================================================*/ END PK_APP_UTILS; / CREATE PACKAGE "RELEASE_MANAGER"."PK_ARCHIVE" IS /* ------------------------------ || Author: Rupesh Solanki || Date: 26 October 2006 || Version: 1.0 ------------------------------ */ /*================================================================================================*/ PROCEDURE populate_packages_table; PROCEDURE populate_archive_data_table ( nrtagid IN release_tags.rtag_id%TYPE ); PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE); PROCEDURE migrate_rtag_to_archive_schema ( nrtagid IN release_tags.rtag_id%TYPE ); PROCEDURE clean_up_archive_data_table ( nrtagid IN release_tags.rtag_id%TYPE ); PROCEDURE write_action_log ( nuserid IN NUMBER, nrtagid IN release_tags.rtag_id%TYPE ); /*================================================================================================*/ END pk_archive; / CREATE PACKAGE "RELEASE_MANAGER"."PK_BUILDAPI" IS /* ------------------------------ || Last Modified: Rupesh Solanki || Modified Date: 26/Jun/2007 || Spec Version: 3.0 ------------------------------ */ /*================================================================================================*/ PROCEDURE add_product_component ( npvid IN NUMBER, sosname IN VARCHAR2, sorigfilepath IN VARCHAR2, sfilename IN VARCHAR2, sdestfilepath IN VARCHAR2, nbytesize IN NUMBER, scrccksum IN VARCHAR2 ); PROCEDURE remove_all_product_components ( npvid IN NUMBER, sosname IN VARCHAR2 ); /*================================================================================================*/ FUNCTION get_osid (sosname IN VARCHAR2) RETURN NUMBER; /*================================================================================================*/ PROCEDURE update_build_service ( sdatabaseserver IN VARCHAR2, swebserver IN VARCHAR2, smailserver IN VARCHAR2, smailsender IN VARCHAR2, sdiskspace IN VARCHAR2, ssbommanagement IN VARCHAR2 ); /*================================================================================================*/ PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2); /*================================================================================================*/ PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER); /*================================================================================================*/ PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2); /*================================================================================================*/ PROCEDURE add_daemon ( sdaemonhostname IN VARCHAR2, nrtagid IN NUMBER, ngbeid IN NUMBER, sgbebuildfilter IN VARCHAR2 ); /*================================================================================================*/ PROCEDURE delete_daemon (srconidlist IN VARCHAR2); /*================================================================================================*/ PROCEDURE update_daemon ( sdaemonhostname IN VARCHAR2, nrconid IN NUMBER, ngbeid IN NUMBER, sgbebuildfilter IN VARCHAR2 ); /*================================================================================================*/ PROCEDURE insert_schedule_info ( dschedulepause IN DATE, dscheduleresume IN DATE, crepeat IN VARCHAR2, cindefinitepause IN VARCHAR2 ); /*================================================================================================*/ PROCEDURE delete_schedule (nscheduleid IN NUMBER); /*================================================================================================*/ PROCEDURE set_infinite_pause; /*================================================================================================*/ PROCEDURE set_resume; /*================================================================================================*/ PROCEDURE delete_out_of_date_schedule; /*================================================================================================*/ PROCEDURE set_daemon_resume (nrconid IN NUMBER); /*================================================================================================*/ PROCEDURE set_daemon_pause (nrconid IN NUMBER); /*================================================================================================*/ END pk_buildapi; / CREATE PACKAGE "RELEASE_MANAGER"."PK_BUILDAPI_TEST" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 30/Mar/2005 || Spec Version: 1.0 ------------------------------ */ /*================================================================================================*/ PROCEDURE Add_Product_Component ( nPvId IN NUMBER, sOsName IN VARCHAR2, sOrigFilePath IN VARCHAR2, sFileName IN VARCHAR2, sDestFilePath IN VARCHAR2, nByteSize IN NUMBER, sCRCcksum IN VARCHAR2 ); PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 ); /*================================================================================================*/ FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER; /*================================================================================================*/ PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2, sWebServer IN VARCHAR2, sMailServer IN VARCHAR2, sMailSender IN VARCHAR2); /*================================================================================================*/ PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue IN VARCHAR2 ); /*================================================================================================*/ PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER ); /*================================================================================================*/ PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 ); /*================================================================================================*/ PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER ); /*================================================================================================*/ END PK_BUILDAPI_TEST; / CREATE PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT" IS /* ------------------------------ || Last Modified: Rupesh Solanki || Modified Date: 29/Jan/2007 || Spec Version: 1.1 ------------------------------ */ TYPE typeCur IS REF CURSOR; /*================================================================================================*/ FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER; FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER; FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER; PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER; PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER, sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER, sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER, sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER, sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ); FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER; PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ); PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur ); PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur ); PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE, CloneFromPvId IN NUMBER ); PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); /*================================================================================================*/ END PK_ENVIRONMENT; / CREATE PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT_TEST" IS /* ------------------------------ || Last Modified: Rupesh Solanki || Modified Date: 29/Jan/2007 || Spec Version: 1.1 ------------------------------ */ TYPE typeCur IS REF CURSOR; /*================================================================================================*/ FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER; FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER; FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER; PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER; PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER, sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER, sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER, sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER, sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ); FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER; PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ); PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur ); PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur ); PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE, CloneFromPvId IN NUMBER ); PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur ); /*================================================================================================*/ END PK_ENVIRONMENT_test; / CREATE PACKAGE "RELEASE_MANAGER"."PK_PACKAGE" IS /* ------------------------------ || Last Modified: Jeremy Tweddle || Modified Date: 24/08/2007 || ------------------------------ */ TYPE typecur IS REF CURSOR; /*================================================================================================*/ PROCEDURE new_version ( nlastpvid IN NUMBER, snewpkgversion IN VARCHAR2 DEFAULT NULL, cbuildtype IN CHAR, nsettopvid IN NUMBER DEFAULT NULL, nrtagid IN NUMBER, nuserid IN NUMBER, enumissues_state_imported IN NUMBER, returnpvid OUT NUMBER ); PROCEDURE change_state ( pvid IN NUMBER, newstate IN package_versions.dlocked%TYPE, userid IN NUMBER ); PROCEDURE new_patch ( snewpatchversion IN package_versions.pkg_version%TYPE, nparentpvid IN NUMBER, spatchidlist IN VARCHAR2, nuserid IN NUMBER, returnpatchid OUT NUMBER ); PROCEDURE obsolete_patch ( patchid IN NUMBER, isobsolete IN CHAR, obsoletecomments IN VARCHAR2, userid IN NUMBER ); PROCEDURE obsolete_patches ( spatchidlist IN VARCHAR2, isobsolete IN CHAR, obsoletecomments IN VARCHAR2, userid IN NUMBER ); PROCEDURE destroy_package ( pvid IN NUMBER, overridewarnings IN CHAR DEFAULT 'N', problemstring OUT VARCHAR2 ); PROCEDURE add_process ( nprocid IN processes.proc_id%TYPE, shealthtag IN processes.proc_name%TYPE, sprocdesc IN processes.proc_description%TYPE, scmdinterface IN processes.run_as%TYPE, spkgowner IN processes.pkg_owner%TYPE, sisinterface IN processes.is_interface%TYPE, npvid IN package_processes.pv_id%TYPE, nuserid IN NUMBER ); PROCEDURE add_package_process ( nprocidlist IN VARCHAR2, npvid IN package_processes.pv_id%TYPE, nuserid IN NUMBER ); PROCEDURE remove_process ( nprocid IN package_processes.proc_id%TYPE, npvid IN package_processes.pv_id%TYPE, nuserid IN NUMBER ); PROCEDURE move_package ( npvid IN package_versions.pv_id%TYPE, nrtagid IN release_tags.rtag_id%TYPE, nnewrtagid IN release_tags.rtag_id%TYPE, nuserid IN NUMBER ); PROCEDURE modify_product_state ( npvid IN package_versions.pv_id%TYPE, nrtagid IN release_tags.rtag_id%TYPE, nstateid IN product_states.state_id%TYPE, nuserid IN NUMBER ); PROCEDURE add_code_review_url ( npvid IN NUMBER, nprojid IN NUMBER, surl IN VARCHAR2, sreason IN VARCHAR2, ddateofreview IN DATE ); PROCEDURE update_code_review_url ( ncrid IN NUMBER, nprojid IN NUMBER, surl IN VARCHAR2, sreason IN VARCHAR2 ); PROCEDURE remove_code_review_url ( ncrid IN NUMBER ); /*================================================================================================*/ END pk_package; / CREATE PACKAGE "RELEASE_MANAGER"."PK_PACKAGE_TEST" IS /* ------------------------------ || Last Modified: Rupesh Solanki || Modified Date: 18/05/2006 || ------------------------------ */ TYPE typecur IS REF CURSOR; /*================================================================================================*/ PROCEDURE new_version ( nlastpvid IN NUMBER, snewpkgversion IN VARCHAR2 DEFAULT NULL, cbuildtype IN CHAR, nsettopvid IN NUMBER DEFAULT NULL, nrtagid IN NUMBER, nuserid IN NUMBER, enumissues_state_imported IN NUMBER, returnpvid OUT NUMBER ); PROCEDURE change_state ( pvid IN NUMBER, newstate IN package_versions.dlocked%TYPE, userid IN NUMBER ); PROCEDURE new_patch ( snewpatchversion IN package_versions.pkg_version%TYPE, nparentpvid IN NUMBER, spatchidlist IN VARCHAR2, nuserid IN NUMBER, returnpatchid OUT NUMBER ); PROCEDURE obsolete_patch ( patchid IN NUMBER, isobsolete IN CHAR, obsoletecomments IN VARCHAR2, userid IN NUMBER ); PROCEDURE obsolete_patches ( spatchidlist IN VARCHAR2, isobsolete IN CHAR, obsoletecomments IN VARCHAR2, userid IN NUMBER ); PROCEDURE destroy_package ( pvid IN NUMBER, overridewarnings IN CHAR DEFAULT 'N', problemstring OUT VARCHAR2 ); PROCEDURE add_process ( nprocid IN processes.proc_id%TYPE, shealthtag IN processes.proc_name%TYPE, sprocdesc IN processes.proc_description%TYPE, scmdinterface IN processes.run_as%TYPE, spkgowner IN processes.pkg_owner%TYPE, sisinterface IN processes.is_interface%TYPE, npvid IN package_processes.pv_id%TYPE, nuserid IN NUMBER ); PROCEDURE add_package_process ( nprocidlist IN VARCHAR2, npvid IN package_processes.pv_id%TYPE, nuserid IN NUMBER ); PROCEDURE remove_process ( nprocid IN package_processes.proc_id%TYPE, npvid IN package_processes.pv_id%TYPE, nuserid IN NUMBER ); PROCEDURE move_package ( npvid IN package_versions.pv_id%TYPE, nrtagid IN release_tags.rtag_id%TYPE, nnewrtagid IN release_tags.rtag_id%TYPE, nuserid IN NUMBER ); PROCEDURE modify_product_state ( npvid IN package_versions.pv_id%TYPE, nstateid IN product_states.state_id%TYPE, nuserid IN NUMBER ); /*================================================================================================*/ END pk_package_Test; / CREATE PACKAGE "RELEASE_MANAGER"."PK_PLANNED" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 6/May/2005 || Spec Version: 1.0 ------------------------------ */ TYPE typeCur IS REF CURSOR; /*================================================================================================*/ PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER; PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ); PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ); /*================================================================================================*/ END PK_PLANNED; / CREATE PACKAGE "RELEASE_MANAGER"."PK_PROJECT" IS /* ------------------------------ || Last Modified: J.Tweddle || Modified Date: 23/Aug/2007 || Spec Version: 1.0 ------------------------------ */ TYPE typecur IS REF CURSOR; /*------------------------------------------------------------------------*/ PROCEDURE update_base_url ( nprojid IN projects.proj_id%TYPE, sbaseurl IN VARCHAR2 ); /*------------------------------------------------------------------------*/ END pk_project; / CREATE PACKAGE "RELEASE_MANAGER"."PK_RELEASE" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 12/Sep/2005 || Body Version: 3.0 ------------------------------ */ TYPE typeCur IS REF CURSOR; /*================================================================================================*/ PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ); PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, sOwnerEmail IN VARCHAR2, nUserId IN NUMBER, cState IN VARCHAR ); PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER ); PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ); PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER ); PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ); FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER; PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ); PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ); PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); --PROCEDURE ADD_DEPRECATE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, nPkgId IN NUMBER ); PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER; PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ); PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ); PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ); PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ); PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ); PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ); /*================================================================================================*/ END PK_RELEASE; / CREATE PACKAGE "RELEASE_MANAGER"."PK_RELEASE_TEST" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 12/Sep/2005 || Body Version: 3.0 ------------------------------ */ TYPE typeCur IS REF CURSOR; /*================================================================================================*/ PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ); PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, nUserId IN NUMBER ); PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER ); PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ); PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER ); PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ); FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER; PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ); PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ); PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER; PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ); PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ); PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ); PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ); PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ); PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ); /*================================================================================================*/ END PK_RELEASE_TEST; / CREATE PACKAGE "RELEASE_MANAGER"."PK_RMAPI" IS /* ------------------------------ || Last Modified: Jeremy Tweddle || Modified Date: 08/Feb/2008 || Body Version: 3.3 ------------------------------ */ TYPE typecur IS REF CURSOR; /*================================================================================================*/ FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2) RETURN typecur; FUNCTION wip_iteration_package ( projname VARCHAR2, iterationname VARCHAR2, pkgname VARCHAR2 ) RETURN typecur; FUNCTION auto_make_release ( rtagid IN NUMBER, pkgname IN VARCHAR2, vext IN VARCHAR2, newpkgversion IN VARCHAR2, label IN VARCHAR2, dependenciesimportlist IN VARCHAR2, isrippled IN NUMBER, username IN VARCHAR2 ) RETURN NUMBER; PROCEDURE import_dependencies ( pvid IN NUMBER, dependenciesimportlist IN VARCHAR2, userid IN NUMBER ); FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER) RETURN VARCHAR2; FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER) RETURN VARCHAR2; PROCEDURE update_dash_board (rtagid IN NUMBER); FUNCTION exclude_from_build ( pvid IN NUMBER, spkgversion IN VARCHAR2, rtagid IN NUMBER, username IN VARCHAR2 ) RETURN NUMBER; /*================================================================================================*/ PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2); FUNCTION insert_package_metrics ( rtagid IN NUMBER, pkgname IN VARCHAR2, vext IN VARCHAR2, metricstring IN VARCHAR2 ) RETURN NUMBER; PROCEDURE update_release_metrics (rtagid IN NUMBER); END pk_rmapi; / CREATE PACKAGE "RELEASE_MANAGER"."PK_RMAPI_TEST" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 19/May/2005 || Spec Version: 2.0 ------------------------------ */ TYPE typeCur IS REF CURSOR; /*================================================================================================*/ FUNCTION PACKAGE_DEPENDENCIES ( PkgName VARCHAR2, PkgVersion VARCHAR2 ) RETURN typeCur; FUNCTION WIP_ITERATION_PACKAGE ( ProjName VARCHAR2, IterationName VARCHAR2, PkgName VARCHAR2 ) RETURN typeCur; FUNCTION AUTO_MAKE_RELEASE ( RtagId IN NUMBER, PkgName IN VARCHAR2, VExt IN VARCHAR2, NewPkgVersion IN VARCHAR2, Label IN VARCHAR2, DependenciesImportList IN VARCHAR2, IsRippled IN NUMBER, UserName IN VARCHAR2 ) RETURN NUMBER; PROCEDURE IMPORT_DEPENDENCIES ( PvId IN NUMBER, DependenciesImportList IN VARCHAR2, UserId IN NUMBER ); FUNCTION RETURN_PACKAGE_VERSION ( PkgName IN VARCHAR2, RtagId IN NUMBER) RETURN VARCHAR2; PROCEDURE CQ_TEST; PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER ); /*================================================================================================*/ END PK_RMAPI_test; / CREATE PACKAGE "RELEASE_MANAGER"."PK_WORK_IN_PROGRESS" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 2/May/2005 || Spec Version: 1.0 ------------------------------ */ TYPE typeCur IS REF CURSOR; /*================================================================================================*/ PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ); PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ); FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER; PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ); PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ); /*================================================================================================*/ END PK_WORK_IN_PROGRESS; / CREATE PACKAGE "RELEASE_MANAGER"."RM_ISSUES" AS TYPE T_Cur IS REF CURSOR; FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER; FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER; FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER; FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER; PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 ); PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 ); PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 ); END Rm_Issues; / -- new object type path is: SCHEMA_EXPORT/FUNCTION/FUNCTION CREATE FUNCTION "RELEASE_MANAGER"."CAN_EDIT_PKG_IN_PROJECT" ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ VExt PACKAGE_VERSIONS.V_EXT%TYPE; ProjId NUMBER; RowCount NUMBER; cReleaseMode CHAR(1); BEGIN --RETURN 1; /*--------------- Business Rules Here -------------------*/ IF (nRtagId IS NULL) OR (nRtagId < 1)THEN RETURN 0; END IF; /*-------------------------------------------------------*/ /*-- First Check. See if package is used through release reference --*/ SELECT COUNT(rc.PV_ID) INTO RowCount FROM ( SELECT rl.REF_RTAG_ID FROM RELEASE_LINKS rl WHERE rl.RTAG_ID = nRtagId ) rl, RELEASE_CONTENT rc WHERE rc.RTAG_ID = rl.REF_RTAG_ID AND rc.PV_ID = nPvId; -- Decide if package can be edited IF RowCount > 0 THEN -- Package is referenced from other release, hence cannot be edited RETURN 0; ELSE -- Check is only done for releases in restrictive mode SELECT rt.OFFICIAL INTO cReleaseMode FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nRtagId; IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN -- Do not do any firther checking, -- Package is editable here RETURN 1; END IF; END IF; /*-- Further checking --*/ -- Get proj_id SELECT rt.PROJ_ID INTO ProjId FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nRtagId; BEGIN -- Get v_ext SELECT pv.V_EXT INTO Vext FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = nPvId; EXCEPTION WHEN NO_DATA_FOUND THEN Vext := NULL; END; --Temp Hack for Step Project IF ProjId != 281 THEN -- Find if package can be edited in this project SELECT COUNT(pe.EXT_NAME) INTO RowCount FROM PROJECT_EXTENTIONS pe WHERE pe.PROJ_ID != ProjId AND pe.EXT_NAME = VExt; END IF; -- Decide if package can be edited IF RowCount > 0 THEN -- Package extension is found in other projects, hece NOT EDITABLE RETURN 0; ELSE RETURN 1; END IF; END CAN_EDIT_PKG_IN_PROJECT; / CREATE FUNCTION "RELEASE_MANAGER"."DT_ADDUSEROBJECT" RETURN NUMBER IS NEWOBJECTID NUMBER; BEGIN /* GET THE NEXT VALUE FROM THE SEQUENCE FOR THE OBJECT ID */ SELECT MICROSOFTSEQDTPROPERTIES.NEXTVAL INTO NEWOBJECTID FROM DUAL; /* ADD THE PARENT NODE FOR THE NEW OBJECT */ INSERT INTO MICROSOFTDTPROPERTIES ( ID, OBJECTID, PROPERTY ) VALUES ( NEWOBJECTID, NEWOBJECTID, 'DtgSchemaOBJECT' ); RETURN( NEWOBJECTID ); END DT_ADDUSEROBJECT; / CREATE FUNCTION "RELEASE_MANAGER"."GET_AUTOMATED_LABEL" ( nPvId IN NUMBER ) RETURN VARCHAR2 IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ sPkgName VARCHAR2(4000); sVext VARCHAR2(4000); BEGIN -- Get package details SELECT pkg.PKG_NAME, pv.V_EXT INTO sPkgName, sVext FROM PACKAGE_VERSIONS pv, PACKAGES pkg WHERE pv.PKG_ID = pkg.PKG_ID AND pv.PV_ID = nPvId; -- Generate Label for automated build RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' ); END GET_AUTOMATED_LABEL; / CREATE FUNCTION "RELEASE_MANAGER"."GET_BUILD_NUMBER" (s_version IN VARCHAR2) RETURN VARCHAR2 IS /* --------------------------------------------------------------------------- Version: 1.0.0 --------------------------------------------------------------------------- */ BEGIN IF is_number(s_version) AND LENGTH(s_version) > 3 THEN RETURN MOD(TO_NUMBER(s_version), 1000); ELSE RETURN 0; END IF; END get_build_number; / CREATE FUNCTION "RELEASE_MANAGER"."GET_PATCH_VERSION" (s_version IN VARCHAR2) RETURN VARCHAR2 IS /* --------------------------------------------------------------------------- Version: 1.0.0 --------------------------------------------------------------------------- */ BEGIN IF is_number(s_version) AND LENGTH(s_version) > 3 THEN RETURN FLOOR(TO_NUMBER(s_version) / 1000); ELSE RETURN s_version; END IF; END get_patch_version; / CREATE FUNCTION "RELEASE_MANAGER"."GET_V_EXT" (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE; lastDot NUMBER; BEGIN lastDot := INSTR (SSpkg_version, '.', -1); IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) ) THEN -- YES dot separator found -- SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1); IF IS_VERSION_EXTENSION ( SSV_EXT ) THEN RETURN SSV_EXT; ELSE RETURN NULL; END IF; ELSE -- NO dot separator found -- RETURN NULL; END IF; END GET_V_EXT; / CREATE FUNCTION "RELEASE_MANAGER"."IN_LIST_NUMBER" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ sync_rtags RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); pos NUMBER; in_list VARCHAR2(4000) := sInList || ','; BEGIN IF NOT sInList IS NULL THEN LOOP EXIT WHEN in_list IS NULL; pos := INSTR ( in_list, ',' ); sync_rtags.extend; sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) ); in_list := SUBSTR ( in_list, pos+1 ); END LOOP; END IF; RETURN sync_rtags; END IN_LIST_NUMBER; / CREATE FUNCTION "RELEASE_MANAGER"."IN_LIST_NUMBER2" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ sync_rtags RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); pos NUMBER; in_list VARCHAR2(32767) := sInList || ','; BEGIN IF NOT sInList IS NULL THEN LOOP EXIT WHEN in_list IS NULL; pos := INSTR ( in_list, ',' ); sync_rtags.extend; sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) ); in_list := SUBSTR ( in_list, pos+1 ); END LOOP; END IF; RETURN sync_rtags; END IN_LIST_NUMBER2; / CREATE FUNCTION "RELEASE_MANAGER"."IN_LIST_VARCHAR2" ( sInList IN VARCHAR2, cSeparator IN VARCHAR2 ) RETURN RELMGR_VARCHAR2_TAB_t IS /* --------------------------------------------------------------------------- Version: 3.1 --------------------------------------------------------------------------- */ cItemCollection RELMGR_VARCHAR2_TAB_t := RELMGR_VARCHAR2_TAB_t(); pos NUMBER; in_list VARCHAR2(4000) := sInList || cSeparator; val VARCHAR2(4000); BEGIN IF NOT sInList IS NULL THEN LOOP EXIT WHEN in_list IS NULL; pos := INSTR ( in_list, cSeparator ); val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) ); IF (NOT val IS NULL) THEN cItemCollection.extend; cItemCollection(cItemCollection.count) := val; END IF; in_list := SUBSTR ( in_list, pos+1 ); END LOOP; END IF; RETURN cItemCollection; END IN_LIST_VARCHAR2; / CREATE FUNCTION "RELEASE_MANAGER"."IS_NUMBER" (p_val IN VARCHAR2) RETURN BOOLEAN IS temp_num NUMBER; /* --------------------------------------------------------------------------- Version: 1.0.0 --------------------------------------------------------------------------- */ BEGIN temp_num := TO_NUMBER(p_val); RETURN true; EXCEPTION WHEN VALUE_ERROR THEN RETURN false; END IS_NUMBER; / CREATE FUNCTION "RELEASE_MANAGER"."IS_VERSION_EXTENSION" (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ BEGIN IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0 THEN RETURN FALSE; ELSE RETURN TRUE; END IF; END IS_VERSION_EXTENSION; / CREATE FUNCTION "RELEASE_MANAGER"."ORA_SYSDATE" RETURN DATE IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ BEGIN RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' ); END ORA_SYSDATE; / CREATE FUNCTION "RELEASE_MANAGER"."ORA_SYSDATETIME" RETURN DATE IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ BEGIN RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' ); END ORA_SYSDATETIME; / CREATE FUNCTION "RELEASE_MANAGER"."PERL_DBD_TESTFUNC" (a in integer, b in integer) return integer is c integer; begin if b is null then c := 0; else c := b; end if; return a * c + 1; end; / CREATE FUNCTION "RELEASE_MANAGER"."RELEASE_MODE" ( nRtagId IN NUMBER ) RETURN CHAR IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ returnValue CHAR(1); BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ -- Get release mode SELECT rt.OFFICIAL INTO returnValue FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nRtagId; RETURN returnValue; END RELEASE_MODE; / -- new object type path is: SCHEMA_EXPORT/PROCEDURE/PROCEDURE CREATE PROCEDURE "RELEASE_MANAGER"."ADD_AUTOBUILD_FAILURE_INFO" ( nprojid IN NUMBER, nviewid IN NUMBER, suserlist IN VARCHAR2 ) IS groupid NUMBER; /****************************************************************************** NAME: ADD_AUTOBUILD_FAILURE PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 11/04/2006 Rupesh Solanki Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: ADD_AUTOBUILD_FAILURE Sysdate: 11/04/2006 Date and Time: 11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ BEGIN BEGIN SELECT group_email_id INTO groupid FROM autobuild_failure WHERE proj_id = nprojid AND view_id = nviewid; EXCEPTION WHEN NO_DATA_FOUND THEN -- Create Next Sequence Id --- SELECT seq_group_email_id.NEXTVAL INTO groupid FROM DUAL; INSERT INTO autobuild_failure (group_email_id, proj_id, view_id ) VALUES (groupid, nprojid, nviewid ); END; add_view_members (groupid, suserlist); END add_autobuild_failure_info; / CREATE PROCEDURE "RELEASE_MANAGER"."ADD_COMPONENT" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE, sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE, sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL, nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE, sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL, sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL ) IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ BEGIN --- Insert into RELEASE_COMPONENTS INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC ) VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc ); END Add_Component; / CREATE PROCEDURE "RELEASE_MANAGER"."ADD_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE, nPkgIdList IN VARCHAR2, nUserId IN NUMBER ) IS /****************************************************************************** NAME: ADD_PACKAGE_INTEREST PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 12/05/2006 Rupesh Solanki 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: ADD_PACKAGE_INTEREST Sysdate: 12/05/2006 Date and Time: 12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ npkgidcollector relmgr_number_tab_t := relmgr_number_tab_t (); nPkgId NUMBER; BEGIN npkgidcollector := in_list_number2 (nPkgIdList); FOR i IN 1..npkgidcollector.COUNT LOOP nPkgId := npkgidcollector(i); --- Insert into PACKAGE_INTEREST TABLE INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID) VALUES(nProjId, nPkgId, nUserId); END LOOP; END ADD_PACKAGE_INTEREST; / CREATE PROCEDURE "RELEASE_MANAGER"."ADD_PACKAGE_INTEREST_TEST" (nProjId IN PROJECTS.PROJ_ID%TYPE, nPkgIdList IN VARCHAR2, nUserId IN NUMBER ) IS /****************************************************************************** NAME: ADD_PACKAGE_INTEREST PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 12/05/2006 Rupesh Solanki 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: ADD_PACKAGE_INTEREST Sysdate: 12/05/2006 Date and Time: 12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ npkgidcollector relmgr_number_tab_t := relmgr_number_tab_t (); nPkgId NUMBER; BEGIN npkgidcollector := in_list_number2 (nPkgIdList); FOR i IN 1..npkgidcollector.COUNT LOOP nPkgId := npkgidcollector(i); --- Insert into PACKAGE_INTEREST TABLE INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID) VALUES(nProjId, nPkgId, nUserId); END LOOP; END ADD_PACKAGE_INTEREST_TEST; / CREATE PROCEDURE "RELEASE_MANAGER"."ADD_RUNTIME_DEPENDENCY" ( NNpv_id IN NUMBER, SSrtd_name IN PACKAGES.pkg_name%TYPE, SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE, NNuser_id IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.1 --------------------------------------------------------------------------- */ retRTD_ID NUMBER; CURSOR rtd_cur IS SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID; rtd_rec rtd_cur%ROWTYPE; BEGIN --- Seed database with package_name and version if required --- Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID ); OPEN rtd_cur; FETCH rtd_cur INTO rtd_rec; IF rtd_cur%NOTFOUND THEN /* Make sure it does not exists already as runtime dependency */ --- Add new Runtime Dependency --- INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user ) VALUES ( NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id ); /* LOG ACTION */ Log_Action ( NNpv_id, 'runtime_add', NNuser_id, 'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version ); END IF; END Add_Runtime_Dependency; / CREATE PROCEDURE "RELEASE_MANAGER"."ADD_VIEW_MEMBERS" (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS /****************************************************************************** NAME: ADD_VIEW_MEMBERS PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 11/04/2006 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: ADD_VIEW_MEMBERS Sysdate: 11/04/2006 Date and Time: 11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ CURSOR user_cur IS SELECT u.USER_ID FROM USERS u WHERE u.USER_ID IN ( SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) ); user_rec user_cur%ROWTYPE; BEGIN OPEN user_cur; FETCH user_cur INTO user_rec; WHILE user_cur%FOUND LOOP INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID) VALUES ( nGroupId, user_rec.USER_ID); FETCH user_cur INTO user_rec; END LOOP; END ADD_VIEW_MEMBERS; / CREATE PROCEDURE "RELEASE_MANAGER"."BASIC_CLONE" ( nFROMpv_id IN NUMBER, nTOpv_id IN NUMBER, nRtag_id IN NUMBER, nUser_id IN NUMBER, nTOpkg_id IN NUMBER DEFAULT NULL, enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS /* --------------------------------------------------------------------------- Version: 3.5 --------------------------------------------------------------------------- */ FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE; BEGIN ------------------------------------- Clone Dependencies --------------------------------------------------- IF NOT nRtag_id IS NULL THEN -- Auto Update Dependencies -- INSERT INTO PACKAGE_DEPENDENCIES SELECT nTOpv_id AS pv_id, DECODE(nUser_id, frc.modifier_id, frc.pv_id, DECODE(frc.dlocked, 'Y', frc.pv_id, dep.dpv_id) ) AS dpv_id, nTOpkg_id AS pkg_id, dep.dpkg_id, dep.build_type, dep.display_order FROM PACKAGE_DEPENDENCIES dep, PACKAGE_VERSIONS pv, ( /* Full Release Contents used for reference*/ SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id ) frc WHERE dep.pv_id = nFROMpv_id AND dep.dpv_id = pv.pv_id AND pv.pkg_id = frc.pkg_id(+) AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+); ELSE -- Clone Dependencies -- INSERT INTO PACKAGE_DEPENDENCIES SELECT nTOpv_id AS pv_id, dep.dpv_id, nTOpkg_id AS pkg_id, dep.dpkg_id, dep.build_type, dep.display_order FROM PACKAGE_DEPENDENCIES dep WHERE dep.pv_id = nFROMpv_id; END IF; ----------------------------------------- Clone Issues ------------------------------------------------------- IF enumISSUES_STATE_IMPORTED IS NULL THEN /* All Issues */ INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes ) SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes FROM CQ_ISSUES WHERE pv_id = nFROMpv_id; ELSE /* Outstanding Issues Only */ INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes ) SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes FROM CQ_ISSUES WHERE pv_id = nFROMpv_id AND iss_state = enumISSUES_STATE_IMPORTED; END IF; ------------------------------------ Clone Runtime Dependencies ----------------------------------------------- INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user) SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id; --------------------------------------- Clone Additional Notes ------------------------------------------------ INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER ) SELECT an.NOTE_ID, nTOpv_id AS PV_ID, an.NOTE_TITLE, an.NOTE_BODY, an.MOD_DATE, an.MOD_USER FROM ADDITIONAL_NOTES an WHERE an.PV_ID = nFROMpv_id; -------------------------------------------- Clone Unit Tests ------------------------------------------------- -- Clone only Automatic unit tests -- INSERT INTO UNIT_TESTS ( TEST_ID, PV_ID, TEST_TYPES_FK, TEST_SUMMARY, COMPLETION_DATE, COMPLETED_BY, RESULTS_URL, RESULTS_ATTACHMENT_NAME, NUMOF_TEST ) SELECT ut.TEST_ID, nTOpv_id AS PV_ID, ut.TEST_TYPES_FK, ut.TEST_SUMMARY, Ora_Sysdate AS COMPLETION_DATE, nUser_id AS COMPLETED_BY, ut.RESULTS_URL, ut.RESULTS_ATTACHMENT_NAME, ut.NUMOF_TEST FROM UNIT_TESTS ut WHERE ut.PV_ID = nFROMpv_id AND ut.TEST_TYPES_FK IN ( 5, 7 ); -- Clone only Interactive Unit Tests -- INSERT INTO UNIT_TESTS ( TEST_ID, PV_ID, TEST_TYPES_FK, TEST_SUMMARY ) SELECT ut.TEST_ID, nTOpv_id AS PV_ID, ut.TEST_TYPES_FK, ut.TEST_SUMMARY FROM UNIT_TESTS ut WHERE ut.PV_ID = nFROMpv_id AND ut.TEST_TYPES_FK IN (6); -------------------------------------------- Clone Package Documents ------------------------------------------ INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST ) SELECT nTOpv_id AS PV_ID, pd.test_id, pd.doc_num, pd.doc_id, pd.IS_LATEST FROM PACKAGE_DOCUMENTS pd WHERE pd.PV_ID = nFROMpv_id; -------------------------------------------- Clone Build Environments ----------------------------------------- INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE ) SELECT nTOpv_id AS PV_ID, pkgbe.BE_ID, pkgbe.BUILD_TYPE FROM PACKAGE_BUILD_ENV pkgbe WHERE pkgbe.PV_ID = nFROMpv_id; ---------------------------------------------Clone Package Build Info------------------------------------------ INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID) SELECT nTOpv_id AS PV_ID, pkgbinfo.BM_ID, pkgbinfo.BSA_ID FROM PACKAGE_BUILD_INFO pkgbinfo WHERE pkgbinfo.PV_ID = nFROMpv_id; ---------------------------------------------Clone Package Version Processes----------------------------------- INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID ) SELECT nTOpv_id AS PV_ID, pp.PROC_ID FROM PACKAGE_PROCESSES pp WHERE pp.PV_ID = nFROMpv_id; --------------------------------------------------------------------------------------------------------------- /* LOG ACTION */ SELECT pv.PKG_VERSION INTO FromVersion FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = nFROMpv_id; Log_Action ( nTOpv_id, 'clone_from', nUser_id, 'Details cloned from: '|| FromVersion ); --------------------------------------------------------------------------------------------------------------- END Basic_Clone; / CREATE PROCEDURE "RELEASE_MANAGER"."BUILD_TREE" ( nRtag_id IN NUMBER, retSessionNum OUT NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ rowCnt NUMBER := 0; -- Iterations counter iteration NUMBER := 1; -- Maximum number of iterations allowed. maxIterations NUMBER := 50; -- This will prevent infinite loops if cyrcular dependencies are found UP_THE_TREE CONSTANT NUMBER DEFAULT 1; DOWN_THE_TREE CONSTANT NUMBER DEFAULT -1; sessionNum NUMBER; levelNum NUMBER; BEGIN SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL; /* || Start UP THE TREE */ /* Packages with no dependencies */ INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT ) SELECT sessionNum AS SESSION_NUM, iteration AS LEVEL_NUM, UP_THE_TREE AS DIRECTION, rc.pv_id, pv.pkg_id, pv.v_ext FROM release_content rc, package_versions pv WHERE rc.rtag_id = nRtag_id AND rc.pv_id = pv.pv_id MINUS SELECT sessionNum AS SESSION_NUM, iteration AS LEVEL_NUM, UP_THE_TREE AS DIRECTION, dep.pv_id, pv.pkg_id, pv.v_ext FROM package_dependencies dep, package_versions pv WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id ) AND dep.pv_id = pv.pv_id; /* Browse UP the build tree */ iteration := iteration + 1; LOOP INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT ) SELECT DISTINCT sessionNum AS SESSION_NUM, iteration AS LEVEL_NUM, UP_THE_TREE AS DIRECTION, rdep.pv_id, rdep.pkg_id, rdep.v_ext FROM ( SELECT dep.pv_id, pv.pkg_id, pv.v_ext, dep.dpv_id, dpv.pkg_id AS dpkg_id, dpv.v_ext AS dv_ext FROM package_dependencies dep, release_content rc, package_versions pv, package_versions dpv WHERE dep.pv_id = rc.pv_id AND rc.rtag_id = nRtag_id AND dep.pv_id = pv.pv_id AND dep.dpv_id = dpv.pv_id ) rdep, temp_tree_browse ttb WHERE rdep.dpkg_id = ttb.pkg_id AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|') AND ttb.SESSION_NUM = sessionNum AND ttb.LEVEL_NUM = iteration - 1 MINUS /* Packages with all depencencies NOT matched */ SELECT DISTINCT sessionNum AS SESSION_NUM, iteration AS LEVEL_NUM, UP_THE_TREE AS DIRECTION, rdep.pv_id, rdep.pkg_id, rdep.v_ext FROM ( SELECT dep.pv_id, pv.pkg_id, pv.v_ext, dep.dpv_id, dpv.pkg_id AS dpkg_id, dpv.v_ext AS dv_ext FROM package_dependencies dep, release_content rc, package_versions pv, package_versions dpv WHERE dep.pv_id = rc.pv_id AND rc.rtag_id = nRtag_id AND dep.pv_id = pv.pv_id AND dep.dpv_id = dpv.pv_id ) rdep, ( SELECT tb.* FROM temp_tree_browse tb WHERE tb.SESSION_NUM = sessionNum ) ttb WHERE rdep.dpkg_id = ttb.pkg_id (+) AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|') AND ttb.SESSION_NUM IS NULL; rowCnt := SQL%ROWCOUNT; IF rowCnt > 0 THEN iteration := iteration + 1; END IF; EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations); END LOOP; /*---------------------------------------------------------------------------------------------------------------------*/ /* Check for unresolved dependencies || */ /* UNRESOLVED */ SELECT COUNT(*) INTO rowCnt FROM ( SELECT pv.pv_id, pv.pkg_id, pv.v_ext FROM release_content rc, package_versions pv WHERE rc.rtag_id = nRtag_id AND rc.pv_id = pv.pv_id MINUS SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum ); IF rowCnt > 0 THEN /* Circular dependencies detected. || Try to resolve build order from the top now. || Start DOWN THE TREE */ iteration := 0; /* Top Level packages */ INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT ) SELECT sessionNum AS SESSION_NUM, iteration AS LEVEL_NUM, DOWN_THE_TREE AS DIRECTION, pv.pv_id, pv.pkg_id, pv.v_ext FROM ( /* Packages no one depends on ( Top level packages )*/ ( /* All parents*/ SELECT pv.pkg_id, pv.v_ext FROM package_dependencies dep, release_content rc, package_versions pv WHERE dep.pv_id = rc.pv_id AND rc.rtag_id = nRtag_id AND dep.pv_id = pv.pv_id MINUS /* All children */ SELECT dpv.pkg_id, dpv.v_ext FROM package_dependencies dep, release_content rc, package_versions dpv WHERE dep.pv_id = rc.pv_id AND rc.rtag_id = nRtag_id AND dep.dpv_id = dpv.pv_id ) MINUS /* Packages with resolved dependencies from UP THE TREE */ SELECT ttb.pkg_id, ttb.v_ext FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum ) tpkg, package_versions pv, release_content rc WHERE rc.rtag_id = nRtag_id AND rc.pv_id = pv.pv_id AND tpkg.pkg_id = pv.pkg_id AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|'); /* Keep taking packages which no one depende on */ iteration := iteration - 1; LOOP INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT ) SELECT sessionNum AS SESSION_NUM, iteration AS LEVEL_NUM, DOWN_THE_TREE AS DIRECTION, pv.pv_id, pv.pkg_id, pv.v_ext FROM ( /* All Unresolved */ ( SELECT pv.pkg_id, pv.v_ext FROM release_content rc, package_versions pv WHERE rc.rtag_id = nRtag_id AND rc.pv_id = pv.pv_id MINUS SELECT ttb.pkg_id, ttb.v_ext FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum ) MINUS ( /* Children of Unresolved */ SELECT dpv.pkg_id, dpv.V_EXT FROM ( SELECT pv.pv_id, pv.pkg_id, pv.v_ext FROM release_content rc, package_versions pv WHERE rc.rtag_id = nRtag_id AND rc.pv_id = pv.pv_id MINUS SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum ) unr, package_dependencies dep, package_versions dpv WHERE unr.pv_id = dep.pv_id AND dep.dpv_id = dpv.pv_id ) ) tpkg, package_versions pv, release_content rc WHERE rc.rtag_id = nRtag_id AND rc.pv_id = pv.pv_id AND tpkg.pkg_id = pv.pkg_id AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|'); rowCnt := SQL%ROWCOUNT; IF rowCnt > 0 THEN iteration := iteration - 1; END IF; EXIT WHEN (rowCnt < 1); END LOOP; END IF; /*---------------------------------------------------------------------------------------------------------------------*/ /* || Save results from temp table */ /* Clean up build_order table */ DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id; /* Save UP THE TREE */ INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID ) SELECT nRtag_id AS rtag_id, ttb.level_num AS step_num, ttb.PV_ID FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.direction = UP_THE_TREE; /*Get last step_num */ SELECT MAX(ttb.level_num) + 1 INTO levelNum FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE; /* UNRESOLVED */ SELECT COUNT(*) INTO rowCnt FROM ( SELECT pv.pv_id, pv.pkg_id, pv.v_ext FROM release_content rc, package_versions pv WHERE rc.rtag_id = nRtag_id AND rc.pv_id = pv.pv_id MINUS SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum ); IF rowCnt > 0 THEN /* Save unresolved packages */ INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED ) SELECT nRtag_id AS rtag_id, levelNum AS step_num, upv.PV_ID, 'Y' AS UNRESOLVED FROM ( SELECT pv.pv_id, pv.pkg_id, pv.v_ext FROM release_content rc, package_versions pv WHERE rc.rtag_id = nRtag_id AND rc.pv_id = pv.pv_id MINUS SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum ) upv; END IF; /* Save DOWN THE TREE */ levelNum := 1000; INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID ) SELECT nRtag_id AS rtag_id, levelNum + ttb.level_num AS step_num, ttb.PV_ID FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.direction = DOWN_THE_TREE; /*---------------------------------------------------------------------------------------------------------------------*/ /* Clean up temp table */ DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum; retSessionNum := sessionNum; END Build_Tree; / CREATE PROCEDURE "RELEASE_MANAGER"."CHANGE_PACKAGE_STATE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE, nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS /* --------------------------------------------------------------------------- Version: 4.0 --------------------------------------------------------------------------- */ BEGIN -- Unlock Package UPDATE RELEASE_CONTENT rc SET rc.PKG_STATE = 0 WHERE rc.PV_ID = nPvId AND rc.RTAG_ID = nRtagId; /* LOG ACTION */ /* Log_Action ( nPvId, 'unlock_package', nUserId );*/ END Change_Package_State; / CREATE PROCEDURE "RELEASE_MANAGER"."CHANGE_RELEASE_MODE" ( nModeCode IN NUMBER, nRtagId IN NUMBER, UserId IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ cMode CHAR(1) := NULL; nProjId NUMBER; BEGIN /* Author: Rupesh Solanki Modified: 24th October 2006 Reason: Added the archive mode state into Release Manager || 1 - Open Mode || 2 - Restrictive Mode || 3 - Closed Mode || 4 - CCB Mode || 5 - Archive Mode */ -- Get project Id SELECT rt.PROJ_ID INTO nProjId FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nRtagId; IF nModeCode = 1 THEN -- Open Mode cMode := 'N'; /* LOG ACTION */ Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId ); ELSIF nModeCode = 2 THEN -- Restrictive Mode cMode := 'R'; /* LOG ACTION */ Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId ); ELSIF nModeCode = 3 THEN -- Closed Mode cMode := 'Y'; /* LOG ACTION */ Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId ); ELSIF nModeCode = 4 THEN -- CCB Mode cMode := 'C'; /* LOG ACTION */ Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId ); ELSIF nModeCode = 5 THEN -- Archive Mode cMode := 'A'; /* LOG ACTION */ Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId ); END IF; -- Now update table IF NOT cMode IS NULL THEN UPDATE RELEASE_TAGS rt SET rt.OFFICIAL = cMode WHERE rt.RTAG_ID = nRtagId; END IF; END CHANGE_RELEASE_MODE; / CREATE PROCEDURE "RELEASE_MANAGER"."CHECK_NEW_PATCHES" ( nrtagid IN release_content.rtag_id%TYPE ) IS /* --------------------------------------------------------------------------- Version: 3.0 --------------------------------------------------------------------------- */ BEGIN /*--------------- Business Rules Here -------------------*/ /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' ); END IF /*-------------------------------------------------------*/ UPDATE release_content rc SET rc.pkg_state = 5 -- enumPKG_STATE_NEW_PATCH WHERE rc.pv_id IN ( SELECT prod.pv_id FROM (SELECT pp.pv_id AS orig_parent_id, COUNT (*) AS num_of_patches FROM release_content rc, package_patches pp WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid GROUP BY pp.pv_id) orig, (SELECT prodpp.pv_id, pp.pv_id AS parent_id, COUNT (*) AS num_of_patches FROM release_content rc, package_patches pp, package_dependencies dep, package_versions pv, package_patches prodpp WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid AND pp.patch_id = dep.dpv_id AND dep.pv_id = pv.pv_id AND pv.is_patch = 'Y' AND pv.dlocked = 'Y' AND prodpp.patch_id = dep.pv_id GROUP BY prodpp.pv_id, pp.pv_id) prod, release_content rc WHERE orig.orig_parent_id = prod.pv_id AND orig.num_of_patches != prod.num_of_patches AND rc.rtag_id = nrtagid AND rc.pv_id = prod.pv_id AND rc.pkg_state = 0 UNION SELECT prodpp.pv_id FROM release_content rc, package_patches pp, package_dependencies dep, package_versions pv, package_patches prodpp WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid AND pp.patch_id = dep.dpv_id AND dep.pv_id = pv.pv_id AND pv.is_patch = 'Y' AND pv.dlocked = 'Y' AND prodpp.patch_id = dep.pv_id GROUP BY prodpp.pv_id, pp.pv_id MINUS SELECT pp.pv_id FROM release_content rc, package_patches pp WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid GROUP BY pp.pv_id); END check_new_patches; / CREATE PROCEDURE "RELEASE_MANAGER"."CLEAN_DO_NOT_RIPPLE" (nrtagid IN NUMBER) IS /****************************************************************************** NAME: DELETE_DO_NOT_RIPPLE PURPOSE: TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE IS RELEASED REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 21/04/2006 Rupesh Solanki 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: DELETE_DO_NOT_RIPPLE Sysdate: 21/04/2006 Date and Time: 21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ BEGIN DELETE FROM do_not_ripple WHERE rtag_id = nrtagid AND pv_id NOT IN (SELECT pv_id FROM release_content WHERE rtag_id = nrtagid); END clean_do_not_ripple; / CREATE PROCEDURE "RELEASE_MANAGER"."CLEAR_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE, nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE, nUserId IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 4.0 --------------------------------------------------------------------------- */ BEGIN -- Clear Advisory Ripple Package DELETE FROM ADVISORY_RIPPLE WHERE PV_ID = nPvId AND RTAG_ID = nRtagId; /* LOG ACTION */ Log_Action ( nPvId, 'clear_advisory_ripple', nUserId ); /*Rebuild_Environment(nRtagId);*/ END Clear_Advisory_Ripple; / CREATE PROCEDURE "RELEASE_MANAGER"."CLONED_PACKAGE_PROCESSES" IS proc_id NUMBER; /****************************************************************************** NAME: DELETE_DO_NOT_RIPPLE PURPOSE: TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE IS RELEASED REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 21/04/2006 Rupesh Solanki 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: DELETE_DO_NOT_RIPPLE Sysdate: 21/04/2006 Date and Time: 21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ CURSOR ripple_cur IS select distinct proc_id, prod_id from deployment_manager.processes_config; ripple_rec ripple_cur%ROWTYPE; BEGIN OPEN ripple_cur; FETCH ripple_cur INTO ripple_rec; WHILE ripple_cur%FOUND LOOP insert into package_processes (PROC_ID, PV_ID) values( ripple_rec.proc_id, ripple_rec.prod_id); FETCH ripple_cur INTO ripple_rec; END LOOP; END CLONED_PACKAGE_PROCESSES; / CREATE PROCEDURE "RELEASE_MANAGER"."CLONED_PROCESSES" IS proc_id NUMBER; /****************************************************************************** NAME: DELETE_DO_NOT_RIPPLE PURPOSE: TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE IS RELEASED REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 21/04/2006 Rupesh Solanki 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: DELETE_DO_NOT_RIPPLE Sysdate: 21/04/2006 Date and Time: 21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ CURSOR ripple_cur IS select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config; ripple_rec ripple_cur%ROWTYPE; BEGIN OPEN ripple_cur; FETCH ripple_cur INTO ripple_rec; WHILE ripple_cur%FOUND LOOP select deployment_manager.seq_proc_id.nextval into proc_id from dual; insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface); FETCH ripple_cur INTO ripple_rec; END LOOP; END CLONED_PROCESSES; / CREATE PROCEDURE "RELEASE_MANAGER"."DELETE_AUTOBUILD_FAILURE_INFO" IS /****************************************************************************** NAME: DELETE_AUTOBUILD_FAILURE_INFO PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 2/06/2006 Rupesh Solanki 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: DELETE_AUTOBUILD_FAILURE_INFO Sysdate: 2/06/2006 Date and Time: 2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ BEGIN DELETE FROM autobuild_failure WHERE group_email_id NOT IN (SELECT group_email_id FROM members_group); END delete_autobuild_failure_info; / CREATE PROCEDURE "RELEASE_MANAGER"."DEPLOY_TO_RELEASE" IS /****************************************************************************** ******************************************************************************/ CURSOR curInfo IS SELECT DISTINCT qry.DPV_ID FROM ( SELECT dep.*, LEVEL AS LEVEL_NUM FROM PACKAGE_DEPENDENCIES dep START WITH dep.PV_ID IN ( 69124,63479,60048,49566,49562,54351,63560,54360,46053,59753,97060,97061,100883,78236,75241,92371,92372,105682,135506,127204,135615,136498,137571,61534,76540,96787,133102,96770,96771,116692,133768,61537,88935,110216,96797,69469,98123,111626,96802,100289,97233,97623,135801,69700,77808,43026,77809,43027,100825,126854,105589,96405,102105,133770,134408,91177,91179,96822,96824,48031,78965,78936,78935,79114,76620,125164,61804,96826,61977,67592,72594,134415,135804,65097,64850,64851,64879,64881,64882,64884,67612,67613,67614,67615,68501,68502,68503,68516,68518,68519,68521,71974,68659,69764,68662,68661,68757,69765,69766,69767,71975,71976,71977,71978,71979,71980,75149,71982,71983,75153,75158,71986,75160,75161,75162,72418,72419,71987,71988,71990,75164,72420,72421,72423,72424,72425,75165,75181,75182,83285,75184,75201,75220,75240,75260,75280,75242,76320,75320,76340,76321,82031,76341,76342,76344,76345,76806,76350,76810,76811,76360,76361,76362,76380,76637,76638,76639,76647,76649,76812,76650,78261,76815,77603,76818,76846,76847,76848,76849,77604,77606,77016,77607,77608,77609,78518,77671,77610,78519,78520,78205,78206,77795,78262,78263,78666,78521,78669,78767,78768,78770,78771,82032,79471,78772,82033,80856,80210,80898,82449,80211,80212,80214,80215,80216,80611,80217,82034,82035,80749,80750,82036,94266,82037,82038,82039,82040,82041,82042,82043,82044,82045,82046,82450,82296,82297,82451,82047,82298,82299,82300,82452,82453,82454,82455,82456,82457,82769,82458,82459,82770,82460,82461,82771,83286,85069,83543,83544,83287,85070,84959,85071,85072,84960,85073,85074,84975,85194,85075,85195,85196,85197,85198,85199,94267,85231,85237,94268,94269,94270,94271,94273,94274,94275,94276,94277,94278,94279,94280,94281,94282,94283,94284,94285,94286,94287,94288,94289,94290,94291,94292,94293,94294,94295,94296,94297,94298,94299,94300,94301,94302,94303,94304,94305,94306,94307,94308,94309,94310,94311,94312,94313,94314,94315,94316,94634,94317,94635,97035,94319,94320,94636,94637,94322,96536,96552,96554,96555,96556,96568,96569,96570,96571,96572,96573,96574,96575,96576,96577,96578,96579,96580,96581,96582,96583,96584,96585,96586,96818,97435,96819,96820,97599,97436,97437,97438,97439,97440,97434,97723,97640,97641,97642,97724,97725,97729,97743,97825,98097,98098,98099,98100,97999,98049,98101,98102,98103,99506,98268,98207,99507,99508,99509,99159,99510,99511,99512,102883,99513,99514,100243,99515,99880,99562,99563,99676,99677,99678,99881,99882,99883,99884,100244,100245,100623,100247,100624,100625,100626,100885,100719,100886,100887,100888,100889,100890,100990,100991,101301,101603,110065,101605,102180,102627,102181,102182,102183,102184,102185,102186,102187,102188,102189,102190,102191,104378,102192,104379,102193,102379,102380,102381,102884,102410,102411,102628,102465,102629,102630,102885,102886,102887,104380,104381,104382,104383,104384,104385,104387,110063,104389,106409,104561,104594,104660,105088,105089,105090,105091,105093,105097,105673,105768,106410,109314,106173,110064,137890,106433,106960,109080,111665,122015,110954,116763,110066,116764,110123,111867,110713,116765,111666,116869,111667,111668,116766,116767,115142,115143,121477,113924,114594,116768,115144,116769,115170,115172,115171,115644,120042,120043,116092,116870,116871,118382,116872,116876,120044,118026,119364,121485,120045,120416,121478,120417,122016,124577,129495,123602,123600,124578,124579,124580,124581,124784,125238,127096,127097,129496,129497,128036,128415,129498,129499,129914,130063,130064,130680,130681,131333,131488,133886,132219,132477,132478,133887,136537,136552,136538,136539,136540,136553,136554,136555,137869,85076,80857,62418,64889,64890,64891,64893,68666,68667,68668,68670,68671,68672,68673,72019,72020,72023,72024,72227,77745,77746,77747,77748,77749,77750,77751,77798,78773,80751,82464,82465,83288,92874,92875,92876,92877,92878,94122,94123,96290,96882,96883,97554,97514,97726,98008,98009,98051,99193,100248,99608,100249,100250,100670,100671,100672,101059,101061,101607,102194,102195,102412,102413,102633,104390,104391,106421,104560,104595,105767,106174,106426,109081,122017,137851,110712,116873,115145,115146,114597,115645,116095,120046,123551,122018,124584,124585,129500,129501,129502,128417,129503,129915,130066,131487,133897,133882,133883,136559,85078,100673,63475,78264,78265,78266,78267,78775,80753,94118,94119,94120,94121,96888,100251,100252,102631,102590,102632,65229,43366,69139,132551,59764,127129,101196,96830,61535,105433,96833,96835,96839,83795,77723,126868,99146,70188,117523,117524,117525,99237,100854,100855,137314,137315,96868,138232,138233,69709,96907,130854,119208,69520,124772,96878,60049,47875,70354,59371,54558,59849,33893,43087,43134,33894,60054,24345,49563,49558,97474,84982,31770,30950,49926,60050,52670,59846,59891,30966,59744,61988,59745,59881,59746,59741,47449,59747,64101,63480,63562,105382,105383,60052,48955,49561,49556,47401,65896,65906,65909,65985,108670,68697,68698,59754,59752,59751,62526,59805,59799,66981,46050,59756,46044,59806,46051,59807,82290,66980,59808,46046,61536,88834,70260,111081,105409,66093,66095,66094,47440,65778,59750,56748,99152,78409 ) CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID ) qry, PACKAGES pkg, PACKAGE_VERSIONS pv WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID and (pv.is_patch is null or pv.is_patch = 'N'); recInfo curInfo%ROWTYPE; BEGIN OPEN curInfo; FETCH curInfo INTO recInfo; WHILE curInfo%FOUND LOOP insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE) VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0); FETCH curInfo INTO recInfo; END LOOP; CLOSE curInfo; END DEPLOY_TO_RELEASE; / CREATE PROCEDURE "RELEASE_MANAGER"."DEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE, nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE, nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE, sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE, nUserId IN NUMBER) IS ext VARCHAR2(50); BEGIN --Extract the package version extension SELECT V_EXT into ext FROM PACKAGE_VERSIONS WHERE PV_ID = nPvId; -- Deprecate Package INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT) VALUES (nRtagId, nPkgId, sComments, ext); IF ext IS NOT NULL THEN UPDATE RELEASE_CONTENT SET PKG_ID = nPkgId, DEPRECATED_STATE = 6 WHERE RTAG_ID = nRtagId AND PV_ID IN (SELECT PV.PV_ID FROM PACKAGE_VERSIONS PV, PACKAGES PKG WHERE PKG.PKG_ID = PV.PKG_ID AND PV.V_EXT = ext AND PKG.PKG_ID = nPkgId ); ELSE UPDATE RELEASE_CONTENT SET PKG_ID = nPkgId, DEPRECATED_STATE = 6 WHERE RTAG_ID = nRtagId AND PV_ID IN (SELECT PV.PV_ID FROM PACKAGE_VERSIONS PV, PACKAGES PKG WHERE PKG.PKG_ID = PV.PKG_ID AND PV.V_EXT IS NULL AND PKG.PKG_ID = nPkgId ); END IF; UPDATE RELEASE_CONTENT SET PKG_ID = nPkgId, DEPRECATED_STATE = 7 WHERE RTAG_ID = nRtagId AND PV_ID IN ( SELECT DISTINCT qry.PV_ID FROM ( SELECT dep.*, LEVEL AS LEVEL_NUM FROM PACKAGE_DEPENDENCIES dep START WITH dep.DPV_ID IN ( nPvId ) CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID ) qry, PACKAGES pkg, PACKAGE_VERSIONS pv, RELEASE_CONTENT rc WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID AND rc.DEPRECATED_STATE IS NULL ); /* LOG ACTION */ /*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/ END Deprecate_Package; / CREATE PROCEDURE "RELEASE_MANAGER"."DT_DROPUSEROBJECTBYID" ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID; / CREATE PROCEDURE "RELEASE_MANAGER"."DT_SETPROPERTYBYID" ( PARAM_ID IN NUMBER, PARAM_PROPERTY IN VARCHAR2, PARAM_VALUE IN VARCHAR2, PARAM_LVALUE IN LONG RAW ) AS BEGIN DECLARE X NUMBER(40); BEGIN SELECT COUNT(*) INTO X FROM MICROSOFTDTPROPERTIES WHERE OBJECTID=PARAM_ID AND PROPERTY=PARAM_PROPERTY; IF X = 0 THEN INSERT INTO MICROSOFTDTPROPERTIES (ID, PROPERTY, OBJECTID, VALUE, LVALUE, VERSION) VALUES (MICROSOFTSEQDTPROPERTIES.NEXTVAL, PARAM_PROPERTY, PARAM_ID, PARAM_VALUE, PARAM_LVALUE, 0); ELSE UPDATE MICROSOFTDTPROPERTIES SET VALUE=PARAM_VALUE, LVALUE=PARAM_LVALUE, VERSION=VERSION+1 WHERE OBJECTID=PARAM_ID AND PROPERTY=PARAM_PROPERTY; END IF; END; END DT_SETPROPERTYBYID; / CREATE PROCEDURE "RELEASE_MANAGER"."IGNORE_DEPENDENCY_WARNINGS" ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE, nPvId IN IGNORE_WARNINGS.PV_ID%TYPE, sIgnoreIdList IN VARCHAR2, bDoPatchIgnore IN BOOLEAN DEFAULT FALSE, nUserId IN NUMBER DEFAULT NULL ) IS /* --------------------------------------------------------------------------- Version: 5.0 --------------------------------------------------------------------------- */ oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); ReleaseLocation VARCHAR2(4000); ActionTypeId NUMBER; BEGIN IF (NOT bDoPatchIgnore) THEN /* Manual Ignore Warnings */ oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList ); /* Log Action */ -- Get Release Location SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = nRtagId; -- Get Action Type Id for IGNORE_ON SELECT act.ACTTYPE_ID INTO ActionTypeId FROM ACTION_TYPE act WHERE act.NAME = 'ignore_on'; -- Get Ignored (Current MINUS Old) INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID ) SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId FROM ( SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) ) MINUS SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID FROM IGNORE_WARNINGS igw WHERE igw.RTAG_ID = nRtagId AND igw.PV_ID = nPvId ) qry, PACKAGE_VERSIONS pv, PACKAGES pkg, RELEASE_CONTENT rc, PACKAGE_VERSIONS rpv WHERE pv.PKG_ID = pkg.PKG_ID AND rc.RTAG_ID = nRtagId AND rc.PV_ID = rpv.PV_ID AND rpv.PKG_ID = pv.PKG_ID AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' ) AND qry.DPV_ID = pv.PV_ID; -- Get Action Type Id for IGNORE_OFF SELECT act.ACTTYPE_ID INTO ActionTypeId FROM ACTION_TYPE act WHERE act.NAME = 'ignore_off'; -- Get UnIgnored (Old MINUS Current) INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID ) SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId FROM ( SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID FROM IGNORE_WARNINGS igw WHERE igw.RTAG_ID = nRtagId AND igw.PV_ID = nPvId MINUS SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) ) ) qry, PACKAGE_VERSIONS pv, PACKAGES pkg, RELEASE_CONTENT rc, PACKAGE_VERSIONS rpv WHERE pv.PKG_ID = pkg.PKG_ID AND rc.RTAG_ID = nRtagId AND rc.PV_ID = rpv.PV_ID AND rpv.PKG_ID = pv.PKG_ID AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' ) AND qry.DPV_ID = pv.PV_ID; -- Delete Current Ignore Warnings DELETE FROM IGNORE_WARNINGS igw WHERE igw.RTAG_ID = nRtagId AND igw.PV_ID = nPvId AND igw.IS_PATCH_IGNORE IS NULL; IF (oIgnoreIdCollector.COUNT > 0) THEN -- Insert Ignore Warnings INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID ) SELECT nRtagId, nPvId, pv.PV_ID AS DPV_ID FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) ); END IF; -- Touch Release if package is in Release Area IF PK_ENVIRONMENT.GET_PACKAGE_AREA ( nPvId, nRtagId ) = 2 THEN Touch_Release (nRtagId); END IF; ELSE /* Patch Ignore Warnings */ -- Delete Current Patch Ignore Warnings DELETE FROM IGNORE_WARNINGS igw WHERE igw.RTAG_ID = nRtagId AND igw.IS_PATCH_IGNORE = 'Y'; -- Delete Manual Ignores that need to be Patch Ignores DELETE FROM IGNORE_WARNINGS igw WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN ( SELECT DISTINCT nRtagId, err.PV_ID, err.ERR_DPV AS DPV_ID FROM ( /* Full Release Contents used for reference*/ SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext --, rpv.pkg_version, rpv.v_nmm, rpv.v_mm FROM release_content rel, package_versions rpv WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtagId ) frc, ( /* DPV_IDs not fount in release*/ SELECT dep.pv_id, dep.dpv_id AS err_dpv FROM package_dependencies dep WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId ) AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId ) ) err, ( SELECT DISTINCT pp.PV_ID, dep.DPV_ID FROM PACKAGE_PATCHES pp, PACKAGE_DEPENDENCIES dep, RELEASE_CONTENT rc WHERE rc.RTAG_ID = nRtagId AND rc.PV_ID = pp.PV_ID AND dep.PV_ID = pp.PATCH_ID ) pp, package_versions errpkg, package_versions errpv WHERE err.err_dpv = errpv.pv_id AND errpv.pkg_id = frc.pkg_id(+) AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+) AND err.pv_id = errpkg.pv_id AND err.PV_ID = pp.PV_ID AND frc.PV_ID = pp.DPV_ID ); /* --------------------------------------------------- -- Make sure that select statement above and below are same --------------------------------------------------- */ -- Insert Patch Ignores INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE ) SELECT DISTINCT nRtagId, err.PV_ID, err.ERR_DPV AS DPV_ID, 'Y' FROM ( /* Full Release Contents used for reference*/ SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext --, rpv.pkg_version, rpv.v_nmm, rpv.v_mm FROM release_content rel, package_versions rpv WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtagId ) frc, ( /* DPV_IDs not fount in release*/ SELECT dep.pv_id, dep.dpv_id AS err_dpv FROM package_dependencies dep WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId ) AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId ) ) err, ( SELECT DISTINCT pp.PV_ID, dep.DPV_ID FROM PACKAGE_PATCHES pp, PACKAGE_DEPENDENCIES dep, RELEASE_CONTENT rc WHERE rc.RTAG_ID = nRtagId AND rc.PV_ID = pp.PV_ID AND dep.PV_ID = pp.PATCH_ID ) pp, package_versions errpkg, package_versions errpv WHERE err.err_dpv = errpv.pv_id AND errpv.pkg_id = frc.pkg_id(+) AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+) AND err.pv_id = errpkg.pv_id AND err.PV_ID = pp.PV_ID AND frc.PV_ID = pp.DPV_ID; END IF; END Ignore_Dependency_Warnings; / CREATE PROCEDURE "RELEASE_MANAGER"."INSERT_INTO_PACKAGE_BUILD_INFO" IS /****************************************************************************** NAME: INSERT_INTO_PACKAGE_BUILD_INFO PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 6/12/2006 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: INSERT_INTO_PACKAGE_BUILD_INFO Sysdate: 6/12/2006 Date and Time: 6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ CURSOR curInfo IS SELECT PV_ID FROM PACKAGE_BUILD_ENV WHERE BE_ID IN (11, 12); recInfo curInfo%ROWTYPE; BEGIN OPEN curInfo; FETCH curInfo INTO recInfo; WHILE curInfo%FOUND LOOP INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID, BSA_ID ) VALUES( recInfo.PV_ID, 2, 5); UPDATE PACKAGE_VERSIONS SET BS_ID = 2 WHERE PV_ID = recInfo.PV_ID; FETCH curInfo INTO recInfo; END LOOP; CLOSE curInfo; END INSERT_INTO_PACKAGE_BUILD_INFO; / CREATE PROCEDURE "RELEASE_MANAGER"."INSERT_MULTIPLE_STICKY_NOTES" IS /****************************************************************************** NAME: INSERT_MULTIPLE_STICKY_NOTES PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 6/12/2006 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: INSERT_MULTIPLE_STICKY_NOTES Sysdate: 6/12/2006 Date and Time: 6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ CURSOR curInfo IS SELECT PV_ID FROM PACKAGE_BUILD_ENV WHERE BE_ID IN (11, 12); recInfo curInfo%ROWTYPE; BEGIN OPEN curInfo; FETCH curInfo INTO recInfo; WHILE curInfo%FOUND LOOP INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION ) VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' ); FETCH curInfo INTO recInfo; END LOOP; CLOSE curInfo; END INSERT_MULTIPLE_STICKY_NOTES; / CREATE PROCEDURE "RELEASE_MANAGER"."LEVEL_N_CONFLICTS" ( nnrtag_id IN NUMBER, nnsession_num IN NUMBER, nnrowcnt OUT NUMBER, nniteration IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0.1 --------------------------------------------------------------------------- */ previteration NUMBER := nniteration - 1; BEGIN /* --------- LEVEL 1 CONFILCTS ----------- || Following states are used: || 0 -> NOT FOUND || 1 -> MAJOR || 2 -> MINOR MINOR */ INSERT INTO temp_env_states SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num, pv.pv_id, pv.pkg_id, pv.v_ext, DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE FROM package_dependencies dep, package_versions dpv, package_versions pv, release_content rel, temp_env_states tes WHERE rel.pv_id = dep.pv_id AND rel.rtag_id = nnrtag_id AND dep.pv_id = pv.pv_id AND dep.dpv_id = dpv.pv_id AND dpv.pkg_id = tes.pkg_id AND NVL (dpv.v_ext, '|LINK_A_NULL|') = NVL (tes.v_ext, '|LINK_A_NULL|') AND tes.session_num = nnsession_num AND tes.level_num = previteration AND (dep.pv_id, dep.dpv_id) IN /* Remove packages listed in IGNORE_WARNINGS table and || packages already stored in Temp Table. */ ( SELECT pd.pv_id, pd.dpv_id FROM package_dependencies pd, release_content rc WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 ) MINUS SELECT igw.pv_id, igw.dpv_id FROM ignore_warnings igw WHERE igw.rtag_id = nnrtag_id); nnrowcnt := SQL%ROWCOUNT; END level_n_conflicts; / CREATE PROCEDURE "RELEASE_MANAGER"."LEVEL_ONE_CONFLICTS" ( nnrtag_id IN NUMBER, nnsession_num IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ BEGIN /* --------- LEVEL 1 CONFILCTS ----------- || Following states are used: || 0 -> NOT FOUND || 1 -> MAJOR || 2 -> MINOR MINOR */ INSERT INTO temp_env_states SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num, err.pv_id, errpkg.pkg_id, errpkg.v_ext, DECODE (frc.v_nmm, NULL, 0, errpv.v_nmm, DECODE (frc.v_mm, errpv.v_mm, NULL, 2 ), 1 ) AS MESSAGE FROM ( /* Full Release Contents used for reference*/ SELECT rpv.pkg_id, NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.pkg_version, rpv.v_nmm, rpv.v_mm FROM release_content rel, package_versions rpv WHERE rel.pv_id = rpv.pv_id AND rtag_id = nnrtag_id) frc, ( /* DPV_IDs not fount in release*/ SELECT dep.pv_id, dep.dpv_id AS err_dpv FROM package_dependencies dep WHERE dep.pv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id) AND NOT dep.dpv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id) MINUS /* MINUS Dependencies to be ignored */ SELECT igw.pv_id, igw.dpv_id AS err_dpv FROM ignore_warnings igw WHERE rtag_id = nnrtag_id) err, package_versions errpkg, package_versions errpv WHERE err.err_dpv = errpv.pv_id AND errpv.pkg_id = frc.pkg_id(+) AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+) AND err.pv_id = errpkg.pv_id; END level_one_conflicts; / CREATE PROCEDURE "RELEASE_MANAGER"."LOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE, nUserId IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 4.0 --------------------------------------------------------------------------- */ BEGIN -- Lock Package UPDATE PACKAGE_VERSIONS pv SET pv.DLOCKED = 'Y' WHERE pv.PV_ID = nPvId; /* LOG ACTION */ Log_Action ( nPvId, 'lock_package', nUserId ); END Lock_Package; / CREATE PROCEDURE "RELEASE_MANAGER"."LOG_ACTION" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE, enumActionTypeName IN ACTION_TYPE.NAME%TYPE, nUserId IN ACTION_LOG.USER_ID%TYPE, sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL ) IS /* --------------------------------------------------------------------------- Version: 3.0 --------------------------------------------------------------------------- */ ActionTypeId NUMBER; BEGIN -- Get Action Type FK SELECT act.ACTTYPE_ID INTO ActionTypeId FROM ACTION_TYPE act WHERE act.NAME = enumActionTypeName; INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID ) VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId ); END Log_Action; / CREATE PROCEDURE "RELEASE_MANAGER"."LOG_ACTION_BULK" ( nPvIdList IN VARCHAR2, enumActionTypeName IN ACTION_TYPE.NAME%TYPE, nUserId IN ACTION_LOG.USER_ID%TYPE, sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL ) IS /* --------------------------------------------------------------------------- Version: 3.0 --------------------------------------------------------------------------- */ ActionTypeId NUMBER; oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); BEGIN oPvIdCollector := IN_LIST_NUMBER ( nPvIdList ); -- Get Action Type FK SELECT act.ACTTYPE_ID INTO ActionTypeId FROM ACTION_TYPE act WHERE act.NAME = enumActionTypeName; -- Log Action INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID ) SELECT nUserId, ORA_SYSDATETIME, pv.PV_ID, sAdditionalComments, ActionTypeId FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) ); END Log_Action_Bulk; / CREATE PROCEDURE "RELEASE_MANAGER"."LOG_DAEMON_ACTION" ( nRconId IN NUMBER, enumActionTypeName IN VARCHAR2, nUserId IN NUMBER, sAdditionalComments IN VARCHAR2 DEFAULT NULL ) IS /* --------------------------------------------------------------------------- Version: 3.0 --------------------------------------------------------------------------- */ ActionTypeId NUMBER; BEGIN -- Get Action Type FK SELECT act.ACTTYPE_ID INTO ActionTypeId FROM ACTION_TYPE act WHERE act.NAME = enumActionTypeName; INSERT INTO DAEMON_ACTION_LOG VALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId ); END Log_Daemon_Action; / CREATE PROCEDURE "RELEASE_MANAGER"."LOG_PROJECT_ACTION" ( nProjId IN NUMBER, enumActionTypeName IN VARCHAR2, nUserId IN NUMBER, sAdditionalComments IN VARCHAR2 DEFAULT NULL, nRtagId IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0 --------------------------------------------------------------------------- */ ActionTypeId NUMBER; BEGIN -- Get Action Type FK SELECT act.ACTTYPE_ID INTO ActionTypeId FROM ACTION_TYPE act WHERE act.NAME = enumActionTypeName; INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID) VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId); END Log_Project_Action; / CREATE PROCEDURE "RELEASE_MANAGER"."NEW_ADDITIONAL_NOTE" ( pnPv_id IN NUMBER, psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE, psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE, pnUser_id IN NUMBER, outErrCode OUT NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ newID NUMBER; CURSOR an_duplicate_cur IS SELECT note_id FROM ADDITIONAL_NOTES WHERE pv_id = pnPv_id AND note_title = psNote_title; an_duplicate_rec an_duplicate_cur%ROWTYPE; BEGIN outErrCode := -1; -- Set default return error code to ERROR state OPEN an_duplicate_cur; FETCH an_duplicate_cur INTO an_duplicate_rec; IF an_duplicate_cur%NOTFOUND THEN /* No duplicate titles */ -- Get new ID -- SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL; --- Add Additional Note --- INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user ) VALUES ( newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id ); outErrCode := 0; -- Set return to SUCCESS END IF; CLOSE an_duplicate_cur; END New_Additional_Note; / CREATE PROCEDURE "RELEASE_MANAGER"."NEW_PACKAGE_NAME" ( SSpkg_name IN PACKAGES.pkg_name%TYPE, retPKG_ID OUT NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ CURSOR packages_cur IS SELECT pkg.pkg_id FROM packages pkg WHERE pkg.pkg_name = SSpkg_name; packages_rec packages_cur%ROWTYPE; BEGIN /* ---------------------------------------------------- */ /* Find if package name exists */ /* ---------------------------------------------------- */ OPEN packages_cur; FETCH packages_cur INTO packages_rec; IF packages_cur%NOTFOUND THEN -- Create new pkg_name -- SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL; INSERT INTO packages ( pkg_id, pkg_name ) VALUES ( retPKG_ID, SSpkg_name ); ELSE retPKG_ID := packages_rec.pkg_id; END IF; CLOSE packages_cur; END New_Package_Name; / CREATE PROCEDURE "RELEASE_MANAGER"."NEW_PATCH" ( SSpatch_version IN PACKAGE_VERSIONS.pkg_version%TYPE, NNparent_id IN NUMBER, sPatchIdList IN VARCHAR2, NNuser_id IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.5 --------------------------------------------------------------------------- */ patchPv_id NUMBER; parPkg_id NUMBER; LastInstallOrder NUMBER; isPatchDlocked PACKAGE_VERSIONS.DLOCKED%TYPE; SSV_MM PACKAGE_VERSIONS.V_MM%TYPE; SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE; SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE; oPatchDepCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); CURSOR parent_cur IS SELECT pv.*, pkg.pkg_name FROM package_versions pv, packages pkg WHERE pv.pv_id = NNparent_id AND pv.pkg_id = pkg.pkg_id; parent_rec parent_cur%ROWTYPE; CURSOR patch_cur IS SELECT pv.*, pg.pkg_name FROM package_versions pv, packages pg WHERE pv.pkg_id = parPkg_id AND pv.pkg_version = SSpatch_version AND pv.pkg_id = pg.pkg_id; patch_rec patch_cur%ROWTYPE; CURSOR releases_cur IS SELECT rc.pv_id FROM release_content rc WHERE rc.pv_id = patch_rec.pv_id; releases_rec releases_cur%ROWTYPE; BEGIN -- Get Last Install Order SELECT Count(*) INTO LastInstallOrder FROM PACKAGE_PATCHES pp WHERE pp.PV_ID = NNparent_id; -- Get parent details OPEN parent_cur; FETCH parent_cur INTO parent_rec; parPkg_id := parent_rec.pkg_id; -- Find if patch exists in database OPEN patch_cur; FETCH patch_cur INTO patch_rec; -- Parent must be official IF parent_rec.dlocked = 'Y' THEN IF patch_cur%NOTFOUND THEN isPatchDlocked := 'N'; -- Create new patch version -- SELECT SEQ_PV_ID.nextval INTO patchPv_id FROM DUAL; Split_version ( SSpatch_version, SSV_MM, SSV_NMM, SSV_EXT ); INSERT INTO package_versions ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT, src_path, pv_description, owner_id, is_patch, LAST_PV_ID, bs_id, is_autobuildable, ripple_field ) VALUES ( patchPv_id, parPkg_id, SSpatch_version, isPatchDlocked, ORA_SYSDATE, NNuser_id, ORA_SYSDATETIME, NNuser_id, SSV_MM, SSV_NMM, SSV_EXT, parent_rec.src_path, 'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version, NNuser_id, 'Y', patchPv_id, parent_rec.bs_id, parent_rec.is_autobuildable, parent_rec.ripple_field ); INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER ) ( SELECT NNparent_id AS pv_id, pv.pv_id AS patch_id, LastInstallOrder + 1 AS INSTALL_ORDER FROM package_versions pv WHERE pv.pv_id = patchPv_id AND pv.is_patch = 'Y' ); /* LOG ACTION */ Log_Action ( patchPv_id, 'new_version', NNuser_id, 'Patch version created: '|| SSpatch_version ); Log_Action ( NNparent_id, 'patch_add', NNuser_id, 'New patch created and attached: '|| SSpatch_version ); ELSE patchPv_id := patch_rec.pv_id; isPatchDlocked := patch_rec.dlocked; -- Find if pv_id exists in release content (i.e. it cannot be a patch) OPEN releases_cur; FETCH releases_cur INTO releases_rec; IF releases_cur%NOTFOUND THEN -- This pv_id is trully a patch, hence add Y to column IS_PATCH UPDATE package_versions SET is_patch = 'Y' WHERE pv_id = patchPv_id; INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER ) ( SELECT NNparent_id AS pv_id, pv.pv_id AS patch_id, LastInstallOrder + 1 AS INSTALL_ORDER FROM package_versions pv WHERE pv.pv_id = patchPv_id AND pv.is_patch = 'Y' ); END IF; CLOSE releases_cur; /* LOG ACTION */ Log_Action ( NNparent_id, 'patch_add', NNuser_id, 'Patch version was found and attached: '|| SSpatch_version ); END IF; END IF; /* Create Patch Dependencies */ oPatchDepCollector := IN_LIST_NUMBER ( sPatchIdList ); -- Make sure patch is unofficial before altering its dependencies IF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN -- Delete Existing Dependencies DELETE FROM PACKAGE_DEPENDENCIES dep WHERE dep.PV_ID = patchPv_id; -- Insert new dependencies INSERT INTO PACKAGE_DEPENDENCIES ( PV_ID, DPV_ID, PKG_ID, DPKG_ID, BUILD_TYPE ) SELECT patchPv_id AS PV_ID, pv.PV_ID AS DPV_ID, parPkg_id AS PKG_ID, pv.PKG_ID AS DPKG_ID, 'L' AS BUILD_TYPE FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPatchDepCollector AS RELMGR_NUMBER_TAB_t ) ) ); END IF; CLOSE parent_cur; CLOSE patch_cur; END New_Patch; / CREATE PROCEDURE "RELEASE_MANAGER"."NEW_UNIT_TEST" ( nPv_id IN NUMBER, nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE, sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE, sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE, sDpkg_path IN VARCHAR2, sResults IN VARCHAR2, sCompletion_date IN VARCHAR2, nCompleted_by IN NUMBER, enumTEST_TYPE_AUTOMATIC IN NUMBER, enumTEST_TYPE_NOT_DONE IN NUMBER, outFileName OUT VARCHAR2 ) IS /* --------------------------------------------------------------------------- Version: 3.2.0 --------------------------------------------------------------------------- */ FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST'; newID NUMBER; ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL; ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL; BEGIN -- Get new ID -- SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL; IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN ResultsURL := sResults; ELSE IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN outFileName := FILENAME_PREFIX || newID ||'_'|| sResults; ResultsAttachment := sDpkg_path || '/' || outFileName; END IF; END IF; -- Remove NOT_DONE entry if exists DELETE FROM UNIT_TESTS WHERE pv_id = nPv_id AND test_types_fk = enumTEST_TYPE_NOT_DONE; --- Add Additional Note --- INSERT INTO UNIT_TESTS ( TEST_ID, PV_ID, TEST_TYPES_FK, TEST_SUMMARY, COMPLETION_DATE, COMPLETED_BY, RESULTS_URL, RESULTS_ATTACHMENT_NAME, NUMOF_TEST ) VALUES ( newID, nPv_id, nTestTypeId, sTest_summary, TO_DATE( sCompletion_date,'DD/MM/YYYY' ), nCompleted_by, ResultsURL, ResultsAttachment, sNumOfTest ); END New_Unit_Test; / CREATE PROCEDURE "RELEASE_MANAGER"."NEW_VERSION" ( NNorig_pv_id IN NUMBER, SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE DEFAULT NULL, NNsetto_pv_id IN NUMBER DEFAULT NULL, NNrtag_id IN NUMBER, NNuser_id IN NUMBER, enumISSUES_STATE_IMPORTED IN NUMBER, retPv_id OUT NUMBER ) IS TO BE REMOVED !!! /* --------------------------------------------------------------------------- Version: 3.3 --------------------------------------------------------------------------- */ ReleaseLocation VARCHAR2(4000); origPkg_id PACKAGE_VERSIONS.pkg_id%TYPE; origDlocked PACKAGE_VERSIONS.dlocked%TYPE; SSV_MM PACKAGE_VERSIONS.V_MM%TYPE; SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE; SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE; nIssuesTypes NUMBER; CURSOR package_versions_cur IS SELECT pv.pv_id, pv.is_patch FROM PACKAGE_VERSIONS pv WHERE pv.pkg_version = SSpkg_version AND pv.pkg_id IN ( SELECT DISTINCT origpv.pkg_id FROM PACKAGE_VERSIONS origpv WHERE origpv.pv_id = NNorig_pv_id ); package_versions_rec package_versions_cur%ROWTYPE; CURSOR clone_package_versions_cur IS SELECT DISTINCT pkg_id, dlocked FROM PACKAGE_VERSIONS WHERE pv_id = NNorig_pv_id; clone_package_versions_rec clone_package_versions_cur%ROWTYPE; BEGIN IF NNsetto_pv_id IS NULL THEN -- SetToPv_id is not supplied, hence proceed. /* ---------------------------------------------------- */ /* Find id package_version exists */ /* ---------------------------------------------------- */ OPEN package_versions_cur; FETCH package_versions_cur INTO package_versions_rec; IF package_versions_cur%NOTFOUND THEN SELECT SEQ_PV_ID.NEXTVAL INTO retPv_id FROM DUAL; Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT ); OPEN clone_package_versions_cur; FETCH clone_package_versions_cur INTO clone_package_versions_rec; origPkg_id := clone_package_versions_rec.pkg_id; origDlocked := clone_package_versions_rec.dlocked; CLOSE clone_package_versions_cur; -- Clone Package Version Details -- INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT, src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, IS_DEPLOYABLE, IS_BUILD_ENV_REQUIRED ) SELECT retPv_id AS pv_id, origPkg_id AS pkg_id, SSpkg_version AS pkg_version, 'N' AS dlocked, Ora_Sysdate AS created_stamp, NNuser_id AS creator_id, Ora_Sysdatetime AS modified_stamp, NNuser_id AS modifier_id, SSV_MM AS V_MM, SSV_NMM AS V_NMM, SSV_EXT AS V_EXT, pv.src_path, pv.pv_description, pv.PV_OVERVIEW, NNorig_pv_id AS LAST_PV_ID, pv.owner_id, pv.IS_DEPLOYABLE, pv.IS_BUILD_ENV_REQUIRED FROM PACKAGE_VERSIONS pv WHERE pv.pv_id = NNorig_pv_id; -- Set Issues Type for cloning --- IF origDlocked = 'Y' THEN nIssuesTypes := enumISSUES_STATE_IMPORTED; ELSE nIssuesTypes := NULL; END IF; Basic_Clone ( NNorig_pv_id, retPv_id, NNrtag_id, NNuser_id, origPkg_id, nIssuesTypes ); ELSE retPv_id := package_versions_rec.pv_id; END IF; CLOSE package_versions_cur; ELSE retPv_id := NNsetto_pv_id; END IF; /* ---------------------------------------------------- */ /* Insert into Release Contents (EXCLUDE PATCHES) */ /* ---------------------------------------------------- */ IF (package_versions_rec.is_patch != 'Y') OR (package_versions_rec.is_patch IS NULL) THEN UPDATE RELEASE_CONTENT SET pv_id = retPv_id, insert_stamp = Ora_Sysdate, insertor_id = NNuser_id WHERE rtag_id = NNrtag_id AND pv_id = NNorig_pv_id; /* LOG ACTION */ SELECT proj.PROJ_NAME ||' / '|| vt.VTREE_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, VTREES vt, RELEASE_TAGS rt WHERE rt.VTREE_ID = vt.VTREE_ID AND vt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = NNrtag_id; Log_Action ( NNorig_pv_id, 'replaced_with', NNuser_id, 'Replacing version: '|| SSpkg_version ||' at '|| ReleaseLocation ); Log_Action ( retPv_id, 'add', NNuser_id, 'Location: '|| ReleaseLocation ); END IF; END New_Version; / CREATE PROCEDURE "RELEASE_MANAGER"."OLE" IS retval VARCHAR2(40); BEGIN retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) DBMS_OUTPUT.PUT_LINE(retval); / CREATE PROCEDURE "RELEASE_MANAGER"."PAOLO_BUILD_TREE" ( nRtag_id IN NUMBER ) IS sessionNumber NUMBER := 0; iteration NUMBER := 1; rowCnt NUMBER := 0; maxIterations NUMBER := 50; BEGIN INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID ) SELECT sessionNumber, iteration, rc.PV_ID FROM RELEASE_CONTENT rc WHERE rc.RTAG_ID = nRtag_id; iteration := iteration + 1; LOOP INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID ) SELECT sessionNumber, iteration, dep.DPV_ID FROM TEMP_TREE_BROWSE ttb, PACKAGE_DEPENDENCIES dep WHERE dep.PV_ID = ttb.PV_ID AND ttb.LEVEL_NUM = iteration - 1 MINUS SELECT sessionNumber, iteration, ttb.PV_ID FROM TEMP_TREE_BROWSE ttb; rowCnt := SQL%ROWCOUNT; IF rowCnt > 0 THEN iteration := iteration + 1; END IF; EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations); END LOOP; END PAOLO_Build_Tree; / CREATE PROCEDURE "RELEASE_MANAGER"."PENDING_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE, nUserId IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 4.0 --------------------------------------------------------------------------- */ BEGIN -- Lock Package UPDATE PACKAGE_VERSIONS pv SET pv.DLOCKED = 'A' WHERE pv.PV_ID = nPvId; /* LOG ACTION */ Log_Action ( nPvId, 'lock_package', nUserId ); END Pending_Package; / CREATE PROCEDURE "RELEASE_MANAGER"."REBUILD_ENVIRONMENT" ( NNrtag_id IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.3 --------------------------------------------------------------------------- */ rowCnt NUMBER := 0; iteration NUMBER := 2; -- Iterations counter maxIterations NUMBER := 50; -- Maximum number of iterations allowed. -- This will prevent infinite loops if cyrcular dependencies are found sessionNum NUMBER; BEGIN SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL; -- Redo Patch Ignore warnings Ignore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE ); Level_One_Conflicts ( NNrtag_id, sessionNum ); LOOP Level_N_Conflicts ( NNrtag_id, sessionNum, rowCnt, iteration ); iteration := iteration + 1; EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations); END LOOP; Update_Package_States ( NNrtag_id, sessionNum ); DELETE FROM temp_env_states WHERE temp_env_states.session_num = sessionNum; -- Flag Packages with New Patches Available Check_New_Patches ( NNrtag_id ); Clean_Do_Not_Ripple( NNrtag_id ); /* Circular Dependency Flag */ /* IF iteration > maxIterations THEN UPDATE release_tags SET circular_dependency = 'Y' WHERE rtag_id = NNrtag_id; ELSE UPDATE release_tags SET circular_dependency = NULL WHERE rtag_id = NNrtag_id; END IF; */ END Rebuild_Environment; / CREATE PROCEDURE "RELEASE_MANAGER"."RELEASE_MANAGER_MAILOUT" ( sender IN VARCHAR2, recipient IN VARCHAR2, ccrecipient IN VARCHAR2, subject IN VARCHAR2, message IN VARCHAR2 ) IS crlf VARCHAR2(2):= UTL_TCP.CRLF; connection utl_smtp.connection; mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com'; header VARCHAR2(1000); BEGIN -- -- Start the connection. -- connection := utl_smtp.open_connection(mailhost,25); header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf|| 'From: '||sender||''||crlf|| 'Subject: '||subject||crlf|| 'To: '||recipient||crlf|| 'CC: '||ccrecipient; -- -- Handshake with the SMTP server -- utl_smtp.helo(connection, mailhost); utl_smtp.mail(connection, sender); utl_smtp.rcpt(connection, recipient); utl_smtp.rcpt(connection, ccrecipient); utl_smtp.open_data(connection); -- -- Write the header -- utl_smtp.write_data(connection, header); -- -- The crlf is required to distinguish that what comes next is not simply part of the header.. -- utl_smtp.write_data(connection, crlf ||message); utl_smtp.close_data(connection); utl_smtp.quit(connection); EXCEPTION WHEN UTL_SMTP.INVALID_OPERATION THEN dbms_output.put_line(' Invalid Operation in SMTP transaction.'); WHEN UTL_SMTP.TRANSIENT_ERROR THEN dbms_output.put_line(' Temporary problems with sending email - try again later.'); WHEN UTL_SMTP.PERMANENT_ERROR THEN dbms_output.put_line(' Errors in code for SMTP transaction.'); END RELEASE_MANAGER_MAILOUT; / CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_COMPONENTS" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ BEGIN --- Delete From RELEASE_COMPONENTS DELETE FROM RELEASE_COMPONENTS WHERE PV_ID = nPvId; END Remove_Components; / CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_DOCUMENT" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE, nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE, nUserId IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0 --------------------------------------------------------------------------- */ DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE; BEGIN -- Get Doc Num SELECT pd.DOC_NUM INTO DocNumber FROM PACKAGE_DOCUMENTS pd WHERE pd.PV_ID = nPvId AND pd.DOC_ID = nDocId; -- Delete Document DELETE FROM PACKAGE_DOCUMENTS pd WHERE pd.PV_ID = nPvId AND pd.DOC_ID = nDocId; /* LOG ACTION */ Log_Action ( nPvId, 'document_remove', nUserId, 'Document number: '|| DocNumber ); END Remove_Document; / CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE, nPkgId IN PACKAGES.PKG_ID%TYPE, nUserId IN NUMBER ) IS /****************************************************************************** NAME: REMOVE_PACKAGE_INTEREST PURPOSE: To remove interest in a given package per project REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 12/05/2006 Rupesh Solanki 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: REMOVE_PACKAGE_INTEREST Sysdate: 12/05/2006 Date and Time: 12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ BEGIN --Delete from PACKAGE_INTEREST DELETE FROM PACKAGE_INTEREST WHERE PROJ_ID = nProjId AND PKG_ID = nPkgId AND USER_ID = nUserId; END REMOVE_PACKAGE_INTEREST; / CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_PATCH" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE, nPvId IN PACKAGE_PATCHES.PV_ID%TYPE, nUserId IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 4.0 --------------------------------------------------------------------------- */ PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE; CURSOR curPatch IS SELECT pp.PV_ID, pp.PATCH_ID, ROWNUM AS NEW_INSTALL_ORDER FROM PACKAGE_PATCHES pp WHERE pp.PV_ID = nPvId ORDER BY pp.INSTALL_ORDER; recPatch curPatch%ROWTYPE; BEGIN -- Delete Patch DELETE FROM PACKAGE_PATCHES pp WHERE pp.PV_ID = nPvId AND pp.PATCH_ID = nPatchId; -- Redo Install Order OPEN curPatch; FETCH curPatch INTO recPatch; WHILE curPatch%FOUND LOOP UPDATE PACKAGE_PATCHES pp SET pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER WHERE pp.PV_ID = nPvId AND pp.PATCH_ID = recPatch.PATCH_ID; FETCH curPatch INTO recPatch; END LOOP; CLOSE curPatch; /* LOG ACTION */ SELECT pv.PKG_VERSION INTO PatchVersion FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = nPatchId; Log_Action ( nPvId, 'patch_remove', nUserId, 'Version: '|| PatchVersion ); END Remove_Patch; / CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_PROJECT_VIEW_OWNER" (nProjId IN NUMBER, nViewId IN NUMBER, sUserIdList IN VARCHAR2, nUserId IN NUMBER ) IS GroupId NUMBER; /****************************************************************************** NAME: UPDATE_VIEW PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 10/04/2006 Rupesh Solanki 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: UPDATE_VIEW Sysdate: 10/04/2006 Date and Time: 10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ BEGIN SELECT GROUP_EMAIL_ID into GroupId FROM AUTOBUILD_FAILURE WHERE PROJ_ID = nProjId AND VIEW_ID = nViewId; DELETE FROM MEMBERS_GROUP WHERE GROUP_EMAIL_ID = GroupId AND USER_ID IN ( SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) ); END REMOVE_PROJECT_VIEW_OWNER; / CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_RELEASE_CONTENT" ( sPvIdList IN VARCHAR2, sNotPvIdList IN VARCHAR2, nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS /* --------------------------------------------------------------------------- Version: 3.0 --------------------------------------------------------------------------- */ oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); oNotPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); BEGIN oPvIdCollector := IN_LIST_NUMBER ( sPvIdList ); oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList ); -- Delete From Release Content DELETE FROM RELEASE_CONTENT WHERE rtag_id = nRTagId AND pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) ) AND NOT pv_id IN ( SELECT * FROM TABLE ( CAST ( oNotPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) ); END Remove_Release_Content; / CREATE PROCEDURE "RELEASE_MANAGER"."REMOVE_RUNTIME" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE, nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE, nUserId IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0 --------------------------------------------------------------------------- */ RuntimeDependency VARCHAR2(4000); BEGIN -- Get Runtime dependency SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION INTO RuntimeDependency FROM RUNTIME_DEPENDENCIES rtd, PACKAGES pkg, PACKAGE_VERSIONS pv WHERE rtd.PV_ID = nPvId AND pv.PKG_ID = pkg.PKG_ID AND rtd.RTD_ID = pv.PV_ID AND rtd.RTD_ID = nRuntimeId; -- Delete Document DELETE FROM RUNTIME_DEPENDENCIES rtd WHERE rtd.PV_ID = nPvId AND rtd.RTD_ID = nRuntimeId; /* LOG ACTION */ Log_Action ( nPvId, 'runtime_remove', nUserId, 'Runtime package: '|| RuntimeDependency ); END Remove_Runtime; / CREATE PROCEDURE "RELEASE_MANAGER"."RENAME_PACKAGE_VERSION" ( NNpv_id IN NUMBER, SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE, cBuildType IN CHAR, NNuser_id IN NUMBER, errMessage OUT VARCHAR2 ) IS /* --------------------------------------------------------------------------- Version: 3.2 --------------------------------------------------------------------------- */ sPackageVersion VARCHAR2(4000); sLabel VARCHAR2(4000) := NULL; OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE; SSV_MM PACKAGE_VERSIONS.V_MM%TYPE; SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE; SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE; CURSOR package_versions_cur IS SELECT pv_id FROM package_versions WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id ) AND pkg_version = SSpkg_version; package_versions_rec package_versions_cur%ROWTYPE; BEGIN /* ---------------------------------------------------- */ /* Find if package_version exists */ /* ---------------------------------------------------- */ errMessage := NULL; -- Get previous version SELECT pv.PKG_VERSION INTO OldPkgVersion FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = NNpv_id; sPackageVersion := SSpkg_version; IF OldPkgVersion != sPackageVersion THEN OPEN package_versions_cur; FETCH package_versions_cur INTO package_versions_rec; IF package_versions_cur%NOTFOUND THEN -- Split current version in parts Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT ); -- Automated built config IF (cBuildType = 'A') THEN sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT; -- Make sure that version is still unique END IF; -- Packge version not found, hence rename it. UPDATE package_versions SET pkg_version = sPackageVersion, v_mm = SSV_MM, v_nmm = SSV_NMM, v_ext = SSV_EXT, modified_stamp = ORA_SYSDATETIME, modifier_id = NNuser_id, build_type = cBuildType, pkg_label = NULL WHERE pv_id = NNpv_id; IF (cBuildType = 'A') THEN sLabel := GET_AUTOMATED_LABEL( NNpv_id ); UPDATE PACKAGE_VERSIONS pv SET pv.PKG_LABEL = sLabel WHERE pv_id = NNpv_id; END IF; /* LOG ACTION */ Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| SSpkg_version ); ELSE -- Package version exists. Cannot proceed. errMessage := 'enum_MSG_VERSION_EXISTS'; END IF; CLOSE package_versions_cur; END IF; END Rename_Package_Version; / CREATE PROCEDURE "RELEASE_MANAGER"."RESET_IGNORE_WARNINGS" ( sPvIdList IN VARCHAR2, nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS /* --------------------------------------------------------------------------- Version: 5.0 --------------------------------------------------------------------------- */ oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); BEGIN oPvIdCollector := IN_LIST_NUMBER ( sPvIdList ); -- Remove Ignore Warnings DELETE FROM ignore_warnings WHERE (rtag_id, pv_id, dpv_id) IN ( SELECT igw.rtag_id, igw.pv_id, igw.dpv_id FROM ignore_warnings igw, package_versions dpv, package_versions pv WHERE igw.dpv_id = dpv.pv_id AND igw.rtag_id = nRTagId AND dpv.pkg_id = pv.pkg_id AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|') AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) ) ); END Reset_Ignore_Warnings; / CREATE PROCEDURE "RELEASE_MANAGER"."RIPPLE_PACKAGE" ( sPvIdList IN VARCHAR2, nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE, nUserId IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 4.1 --------------------------------------------------------------------------- */ BEGIN IF (sPvIdList IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' ); END IF; -- Ripple Package DELETE FROM DO_NOT_RIPPLE WHERE RTAG_ID = nRtagId AND PV_ID IN ( SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sPvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM DUAL ) ); /* LOG ACTION */ Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId ); END Ripple_Package; / CREATE PROCEDURE "RELEASE_MANAGER"."SEED_PACKAGE_NAMES_VERSIONS" ( SSpkg_name IN PACKAGES.pkg_name%TYPE, SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE, NNuser_id IN NUMBER, retPV_ID OUT NUMBER, nCloneFromPvId IN NUMBER DEFAULT NULL ) IS /* --------------------------------------------------------------------------- Version: 4.0 --------------------------------------------------------------------------- */ parPkg_id NUMBER; parPv_id NUMBER; cloneFrom_pv_id NUMBER; SSV_MM PACKAGE_VERSIONS.V_MM%TYPE; SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE; SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE; CURSOR packages_cur IS SELECT pkg_id FROM PACKAGES WHERE pkg_name = SSpkg_name; packages_rec packages_cur%ROWTYPE; CURSOR package_versions_cur IS SELECT pv_id FROM PACKAGE_VERSIONS WHERE pkg_id = parPkg_id AND pkg_version = SSpkg_version; package_versions_rec package_versions_cur%ROWTYPE; CURSOR clone_package_versions_cur IS SELECT MAX(pv_id) AS pv_id FROM PACKAGE_VERSIONS WHERE pkg_id = parPkg_id AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL'); clone_package_versions_rec clone_package_versions_cur%ROWTYPE; BEGIN /* -------------------------------------------- */ /* Find if pkg_name exists and seed if required */ /* -------------------------------------------- */ OPEN packages_cur; FETCH packages_cur INTO packages_rec; IF packages_cur%NOTFOUND THEN /* INSERT into packages table */ SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL; INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name ); ELSE parPkg_id := packages_rec.pkg_id; END IF; CLOSE packages_cur; /* ---------------------------------------------------- */ /* Find if package_version exists and seed if required */ /* ---------------------------------------------------- */ OPEN package_versions_cur; FETCH package_versions_cur INTO package_versions_rec; IF package_versions_cur%NOTFOUND THEN SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL; /* LOG ACTION */ Log_Action ( parPv_id, 'new_version', NNuser_id, 'New package version: '|| SSpkg_version ); Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT ); /* Find similar pkg_name + ext to clone from */ OPEN clone_package_versions_cur; FETCH clone_package_versions_cur INTO clone_package_versions_rec; IF NOT clone_package_versions_rec.pv_id IS NULL THEN /* CLONE details from similar version OR from nCloneFromPvId */ IF ( NOT nCloneFromPvId IS NULL) THEN cloneFrom_pv_id := nCloneFromPvId; ELSE cloneFrom_pv_id := clone_package_versions_rec.pv_id; END IF; -- Clone Package Version Details -- INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT, src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable, ripple_field ) SELECT parPv_id AS pv_id, parPkg_id AS pkg_id, SSpkg_version AS pkg_version, 'N' AS dlocked, Ora_Sysdate AS created_stamp, NNuser_id AS creator_id, Ora_Sysdatetime AS modified_stamp, NNuser_id AS modifier_id, SSV_MM AS V_MM, SSV_NMM AS V_NMM, SSV_EXT AS V_EXT, pv.src_path, pv.pv_description, pv.PV_OVERVIEW, cloneFrom_pv_id AS LAST_PV_ID, pv.owner_id, pv.BUILD_TYPE, pv.IS_BUILD_ENV_REQUIRED, pv.BS_ID, pv.is_autobuildable, pv.IS_DEPLOYABLE, pv.ripple_field FROM PACKAGE_VERSIONS pv WHERE pv.pv_id = cloneFrom_pv_id; Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 ); ELSE /* BRAND NEW version + ext */ INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT, owner_id, LAST_PV_ID, BUILD_TYPE, ripple_field ) VALUES ( parPv_id, parPkg_id, SSpkg_version, 'N', Ora_Sysdate, NNuser_id, Ora_Sysdatetime, NNuser_id, SSV_MM, SSV_NMM, SSV_EXT, NNuser_id, parPv_id, 'M', 'b' ); END IF; CLOSE clone_package_versions_cur; retPV_ID := parPv_id; ELSE retPV_ID := package_versions_rec.pv_id; END IF; CLOSE package_versions_cur; END Seed_Package_Names_Versions; / CREATE PROCEDURE "RELEASE_MANAGER"."SEED_PACKAGE_NAMES_VERSIONS2" ( SSpkg_name IN PACKAGES.pkg_name%TYPE, SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE, NNuser_id IN NUMBER, retPV_ID OUT NUMBER, nCloneFromPvId IN NUMBER DEFAULT NULL ) IS /* --------------------------------------------------------------------------- Version: 4.0 --------------------------------------------------------------------------- */ parPkg_id NUMBER; parPv_id NUMBER; cloneFrom_pv_id NUMBER; SSV_MM PACKAGE_VERSIONS.V_MM%TYPE; SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE; SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE; CURSOR packages_cur IS SELECT pkg_id FROM PACKAGES WHERE pkg_name = SSpkg_name; packages_rec packages_cur%ROWTYPE; CURSOR package_versions_cur IS SELECT pv_id FROM PACKAGE_VERSIONS WHERE pkg_id = parPkg_id AND pkg_version = SSpkg_version; package_versions_rec package_versions_cur%ROWTYPE; CURSOR clone_package_versions_cur IS SELECT MAX(pv_id) AS pv_id FROM PACKAGE_VERSIONS WHERE pkg_id = parPkg_id AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL'); clone_package_versions_rec clone_package_versions_cur%ROWTYPE; BEGIN /* -------------------------------------------- */ /* Find if pkg_name exists and seed if required */ /* -------------------------------------------- */ OPEN packages_cur; FETCH packages_cur INTO packages_rec; IF packages_cur%NOTFOUND THEN /* INSERT into packages table */ SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL; INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name ); ELSE parPkg_id := packages_rec.pkg_id; END IF; CLOSE packages_cur; /* ---------------------------------------------------- */ /* Find if package_version exists and seed if required */ /* ---------------------------------------------------- */ OPEN package_versions_cur; FETCH package_versions_cur INTO package_versions_rec; IF package_versions_cur%NOTFOUND THEN SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL; /* LOG ACTION */ Log_Action ( parPv_id, 'new_version', NNuser_id, 'New package version: '|| SSpkg_version ); Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT ); /* CLONE details from similar version OR from nCloneFromPvId */ IF ( NOT nCloneFromPvId IS NULL) THEN cloneFrom_pv_id := nCloneFromPvId; ELSE cloneFrom_pv_id := clone_package_versions_rec.pv_id; END IF; -- Clone Package Version Details -- INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT, src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable, ripple_field ) SELECT parPv_id AS pv_id, parPkg_id AS pkg_id, SSpkg_version AS pkg_version, 'N' AS dlocked, Ora_Sysdate AS created_stamp, NNuser_id AS creator_id, Ora_Sysdatetime AS modified_stamp, NNuser_id AS modifier_id, SSV_MM AS V_MM, SSV_NMM AS V_NMM, SSV_EXT AS V_EXT, pv.src_path, pv.pv_description, pv.PV_OVERVIEW, cloneFrom_pv_id AS LAST_PV_ID, pv.owner_id, pv.BUILD_TYPE, pv.IS_BUILD_ENV_REQUIRED, pv.bs_id, pv.is_autobuildable, pv.IS_DEPLOYABLE, pv.ripple_field FROM PACKAGE_VERSIONS pv WHERE pv.pv_id = cloneFrom_pv_id; Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 ); retPV_ID := parPv_id; ELSE retPV_ID := package_versions_rec.pv_id; END IF; CLOSE package_versions_cur; END Seed_Package_Names_Versions2; / CREATE PROCEDURE "RELEASE_MANAGER"."SET_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE, nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE, nUserId IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 4.0 --------------------------------------------------------------------------- */ BEGIN -- Set Advisory Ripple Package INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID) VALUES (nRtagId, nPvId); /* LOG ACTION */ Log_Action ( nPvId, 'set_advisory_ripple', nUserId ); /*Rebuild_Environment(nRtagId);*/ END Set_Advisory_Ripple; / CREATE PROCEDURE "RELEASE_MANAGER"."SET_PACKAGE_BUILD_ENV" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE, sBuildEnvIdList IN VARCHAR2 ) IS /* --------------------------------------------------------------------------- Last Modified: Rupesh Solanki Version: 3.0.1 --------------------------------------------------------------------------- */ BEGIN -- Delete Current Build Env settings DELETE FROM PACKAGE_BUILD_ENV WHERE pv_id = nPvId; -- Delet Current Package Build Info Settings DELETE FROM PACKAGE_BUILD_INFO WHERE pv_id = nPvId; -- Reset flag to N UPDATE PACKAGE_VERSIONS SET IS_BUILD_ENV_REQUIRED = 'N' WHERE PV_ID = nPvId; -- Set new Build Env IF NOT sBuildEnvIdList IS NULL THEN -- Insert into PACKAGE_BUILD_ENV INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID ) SELECT nPvId AS PV_ID, be.BE_ID FROM BUILD_ENVIRONMENTS be WHERE be.BE_ID IN ( SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) ); -- Insert into PACKAGE_BUILD_INFO INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID ) SELECT nPvId AS PV_ID, be.BM_ID FROM BUILD_MACHINES be WHERE be.BM_ID IN ( SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) ); -- Set flag to Y UPDATE PACKAGE_VERSIONS SET IS_BUILD_ENV_REQUIRED = 'Y' WHERE PV_ID = nPvId; END IF; END Set_Package_Build_Env; / CREATE PROCEDURE "RELEASE_MANAGER"."SET_PACKAGE_BUILD_ENV_TEMP" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE, sBuildEnvIdList IN VARCHAR2, nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE ) IS /* --------------------------------------------------------------------------- Last Modified: Rupesh Solanki Version: 3.0.1 --------------------------------------------------------------------------- */ nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); BsId NUMBER; HackBsId NUMBER; BEGIN nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList ); -- Delete Current Build Env settings DELETE FROM PACKAGE_BUILD_ENV WHERE pv_id = nPvId; -- Delet Current Package Build Info Settings DELETE FROM PACKAGE_BUILD_INFO WHERE pv_id = nPvId; -- Reset flag to N UPDATE PACKAGE_VERSIONS SET IS_BUILD_ENV_REQUIRED = 'N' WHERE PV_ID = nPvId; -- Set new Build Env IF NOT sBuildEnvIdList IS NULL THEN FOR i IN 1..nBsCollector.COUNT LOOP BsId := nBsCollector(i); IF nBuildStandard = 2 THEN IF BsId = 1 THEN HackBsId := 11; ELSE HackBsId := 12; END IF; -- Insert into PACKAGE_BUILD_ENV INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID ) SELECT nPvId AS PV_ID, be.BE_ID FROM BUILD_ENVIRONMENTS be WHERE be.BE_ID IN ( HackBsId ); -- Insert into PACKAGE_BUILD_INFO INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID ) SELECT nPvId AS PV_ID, be.BM_ID FROM BUILD_MACHINES be WHERE be.BM_ID IN ( BsId ); -- Set flag to Y UPDATE PACKAGE_VERSIONS SET IS_BUILD_ENV_REQUIRED = 'Y' WHERE PV_ID = nPvId; ELSE -- Insert into PACKAGE_BUILD_ENV INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID ) SELECT nPvId AS PV_ID, be.BE_ID FROM BUILD_ENVIRONMENTS be WHERE be.BE_ID IN ( BsId ); -- Insert into PACKAGE_BUILD_INFO INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID ) SELECT nPvId AS PV_ID, be.BM_ID FROM BUILD_MACHINES be WHERE be.BM_ID IN ( BsId ); -- Set flag to Y UPDATE PACKAGE_VERSIONS SET IS_BUILD_ENV_REQUIRED = 'Y' WHERE PV_ID = nPvId; END IF; END LOOP; END IF; END Set_Package_Build_Env_Temp; / CREATE PROCEDURE "RELEASE_MANAGER"."SET_TO_AUTOBUILDABLE" ( nrtagid IN NUMBER, spvidlist IN VARCHAR2 ) IS /****************************************************************************** NAME: SET_TO_AUTOBUILDABLE PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 15/12/2006 Rupesh Solanki 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: SET_TO_AUTOBUILDABLE Sysdate: 15/12/2006 Date and Time: 15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ npvidcollector relmgr_number_tab_t := relmgr_number_tab_t (); PvId NUMBER; BEGIN npvidcollector := in_list_number2 (spvidlist); UPDATE package_versions SET is_autobuildable = 'N' WHERE pv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nrtagid); FOR i IN 1..npvidcollector.COUNT LOOP PvId := npvidcollector(i); UPDATE package_versions set is_autobuildable = 'Y' where pv_id = PvId; END LOOP; END set_to_autobuildable; / CREATE PROCEDURE "RELEASE_MANAGER"."SHIFT_INSTALL_ORDER" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE, nPvId IN PACKAGE_PATCHES.PV_ID%TYPE, nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS /* --------------------------------------------------------------------------- Version: 3.0 --------------------------------------------------------------------------- */ currInstallOrder NUMBER; FromInstallOrder NUMBER; BEGIN -- Get Current Install Order SELECT pp.INSTALL_ORDER INTO currInstallOrder FROM PACKAGE_PATCHES pp WHERE pp.PV_ID = nPvId AND pp.PATCH_ID = nPatchId; IF currInstallOrder > nToInstallOrder THEN FromInstallOrder := nToInstallOrder; -- Shift others Up UPDATE PACKAGE_PATCHES pp SET pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1 WHERE pp.PV_ID = nPvId AND pp.PATCH_ID != nPatchId AND pp.INSTALL_ORDER BETWEEN FromInstallOrder AND currInstallOrder - 1; ELSIF currInstallOrder < nToInstallOrder THEN FromInstallOrder := currInstallOrder + 1; -- Shift others Down UPDATE PACKAGE_PATCHES pp SET pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1 WHERE pp.PV_ID = nPvId AND pp.PATCH_ID != nPatchId AND pp.INSTALL_ORDER BETWEEN FromInstallOrder AND nToInstallOrder; END IF; -- Move Patch to new install order UPDATE PACKAGE_PATCHES pp SET pp.INSTALL_ORDER = nToInstallOrder WHERE pp.PV_ID = nPvId AND pp.PATCH_ID = nPatchId; END Shift_Install_Order; / CREATE PROCEDURE "RELEASE_MANAGER"."SPLIT_VERSION" ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE, SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE, SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE, SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE ) IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER; version_components VERSION_COMPONENTS_TYPE; lastDot NUMBER := 0; currDot NUMBER := 0; BEGIN currDot := INSTR ( SSpkg_version, '.', -1 ); -- Find 1st dot from the right IF ( currDot > 0 ) THEN -- YES dot separator found -- SSV_EXT := GET_V_EXT( SSpkg_version ); IF NOT SSV_EXT IS NULL THEN lastDot := currDot; currDot := INSTR ( SSpkg_version, '.', -1, 2 ); -- Find 2nd dot from the right IF ( currDot > 0 ) THEN -- XXXX.M.E SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1); SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT; ELSE -- XXXX.E SSV_MM := NULL; SSV_NMM := SSpkg_version; END IF; ELSE -- XXXX.M SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot ); SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ); END IF; ELSE -- NO dot separator found -- -- XXXXXX SSV_MM := NULL; SSV_NMM := SSpkg_version; SSV_EXT := NULL; END IF; END Split_Version; / CREATE PROCEDURE "RELEASE_MANAGER"."SWITCH_REPRODUCIBLE_PACKAGE" (nPvId IN NUMBER, nUserId IN NUMBER)IS Auto CHAR; /****************************************************************************** NAME: SWITCH_REPRODUCIBLE_PACKAGE PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 14/12/2006 Rupesh Solanki 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: SWITCH_REPRODUCIBLE_PACKAGE Sysdate: 14/12/2006 Date and Time: 14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ BEGIN SELECT IS_AUTOBUILDABLE into Auto FROM PACKAGE_VERSIONS WHERE PV_ID = nPvId; IF Auto = 'N' Then UPDATE PACKAGE_VERSIONS SET IS_AUTOBUILDABLE = 'Y' WHERE PV_ID = nPvId; /* LOG ACTION */ Log_Action ( nPvId, 'reproducible_package', nUserId ); Else UPDATE PACKAGE_VERSIONS SET IS_AUTOBUILDABLE = 'N' WHERE PV_ID = nPvId; /* LOG ACTION */ Log_Action ( nPvId, 'unreproducible_package', nUserId ); End If; END SWITCH_REPRODUCIBLE_PACKAGE; / CREATE PROCEDURE "RELEASE_MANAGER"."SYNC_PROJECTS_NEW_VERSION" ( nPv_id IN NUMBER, sSyncRtagsInList IN VARCHAR2, nUser_id IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ CURSOR sync_rtags_cur IS SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id FROM release_content rc, package_versions pv, package_versions opv WHERE rc.pv_id = pv.pv_id AND opv.pkg_id = pv.pkg_id AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|') AND opv.pv_id = nPv_id AND rtag_id IN ( SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) ); sync_rtags_rec sync_rtags_cur%ROWTYPE; BEGIN OPEN sync_rtags_cur; FETCH sync_rtags_cur INTO sync_rtags_rec; WHILE sync_rtags_cur%FOUND LOOP DELETE FROM RELEASE_CONTENT WHERE rtag_id = sync_rtags_rec.rtag_id AND pv_id = sync_rtags_rec.pv_id; INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE ) VALUES ( sync_rtags_rec.rtag_id, nPv_id, sync_rtags_rec.BASE_VIEW_ID, Ora_Sysdate, nUser_id, 0 ); -- UPDATE RELEASE_CONTENT -- SET pv_id = nPv_id, -- insert_stamp = Ora_Sysdate, -- insertor_id = nUser_id -- WHERE rtag_id = sync_rtags_rec.rtag_id -- AND pv_id = sync_rtags_rec.pv_id; FETCH sync_rtags_cur INTO sync_rtags_rec; END LOOP; CLOSE sync_rtags_cur; END Sync_Projects_New_Version; / CREATE PROCEDURE "RELEASE_MANAGER"."TEST" IS proc_id NUMBER; /****************************************************************************** NAME: DELETE_DO_NOT_RIPPLE PURPOSE: TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE IS RELEASED REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 21/04/2006 Rupesh Solanki 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: DELETE_DO_NOT_RIPPLE Sysdate: 21/04/2006 Date and Time: 21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ CURSOR ripple_cur IS select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config; ripple_rec ripple_cur%ROWTYPE; BEGIN OPEN ripple_cur; FETCH ripple_cur INTO ripple_rec; WHILE ripple_cur%FOUND LOOP select deployment_manager.seq_proc_id.nextval into proc_id from dual; insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface); FETCH ripple_cur INTO ripple_rec; END LOOP; END test; / CREATE PROCEDURE "RELEASE_MANAGER"."TEST_MARCO" IS /****************************************************************************** NAME: TEST_MARCO PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 2/03/2007 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: TEST_MARCO Sysdate: 2/03/2007 Date and Time: 2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ parPv_id NUMBER; parPkg_id NUMBER; SSV_MM PACKAGE_VERSIONS.V_MM%TYPE; SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE; SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE; BEGIN SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL; /* LOG ACTION */ Log_Action ( parPv_id, 'new_version', 3764, 'New package version: '|| parPv_id || '.' ); Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT ); -- Clone Package Version Details -- INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT, src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable ) SELECT parPv_id AS pv_id, pv.pkg_id AS pkg_id, parPv_id || '.' AS pkg_version, 'N' AS dlocked, Ora_Sysdate AS created_stamp, 3764 AS creator_id, Ora_Sysdatetime AS modified_stamp, 3764 AS modifier_id, SSV_MM AS V_MM, SSV_NMM AS V_NMM, SSV_EXT AS V_EXT, pv.src_path, pv.pv_description, pv.PV_OVERVIEW, 112982 AS LAST_PV_ID, pv.owner_id, pv.BUILD_TYPE, pv.IS_BUILD_ENV_REQUIRED, pv.bs_id, pv.is_autobuildable, pv.IS_DEPLOYABLE FROM PACKAGE_VERSIONS pv WHERE pv.pv_id = 112982; Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 ); END TEST_MARCO; / CREATE PROCEDURE "RELEASE_MANAGER"."TOUCH_RELEASE" ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS /* --------------------------------------------------------------------------- Version: 3.0 --------------------------------------------------------------------------- */ BEGIN -- Touch Release for Rebuild UPDATE RELEASE_TAGS rt SET rt.REBUILD_ENV = 'Y', rt.REBUILD_STAMP = 0 WHERE rt.RTAG_ID = nRtagId; COMMIT; END Touch_Release; / CREATE PROCEDURE "RELEASE_MANAGER"."TOUCH_RELEASE_BULK" ( nRtagIdList IN VARCHAR2 ) IS /* --------------------------------------------------------------------------- Version: 3.0 --------------------------------------------------------------------------- */ oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); BEGIN oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList ); -- Touch Release for Rebuild UPDATE RELEASE_TAGS rt SET rt.REBUILD_ENV = 'Y', rt.REBUILD_STAMP = 0 WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) ); END Touch_Release_Bulk; / CREATE PROCEDURE "RELEASE_MANAGER"."TO_INSERT_VTREE_ID" IS /****************************************************************************** NAME: TO_INSERT_VTREE_ID PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 2/02/2007 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: TO_INSERT_VTREE_ID Sysdate: 2/02/2007 Date and Time: 2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ VTreeId NUMBER; CURSOR curInfo IS SELECT RTAG_ID FROM RELEASE_TAGS WHERE VTREE_ID IS NULL; recInfo curInfo%ROWTYPE; BEGIN OPEN curInfo; FETCH curInfo INTO recInfo; WHILE curInfo%FOUND LOOP SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL; UPDATE RELEASE_TAGS SET VTREE_ID = VTreeId WHERE RTAG_ID = recInfo.RTAG_ID; FETCH curInfo INTO recInfo; END LOOP; CLOSE curInfo; END TO_INSERT_VTREE_ID; / CREATE PROCEDURE "RELEASE_MANAGER"."UNDEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE, nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE, nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE, nUserId IN NUMBER) IS ext VARCHAR2(50); PvIdList VARCHAR2(32767); nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); PvId NUMBER; sComments VARCHAR2(32767); BEGIN --Extract the package extension SELECT V_EXT into ext FROM PACKAGE_VERSIONS WHERE PV_ID = nPvId; --SELECT COMMENTS into sComments --FROM DEPRECATED_PACKAGES --WHERE RTAG_ID = nRtagId --AND V_EXT = ext --AND PKG_ID = nPkgId; --SELECT PV_ID into PvIdList FROM --RELEASE_CONTENT WHERE RTAG_ID = nRtagId --AND PKG_STATE = 6 --AND PV_ID NOT IN nPvId; IF ext IS NOT NULL THEN -- Undeprecate Package DELETE FROM DEPRECATED_PACKAGES WHERE RTAG_ID = nRtagId AND PKG_ID = nPkgId AND V_EXT = ext; UPDATE RELEASE_CONTENT SET PKG_ID = NULL, DEPRECATED_STATE = NULL WHERE RTAG_ID = nRtagId AND PV_ID IN (SELECT PV.PV_ID FROM PACKAGE_VERSIONS PV, PACKAGES PKG WHERE PKG.PKG_ID = PV.PKG_ID AND PKG.PKG_ID = nPkgId AND PV.V_EXT = ext UNION SELECT DISTINCT qry.PV_ID FROM ( SELECT dep.*, LEVEL AS LEVEL_NUM FROM PACKAGE_DEPENDENCIES dep START WITH dep.DPV_ID IN ( nPvId ) --AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 ) CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID ) qry, PACKAGES pkg, PACKAGE_VERSIONS pv, RELEASE_CONTENT rc WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID ); ELSE -- Undeprecate Package DELETE FROM DEPRECATED_PACKAGES WHERE RTAG_ID = nRtagId AND PKG_ID = nPkgId AND V_EXT IS NULL; UPDATE RELEASE_CONTENT SET PKG_ID = NULL, DEPRECATED_STATE = NULL WHERE RTAG_ID = nRtagId AND PV_ID IN (SELECT PV.PV_ID FROM PACKAGE_VERSIONS PV, PACKAGES PKG WHERE PKG.PKG_ID = PV.PKG_ID AND PKG.PKG_ID = nPkgId AND PV.V_EXT IS NULL UNION SELECT DISTINCT qry.PV_ID FROM ( SELECT dep.*, LEVEL AS LEVEL_NUM FROM PACKAGE_DEPENDENCIES dep START WITH dep.DPV_ID IN ( nPvId ) --AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 ) CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID ) qry, PACKAGES pkg, PACKAGE_VERSIONS pv, RELEASE_CONTENT rc WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID ); END IF; --IF PvIdList IS NOT NULL THEN -- nIdCollector := IN_LIST_NUMBER ( PvIdList ); -- FOR i IN 1..nIdCollector.COUNT -- LOOP -- PvId := nIdCollector(i); -- Deprecate_Package (nPvId, nRtagId, nPkgId, sComments, nUserId ); -- END LOOP; --END IF; Rebuild_environment(nRtagId); END Undeprecate_Package; / CREATE PROCEDURE "RELEASE_MANAGER"."UNLOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE, nUserId IN NUMBER ) IS /* --------------------------------------------------------------------------- Author: Rupesh Solanki Version: 4.0 --------------------------------------------------------------------------- */ STATE CHAR; BEGIN SELECT DLOCKED INTO STATE FROM PACKAGE_VERSIONS WHERE PV_ID = nPvId; IF STATE = 'A' THEN --It was made official for autobuilds -- Unlock Package UPDATE PACKAGE_VERSIONS pv SET pv.DLOCKED = 'P' WHERE pv.PV_ID = nPvId; ELSE -- Unlock Package UPDATE PACKAGE_VERSIONS pv SET pv.DLOCKED = 'N' WHERE pv.PV_ID = nPvId; END IF; /* LOG ACTION */ Log_Action ( nPvId, 'unlock_package', nUserId ); END Unlock_Package; / CREATE PROCEDURE "RELEASE_MANAGER"."UNRIPPLE_PACKAGE" ( sPvIdList IN VARCHAR2, nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE, nUserId IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 4.1 --------------------------------------------------------------------------- */ oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); BEGIN IF (sPvIdList IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' ); END IF; oPvIdCollector := IN_LIST_NUMBER ( sPvIdList ); -- UnRipple Package INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID ) SELECT nRtagId, pv.PV_ID FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) ); /* LOG ACTION */ Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId ); END UnRipple_Package; / CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_ADDITIONAL_NOTE" ( pnNote_id IN NUMBER, pnPv_id IN NUMBER, psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE, psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE, pnUser_id IN NUMBER, outErrCode OUT NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0.1 --------------------------------------------------------------------------- */ newID NUMBER; /* Disallow duplicate Note Titles */ CURSOR an_duplicate_cur IS SELECT COUNT(*) AS cnt_note FROM ADDITIONAL_NOTES WHERE pv_id = pnPv_id AND note_id != pnNote_id AND note_title = psNote_title; an_duplicate_rec an_duplicate_cur%ROWTYPE; BEGIN outErrCode := -1; -- Set default return error code to ERROR state OPEN an_duplicate_cur; FETCH an_duplicate_cur INTO an_duplicate_rec; IF an_duplicate_rec.cnt_note < 1 THEN --- Update Additional Note --- UPDATE ADDITIONAL_NOTES SET note_title = psNote_title, note_body = psNote_body, mod_date = Ora_Sysdate, mod_user = pnUser_id WHERE note_id = pnNote_id AND pv_id = pnPv_id; outErrCode := 0; -- Set return to SUCCESS END IF; CLOSE an_duplicate_cur; END Update_Additional_Note; / CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_DEPRECATION_STATE" (nnrtag_id IN NUMBER) AS recno NUMBER; CURSOR deprecate_cur IS SELECT rc.pv_id FROM release_content rc WHERE rtag_id = nnrtag_id AND deprecated_state IN(7); deprecate_rec deprecate_cur % rowtype; BEGIN OPEN deprecate_cur; FETCH deprecate_cur INTO deprecate_rec; WHILE deprecate_cur % FOUND LOOP SELECT COUNT(*) INTO recno FROM package_dependencies pd, release_content rc WHERE pd.pv_id = deprecate_rec.pv_id AND rc.pv_id = pd.dpv_id AND rc.rtag_id = nnrtag_id AND rc.deprecated_state IN(6, 7); IF recno = 0 THEN UPDATE release_content SET pkg_id = NULL, deprecated_state = NULL WHERE pv_id = deprecate_rec.pv_id AND rtag_id = nnrtag_id; END IF; FETCH deprecate_cur INTO deprecate_rec; END LOOP; END; / CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_MISC_VIEW" IS /****************************************************************************** NAME: UPDATE_MISC_VIEW PURPOSE: REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 16/03/2007 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: UPDATE_MISC_VIEW Sysdate: 16/03/2007 Date and Time: 16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ CURSOR view_cur /*Create a record set to store the ripple data*/ IS SELECT pkg.pkg_id, rc.base_view_id FROM package_versions pv, packages pkg, release_content rc where rc.rtag_id = 2362 and rc.pv_id = pv.pv_id and pv.pkg_id = pkg.pkg_id; view_rec view_cur%ROWTYPE; BEGIN OPEN view_cur; FETCH view_cur INTO view_rec; WHILE view_cur%FOUND LOOP update release_content set base_view_id = view_rec.base_view_id where rtag_id = 8027 and pv_id IN ( select pv.pv_id from release_content rc, package_versions pv where rc.rtag_id = 8027 and pv.pv_id = rc.pv_id and pv.pkg_id = view_rec.pkg_id ); FETCH view_cur INTO view_rec; END LOOP; END UPDATE_MISC_VIEW; / CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_PACKAGE_DEPENDENCY" ( NNpv_id IN NUMBER, SSdep_name IN PACKAGES.pkg_name%TYPE, SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE, CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE, NNuser_id IN NUMBER, NNdelete_old_dependency IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.3 --------------------------------------------------------------------------- */ retPV_ID NUMBER; SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE; DepIsPatch PACKAGE_VERSIONS.is_patch%TYPE; PvIsPatch PACKAGE_VERSIONS.is_patch%TYPE; NNpkg_id NUMBER; NNdpkg_id NUMBER; BEGIN --- Seed database with package_name and version if required --- Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID ); -- get v_ext,pkg_id of current dependency SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch FROM PACKAGE_VERSIONS WHERE pv_id = retPV_ID; -- get pkg_id of parent package SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch FROM PACKAGE_VERSIONS WHERE pv_id = NNpv_id; IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR ( (PvIsPatch IS NOT NULL) )THEN IF NNdelete_old_dependency = 1 THEN /* Used for CUSTOM dependency add/edit */ --- Remove old dependency --- IF (PvIsPatch IS NULL) THEN -- Do it for Packages DELETE FROM PACKAGE_DEPENDENCIES WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN ( SELECT dep.* FROM PACKAGE_DEPENDENCIES dep, PACKAGE_VERSIONS dpv, PACKAGE_VERSIONS pv WHERE dep.dpv_id = dpv.pv_id AND dep.pv_id = NNpv_id AND pv.pv_id = retPV_ID AND dpv.pkg_id = pv.pkg_id AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|') ); ELSE -- Do it for Patches DELETE FROM PACKAGE_DEPENDENCIES WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN ( SELECT dep.* FROM PACKAGE_DEPENDENCIES dep WHERE dep.dpv_id = retPV_ID AND dep.pv_id = NNpv_id ); END IF; END IF; /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */ --- Add new dependency --- INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type ) VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type ); END IF; END Update_Package_Dependency; / CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_PACKAGE_STATES" ( NNrtag_id IN NUMBER, NNsession_num IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ /* ============= STATE RULES =================== */ /* MNR MRR MN MR | pkg_state ------------------------------------ 0 0 0 0 | OK 0 0 0 1 | MAJOR 0 0 1 0 | MINOR 0 0 1 1 | MAJOR ------------------------------------ 0 1 0 0 | MAJOR_READY 0 1 0 1 | MAJOR 0 1 1 0 | MAJOR 0 1 1 1 | MAJOR ------------------------------------ 1 0 0 0 | MINOR_READY 1 0 0 1 | MAJOR 1 0 1 0 | MINOR 1 0 1 1 | MAJOR ------------------------------------ 1 1 0 0 | MAJOR_READY 1 1 0 1 | MAJOR 1 1 1 0 | MAJOR 1 1 1 1 | MAJOR ------------------------------------ */ BEGIN /*---------------------------------------------- || MINOR READY */---------------------------------------------- UPDATE release_content SET pkg_state = 4 WHERE rtag_id = NNrtag_id AND pv_id IN ( SELECT DISTINCT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num = 1 AND tes_state = 2 ); /*---------------------------------------------- || MAJOR READY */---------------------------------------------- UPDATE release_content SET pkg_state = 3 WHERE rtag_id = NNrtag_id AND pv_id IN ( SELECT DISTINCT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num = 1 AND tes_state IN (0,1) ); /*---------------------------------------------- || MINOR */---------------------------------------------- UPDATE release_content SET pkg_state = 2 WHERE rtag_id = NNrtag_id AND pv_id IN ( SELECT DISTINCT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num >= 2 AND tes_state = 2 MINUS SELECT pv_id FROM release_content WHERE rtag_id = NNrtag_id AND pkg_state = 3 ); /*---------------------------------------------- || MAJOR */---------------------------------------------- UPDATE release_content SET pkg_state = 1 WHERE rtag_id = NNrtag_id AND pv_id IN ( SELECT DISTINCT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num >= 2 AND tes_state IN (0,1) /* MAJOR EXCEPTION - When package has Major Ready and Minor */ UNION SELECT DISTINCT tes.pv_id FROM temp_env_states tes, release_content rc WHERE tes.session_num = NNsession_num AND tes.level_num >= 2 AND tes.tes_state = 2 AND rtag_id = NNrtag_id AND rc.pv_id = tes.pv_id AND rc.pkg_state = 3 ); /*---------------------------------------------- || OK */---------------------------------------------- UPDATE release_content SET pkg_state = 0 WHERE rtag_id = NNrtag_id AND pv_id IN ( SELECT rc.pv_id FROM release_content rc WHERE rc.rtag_id = NNrtag_id AND NOT rc.pv_id IN ( SELECT DISTINCT pv_id FROM temp_env_states WHERE session_num = NNsession_num ) ); /*---------------------------------------------- || ADVISORY RIPPLE - NEW STUFF */---------------------------------------------- /* UPDATE release_content SET pkg_state = 8 WHERE rtag_id = NNrtag_id AND pv_id IN ( SELECT DISTINCT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num = 1 AND tes_state = 3 ); */ /*---------------------------------------------- || ADVISORY RIPPLE DEPENDANT */---------------------------------------------- /* UPDATE release_content SET pkg_state = 9 WHERE rtag_id = NNrtag_id AND pv_id IN ( SELECT DISTINCT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num >= 2 AND tes_state = 3 ); */ Update_Deprecation_State (NNrtag_id); END Update_Package_States; / CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_PROCESSES" IS proc_id NUMBER; /****************************************************************************** NAME: DELETE_DO_NOT_RIPPLE PURPOSE: TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE IS RELEASED REVISIONS: Ver Date Author Description --------- ---------- --------------- ------------------------------------ 1.0 21/04/2006 Rupesh Solanki 1. Created this procedure. NOTES: Automatically available Auto Replace Keywords: Object Name: DELETE_DO_NOT_RIPPLE Sysdate: 21/04/2006 Date and Time: 21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM Username: (set in TOAD Options, Procedure Editor) Table Name: (set in the "New PL/SQL Object" dialog) ******************************************************************************/ CURSOR ripple_cur IS select proc_id, proc_name, run_as, pkg_owner, is_interface from processes; ripple_rec ripple_cur%ROWTYPE; BEGIN OPEN ripple_cur; FETCH ripple_cur INTO ripple_rec; WHILE ripple_cur%FOUND LOOP update deployment_manager.processes_config set proc_id = ripple_rec.proc_id where pkg_health_tag = ripple_rec.proc_name and cmd_interface IS NULL and pkg_owner IS NULL and is_interface IS NULL; FETCH ripple_cur INTO ripple_rec; END LOOP; END UPDATE_PROCESSES; / CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_RUNTIME_DEPENDENCY" ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE, NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE, SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE, SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE, SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE, NNuser_id IN NUMBER ) IS /* --------------------------------------------------------------------------- Version: 3.0.1 --------------------------------------------------------------------------- */ retRTD_ID NUMBER; CURSOR rtd_cur IS SELECT pv.pkg_version, pkg.pkg_name FROM runtime_dependencies rtd, package_versions pv, packages pkg WHERE rtd.rtd_id = pv.pv_id AND pv.pkg_id = pkg.pkg_id AND rtd.pv_id = NNpv_id AND rtd.rtd_id = NNrtd_id; rtd_rec rtd_cur%ROWTYPE; CURSOR old_rtd_cur IS SELECT pv.pv_id FROM package_versions pv WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id FROM package_versions rtdpv WHERE rtdpv.pv_id = NNrtd_id ) AND pv.pkg_version = SSrtd_version; old_rtd_rec old_rtd_cur%ROWTYPE; BEGIN -- Get current runtime dependency details OPEN rtd_cur; FETCH rtd_cur INTO rtd_rec; IF rtd_rec.pkg_version != SSrtd_version THEN -- Version has changed, hence create new runtime dependency -- /* NOTE: You must create new version as updating just a version will affect all packages using this runtime dependency and user does not expect that. It is safer to create new version */ OPEN old_rtd_cur; FETCH old_rtd_cur INTO old_rtd_rec; IF old_rtd_cur%NOTFOUND THEN -- Version not found, hence Create New version -- Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID ); -- Update runtime dependency table -- UPDATE runtime_dependencies SET rtd_id = retRTD_ID, rtd_url = SSrtd_url, rtd_comments = SSrtd_comments WHERE pv_id = NNpv_id AND rtd_id = NNrtd_id; ELSE -- Update runtime dependency table -- UPDATE runtime_dependencies SET rtd_id = old_rtd_rec.pv_id, rtd_url = SSrtd_url, rtd_comments = SSrtd_comments WHERE pv_id = NNpv_id AND rtd_id = NNrtd_id; END IF; CLOSE old_rtd_cur; ELSE -- Version has not changed, hence update everithing except version -- UPDATE runtime_dependencies SET rtd_url = SSrtd_url, rtd_comments = SSrtd_comments WHERE pv_id = NNpv_id AND rtd_id = NNrtd_id; END IF; CLOSE rtd_cur; END Update_Runtime_Dependency; / CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_UNIT_TEST" ( nTest_id IN NUMBER, nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE, nPv_id IN NUMBER, nUserId IN NUMBER, sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE, sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE, sCompletion_date IN VARCHAR2, sDpkg_path IN VARCHAR2, enumTEST_TYPE_AUTOMATIC IN NUMBER, sResults IN VARCHAR2, outFileName OUT VARCHAR2 ) IS /* --------------------------------------------------------------------------- Version: 3.1.0 --------------------------------------------------------------------------- */ FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST'; ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL; ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL; BEGIN IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN ResultsURL := sResults; ELSE IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults; ResultsAttachment := sDpkg_path || '/' || outFileName; END IF; END IF; --- Update Unit Test --- UPDATE UNIT_TESTS SET TEST_SUMMARY = sTest_summary, NUMOF_TEST = sNumof_test, COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ), COMPLETED_BY = nUserId, RESULTS_URL = ResultsURL, RESULTS_ATTACHMENT_NAME = ResultsAttachment WHERE TEST_ID = nTest_id AND PV_ID = nPv_id; END Update_Unit_Test; / CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_UNIT_TEST_ACCEPTANCE" ( pnTest_id IN NUMBER, pnPv_id IN NUMBER, sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE, sAcceptanceDate IN VARCHAR2, sAcceptedBy IN NUMBER, sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE, cUpdateAcceptedStateOnly IN CHAR ) IS /* --------------------------------------------------------------------------- Version: 3.0.0 --------------------------------------------------------------------------- */ BEGIN IF cUpdateAcceptedStateOnly = 'Y' THEN --- Update Accepted State Only --- IF ( sAccepted IS NULL ) THEN -- Clear alleptance UPDATE UNIT_TESTS SET TEST_ACCEPTED = NULL, ACCEPTANCE_DATE = NULL, ACCEPTED_BY = NULL, REVIEW_COMMENTS = NULL WHERE TEST_ID = pnTest_id AND PV_ID = pnPv_id; ELSE UPDATE UNIT_TESTS SET TEST_ACCEPTED = sAccepted, ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ), ACCEPTED_BY = sAcceptedBy WHERE TEST_ID = pnTest_id AND PV_ID = pnPv_id; END IF; ELSE --- Update Unit Test Acceptance --- UPDATE UNIT_TESTS SET TEST_ACCEPTED = sAccepted, REVIEW_COMMENTS = sReviewComments, ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ), ACCEPTED_BY = sAcceptedBy WHERE TEST_ID = pnTest_id AND PV_ID = pnPv_id; END IF; END Update_Unit_Test_Acceptance; / CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_UNIT_TEST_TEST" ( nTest_id IN NUMBER, nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE, nPv_id IN NUMBER, nUserId IN NUMBER, sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE, sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE, sCompletion_date IN VARCHAR2, sDpkg_path IN VARCHAR2, enumTEST_TYPE_AUTOMATIC IN NUMBER, sResults IN VARCHAR2, outFileName OUT VARCHAR2 ) IS /* --------------------------------------------------------------------------- Version: 3.1.0 --------------------------------------------------------------------------- */ FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST'; ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL; ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL; BEGIN IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN ResultsURL := sResults; ELSE IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults; ResultsAttachment := sDpkg_path || '/' || outFileName; END IF; END IF; /* IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN outFileName := FILENAME_PREFIX || newID ||'_'|| sResults; sResults_url:= 'doc' || '/' || ; END IF;*/ --- Update Unit Test --- UPDATE UNIT_TESTS SET TEST_SUMMARY = sTest_summary, NUMOF_TEST = sNumof_test, COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ), COMPLETED_BY = nUserId, RESULTS_URL = ResultsURL, RESULTS_ATTACHMENT_NAME = ResultsAttachment WHERE TEST_ID = nTest_id AND PV_ID = nPv_id; END Update_Unit_Test_Test; / -- new object type path is: SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC ALTER PACKAGE "RELEASE_MANAGER"."PK_BUILDAPI" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-05-01 16:39:47' / ALTER PACKAGE "RELEASE_MANAGER"."PK_ARCHIVE" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-02-18 12:29:42' / ALTER PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT_TEST" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-08-30 11:02:00' / ALTER PACKAGE "RELEASE_MANAGER"."PK_PACKAGE_TEST" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:27' / ALTER PACKAGE "RELEASE_MANAGER"."RM_ISSUES" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-03-10 14:39:00' / ALTER PACKAGE "RELEASE_MANAGER"."PK_BUILDAPI_TEST" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-11-24 14:53:11' / ALTER PACKAGE "RELEASE_MANAGER"."PK_PROJECT" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-08-23 16:12:34' / ALTER PACKAGE "RELEASE_MANAGER"."PK_RELEASE_TEST" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-03-28 08:59:35' / ALTER PACKAGE "RELEASE_MANAGER"."PK_RMAPI" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-05-09 14:47:07' / ALTER PACKAGE "RELEASE_MANAGER"."PK_RMAPI_TEST" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-02-01 09:25:39' / ALTER PACKAGE "RELEASE_MANAGER"."PK_APP_UTILS" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-04-11 16:21:22' / ALTER PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-05-01 16:39:53' / ALTER PACKAGE "RELEASE_MANAGER"."PK_WORK_IN_PROGRESS" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-09-07 12:23:44' / ALTER PACKAGE "RELEASE_MANAGER"."PK_PLANNED" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2005-10-11 10:18:44' / ALTER PACKAGE "RELEASE_MANAGER"."PK_RELEASE" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-04-11 13:14:35' / ALTER PACKAGE "RELEASE_MANAGER"."PK_PACKAGE" COMPILE SPECIFICATION PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-04-11 12:58:32' / -- new object type path is: SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTION ALTER FUNCTION "RELEASE_MANAGER"."IN_LIST_NUMBER2" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-12-18 09:42:17' / ALTER FUNCTION "RELEASE_MANAGER"."ORA_SYSDATE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2005-07-13 10:50:12' / ALTER FUNCTION "RELEASE_MANAGER"."IN_LIST_NUMBER" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2005-07-13 10:50:12' / ALTER FUNCTION "RELEASE_MANAGER"."ORA_SYSDATETIME" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2005-07-13 10:50:12' / ALTER FUNCTION "RELEASE_MANAGER"."GET_V_EXT" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:42' / ALTER FUNCTION "RELEASE_MANAGER"."DT_ADDUSEROBJECT" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2005-02-01 09:57:30' / ALTER FUNCTION "RELEASE_MANAGER"."PERL_DBD_TESTFUNC" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2004-10-15 22:30:52' / ALTER FUNCTION "RELEASE_MANAGER"."IS_VERSION_EXTENSION" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:42' / ALTER FUNCTION "RELEASE_MANAGER"."IS_NUMBER" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-02-12 19:43:52' / ALTER FUNCTION "RELEASE_MANAGER"."GET_PATCH_VERSION" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-02-12 20:10:35' / ALTER FUNCTION "RELEASE_MANAGER"."GET_BUILD_NUMBER" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-02-13 13:12:28' / ALTER FUNCTION "RELEASE_MANAGER"."IN_LIST_VARCHAR2" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2005-06-01 12:30:02' / ALTER FUNCTION "RELEASE_MANAGER"."CAN_EDIT_PKG_IN_PROJECT" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:38' / ALTER FUNCTION "RELEASE_MANAGER"."RELEASE_MODE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-02-01 09:04:40' / ALTER FUNCTION "RELEASE_MANAGER"."GET_AUTOMATED_LABEL" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:42' / -- new object type path is: SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE ALTER PROCEDURE "RELEASE_MANAGER"."TEST" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-09-25 08:38:24' / ALTER PROCEDURE "RELEASE_MANAGER"."INSERT_MULTIPLE_STICKY_NOTES" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-05-25 14:57:25' / ALTER PROCEDURE "RELEASE_MANAGER"."CHANGE_PACKAGE_STATE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:27' / ALTER PROCEDURE "RELEASE_MANAGER"."DEPLOY_TO_RELEASE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-11-01 13:35:34' / ALTER PROCEDURE "RELEASE_MANAGER"."SET_TO_AUTOBUILDABLE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:31' / ALTER PROCEDURE "RELEASE_MANAGER"."BUILD_TREE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:24' / ALTER PROCEDURE "RELEASE_MANAGER"."SEED_PACKAGE_NAMES_VERSIONS" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-19 14:59:44' / ALTER PROCEDURE "RELEASE_MANAGER"."LOG_ACTION" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:39' / ALTER PROCEDURE "RELEASE_MANAGER"."ADD_RUNTIME_DEPENDENCY" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-19 16:18:20' / ALTER PROCEDURE "RELEASE_MANAGER"."BASIC_CLONE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:42' / ALTER PROCEDURE "RELEASE_MANAGER"."IGNORE_DEPENDENCY_WARNINGS" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2008-05-01 16:40:34' / ALTER PROCEDURE "RELEASE_MANAGER"."LEVEL_N_CONFLICTS" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-20 16:18:28' / ALTER PROCEDURE "RELEASE_MANAGER"."NEW_ADDITIONAL_NOTE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2005-07-13 11:01:22' / ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_COMPONENTS" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2005-03-29 15:50:37' / ALTER PROCEDURE "RELEASE_MANAGER"."LEVEL_ONE_CONFLICTS" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-20 16:18:11' / ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_PACKAGE_STATES" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-20 16:17:01' / ALTER PROCEDURE "RELEASE_MANAGER"."CHECK_NEW_PATCHES" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:45' / ALTER PROCEDURE "RELEASE_MANAGER"."REBUILD_ENVIRONMENT" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2008-05-01 16:40:34' / ALTER PROCEDURE "RELEASE_MANAGER"."SPLIT_VERSION" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:42' / ALTER PROCEDURE "RELEASE_MANAGER"."NEW_VERSION" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:33' / ALTER PROCEDURE "RELEASE_MANAGER"."NEW_UNIT_TEST" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-06-09 09:42:59' / ALTER PROCEDURE "RELEASE_MANAGER"."NEW_PATCH" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:23' / ALTER PROCEDURE "RELEASE_MANAGER"."NEW_PACKAGE_NAME" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-03-01 12:04:59' / ALTER PROCEDURE "RELEASE_MANAGER"."LOG_ACTION_BULK" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:23' / ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_PACKAGE_DEPENDENCY" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-19 15:01:50' / ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_ADDITIONAL_NOTE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2005-07-13 11:01:53' / ALTER PROCEDURE "RELEASE_MANAGER"."UNLOCK_PACKAGE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:23' / ALTER PROCEDURE "RELEASE_MANAGER"."TOUCH_RELEASE_BULK" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-02-01 09:04:38' / ALTER PROCEDURE "RELEASE_MANAGER"."TOUCH_RELEASE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2007-01-25 10:48:17' / ALTER PROCEDURE "RELEASE_MANAGER"."SYNC_PROJECTS_NEW_VERSION" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:23' / ALTER PROCEDURE "RELEASE_MANAGER"."SHIFT_INSTALL_ORDER" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-07-03 14:09:33' / ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_UNIT_TEST_ACCEPTANCE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-06-09 09:19:13' / ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_UNIT_TEST" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-07-18 13:38:34' / ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_RUNTIME_DEPENDENCY" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-19 16:18:21' / ALTER PROCEDURE "RELEASE_MANAGER"."SET_PACKAGE_BUILD_ENV" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:24' / ALTER PROCEDURE "RELEASE_MANAGER"."RESET_IGNORE_WARNINGS" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 10:44:43' / ALTER PROCEDURE "RELEASE_MANAGER"."RENAME_PACKAGE_VERSION" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:24' / ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_RUNTIME" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:24' / ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_RELEASE_CONTENT" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-02-01 09:04:39' / ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_PATCH" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:24' / ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_DOCUMENT" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:24' / ALTER PROCEDURE "RELEASE_MANAGER"."DELETE_AUTOBUILD_FAILURE_INFO" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-06-02 08:43:39' / ALTER PROCEDURE "RELEASE_MANAGER"."TEST_MARCO" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:35' / ALTER PROCEDURE "RELEASE_MANAGER"."SWITCH_REPRODUCIBLE_PACKAGE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:31' / ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_MISC_VIEW" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-11-01 13:39:48' / ALTER PROCEDURE "RELEASE_MANAGER"."ADD_AUTOBUILD_FAILURE_INFO" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-04-21 15:36:25' / ALTER PROCEDURE "RELEASE_MANAGER"."ADD_VIEW_MEMBERS" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-04-11 10:01:25' / ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_PROJECT_VIEW_OWNER" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-04-11 15:25:47' / ALTER PROCEDURE "RELEASE_MANAGER"."TO_INSERT_VTREE_ID" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-02-02 08:48:49' / ALTER PROCEDURE "RELEASE_MANAGER"."INSERT_INTO_PACKAGE_BUILD_INFO" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:31' / ALTER PROCEDURE "RELEASE_MANAGER"."ADD_PACKAGE_INTEREST_TEST" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-08-29 16:25:20' / ALTER PROCEDURE "RELEASE_MANAGER"."LOG_DAEMON_ACTION" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-29 08:55:37' / ALTER PROCEDURE "RELEASE_MANAGER"."SET_PACKAGE_BUILD_ENV_TEMP" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 10:45:53' / ALTER PROCEDURE "RELEASE_MANAGER"."SET_ADVISORY_RIPPLE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-26 10:29:42' / ALTER PROCEDURE "RELEASE_MANAGER"."CLEAR_ADVISORY_RIPPLE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-26 10:29:21' / ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_DEPRECATION_STATE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-01-25 09:10:33' / ALTER PROCEDURE "RELEASE_MANAGER"."LOG_PROJECT_ACTION" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-02-10 09:12:31' / ALTER PROCEDURE "RELEASE_MANAGER"."SEED_PACKAGE_NAMES_VERSIONS2" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 10:55:58' / ALTER PROCEDURE "RELEASE_MANAGER"."CLONED_PROCESSES" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-09-25 08:38:26' / ALTER PROCEDURE "RELEASE_MANAGER"."CLONED_PACKAGE_PROCESSES" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-09-25 08:38:26' / ALTER PROCEDURE "RELEASE_MANAGER"."OLE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:35' / ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_PROCESSES" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-09-25 08:38:26' / ALTER PROCEDURE "RELEASE_MANAGER"."PENDING_PACKAGE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:27' / ALTER PROCEDURE "RELEASE_MANAGER"."DEPRECATE_PACKAGE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:28' / ALTER PROCEDURE "RELEASE_MANAGER"."UNDEPRECATE_PACKAGE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:35' / ALTER PROCEDURE "RELEASE_MANAGER"."CLEAN_DO_NOT_RIPPLE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-21 09:15:13' / ALTER PROCEDURE "RELEASE_MANAGER"."UPDATE_UNIT_TEST_TEST" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2006-07-18 12:51:44' / ALTER PROCEDURE "RELEASE_MANAGER"."PAOLO_BUILD_TREE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-02-01 09:04:39' / ALTER PROCEDURE "RELEASE_MANAGER"."ADD_PACKAGE_INTEREST" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-08-29 16:25:20' / ALTER PROCEDURE "RELEASE_MANAGER"."REMOVE_PACKAGE_INTEREST" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-08-29 16:25:20' / ALTER PROCEDURE "RELEASE_MANAGER"."DT_DROPUSEROBJECTBYID" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2005-02-01 09:57:31' / ALTER PROCEDURE "RELEASE_MANAGER"."DT_SETPROPERTYBYID" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:36' / ALTER PROCEDURE "RELEASE_MANAGER"."ADD_COMPONENT" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2005-03-29 15:50:37' / ALTER PROCEDURE "RELEASE_MANAGER"."CHANGE_RELEASE_MODE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-01-25 13:34:37' / ALTER PROCEDURE "RELEASE_MANAGER"."LOCK_PACKAGE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-06-15 13:52:26' / ALTER PROCEDURE "RELEASE_MANAGER"."RELEASE_MANAGER_MAILOUT" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:38' / ALTER PROCEDURE "RELEASE_MANAGER"."UNRIPPLE_PACKAGE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2007-08-29 09:26:48' / ALTER PROCEDURE "RELEASE_MANAGER"."RIPPLE_PACKAGE" COMPILE PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2007-08-29 09:26:24' / -- new object type path is: SCHEMA_EXPORT/VIEW/VIEW CREATE FORCE VIEW "RELEASE_MANAGER"."RM_PKG_ISSUES_ID" ("ISS_ID", "PKG_VERSION") AS SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PACKAGE_ISSUES WHERE ISS_ID IS NOT NULL ; CREATE FORCE VIEW "RELEASE_MANAGER"."ENVIRONMENT_VIEW" ("ENV_AREA", "PV_ID", "RTAG_ID", "VIEW_ID", "PKG_STATE", "DEPRECATED_STATE", "INSERTOR_ID", "INSERT_STAMP") AS SELECT 2 AS ENV_AREA, rc.PV_ID, rc.RTAG_ID, rc.BASE_VIEW_ID AS VIEW_ID, rc.PKG_STATE, rc.DEPRECATED_STATE, rc.INSERTOR_ID, rc.INSERT_STAMP FROM RELEASE_CONTENT rc UNION SELECT 0 AS ENV_AREA, wip.PV_ID, wip.RTAG_ID, wip.VIEW_ID, NULL AS PKG_STATE, NULL AS DEPRECATED_STATE, NULL AS INSERTOR_ID, NULL AS INSERT_STAMP FROM WORK_IN_PROGRESS wip UNION SELECT 1 AS ENV_AREA, pl.PV_ID, pl.RTAG_ID, pl.VIEW_ID, NULL AS PKG_STATE, NULL AS DEPRECATED_STATE, NULL AS INSERTOR_ID, NULL AS INSERT_STAMP FROM PLANNED pl; -- new object type path is: SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_RELEASE" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 12/Sep/2005 || Body Version: 3.0 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS RtagId NUMBER; ParentRtagId NUMBER; RecCount NUMBER := 0; VtreeId NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ -- Check for missing parameters IF (sReleaseName IS NULL) OR (nUserId IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ); END IF; -- Check for duplicate Release Names SELECT COUNT(rt.RTAG_ID) INTO RecCount FROM RELEASE_TAGS rt WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName ) AND rt.PROJ_ID = nProjId; IF (RecCount > 0) THEN RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.'); END IF; /*-------------------------------------------------------*/ -- Get rtag_id SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL; SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL; -- Get Parent RtagId ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched ); -- Create new release INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, OFFICIAL, REBUILD_ENV, REBUILD_STAMP, PARENT_RTAG_ID, PROJ_ID, VTREE_ID ) VALUES ( RtagId, sReleaseName, sReleaseComments, ORA_SYSDATE, nUserId, 'N', 'N', 0, ParentRtagId, nProjId, VtreeId ); -- Update display Order UPDATE_DISPLAY_ORDER ( nProjId ); /* Log Project Action */ Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId ); -- Import Release Contents IF (NOT nSourceRtagId IS NULL) THEN Import_Release_Contents ( nSourceRtagId, RtagId, nUserId ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ UPDATE RELEASE_TAGS urt SET urt.DISPLAY_ORDER = ( SELECT qry.REC_NUM FROM ( SELECT rel.*, ROWNUM AS REC_NUM FROM ( SELECT rt.RTAG_ID, rt.DISPLAY_ORDER, DECODE( rt.PARENT_RTAG_ID, rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID FROM RELEASE_TAGS rt WHERE rt.PROJ_ID = nProjId ) rel START WITH rel.PARENT_RTAG_ID = 0 CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID ORDER SIBLINGS BY rel.DISPLAY_ORDER ) qry WHERE qry.RTAG_ID = urt.RTAG_ID ) WHERE urt.PROJ_ID = nProjId; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER ) IS nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); SeqNum NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ nIdCollector := IN_LIST_NUMBER ( sRtagIdList ); -- Set start sequence number SeqNum := 1; FOR i IN 1..nIdCollector.COUNT LOOP -- Update new display order UPDATE RELEASE_TAGS rt SET rt.DISPLAY_ORDER = SeqNum WHERE rt.PROJ_ID = nProjId AND rt.RTAG_ID = nIdCollector(i); SeqNum := SeqNum + 1; END LOOP; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, sOwnerEmail IN VARCHAR2, nUserId IN NUMBER, cState IN VARCHAR ) IS RecCount NUMBER := 0; ProjId NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ -- Check for missing parameters IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId); END IF; -- Check for duplicate Release Names SELECT rt.PROJ_ID INTO ProjId FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nRtagId; SELECT COUNT(rt.RTAG_ID) INTO RecCount FROM RELEASE_TAGS rt WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName ) AND rt.RTAG_ID != nRtagId AND rt.PROJ_ID = ProjId; IF (RecCount > 0) THEN RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.'); END IF; /*-------------------------------------------------------*/ -- Update release details UPDATE RELEASE_TAGS rt SET rt.RTAG_NAME = sReleaseName, rt.DESCRIPTION = sReleaseComments, rt.PARENT_RTAG_ID = nParentRtagId, rt.ASSOC_MASS_REF = nMASSRtagId, rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch, rt.OWNER_EMAIL = sOwnerEmail, rt.PRODUCT_STATE_USED = cState WHERE rt.RTAG_ID = nRtagId; -- Update display Order UPDATE_DISPLAY_ORDER ( ProjId ); /* Log Project Action */ Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name:
Release Comments:', nRtagId ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS RecCount NUMBER := 0; sReleaseId VARCHAR2(4000); ProjId NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ IF (nRtagId IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ); END IF; -- Check for any kids SELECT COUNT( rt.RTAG_ID ) INTO RecCount FROM RELEASE_TAGS rt WHERE rt.PARENT_RTAG_ID = nRtagId AND rt.RTAG_ID != rt.PARENT_RTAG_ID; IF (RecCount > 0) THEN RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.' ); END IF; /*-------------------------------------------------------*/ -- Clear the release contents Clean_Release_Contents ( nRtagId, nUserId ); /* Log Project Action */ SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nRtagId; Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId ); -- Remove Release DELETE FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nRtagId; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER ) IS sSourceLocation VARCHAR2(4000); sTargetLocation VARCHAR2(4000); ProjId NUMBER; cReleaseMode CHAR(1); RconId NUMBER; CURSOR curReleaseConfigs IS SELECT * FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nSourceRtagId; recReleaseConfigs curReleaseConfigs%ROWTYPE; BEGIN /*--------------- Business Rules Here -------------------*/ IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId ); END IF; IF (nSourceRtagId = nTargetRtagId) THEN RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' ); END IF; -- Check if Target release is in OPEN mode SELECT rt.OFFICIAL INTO cReleaseMode FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nTargetRtagId; IF (cReleaseMode != 'N') THEN RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' ); END IF; /*-------------------------------------------------------*/ -- Clean target contents Clean_Release_Contents ( nTargetRtagId, nUserId ); -- Import Released Area Contents INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE ) SELECT nTargetRtagId AS RTAG_ID, rc.PV_ID, rc.BASE_VIEW_ID, rc.INSERT_STAMP, rc.INSERTOR_ID, rc.PKG_STATE, rc.PKG_ID, rc.DEPRECATED_STATE FROM RELEASE_CONTENT rc WHERE rc.RTAG_ID = nSourceRtagId; --Import Release Configuration Information OPEN curReleaseConfigs; FETCH curReleaseConfigs INTO recReleaseConfigs; WHILE curReleaseConfigs%FOUND LOOP -- Get the next rcon id SELECT SEQ_RCON_ID.NEXTVAL INTO RconId FROM DUAL; INSERT INTO RELEASE_CONFIG ( RCON_ID, RTAG_ID, GBE_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_BUILDFILTER ) VALUES ( RconId, nTargetRtagId, recReleaseConfigs.gbe_id, recReleaseConfigs.daemon_hostname, recReleaseConfigs.daemon_mode, recReleaseConfigs.gbe_buildfilter ); FETCH curReleaseConfigs INTO recReleaseConfigs; END LOOP; CLOSE curReleaseConfigs; -- Import Ignore Warning states INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID ) SELECT nTargetRtagId AS RTAG_ID, igw.PV_ID, igw.DPV_ID FROM IGNORE_WARNINGS igw WHERE igw.rtag_id = nSourceRtagId; /* Log Project Action */ -- Get Source Location SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO sSourceLocation FROM RELEASE_TAGS rt, PROJECTS pr WHERE rt.PROJ_ID = pr.PROJ_ID AND rt.RTAG_ID = nSourceRtagId; -- Get Target Location SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO sTargetLocation FROM RELEASE_TAGS rt, PROJECTS pr WHERE rt.PROJ_ID = pr.PROJ_ID AND rt.RTAG_ID = nTargetRtagId; -- Get project id SELECT rt.PROJ_ID INTO ProjId FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nTargetRtagId; Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||' TARGET: '|| sTargetLocation, nTargetRtagId ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS RecCount NUMBER; rconIdList VARCHAR2(4000); BEGIN /*--------------- Business Rules Here -------------------*/ IF (nRtagId IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ); END IF; -- Check if other release references this release SELECT COUNT( rl.RTAG_ID ) INTO RecCount FROM RELEASE_LINKS rl WHERE rl.REF_RTAG_ID = nRtagId; IF (RecCount > 0) THEN RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.' ); END IF; /*-------------------------------------------------------*/ -- Delete Release links DELETE FROM RELEASE_LINKS rl WHERE rl.RTAG_ID = nRtagId; -- Delete ignore warning DELETE FROM IGNORE_WARNINGS iw WHERE iw.RTAG_ID = nRtagId; -- Delete Build Order cached calculations DELETE FROM BUILD_ORDER bo WHERE bo.RTAG_ID = nRtagId; -- Delete Notification History DELETE FROM NOTIFICATION_HISTORY nh WHERE nh.RTAG_ID = nRtagId; -- Delete Released Area Contents DELETE FROM RELEASE_CONTENT rc WHERE rc.RTAG_ID = nRtagId; -- Delete Work In Progress Area Contents DELETE FROM WORK_IN_PROGRESS wip WHERE wip.RTAG_ID = nRtagId; -- Delete Pending Area Contents DELETE FROM PLANNED pl WHERE pl.RTAG_ID = nRtagId; -- Delete Deprecated Packages (Added By Rupesh Solanki 29/06/2006) DELETE FROM DEPRECATED_PACKAGES dp WHERE dp.RTAG_ID = nRtagId; -- Delete Project Action Log (Added By Rupesh Solanki 29/06/2006) DELETE FROM PROJECT_ACTION_LOG pal WHERE pal.RTAG_ID = nRtagId; -- Delete Do Not Ripple Contents (Added By Rupesh Solanki 29/06/2006) DELETE FROM DO_NOT_RIPPLE dnr WHERE dnr.RTAG_ID = nRtagId; -- Delete Dash Board Contents (Added By Rupesh Solanki 16/02/2007) DELETE FROM DASH_BOARD db WHERE db.RTAG_ID = nRtagId; -- Delete Daemons For This Release (Added By Jeremy Tweddle 28/03/2008) FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId ) LOOP rconIdList := rconIdList || rcon.RCON_ID || ','; END LOOP; pk_buildapi.DELETE_DAEMON(rconIdList); -- Delete Release Metrics Contents (Added By Jeremy Tweddle 28/03/2008) DELETE FROM RELEASE_METRICS rm WHERE rm.RTAG_ID = nRtagId; -- Delete Release Configuration Contents ( Added By Rupesh Solanki 10/04/2007) DELETE FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER IS nSourceParentRtagId NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ IF (nRtagId IS NULL) OR (cIsBranch IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch ); END IF; /*-------------------------------------------------------*/ IF ( nSourceRtagId IS NULL ) THEN -- Create new on main branch RETURN nRtagId; ELSE -- Create from source rtag_id -- Find parent of Source RtagId SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nSourceRtagId; IF (UPPER(cIsBranch) = 'Y') THEN RETURN nSourceRtagId; ELSE IF (nSourceRtagId = nSourceParentRtagId) THEN RETURN nRtagId; ELSE RETURN nSourceParentRtagId; END IF; END IF; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ -- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER, -- sNextVersion OUT VARCHAR2, -- nNextLifeCycle OUT NUMBER, -- nParentRtagId OUT NUMBER, -- nProjId IN NUMBER ) IS -- -- SourceBranchCount NUMBER; -- ProjRootVersion VARCHAR2(4000); -- LastLifeCycle NUMBER; -- ROOT_VERSION_NOT_FOUND NUMBER := -1; -- SET_PARENT_AS_YOURSELF NUMBER := -1; -- -- SourceProjId NUMBER; -- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE; -- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE; -- -- BEGIN -- /*--------------- Business Rules Here -------------------*/ -- /*-------------------------------------------------------*/ -- -- -- BEGIN -- -- Get Project root version -- SELECT rt.RTAG_VERSION INTO ProjRootVersion -- FROM RELEASE_TAGS rt -- WHERE rt.PROJ_ID = nProjId -- AND rt.RTAG_ID = rt.PARENT_RTAG_ID; -- -- EXCEPTION -- WHEN NO_DATA_FOUND THEN -- ProjRootVersion := ROOT_VERSION_NOT_FOUND; -- END; -- -- -- -- -- BEGIN -- -- Get info for source rtagid -- SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE INTO SourceProjId, SourceVersion, SourceLifeCycle -- FROM RELEASE_TAGS rt -- WHERE rt.RTAG_ID = nSourceRtagId; -- -- EXCEPTION -- WHEN NO_DATA_FOUND THEN -- SourceProjId := NULL; -- SourceVersion := NULL; -- SourceLifeCycle := NULL; -- END; -- -- -- IF (nSourceRtagId IS NULL) OR ( SourceProjId != nProjId ) THEN -- -- /* Blank Release Required OR Release imported from other project */ -- -- IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN -- /* No Releases found in the project, hence calculate next version available. */ -- -- -- Set parent rtag -- nParentRtagId := SET_PARENT_AS_YOURSELF; -- -- -- BEGIN -- -- Get Next Available Global Root Version -- SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) ) INTO ProjRootVersion -- FROM RELEASE_TAGS rt -- WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID; -- -- -- Set Next Rtag Version -- sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 ); -- -- -- Restart Lifecycle -- nNextLifeCycle := 0; -- -- -- EXCEPTION -- WHEN NO_DATA_FOUND THEN -- -- Release Manager has no releases, hence start from 1 -- sNextVersion := '1'; -- nNextLifeCycle := 0; -- -- END; -- -- -- -- ELSE -- /* Releases found in this project. */ -- -- SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE INTO nParentRtagId, LastLifeCycle -- FROM ( -- SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE -- FROM RELEASE_TAGS rt -- WHERE rt.PROJ_ID = nProjId -- AND rt.RTAG_VERSION = ProjRootVersion -- ORDER BY rt.RTAG_LIFE_CYCLE DESC -- ) qry -- WHERE ROWNUM = 1; -- -- -- -- Set same Rtag Version -- sNextVersion := ProjRootVersion; -- -- -- Increase Lifecycle -- nNextLifeCycle := LastLifeCycle + 1; -- -- END IF; -- -- -- -- ELSE -- /* Create Release From other release within this project */ -- -- -- Set parent id -- nParentRtagId := nSourceRtagId; -- -- -- -- Get number of source branches -- SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount -- FROM RELEASE_TAGS rt -- WHERE rt.PROJ_ID = nProjId -- AND rt.PARENT_RTAG_ID = nSourceRtagId; -- -- -- IF SourceBranchCount = 0 THEN -- /* Release is Head (i.e. Tip on its branch ) */ -- -- -- Set Next Rtag Version -- sNextVersion := SourceVersion; -- -- -- Increase Lifecycle -- nNextLifeCycle := SourceLifeCycle + 1; -- -- -- ELSIF SourceBranchCount = 1 THEN -- /* Release IS NOT Head, but can be branched */ -- -- -- Set Next Rtag Version -- sNextVersion := SourceVersion ||'.'|| SourceLifeCycle; -- -- -- Reset Lifecycle to 1 -- nNextLifeCycle := 1; -- -- -- ELSE -- -- Limit of two branches is reached -- RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. '); -- -- END IF; -- -- -- -- -- -- -- END IF; -- -- -- END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS IsBaseView CHAR(1); BEGIN -- Check if the view is BASE VIEW SELECT vi.BASE_VIEW INTO IsBaseView FROM VIEWS vi WHERE vi.VIEW_ID = ViewId; IF (IsBaseView = 'Y') THEN -- Get Base view content OPEN RecordSet FOR SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description, pv.BUILD_TYPE FROM release_content rel, packages pkg, package_versions pv WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.BASE_VIEW_ID = ViewId AND rel.RTAG_ID = RtagId ORDER BY UPPER(pkg.PKG_NAME); ELSE -- Get non base view content OPEN RecordSet FOR SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description, pv.BUILD_TYPE FROM release_content rel, packages pkg, package_versions pv, VIEW_DEF vd WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND vd.VIEW_ID = ViewId AND vd.PKG_ID = pv.PKG_ID AND rel.RTAG_ID = RtagId ORDER BY UPPER(pkg.PKG_NAME); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS ReleaseLocation VARCHAR2(4000); sPkgVersion VARCHAR2(4000); nPkgId NUMBER; sVExt VARCHAR2(4000); IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N'; -- Find package for replacement CURSOR curReplacePkg IS SELECT pv.PV_ID FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE rc.PV_ID = pv.PV_ID AND rc.RTAG_ID = RtagId AND pv.PKG_ID = nPkgId AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' ); recReplacePkg curReplacePkg%ROWTYPE; BEGIN -- Get is_patch, pkg_id and v_ext SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = newPvId; -- Never put patch in relesed area IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN -- Try to get a package to be replaced with this new one. -- Use unique constraint of PKG_ID and V_EXT OPEN curReplacePkg; FETCH curReplacePkg INTO recReplacePkg; IF curReplacePkg%FOUND THEN -- Replace package REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId ); ELSE -- Add new package INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE ) VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0); /* LOG ACTION */ SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; SELECT pv.PKG_VERSION INTO sPkgVersion FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = newPvId; Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation ); END IF; CLOSE curReplacePkg; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS ReleaseLocation VARCHAR2(4000); sPkgVersion VARCHAR2(4000); BEGIN -- Replace Package UPDATE RELEASE_CONTENT SET pv_id = newPvId, insert_stamp = Ora_Sysdate, insertor_id = UserId, product_state = NULL WHERE rtag_id = RtagId AND pv_id = oldPvId; /* LOG ACTION */ SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; SELECT pv.PKG_VERSION INTO sPkgVersion FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = newPvId; Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation ); Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS ReleaseLocation VARCHAR2(4000); BEGIN -- Delete old package DELETE FROM RELEASE_CONTENT rc WHERE rc.PV_ID = PvId AND rc.RTAG_ID = RtagId; /* LOG ACTION */ SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS ReleaseLocation VARCHAR2(4000); CURSOR curMatchingPackage IS SELECT mpv.PV_ID FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS mpv, PACKAGE_VERSIONS pv WHERE rc.PV_ID = mpv.PV_ID AND rc.RTAG_ID = RtagId AND pv.PV_ID = PvId AND pv.PKG_ID = mpv.PKG_ID AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' ); recMatchingPackage curMatchingPackage%ROWTYPE; BEGIN OPEN curMatchingPackage; FETCH curMatchingPackage INTO recMatchingPackage; IF curMatchingPackage%FOUND THEN -- Delete old package DELETE FROM RELEASE_CONTENT rc WHERE rc.PV_ID = recMatchingPackage.PV_ID AND rc.RTAG_ID = RtagId; /* LOG ACTION */ SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation ); END IF; CLOSE curMatchingPackage; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS ReturnValue NUMBER; BEGIN SELECT rc.BASE_VIEW_ID INTO ReturnValue FROM RELEASE_CONTENT rc WHERE rc.RTAG_ID = RtagId AND rc.PV_ID = PvId; RETURN ReturnValue; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS BEGIN -- Reset Ignore warnings up-the-tree RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId ); -- Refresh Package states TOUCH_RELEASE ( RtagId ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS CURSOR curReleases IS SELECT rc.RTAG_ID FROM RELEASE_CONTENT rc WHERE rc.PV_ID = PvId; recReleases curReleases%ROWTYPE; BEGIN OPEN curReleases; FETCH curReleases INTO recReleases; WHILE curReleases%FOUND LOOP RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID ); FETCH curReleases INTO recReleases; END LOOP; CLOSE curReleases; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS BEGIN UPDATE RELEASE_CONTENT rc SET rc.BASE_VIEW_ID = NewViewId WHERE rc.PV_ID = PvId AND rc.RTAG_ID = RtagId; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS RowCount NUMBER; CURSOR curPackageClash IS SELECT pkg.PKG_NAME, er.* FROM ( /* Get existing referenced packages */ SELECT pv.PKG_ID, pv.V_EXT FROM RELEASE_LINKS rl, RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE rl.RTAG_ID = nRtagId AND rl.REF_RTAG_ID = rc.RTAG_ID AND rc.PV_ID = pv.PV_ID ) er, ( /* Get current reference packages */ SELECT pv.PKG_ID, pv.V_EXT FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE rc.RTAG_ID = nRefRtagId AND rc.PV_ID = pv.PV_ID ) cr, PACKAGES PKG WHERE er.PKG_ID = cr.PKG_ID AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|') AND er.PKG_ID = pkg.PKG_ID; recPackageClash curPackageClash%ROWTYPE; BEGIN /*--------------- Business Rules Here -------------------*/ IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' ); END IF; IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' ); END IF; /*-------------------------------------------------------*/ ProblemString := NULL; -- Check if release already has references SELECT COUNT(rl.RTAG_ID) INTO RowCount FROM RELEASE_LINKS rl WHERE rl.RTAG_ID = nRtagId; IF RowCount > 0 THEN -- Found existing references -- Make sure there is no package clashes OPEN curPackageClash; FETCH curPackageClash INTO recPackageClash; IF curPackageClash%FOUND THEN ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF; WHILE curPackageClash%FOUND LOOP EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT || UTL_TCP.CRLF ) > 200; -- Do not allow variable overflow ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT || UTL_TCP.CRLF; FETCH curPackageClash INTO recPackageClash; END LOOP; END IF; CLOSE curPackageClash; ELSE -- No references found, hence reference a release -- Remove exising package from this release to be referenced REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId); -- Add new linked packages to release INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE) SELECT nRtagId, rc.PV_ID, rc.BASE_VIEW_ID, rc.INSERT_STAMP, rc.INSERTOR_ID, rc.PKG_STATE FROM RELEASE_CONTENT rc WHERE rc.RTAG_ID = nRefRtagId; -- Copy ignore warnings for referenced packages INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE) SELECT nRtagId, iw.PV_ID, iw.DPV_ID, iw.IS_PATCH_IGNORE FROM IGNORE_WARNINGS iw, RELEASE_CONTENT rc WHERE iw.RTAG_ID = rc.RTAG_ID AND iw.PV_ID = rc.PV_ID AND rc.RTAG_ID = nRefRtagId; -- Reference release INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID) VALUES ( nRtagId, nRefRtagId ); -- Refresh Package states TOUCH_RELEASE ( nRtagId ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS BEGIN /*--------------- Business Rules Here -------------------*/ IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' ); END IF; IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' ); END IF; /*-------------------------------------------------------*/ -- Remove ignore warnings for those packages who use referenced packages DELETE FROM IGNORE_WARNINGS iw WHERE iw.RTAG_ID = nRtagId AND iw.DPV_ID IN ( SELECT dep.DPV_ID FROM ( /* Get referenced packages */ SELECT pv.PKG_ID, pv.V_EXT FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE rc.RTAG_ID = nRefRtagId AND rc.PV_ID = pv.PV_ID ) cr, ( /* Get all dependencies for current release */ SELECT DISTINCT pv.PKG_ID, pv.V_EXT, dep.DPV_ID FROM RELEASE_CONTENT rc, PACKAGE_DEPENDENCIES dep, PACKAGE_VERSIONS pv WHERE rc.RTAG_ID = nRtagId AND rc.PV_ID = dep.PV_ID AND dep.PV_ID = pv.PV_ID ) dep WHERE dep.PKG_ID = cr.PKG_ID AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|') ); -- Remove ignore warnings for those package which are going to be replaced with the reference DELETE FROM IGNORE_WARNINGS iw WHERE iw.RTAG_ID = nRtagId AND iw.PV_ID IN ( SELECT pv.PV_ID FROM ( /* Get referenced packages */ SELECT pv.PKG_ID, pv.V_EXT FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE rc.RTAG_ID = nRefRtagId AND rc.PV_ID = pv.PV_ID ) cr, RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE pv.PKG_ID = cr.PKG_ID AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|') AND rc.RTAG_ID = nRtagId AND rc.PV_ID = pv.PV_ID ); -- Remove matching packages from release DELETE FROM RELEASE_CONTENT rc WHERE rc.RTAG_ID = nRtagId AND rc.PV_ID IN ( SELECT pv.PV_ID FROM ( /* Get referenced packages */ SELECT pv.PKG_ID, pv.V_EXT FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE rc.RTAG_ID = nRefRtagId AND rc.PV_ID = pv.PV_ID ) cr, RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE pv.PKG_ID = cr.PKG_ID AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|') AND rc.RTAG_ID = nRtagId AND rc.PV_ID = pv.PV_ID ); -- Remove Reference release DELETE FROM RELEASE_LINKS rl WHERE rl.RTAG_ID = nRtagId AND rl.REF_RTAG_ID = nRefRtagId; -- Refresh Package states TOUCH_RELEASE ( nRtagId ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS cReleaseMode CHAR(1); cPvMode CHAR(1); BEGIN -- Get Release Mode SELECT rt.OFFICIAL INTO cReleaseMode FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = RtagId; -- Get Package Mode SELECT pv.DLOCKED INTO cPvMode FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = PvId; -- Only check if package is locked IF (cPvMode = 'Y') THEN IF (cReleaseMode != 'N') AND (Permission != 'Y') THEN RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' ); END IF; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ END PK_RELEASE; / ALTER PACKAGE "RELEASE_MANAGER"."PK_RELEASE" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-05-01 16:40:32' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_WORK_IN_PROGRESS" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 2/May/2005 || Body Version: 1.0 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS oldPvId NUMBER; ReleaseLocation VARCHAR2(4000); sLocation VARCHAR2(4000) := NULL; BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ BEGIN -- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME INTO sLocation FROM WORK_IN_PROGRESS wip, RELEASE_TAGS rt, PROJECTS proj WHERE wip.PV_ID = newPvId AND wip.RTAG_ID = rt.RTAG_ID AND rt.OFFICIAL != 'Y' AND rt.PROJ_ID = proj.PROJ_ID; EXCEPTION WHEN NO_DATA_FOUND THEN sLocation := NULL; END; IF (sLocation IS NULL) THEN -- Add to "Work in progress" INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID ) VALUES( RtagId, newPvId, ViewId ); /* LOG ACTION */ SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation ); ELSE RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS ReleaseLocation VARCHAR2(4000); BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ -- Get release location for logging pusposes SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; -- Delete from Work In Progress DELETE FROM WORK_IN_PROGRESS wip WHERE wip.RTAG_ID = RtagId AND wip.PV_ID = PvId; Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); ReleaseLocation VARCHAR2(4000); PvId NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ IF (PvIdList IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' ); END IF; /*-------------------------------------------------------*/ nIdCollector := IN_LIST_NUMBER ( PvIdList ); -- Get release location for logging pusposes SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; FOR i IN 1..nIdCollector.COUNT LOOP PvId := nIdCollector(i); -- Delete from Work In Progress DELETE FROM WORK_IN_PROGRESS wip WHERE wip.RTAG_ID = RtagId AND wip.PV_ID = PvId; Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation ); END LOOP; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS ReturnValue NUMBER; BEGIN SELECT wip.VIEW_ID INTO ReturnValue FROM WORK_IN_PROGRESS wip WHERE wip.RTAG_ID = RtagId AND wip.PV_ID = PvId; RETURN ReturnValue; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS IsBaseView CHAR(1); BEGIN -- Check if the view is BASE VIEW SELECT vi.BASE_VIEW INTO IsBaseView FROM VIEWS vi WHERE vi.VIEW_ID = ViewId; IF (IsBaseView = 'Y') THEN -- Get Base view content OPEN RecordSet FOR SELECT 0 AS PKG_STATE, NULL AS DEPRECATED_STATE, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description, pv.BUILD_TYPE FROM WORK_IN_PROGRESS rel, packages pkg, package_versions pv WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.VIEW_ID = ViewId AND rel.RTAG_ID = RtagId ORDER BY UPPER(pkg.PKG_NAME); ELSE -- Get non base view content OPEN RecordSet FOR SELECT 0 AS PKG_STATE, NULL AS DEPRECATED_STATE, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description, pv.BUILD_TYPE FROM WORK_IN_PROGRESS rel, packages pkg, package_versions pv, VIEW_DEF vd WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND vd.VIEW_ID = ViewId AND vd.PKG_ID = pv.PKG_ID AND rel.RTAG_ID = RtagId ORDER BY UPPER(pkg.PKG_NAME); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS BEGIN UPDATE WORK_IN_PROGRESS wip SET wip.VIEW_ID = NewViewId WHERE wip.PV_ID = PvId AND wip.RTAG_ID = RtagId; END; /*-------------------------------------------------------------------------------------------------------*/ END PK_WORK_IN_PROGRESS; / ALTER PACKAGE "RELEASE_MANAGER"."PK_WORK_IN_PROGRESS" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-08-23 16:23:51' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_BUILDAPI" IS /* ------------------------------ || Last Modified: Jeremy Tweddle || Modified Date: 14/Dec/2007 || Body Version: 3.1 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE add_product_component ( npvid IN NUMBER, sosname IN VARCHAR2, sorigfilepath IN VARCHAR2, sfilename IN VARCHAR2, sdestfilepath IN VARCHAR2, nbytesize IN NUMBER, scrccksum IN VARCHAR2 ) IS nosid NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ -- OS Name Requirements -- IF (sosname IS NULL) THEN raise_application_error (-20000, 'OsName cannot be NULL.'); END IF; -- File Requirements -- IF (NOT sfilename IS NULL) THEN IF (nbytesize IS NULL) THEN raise_application_error (-20000, 'Byte Size cannot be NULL.'); ELSIF (scrccksum IS NULL) THEN raise_application_error (-20000, 'CRC CKSUM cannot be NULL.'); END IF; END IF; -- Folder Requirements -- -- No requirements for now. /*-------------------------------------------------------*/ -- Get OsId nosid := get_osid (sosname); -- Insert component entry INSERT INTO product_components (pv_id, os_id, file_path, file_name, destination_path, byte_size, crc_cksum ) VALUES (npvid, nosid, sorigfilepath, sfilename, sdestfilepath, nbytesize, scrccksum ); EXCEPTION WHEN DUP_VAL_ON_INDEX THEN raise_application_error (-20000, 'Cannot have duplicate product components.' ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE remove_all_product_components ( npvid IN NUMBER, sosname IN VARCHAR2 ) IS nosid NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ -- Get OsId nosid := get_osid (sosname); -- Delete component entry DELETE FROM product_components pc WHERE pc.pv_id = npvid AND pc.os_id = nosid; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION get_osid (sosname IN VARCHAR2) RETURN NUMBER IS code NUMBER; BEGIN -- Get Platform Code -- SELECT pf.code INTO code FROM platforms pf WHERE UPPER (pf.NAME) = UPPER (sosname); RETURN code; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error (-20000, 'Platform ' || sosname || ' is not valid. It needs to be added to PLATFORMS table in Release Manager.' ); RAISE; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE update_build_service ( sdatabaseserver IN VARCHAR2, swebserver IN VARCHAR2, smailserver IN VARCHAR2, smailsender IN VARCHAR2, sdiskspace IN VARCHAR2, ssbommanagement IN VARCHAR2 ) IS BEGIN UPDATE build_service_config SET config = sdatabaseserver WHERE service = 'DATABASE SERVER'; UPDATE build_service_config SET config = swebserver WHERE service = 'WEB SERVER'; UPDATE build_service_config SET config = smailserver WHERE service = 'MAIL SERVER'; UPDATE build_service_config SET config = smailsender WHERE service = 'BUILD FAILURE MAIL SENDER'; UPDATE build_service_config SET config = sdiskspace WHERE service = 'DPKG_ARCHIVE DISK SPACE USED'; UPDATE build_service_config SET config = ssbommanagement WHERE service = 'SBOM MANAGEMENT'; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2) IS gbe_id NUMBER; BEGIN -- Get GBE_ID SELECT seq_gbe_id.NEXTVAL INTO gbe_id FROM DUAL; INSERT INTO gbe_machtype (gbe_id, gbe_value ) VALUES (gbe_id, sgbevalue ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER) IS BEGIN DELETE FROM gbe_machtype WHERE gbe_id = ngbe_id; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2) IS BEGIN UPDATE gbe_machtype SET gbe_value = sgbevalue WHERE gbe_id = ngbe_id; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE add_daemon ( sdaemonhostname IN VARCHAR2, nrtagid IN NUMBER, ngbeid IN NUMBER, sgbebuildfilter IN VARCHAR2 ) IS nrecordnumber NUMBER; nrconid NUMBER; BEGIN -- Get RCON_ID SELECT seq_rcon_id.NEXTVAL INTO nrconid FROM DUAL; SELECT COUNT (*) INTO nrecordnumber FROM release_config WHERE rtag_id = nrtagid; IF nrecordnumber = 0 THEN INSERT INTO release_config (rcon_id, rtag_id, daemon_hostname, daemon_mode, gbe_id, gbe_buildfilter ) VALUES (nrconid, nrtagid, sdaemonhostname, 'M', ngbeid, sgbebuildfilter ); ELSE INSERT INTO release_config (rcon_id, rtag_id, daemon_hostname, daemon_mode, gbe_id, gbe_buildfilter ) VALUES (nrconid, nrtagid, sdaemonhostname, 'S', ngbeid, sgbebuildfilter ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE delete_daemon (srconidlist IN VARCHAR2) IS BEGIN -- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first. DELETE FROM daemon_action_log WHERE rcon_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (srconidlist) AS relmgr_number_tab_t ) FROM DUAL )); DELETE FROM run_level WHERE rcon_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (srconidlist) AS relmgr_number_tab_t ) FROM DUAL )); DELETE FROM abt_action_log WHERE rcon_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (srconidlist) AS relmgr_number_tab_t ) FROM DUAL )); -- Once entries in daemon_action_log, run_level and abt_action_log are removed, the daemon is deleted. DELETE FROM release_config WHERE rcon_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (srconidlist) AS relmgr_number_tab_t ) FROM DUAL )); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE update_daemon ( sdaemonhostname IN VARCHAR2, nrconid IN NUMBER, ngbeid IN NUMBER, sgbebuildfilter IN VARCHAR2 ) IS BEGIN UPDATE release_config SET daemon_hostname = sdaemonhostname, gbe_id = ngbeid, gbe_buildfilter = sgbebuildfilter WHERE rcon_id = nrconid; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE insert_schedule_info ( dschedulepause IN DATE, dscheduleresume IN DATE, crepeat IN VARCHAR2, cindefinitepause IN VARCHAR2 ) IS nscheduledid NUMBER; BEGIN -- Get Next Available Scheduled Id SELECT seq_scheduled_id.NEXTVAL INTO nscheduledid FROM DUAL; INSERT INTO run_level_schedule VALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat, cindefinitepause); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE delete_schedule (nscheduleid IN NUMBER) IS BEGIN DELETE FROM run_level_schedule WHERE scheduled_id = nscheduleid; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE set_infinite_pause IS nscheduledid NUMBER; BEGIN -- Get Next Available Scheduled Id SELECT seq_scheduled_id.NEXTVAL INTO nscheduledid FROM DUAL; INSERT INTO run_level_schedule VALUES (nscheduledid, NULL, NULL, NULL, 'P'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE set_resume IS BEGIN DELETE FROM run_level_schedule WHERE indefinite_pause = 'P'; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE delete_out_of_date_schedule IS BEGIN DELETE FROM run_level_schedule WHERE scheduled_resume < ora_sysdatetime AND repeat = 0; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE set_daemon_resume (nrconid IN NUMBER) IS BEGIN UPDATE run_level SET PAUSE = NULL WHERE rcon_id = nrconid; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE set_daemon_pause (nrconid IN NUMBER) IS BEGIN UPDATE run_level SET PAUSE = 1 WHERE rcon_id = nrconid; END; /*-------------------------------------------------------------------------------------------------------*/ END pk_buildapi; / ALTER PACKAGE "RELEASE_MANAGER"."PK_BUILDAPI" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-05-02 10:57:20' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_ARCHIVE" IS /* ------------------------------ || Author: Rupesh Solanki || Date: 26 October 2006 || Version: 1.0 ------------------------------ */ /*---------------------------*/ PROCEDURE populate_packages_table IS BEGIN INSERT INTO archive_manager.PACKAGES ( select * from packages where pkg_id not in (select pkg_id from archive_manager.packages) ); INSERT INTO archive_manager.PROCESSES ( select * from processes where proc_id not in (select proc_id from archive_manager.processes) ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE populate_archive_data_table ( nrtagid IN release_tags.rtag_id%TYPE ) IS /* Reason: To populate the archive_data table with information regarding the number of package versions that exist in other releases. */ numcount NUMBER; numusedby NUMBER; numruntime NUMBER; /* Get all the package versions in the release */ CURSOR archive_cur IS SELECT pv_id FROM release_content WHERE rtag_id = nrtagid; archive_rec archive_cur%ROWTYPE; BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ OPEN archive_cur; FETCH archive_cur INTO archive_rec; WHILE archive_cur%FOUND LOOP /* How many packages depend on this package version? */ SELECT COUNT (*) INTO numusedby FROM package_dependencies WHERE dpv_id = archive_rec.pv_id; /* How many project releases use this package version? */ SELECT COUNT (*) INTO numcount FROM release_content WHERE pv_id = archive_rec.pv_id; /* How many packages have this package version as runtime dependency? */ SELECT COUNT (*) INTO numruntime FROM runtime_dependencies WHERE rtd_id = archive_rec.pv_id; /* Insert into the archive_data table if they are not runtime dependant and package dependant and they exist in that particular release only*/ IF numusedby = 0 AND numcount = 1 AND numruntime = 0 THEN INSERT INTO archive_data (rtag_id, pv_id ) VALUES (nrtagid, archive_rec.pv_id ); END IF; FETCH archive_cur INTO archive_rec; END LOOP; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE migrate_pv_to_archive_schema ( nrtagid IN release_tags.rtag_id%TYPE ) IS BEGIN /* MIGRATION - PACKAGE_VERSIONS */ INSERT INTO archive_manager.package_versions SELECT * FROM package_versions WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - PACKAGE_BUILD_ENV */ INSERT INTO archive_manager.package_build_env SELECT * FROM package_build_env WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM PACKAGE_BUILD_ENV */ DELETE FROM package_build_env WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - PACKAGE_BUILD_INFO */ INSERT INTO archive_manager.package_build_info SELECT * FROM package_build_info WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM PACKAGE_BUILD_info */ DELETE FROM package_build_info WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - UNIT_TESTS */ INSERT INTO archive_manager.unit_tests SELECT * FROM unit_tests WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM UNIT_TESTS*/ DELETE FROM unit_tests WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - PACKAGE_PROCESSES */ INSERT INTO archive_manager.package_processes SELECT * FROM package_processes WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM PACKAGE_PROCESSES*/ DELETE FROM package_processes WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - PACKAGE_DEPENDENCIES */ INSERT INTO archive_manager.package_dependencies SELECT * FROM package_dependencies WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/ DELETE FROM package_dependencies WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - CODE_REVIEWS */ INSERT INTO archive_manager.code_reviews SELECT * FROM code_reviews WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM CODE_REVIEWS*/ DELETE FROM code_reviews WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - RUNTIME_DEPENDENCIES*/ INSERT INTO archive_manager.runtime_dependencies SELECT * FROM runtime_dependencies WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/ DELETE FROM runtime_dependencies WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - PACKAGE_DOCUMENTS */ INSERT INTO archive_manager.package_documents SELECT * FROM package_documents WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM PACKAGE_DOCUMENTS*/ DELETE FROM package_documents WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - PACKAGE_PATCHES */ INSERT INTO archive_manager.package_patches SELECT * FROM package_patches WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM PACKAGE_PATCHES*/ DELETE FROM package_patches WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - CQ_ISSUES */ INSERT INTO archive_manager.cq_issues SELECT * FROM cq_issues WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM CQ_ISSUES*/ DELETE FROM cq_issues WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - ADDITIONAL_NOTES */ INSERT INTO archive_manager.additional_notes SELECT * FROM additional_notes WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM ADDITIONAL_NOTES*/ DELETE FROM additional_notes WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - RELEASE_COMPONENTS */ INSERT INTO archive_manager.release_components SELECT * FROM release_components WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM RELEASE_COMPONENTS*/ DELETE FROM release_components WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - IGNORE_WARNINGS */ INSERT INTO archive_manager.ignore_warnings SELECT * FROM ignore_warnings WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM IGNORE_WARNINGS*/ DELETE FROM ignore_warnings WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM WORK_IN_PROGRESS */ DELETE FROM work_in_progress WHERE rtag_id = nrtagid; /* PURGE DATA FROM PLANNED */ DELETE FROM planned WHERE rtag_id = nrtagid; /* MIGRATION - JIRA_ISSUES */ INSERT INTO archive_manager.jira_issues SELECT * FROM jira_issues WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM JIRA_ISSUES*/ DELETE FROM jira_issues WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - PRODUCT_COMPONENTS */ INSERT INTO archive_manager.product_components SELECT * FROM product_components WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM PRODUCT_COMPONENTS*/ DELETE FROM product_components WHERE pv_id IN (SELECT pv_id FROM archive_data); /* MIGRATION - ACTION_LOG */ INSERT INTO archive_manager.action_log SELECT * FROM action_log WHERE pv_id IN (SELECT pv_id FROM archive_data); /* PURGE DATA FROM ACTION_LOG*/ DELETE FROM action_log WHERE pv_id IN (SELECT pv_id FROM archive_data); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE migrate_rtag_to_archive_schema ( nrtagid IN release_tags.rtag_id%TYPE ) IS BEGIN /* MIGRATION - DO_NOT_RIPPLE */ INSERT INTO archive_manager.do_not_ripple SELECT * FROM do_not_ripple dnp WHERE rtag_id = nrtagid; /* PURGE DATA FROM DO_NOT_RIPPLE */ DELETE FROM do_not_ripple WHERE rtag_id = nrtagid; /* MIGRATION - ADVISORY_RIPPLES*/ INSERT INTO archive_manager.advisory_ripples SELECT * FROM advisory_ripple dnp WHERE rtag_id = nrtagid; /* PURGE DATA FROM ADVISORY_RIPPLES*/ DELETE FROM advisory_ripple WHERE rtag_id = nrtagid; /* MIGRATION - RELEASE_CONTENT */ INSERT INTO archive_manager.release_content SELECT * FROM release_content WHERE rtag_id = nrtagid; /* PURGE DATA FROM RELEASE_CONTENT*/ DELETE FROM release_content WHERE rtag_id = nrtagid; /* MIGRATION - NOTIFICATION_HISTORY */ INSERT INTO archive_manager.notification_history SELECT * FROM notification_history WHERE rtag_id = nrtagid; /* PURGE DATA FROM NOTIFICATION_HISTORY*/ DELETE FROM notification_history WHERE rtag_id = nrtagid; /* MIGRATION - BUILD_ORDER */ INSERT INTO archive_manager.build_order SELECT * FROM build_order WHERE rtag_id = nrtagid; /* PURGE DATA FROM BUILD_ORDER*/ DELETE FROM build_order WHERE rtag_id = nrtagid; /* MIGRATION - PROJECT_ACTION_LOG */ INSERT INTO archive_manager.project_action_log SELECT * FROM project_action_log WHERE rtag_id = nrtagid; /* PURGE DATA FROM PROJECT_ACTION_LOG */ DELETE FROM project_action_log WHERE rtag_id = nrtagid; /* MIGRATION - DEPRECATED_PACKAGES */ INSERT INTO archive_manager.deprecated_packages SELECT * FROM deprecated_packages WHERE rtag_id = nrtagid; /* PURGE DATA FROM DEPRECATED_PACKAGES */ DELETE FROM deprecated_packages WHERE rtag_id = nrtagid; /* MIGRATION - RELEASE_TAGS */ INSERT INTO archive_manager.release_tags SELECT * FROM release_tags WHERE rtag_id = nrtagid; /* PURGE DATA FROM PACKAGE_VERSIONS*/ DELETE FROM package_versions WHERE pv_id IN (SELECT pv_id FROM archive_data); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE clean_up_archive_data_table ( nrtagid IN release_tags.rtag_id%TYPE ) IS BEGIN /* Cleaning Up The Archive_Data Table */ DELETE FROM archive_data WHERE rtag_id = nrtagid; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE write_action_log ( nuserid IN NUMBER, nrtagid IN release_tags.rtag_id%TYPE ) IS BEGIN /* Write Into Archive_Action_Log Table */ INSERT INTO archive_action_log (user_id, date_time_stamp, rtag_id, description ) VALUES (nuserid, ora_sysdatetime, nrtagid, 'Release has been archived to the ARCHIVE_MANAGER schema' ); END; /*-------------------------------------------------------------------------------------------------------*/ END pk_archive; / ALTER PACKAGE "RELEASE_MANAGER"."PK_ARCHIVE" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-02-18 13:19:10' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_ENVIRONMENT_TEST" IS /* ------------------------------ || Last Modified: Rupesh Solanki || Modified Date: 29/Jan/2007 || Body Version: 1.1 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE) RETURN NUMBER IS BEGIN /* || N - unlocked || Y - release and locked || P - penging approval || A - approved package ready for auto-build */ IF cdlock = 'N' OR cdlock = 'R' THEN -- WORK IN PROGRESS -- RETURN 0; ELSIF cdlock = 'P' OR cdlock = 'A' THEN -- PENDING -- RETURN 1; ELSIF cdlock = 'Y' THEN -- RELEASED -- RETURN 2; ELSE -- NOT FOUND -- raise_application_error (-20000, 'Cannot decide where to place package. [cDlock=' || cdlock || ']' ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER) RETURN NUMBER IS envtab NUMBER := -1; CURSOR curarea IS SELECT 2 AS envtab FROM release_content rc WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid UNION SELECT 0 AS envtab FROM work_in_progress wip WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid UNION SELECT 1 AS envtab FROM planned pl WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid; recarea curarea%ROWTYPE; BEGIN OPEN curarea; FETCH curarea INTO recarea; IF curarea%FOUND THEN envtab := recarea.envtab; END IF; CLOSE curarea; RETURN envtab; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER) RETURN NUMBER IS ispatch package_versions.dlocked%TYPE; viewid NUMBER := -1; CURSOR curview IS SELECT rc.base_view_id AS view_id FROM release_content rc WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid UNION SELECT wip.view_id AS view_id FROM work_in_progress wip WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid UNION SELECT pl.view_id AS view_id FROM planned pl WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid; recview curview%ROWTYPE; BEGIN -- Get dlock state SELECT pv.is_patch INTO ispatch FROM package_versions pv WHERE pv.pv_id = pvid; -- Decide which view id should package go under. IF (ispatch != 'Y') OR (ispatch IS NULL) THEN -- Get VIEW ID of Package OPEN curview; FETCH curview INTO recview; IF curview%FOUND THEN viewid := recview.view_id; ELSE raise_application_error (-20000, 'Cannot find view_id to proceed. [PvId=' || pvid || ']. The current version may not exist in the release anymore.' ); END IF; CLOSE curview; ELSE -- Get VIEW ID of Patch (view id of parent package) SELECT rc.base_view_id INTO viewid FROM release_content rc, package_patches ppv WHERE rc.rtag_id = rtagid AND rc.pv_id = ppv.pv_id AND ppv.patch_id = pvid; END IF; RETURN viewid; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE add_package ( pvid IN NUMBER, viewid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER ) IS dlocked package_versions.dlocked%TYPE; envtab NUMBER; BEGIN IF can_edit_pkg_in_project (pvid, rtagid) = 1 THEN -- Get dlock state SELECT pv.dlocked INTO dlocked FROM package_versions pv WHERE pv.pv_id = pvid; -- Get which area should go under envtab := select_environment_area (dlocked); -- Log log_action (pvid, 'action', userid, 'Start of Package Add...'); -- Remove Package IF envtab = 0 THEN -- WORK IN PROGRESS -- pk_work_in_progress.add_package (pvid, viewid, rtagid, userid); ELSIF envtab = 1 THEN -- PENDING -- pk_planned.add_package (pvid, viewid, rtagid, userid); ELSIF envtab = 2 THEN -- RELEASED -- -- NOTE: this package will be replaced with matching package pk_release.add_package (pvid, viewid, rtagid, userid); -- Now do post Release Actions pk_release.run_post_actions (pvid, rtagid); END IF; -- Log log_action (pvid, 'action', userid, 'End of Package Add...'); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE add_package_bulk ( pvidlist IN VARCHAR2, viewid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER ) IS nidcollector relmgr_number_tab_t := relmgr_number_tab_t (); dlocked package_versions.dlocked%TYPE; pvid NUMBER; envtab NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ IF (pvidlist IS NULL) THEN raise_application_error (-20000, 'Please select at least one package.' ); END IF; /*-------------------------------------------------------*/ nidcollector := in_list_number (pvidlist); FOR i IN 1 .. nidcollector.COUNT LOOP pvid := nidcollector (i); add_package (pvid, viewid, rtagid, userid); END LOOP; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE replace_package ( newpvid IN NUMBER, oldpvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER ) IS dlocked package_versions.dlocked%TYPE; viewid NUMBER; envtab NUMBER; ROWCOUNT NUMBER; creleasemode CHAR (1); npkgid NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ -- Check if oldPvId exists. It could have been removed SELECT COUNT (pv.pv_id) INTO ROWCOUNT FROM package_versions pv WHERE pv.pv_id = oldpvid; /*-------------------------------------------------------*/ /* This procedure is usually used by "History" option in Release Manager */ -- Get dlock state SELECT pv.dlocked INTO dlocked FROM package_versions pv WHERE pv.pv_id = newpvid; -- Get VIEW_ID --- IF ROWCOUNT = 1 THEN viewid := get_view_location (oldpvid, rtagid); ELSE -- Set ViewID to default viewid := 7; END IF; -- Get which area should go under envtab := select_environment_area (dlocked); -- Log log_action (oldpvid, 'action', userid, 'Start of Package Replace...'); -- Replace package IF envtab = 0 THEN -- WORK IN PROGRESS -- -- Delete old package pk_work_in_progress.remove_package (oldpvid, rtagid, userid); -- Add new package pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid); ELSIF envtab = 1 THEN -- PENDING -- -- Delete old package pk_planned.remove_package (oldpvid, rtagid, userid); -- Add new package pk_planned.add_package (newpvid, viewid, rtagid, userid); ELSIF envtab = 2 THEN -- RELEASED -- -- Delete old package pk_release.remove_package (oldpvid, rtagid, userid); -- Add new package pk_release.add_package (newpvid, viewid, rtagid, userid); -- Now do post Release Actions pk_release.run_post_actions (newpvid, rtagid); END IF; -- Log log_action (oldpvid, 'action', userid, 'End of Package Replace...'); END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION remove_package ( pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER, forceremove IN CHAR ) RETURN NUMBER IS envtab NUMBER; isused BOOLEAN; recordcount NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ -- Find location of package envtab := get_package_area (pvid, rtagid); -- Remove Package IF envtab = 0 THEN -- WORK IN PROGRESS -- -- Delete package pk_work_in_progress.remove_package (pvid, rtagid, userid); RETURN 0; ELSIF envtab = 1 THEN -- PENDING -- -- Delete package pk_planned.remove_package (pvid, rtagid, userid); RETURN 0; ELSIF envtab = 2 THEN -- RELEASED -- -- Check if is used by other packages isused := TRUE; IF forceremove = 'N' THEN SELECT COUNT (pv.pv_id) INTO recordcount FROM (SELECT dpv.pkg_id, dpv.v_ext FROM release_content rc, package_dependencies dep, package_versions dpv WHERE rc.rtag_id = rtagid AND rc.pv_id = dep.pv_id AND dep.dpv_id = dpv.pv_id) rdep, package_versions pv WHERE pv.pkg_id = rdep.pkg_id AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (rdep.v_ext, '|LINK_A_NULL|') AND pv.pv_id = pvid; IF recordcount > 0 THEN RETURN 1; -- Return 1 as package being used ELSE isused := FALSE; END IF; END IF; IF forceremove = 'Y' OR NOT isused THEN -- Delete old package pk_release.remove_package (pvid, rtagid, userid); -- Now do post Release Actions pk_release.run_post_actions (pvid, rtagid); RETURN 0; END IF; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_environment_items ( viewtype IN NUMBER, userid IN NUMBER, rtagid IN NUMBER, sviewidshowlist IN VARCHAR2, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count because views can give false count SELECT COUNT (pl.pv_id) INTO ntruerecordcount FROM environment_view pl WHERE pl.rtag_id = rtagid; IF viewtype = 1 THEN /*--- GUEST VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM environment_view rel, views vi WHERE rel.view_id = vi.view_id AND rtag_id = rtagid AND rel.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, DECODE (rel.pkg_state, NULL, 0, rel.pkg_state ) AS pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM environment_view rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = vi.view_id AND rel.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); ELSIF viewtype = 2 THEN /*--- PERSONAL VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM environment_view rel, view_settings vs, views vi WHERE rel.view_id = vi.view_id AND vs.view_id = rel.view_id AND vs.user_id = userid AND rtag_id = rtagid AND rel.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, DECODE (rel.pkg_state, NULL, 0, rel.pkg_state ) AS pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM environment_view rel, PACKAGES pkg, package_versions pv, views vi, view_settings vs WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = vi.view_id AND vs.view_id = vi.view_id AND vs.user_id = userid AND rel.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid UNION /* Private Views collapsed */ SELECT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM view_settings vs, view_def vd, views vi, environment_view rel, package_versions pv WHERE vs.view_id = vi.view_id AND rel.pv_id = pv.pv_id AND vd.pkg_id = pv.pkg_id AND vd.view_id = vi.view_id AND vi.base_view = 'N' AND rel.rtag_id = rtagid AND vs.user_id = userid AND vi.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Private Views expanded */ SELECT vi.view_id, vi.view_name, DECODE (rel.pkg_state, NULL, 0, rel.pkg_state ) AS pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM users usr, view_settings vs, view_def vd, views vi, environment_view rel, PACKAGES pkg, package_versions pv WHERE vs.user_id = usr.user_id AND vs.view_id = vi.view_id AND vd.view_id = vi.view_id AND pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.rtag_id = rtagid AND vd.pkg_id = pkg.pkg_id AND vi.base_view = 'N' AND vi.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND usr.user_id = userid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_released_items ( viewtype IN NUMBER, userid IN NUMBER, rtagid IN NUMBER, sviewidshowlist IN VARCHAR2, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count because views can give false count SELECT COUNT (rc.pv_id) INTO ntruerecordcount FROM release_content rc WHERE rc.rtag_id = rtagid; IF viewtype = 1 THEN /*--- GUEST VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM release_content rel, views vi WHERE rel.base_view_id = vi.view_id AND rtag_id = rtagid AND rel.base_view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND rel.base_view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); ELSIF viewtype = 2 THEN /*--- PERSONAL VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM release_content rel, view_settings vs, views vi WHERE rel.base_view_id = vi.view_id AND vs.view_id = rel.base_view_id AND vs.user_id = userid AND rtag_id = rtagid AND rel.base_view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi, view_settings vs WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND vs.view_id = vi.view_id AND vs.user_id = userid AND rel.base_view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid UNION /* Private Views collapsed */ SELECT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM view_settings vs, view_def vd, views vi, release_content rel, package_versions pv WHERE vs.view_id = vi.view_id AND rel.pv_id = pv.pv_id AND vd.pkg_id = pv.pkg_id AND vd.view_id = vi.view_id AND vi.base_view = 'N' AND rel.rtag_id = rtagid AND vs.user_id = userid AND vi.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Private Views expanded */ SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM users usr, view_settings vs, view_def vd, views vi, release_content rel, PACKAGES pkg, package_versions pv WHERE vs.user_id = usr.user_id AND vs.view_id = vi.view_id AND vd.view_id = vi.view_id AND pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.rtag_id = rtagid AND vd.pkg_id = pkg.pkg_id AND vi.base_view = 'N' AND vi.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND usr.user_id = userid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_work_in_progress_items ( viewtype IN NUMBER, userid IN NUMBER, rtagid IN NUMBER, sviewidshowlist IN VARCHAR2, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count because views can give false count SELECT COUNT (wip.pv_id) INTO ntruerecordcount FROM work_in_progress wip WHERE wip.rtag_id = rtagid; IF viewtype = 1 THEN /*--- GUEST VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM work_in_progress rel, views vi WHERE rel.view_id = vi.view_id AND rtag_id = rtagid AND rel.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, 0 AS pkg_state, --rel.pkg_state, TO_NUMBER (NULL) AS deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM work_in_progress rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = vi.view_id AND rel.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); ELSIF viewtype = 2 THEN /*--- PERSONAL VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM work_in_progress rel, view_settings vs, views vi WHERE rel.view_id = vi.view_id AND vs.view_id = rel.view_id AND vs.user_id = userid AND rtag_id = rtagid AND rel.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, 0 AS pkg_state, --rel.pkg_state, TO_NUMBER (NULL) AS deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM work_in_progress rel, PACKAGES pkg, package_versions pv, views vi, view_settings vs WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = vi.view_id AND vs.view_id = vi.view_id AND vs.user_id = userid AND rel.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid UNION /* Private Views collapsed */ SELECT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM view_settings vs, view_def vd, views vi, work_in_progress rel, package_versions pv WHERE vs.view_id = vi.view_id AND rel.pv_id = pv.pv_id AND vd.pkg_id = pv.pkg_id AND vd.view_id = vi.view_id AND vi.base_view = 'N' AND rel.rtag_id = rtagid AND vs.user_id = userid AND vi.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Private Views expanded */ SELECT vi.view_id, vi.view_name, 0 AS pkg_state, --rel.pkg_state, TO_NUMBER (NULL) AS deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM users usr, view_settings vs, view_def vd, views vi, work_in_progress rel, PACKAGES pkg, package_versions pv WHERE vs.user_id = usr.user_id AND vs.view_id = vi.view_id AND vd.view_id = vi.view_id AND pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.rtag_id = rtagid AND vd.pkg_id = pkg.pkg_id AND vi.base_view = 'N' AND vi.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND usr.user_id = userid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_pending_items ( viewtype IN NUMBER, userid IN NUMBER, rtagid IN NUMBER, sviewidshowlist IN VARCHAR2, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count because views can give false count SELECT COUNT (pl.pv_id) INTO ntruerecordcount FROM planned pl WHERE pl.rtag_id = rtagid; IF viewtype = 1 THEN /*--- GUEST VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM planned rel, views vi WHERE rel.view_id = vi.view_id AND rtag_id = rtagid AND rel.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, 0 AS pkg_state, --rel.pkg_state, TO_NUMBER (NULL) AS deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM planned rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = vi.view_id AND rel.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); ELSIF viewtype = 2 THEN /*--- PERSONAL VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM planned rel, view_settings vs, views vi WHERE rel.view_id = vi.view_id AND vs.view_id = rel.view_id AND vs.user_id = userid AND rtag_id = rtagid AND rel.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, 0 AS pkg_state, --rel.pkg_state, TO_NUMBER (NULL) AS deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM planned rel, PACKAGES pkg, package_versions pv, views vi, view_settings vs WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = vi.view_id AND vs.view_id = vi.view_id AND vs.user_id = userid AND rel.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid UNION /* Private Views collapsed */ SELECT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM view_settings vs, view_def vd, views vi, planned rel, package_versions pv WHERE vs.view_id = vi.view_id AND rel.pv_id = pv.pv_id AND vd.pkg_id = pv.pkg_id AND vd.view_id = vi.view_id AND vi.base_view = 'N' AND rel.rtag_id = rtagid AND vs.user_id = userid AND vi.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Private Views expanded */ SELECT vi.view_id, vi.view_name, 0 AS pkg_state, --rel.pkg_state, TO_NUMBER (NULL) AS deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM users usr, view_settings vs, view_def vd, views vi, planned rel, PACKAGES pkg, package_versions pv WHERE vs.user_id = usr.user_id AND vs.view_id = vi.view_id AND vd.view_id = vi.view_id AND pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.rtag_id = rtagid AND vd.pkg_id = pkg.pkg_id AND vi.base_view = 'N' AND vi.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND usr.user_id = userid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_view_content ( rtagid IN NUMBER, viewid IN NUMBER, recordset OUT typecur ) IS isbaseview CHAR (1); BEGIN -- Check if the view is BASE VIEW SELECT vi.base_view INTO isbaseview FROM views vi WHERE vi.view_id = viewid; IF (isbaseview = 'Y') THEN -- Get Base view content OPEN recordset FOR SELECT DECODE (rel.pkg_state, NULL, 0, rel.pkg_state ) AS pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description, pv.build_type FROM environment_view rel, PACKAGES pkg, package_versions pv WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = viewid AND rel.rtag_id = rtagid ORDER BY UPPER (pkg.pkg_name); ELSE -- Get non base view content OPEN recordset FOR SELECT DECODE (rel.pkg_state, NULL, 0, rel.pkg_state ) AS pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description, pv.build_type FROM environment_view rel, PACKAGES pkg, package_versions pv, view_def vd WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.rtag_id = rtagid AND vd.view_id = viewid AND vd.pkg_id = pv.pkg_id ORDER BY UPPER (pkg.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER) RETURN NUMBER IS envtab NUMBER; returnvalue NUMBER; return_not_found NUMBER := -1; BEGIN envtab := get_package_area (pvid, rtagid); IF envtab = 0 THEN -- WORK IN PROGRESS -- returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid); ELSIF envtab = 1 THEN -- PENDING -- returnvalue := pk_planned.get_package_view (pvid, rtagid); ELSIF envtab = 2 THEN -- RELEASED -- returnvalue := pk_release.get_package_view (pvid, rtagid); ELSE -- This may be a Patch not located anywhere but unlocked returnvalue := return_not_found; END IF; RETURN returnvalue; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER) IS viewid NUMBER; envtab NUMBER; ispatch CHAR (1) := NULL; buildtype CHAR (1) := NULL; lastversionid NUMBER; BEGIN -- Check if package is patch SELECT pv.is_patch, pv.build_type, pv.last_pv_id INTO ispatch, buildtype, lastversionid FROM package_versions pv WHERE pv.pv_id = pvid; -- Get ViewId viewid := get_package_view (pvid, rtagid); -- Remove from current area envtab := pk_environment.get_package_area (pvid, rtagid); -- Make sure that package was in work-in-progress or pending before makeing it release -- Exclude patches, ripple builds IF (envtab < 0) THEN -- Not found in work-in-progress or pending IF (ispatch IS NULL) AND (buildtype = 'M') THEN raise_application_error (-20000, 'This package cannot be released here.' ); END IF; END IF; -- Log log_action (pvid, 'action', userid, 'Start of Make Package Release...'); IF envtab = 0 THEN -- WORK IN PROGRESS -- pk_work_in_progress.remove_package (pvid, rtagid, userid); ELSIF envtab = 1 THEN -- PENDING -- pk_planned.remove_package (pvid, rtagid, userid); END IF; -- Change package state pk_package.change_state (pvid, 'Y', userid); -- Make sure it is valid BASE VIEW IF viewid < 1 THEN viewid := 7; -- This is default base view END IF; IF (ispatch IS NULL) THEN -- Add package to new area pk_release.add_package (pvid, viewid, rtagid, userid); END IF; -- Now do post Release Actions pk_release.run_post_actions (pvid, rtagid); -- Now delete old version from DO_NOT_RIPPLE Table if it Exists DELETE FROM do_not_ripple WHERE rtag_id = rtagid AND pv_id = lastversionid; -- Now delete old version from ADVISORY_RIPPLES Table if it Exists DELETE FROM advisory_ripple WHERE rtag_id = rtagid AND pv_id = lastversionid; -- Log log_action (pvid, 'action', userid, 'End of Make Package Release...'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE auto_make_release ( pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER, vext IN package_versions.v_ext%TYPE, ssv_ext IN package_versions.v_ext%TYPE, clonefrompvid IN NUMBER ) IS viewid NUMBER; envtab NUMBER; ispatch CHAR (1) := NULL; buildtype CHAR (1) := NULL; lastversionid NUMBER; BEGIN -- Check if package is patch SELECT pv.is_patch, pv.build_type, pv.last_pv_id INTO ispatch, buildtype, lastversionid FROM package_versions pv WHERE pv.pv_id = pvid; IF vext <> ssv_ext THEN -- Get ViewId viewid := get_package_view (clonefrompvid, rtagid); -- Remove from current area envtab := pk_environment.get_package_area (clonefrompvid, rtagid); ELSE -- Get ViewId viewid := get_package_view (pvid, rtagid); -- Remove from current area envtab := pk_environment.get_package_area (pvid, rtagid); END IF; -- Make sure that package was in work-in-progress or pending before makeing it release -- Exclude patches, ripple builds IF (envtab < 0) THEN -- Not found in work-in-progress or pending IF (ispatch IS NULL) AND (buildtype = 'M') THEN raise_application_error (-20000, 'This package cannot be released here.' ); END IF; END IF; -- Log log_action (pvid, 'action', userid, 'Start of Make Package Release...'); IF vext <> ssv_ext THEN IF envtab = 0 THEN -- WORK IN PROGRESS -- pk_work_in_progress.remove_package (clonefrompvid, rtagid, userid); ELSIF envtab = 1 THEN -- PENDING -- pk_planned.remove_package (clonefrompvid, rtagid, userid); ELSIF envtab = 2 THEN -- RELEASED -- pk_release.remove_package (clonefrompvid, rtagid, userid); END IF; ELSE IF envtab = 0 THEN -- WORK IN PROGRESS -- pk_work_in_progress.remove_package (pvid, rtagid, userid); ELSIF envtab = 1 THEN -- PENDING -- pk_planned.remove_package (pvid, rtagid, userid); END IF; END IF; -- Change package state pk_package.change_state (pvid, 'Y', userid); -- Make sure it is valid BASE VIEW IF viewid < 1 THEN viewid := 7; -- This is default base view END IF; IF (ispatch IS NULL) THEN -- Add package to new area pk_release.add_package (pvid, viewid, rtagid, userid); END IF; -- Now do post Release Actions pk_release.run_post_actions (pvid, rtagid); -- Now update the Dash_Board Table pk_rmapi.update_dash_board (rtagid); -- Now delete old version from DO_NOT_RIPPLE Table if it Exists DELETE FROM do_not_ripple WHERE rtag_id = rtagid AND pv_id = lastversionid; -- Now delete old version from ADVISORY_RIPPLES Table if it Exists DELETE FROM advisory_ripple WHERE rtag_id = rtagid AND pv_id = lastversionid; -- Log log_action (pvid, 'action', userid, 'End of Make Package Release...'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER) IS viewid NUMBER; envtab NUMBER; BEGIN -- Get ViewId --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId ); viewid := get_package_view (pvid, rtagid); -- Remove from current area envtab := pk_environment.get_package_area (pvid, rtagid); -- Log log_action (pvid, 'action', userid, 'Start of Make Package UnRelease...' ); IF envtab = 2 THEN -- RELEASE AREA -- pk_release.remove_package (pvid, rtagid, userid); ELSIF envtab = 1 THEN -- PENDING -- pk_planned.remove_package (pvid, rtagid, userid); END IF; -- Change package state pk_package.change_state (pvid, 'N', userid); -- Make sure it is valid BASE VIEW IF viewid < 1 THEN viewid := 7; -- This is default base view END IF; -- Add package to new area pk_work_in_progress.add_package (pvid, viewid, rtagid, userid); -- Now do post Release Actions pk_release.run_post_actions (pvid, rtagid); -- Log log_action (pvid, 'action', userid, 'End of Make Package UnRelease...'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER) IS viewid NUMBER; ispatch CHAR (1) := NULL; buildtype CHAR (1) := NULL; BEGIN -- Check if package is patch SELECT pv.is_patch, pv.build_type INTO ispatch, buildtype FROM package_versions pv WHERE pv.pv_id = pvid; -- Get ViewId viewid := get_package_view (pvid, rtagid); --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId ); -- Log log_action (pvid, 'action', userid, 'Start of Make Package Pending...'); IF (ispatch IS NULL) THEN -- Remove from current area pk_work_in_progress.remove_package (pvid, rtagid, userid); -- Change package state pk_package.change_state (pvid, 'P', userid); -- Add package to new area pk_planned.add_package (pvid, viewid, rtagid, userid); END IF; -- Log log_action (pvid, 'action', userid, 'End of Make Package Pending...'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER) IS BEGIN -- Log log_action (pvid, 'action', userid, 'Start of Package Pending Approval...' ); -- Change package state pk_package.change_state (pvid, 'A', userid); -- Log log_action (pvid, 'action', userid, 'End of Package Pending Approval...'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER) IS viewid NUMBER; BEGIN -- Get ViewId viewid := get_package_view (pvid, rtagid); -- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId ); -- Log log_action (pvid, 'action', userid, 'Start of Reject Package...'); -- Remove from current area pk_planned.remove_package (pvid, rtagid, userid); -- Change package state pk_package.change_state (pvid, 'R', userid); -- Add package to new area pk_work_in_progress.add_package (pvid, viewid, rtagid, userid); -- Log log_action (pvid, 'action', userid, 'Start of Reject Package...'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE change_package_view ( pvid IN NUMBER, rtagid IN NUMBER, newviewid IN NUMBER ) IS envtab NUMBER; BEGIN envtab := pk_environment.get_package_area (pvid, rtagid); IF envtab = 0 THEN -- WORK IN PROGRESS -- pk_work_in_progress.change_package_view (pvid, rtagid, newviewid); ELSIF envtab = 1 THEN -- PENDING -- pk_planned.change_package_view (pvid, rtagid, newviewid); ELSIF envtab = 2 THEN -- RELEASED -- pk_release.change_package_view (pvid, rtagid, newviewid); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE find_package ( skeyword IN VARCHAR2, nrtagid IN NUMBER, nsearcharea IN NUMBER, recordset OUT typecur ) IS BEGIN IF nsearcharea = 0 THEN /* Search Work In Progress */ OPEN recordset FOR SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked, pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments, pv.modified_stamp, usr.full_name, usr.user_email FROM views vi, work_in_progress rc, PACKAGES pkg, package_versions pv, users usr WHERE rc.view_id = vi.view_id AND rc.pv_id = pv.pv_id AND pkg.pkg_id = pv.pkg_id AND pv.modifier_id = usr.user_id AND rc.rtag_id = nrtagid AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword) ORDER BY UPPER (pkg.pkg_name); ELSIF nsearcharea = 1 THEN /* Search Pending */ OPEN recordset FOR SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked, pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments, pv.modified_stamp, usr.full_name, usr.user_email FROM views vi, planned rc, PACKAGES pkg, package_versions pv, users usr WHERE rc.view_id = vi.view_id AND rc.pv_id = pv.pv_id AND pkg.pkg_id = pv.pkg_id AND pv.modifier_id = usr.user_id AND rc.rtag_id = nrtagid AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword) ORDER BY UPPER (pkg.pkg_name); ELSIF nsearcharea = 2 THEN /* Search Released */ OPEN recordset FOR SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked, pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments, pv.modified_stamp, usr.full_name, usr.user_email FROM views vi, release_content rc, PACKAGES pkg, package_versions pv, users usr WHERE rc.base_view_id = vi.view_id AND rc.pv_id = pv.pv_id AND pkg.pkg_id = pv.pkg_id AND pv.modifier_id = usr.user_id AND rc.rtag_id = nrtagid AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword) ORDER BY UPPER (pkg.pkg_name); ELSIF nsearcharea = 3 THEN /* Search ALL */ OPEN recordset FOR SELECT rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments, pv.modified_stamp, usr.full_name, usr.user_email FROM views vi, environment_view rc, PACKAGES pkg, package_versions pv, users usr WHERE rc.view_id = vi.view_id AND rc.pv_id = pv.pv_id AND pkg.pkg_id = pv.pkg_id AND pv.modifier_id = usr.user_id AND rc.rtag_id = nrtagid AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword) ORDER BY UPPER (pkg.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE find_file ( skeyword IN VARCHAR2, nrtagid IN NUMBER, nsearcharea IN NUMBER, npagesize IN NUMBER, recordset OUT typecur ) IS BEGIN IF nsearcharea = 0 THEN /* Search Work In Progress */ OPEN recordset FOR SELECT qry.* FROM ( /* File search on Packages */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum FROM work_in_progress rc, PACKAGES pkg, package_versions pv, release_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword) UNION ALL /* File search on Products */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum FROM work_in_progress rc, PACKAGES pkg, package_versions pv, product_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry WHERE ROWNUM <= npagesize ORDER BY UPPER (qry.pkg_name); ELSIF nsearcharea = 1 THEN /* Search Pending */ OPEN recordset FOR SELECT qry.* FROM ( /* File search on Packages */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum FROM planned rc, PACKAGES pkg, package_versions pv, release_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword) UNION ALL /* File search on Products */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum FROM planned rc, PACKAGES pkg, package_versions pv, product_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry WHERE ROWNUM <= npagesize ORDER BY UPPER (qry.pkg_name); ELSIF nsearcharea = 2 THEN /* Search Released */ OPEN recordset FOR SELECT qry.* FROM ( /* File search on Packages */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum, NULL AS patch_id FROM release_content rc, PACKAGES pkg, package_versions pv, release_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword) UNION ALL /* File search on Products */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum, NULL AS patch_id FROM release_content rc, PACKAGES pkg, package_versions pv, product_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword) UNION ALL /* File search on Patches */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum, DECODE (art.file_path, NULL, pp.patch_id, NULL ) AS patch_id FROM release_content rc, PACKAGES pkg, package_versions pv, release_components art, package_patches pp WHERE pv.pv_id = pp.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.rtag_id = nrtagid AND art.pv_id = pp.patch_id AND rc.pv_id = pp.pv_id AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry WHERE ROWNUM <= npagesize ORDER BY UPPER (qry.pkg_name); ELSIF nsearcharea = 3 THEN /* Search ALL */ OPEN recordset FOR SELECT qry.* FROM ( /* File search on Packages */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum, NULL AS patch_id FROM environment_view rc, PACKAGES pkg, package_versions pv, release_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword) UNION ALL /* File search on Products */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum, NULL AS patch_id FROM environment_view rc, PACKAGES pkg, package_versions pv, product_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword) UNION ALL /* File search on Patches */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum, DECODE (art.file_path, NULL, pp.patch_id, NULL ) AS patch_id FROM release_content rc, PACKAGES pkg, package_versions pv, release_components art, package_patches pp WHERE pv.pv_id = pp.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.rtag_id = nrtagid AND art.pv_id = pp.patch_id AND rc.pv_id = pp.pv_id AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry WHERE ROWNUM <= npagesize ORDER BY UPPER (qry.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_prodrelease_items ( rtagid IN NUMBER, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count n the number of integration products SELECT COUNT (rc.pv_id) INTO ntruerecordcount FROM release_content rc WHERE rc.rtag_id = rtagid; OPEN recordset FOR SELECT vi.view_id, vi.view_name, rel.pkg_state, --rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND pv.is_deployable = 'Y' AND rtag_id = rtagid AND pv.pv_id NOT IN (SELECT DISTINCT prod_id FROM deployment_manager.os_contents) AND rel.product_state IS NULL ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_integration_items ( rtagid IN NUMBER, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count n the number of integration products SELECT COUNT (rc.pv_id) INTO ntruerecordcount FROM release_content rc WHERE rc.rtag_id = rtagid AND rc.product_state = 1; OPEN recordset FOR SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND pv.is_deployable = 'Y' AND rtag_id = rtagid AND rel.product_state IN (1, 5) ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_test_items ( rtagid IN NUMBER, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count n the number of test products SELECT COUNT (rc.pv_id) INTO ntruerecordcount FROM release_content rc WHERE rc.rtag_id = rtagid AND rc.product_state = 2; OPEN recordset FOR SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND pv.is_deployable = 'Y' AND rtag_id = rtagid AND rel.product_state = 2 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_deploy_items ( rtagid IN NUMBER, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count n the number of deploy products SELECT COUNT (rc.pv_id) INTO ntruerecordcount FROM release_content rc WHERE rc.rtag_id = rtagid AND rc.product_state = 3; OPEN recordset FOR SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND pv.is_deployable = 'Y' AND rtag_id = rtagid AND rel.product_state IN (3, 5) AND pv.pv_id NOT IN (SELECT DISTINCT prod_id FROM deployment_manager.os_contents) ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_reject_items ( rtagid IN NUMBER, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count n the number of reject products SELECT COUNT (rc.pv_id) INTO ntruerecordcount FROM release_content rc WHERE rc.rtag_id = rtagid AND rc.product_state = 4; OPEN recordset FOR SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND pv.is_deployable = 'Y' AND rtag_id = rtagid AND rel.product_state = 4 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name); END; /*-------------------------------------------------------------------------------------------------------*/ END pk_environment_test; / ALTER PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT_TEST" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:44' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_PACKAGE_TEST" IS /* ------------------------------ || Last Modified: R. Solanki || Modified Date: 09/03/2006 || Body Version: 1.7 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE new_version ( nlastpvid IN NUMBER, snewpkgversion IN VARCHAR2 DEFAULT NULL, cbuildtype IN CHAR, nsettopvid IN NUMBER DEFAULT NULL, nrtagid IN NUMBER, nuserid IN NUMBER, enumissues_state_imported IN NUMBER, returnpvid OUT NUMBER ) IS origpkg_id package_versions.pkg_id%TYPE; origdlocked package_versions.dlocked%TYPE; ssv_mm package_versions.v_mm%TYPE; ssv_nmm package_versions.v_nmm%TYPE; ssv_ext package_versions.v_ext%TYPE; spackageversion VARCHAR2 (4000); nissuestypes NUMBER; nviewid NUMBER; reccount NUMBER; isreleased package_versions.dlocked%TYPE := 'N'; slabel VARCHAR2 (4000) := NULL; CURSOR package_versions_cur IS SELECT pv.pv_id, pv.is_patch, pv.dlocked FROM package_versions pv WHERE pv.pkg_version = snewpkgversion AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id FROM package_versions origpv WHERE origpv.pv_id = nlastpvid); package_versions_rec package_versions_cur%ROWTYPE; CURSOR clone_package_versions_cur IS SELECT DISTINCT pkg_id, dlocked FROM package_versions WHERE pv_id = nlastpvid; clone_package_versions_rec clone_package_versions_cur%ROWTYPE; BEGIN spackageversion := snewpkgversion; IF nsettopvid IS NULL THEN -- SetToPv_id is not supplied, hence proceed. /* ---------------------------------------------------- */ /* Find id package_version exists */ /* ---------------------------------------------------- */ OPEN package_versions_cur; FETCH package_versions_cur INTO package_versions_rec; IF package_versions_cur%NOTFOUND THEN --- Create brand new package --- SELECT seq_pv_id.NEXTVAL INTO returnpvid FROM DUAL; -- Split Version to get extention + other split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext); -- Get previous package to clone from OPEN clone_package_versions_cur; FETCH clone_package_versions_cur INTO clone_package_versions_rec; origpkg_id := clone_package_versions_rec.pkg_id; origdlocked := clone_package_versions_rec.dlocked; CLOSE clone_package_versions_cur; -- Automated built config IF (cbuildtype = 'A') THEN spackageversion := '(' || returnpvid || ')' || ssv_ext; -- Make sure that version is still unique END IF; -- Clone Package Version Details -- INSERT INTO package_versions (pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, v_mm, v_nmm, v_ext, src_path, pv_description, pv_overview, last_pv_id, owner_id, is_deployable, is_build_env_required, build_type, bs_id, is_autobuildable) SELECT returnpvid AS pv_id, origpkg_id AS pkg_id, spackageversion AS pkg_version, 'N' AS dlocked, ora_sysdate AS created_stamp, nuserid AS creator_id, ora_sysdatetime AS modified_stamp, nuserid AS modifier_id, ssv_mm AS v_mm, ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path, pv.pv_description, pv.pv_overview, nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable, pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable FROM package_versions pv WHERE pv.pv_id = nlastpvid; -- Set Issues Type for cloning --- IF origdlocked = 'Y' THEN nissuestypes := enumissues_state_imported; ELSE nissuestypes := NULL; END IF; -- Update Label for automated built IF (cbuildtype = 'A') THEN slabel := get_automated_label (returnpvid); UPDATE package_versions pv SET pv.pkg_label = slabel WHERE pv.pv_id = returnpvid; END IF; basic_clone (nlastpvid, returnpvid, nrtagid, nuserid, origpkg_id, nissuestypes ); ELSE --- Package already exists, hence reuse --- returnpvid := package_versions_rec.pv_id; isreleased := package_versions_rec.dlocked; END IF; CLOSE package_versions_cur; ELSE returnpvid := nsettopvid; END IF; END new_version; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE change_state ( pvid IN NUMBER, newstate IN package_versions.dlocked%TYPE, userid IN NUMBER ) IS BEGIN -- Set package in Released mode UPDATE package_versions pv SET pv.dlocked = newstate, pv.modified_stamp = ora_sysdatetime, pv.modifier_id = userid WHERE pv.pv_id = pvid; -- Log action -- IF newstate = 'Y' THEN -- RELEASED -- log_action (pvid, 'makeofficial', userid, 'Package state change to: Released' ); ELSIF newstate = 'N' THEN -- UNLOCKED -- log_action (pvid, 'makeunofficial', userid, 'Package state change to: Ulocked' ); ELSIF newstate = 'P' THEN -- PENDING APPROVAL -- log_action (pvid, 'add_to_planned', userid, 'Package state change to: Pending Approval' ); ELSIF newstate = 'R' THEN -- REJECTED -- log_action (pvid, 'reject_package', userid, 'Package state change to: Rejected' ); ELSIF newstate = 'A' THEN -- APPROVED -- log_action (pvid, 'approve_package', userid, 'Package state change to: Approved' ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE destroy_package ( pvid IN NUMBER, overridewarnings IN CHAR DEFAULT 'N', problemstring OUT VARCHAR2 ) IS LOCKED CHAR; pkgid NUMBER; ROWCOUNT NUMBER; BEGIN /* || This will destroy all package details from database. || It will only be used to remove unwanted work in progress packages, || or mestaken versions */ /*--------------- Business Rules Here -------------------*/ problemstring := NULL; IF overridewarnings = 'N' THEN -- Package must not be official SELECT pv.dlocked INTO LOCKED FROM package_versions pv WHERE pv.pv_id = pvid; IF LOCKED = 'Y' THEN problemstring := problemstring || '- Package is locked and released.' || UTL_TCP.crlf; END IF; -- Cannot remove if used in BOMs SELECT COUNT (osc.prod_id) INTO ROWCOUNT FROM deployment_manager.os_contents osc WHERE osc.prod_id = pvid; IF ROWCOUNT > 0 THEN problemstring := problemstring || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.' || UTL_TCP.crlf; END IF; -- Cannot remove if Referenced as build dependency SELECT COUNT (dep.pv_id) INTO ROWCOUNT FROM package_dependencies dep WHERE dep.dpv_id = pvid; IF ROWCOUNT > 0 THEN problemstring := problemstring || '- Package is referenced by other package as build dependency.' || UTL_TCP.crlf; END IF; -- Cannot remove if Referenced as runtime dependency SELECT COUNT (rd.pv_id) INTO ROWCOUNT FROM runtime_dependencies rd WHERE rd.rtd_id = pvid; IF ROWCOUNT > 0 THEN problemstring := problemstring || '- Package is referenced by other package as runtime dependency.' || UTL_TCP.crlf; END IF; -- Cannot remove if Referenced as patch SELECT COUNT (pp.pv_id) INTO ROWCOUNT FROM package_patches pp WHERE pp.patch_id = pvid; IF ROWCOUNT > 0 THEN problemstring := problemstring || '- Package is used as patch by other package.' || UTL_TCP.crlf; END IF; END IF; /*-------------------------------------------------------*/ IF (problemstring IS NULL) THEN --- Remove From Work in Progress DELETE FROM work_in_progress wip WHERE wip.pv_id = pvid; --- Remove From Pending DELETE FROM planned pl WHERE pl.pv_id = pvid; --- Remove From Released area DELETE FROM release_content rc WHERE rc.pv_id = pvid; ---Remove From Package Processes DELETE FROM package_processes pp WHERE pp.pv_id = pvid; --- Remove Dependencies DELETE FROM package_dependencies dep WHERE dep.pv_id = pvid; DELETE FROM package_dependencies dep WHERE dep.dpv_id = pvid; --- Remove Runtime dependencies DELETE FROM runtime_dependencies rtd WHERE rtd.pv_id = pvid; DELETE FROM runtime_dependencies rtd WHERE rtd.rtd_id = pvid; --- Remove components DELETE FROM product_components pc WHERE pc.pv_id = pvid; DELETE FROM release_components rc WHERE rc.pv_id = pvid; --- Remove From Notification History DELETE FROM notification_history nh WHERE nh.pv_id = pvid; --- Remove From Ignore Warnings DELETE FROM ignore_warnings iw WHERE iw.pv_id = pvid; --- Remove From Additional Notes DELETE FROM additional_notes an WHERE an.pv_id = pvid; --- Remove From CQ Issues DELETE FROM cq_issues cq WHERE cq.pv_id = pvid; --- Remove from Package Patches DELETE FROM package_patches pp WHERE pp.pv_id = pvid; DELETE FROM package_patches pp WHERE pp.patch_id = pvid; --- Remove From Package Documents DELETE FROM package_documents pd WHERE pd.pv_id = pvid; --- Remove from Code Review DELETE FROM code_reviews cr WHERE cr.pv_id = pvid; --- Remove from Unit Tests DELETE FROM unit_tests ut WHERE ut.pv_id = pvid; --- Remove from Package BuildEnv DELETE FROM package_build_env pbe WHERE pbe.pv_id = pvid; --- Remove from Package Build Info DELETE FROM package_build_info pbi WHERE pbi.pv_id = pvid; --- Remove from Build Order DELETE FROM build_order bo WHERE bo.pv_id = pvid; --- Remove from Note Manager DELETE FROM note_manager nm WHERE nm.nid = pvid; --- Remove from Action log DELETE FROM action_log al WHERE al.pv_id = pvid; --- Remove from Do Not Ripple DELETE FROM DO_NOT_RIPPLE dnr WHERE dnr.PV_ID = pvid; --- Remove from Jira Issues DELETE FROM JIRA_ISSUES jira WHERE jira.PV_ID = pvid; --- Finally Remove From Package Versions --- Get Package name SELECT pv.pkg_id INTO pkgid FROM package_versions pv WHERE pv.pv_id = pvid; DELETE FROM package_versions pv WHERE pv.pv_id = pvid; --- Remove package name if not used any more SELECT COUNT (pv.pv_id) INTO ROWCOUNT FROM package_versions pv WHERE pv.pkg_id = pkgid; IF ROWCOUNT < 1 THEN DELETE FROM PACKAGES pkg WHERE pkg.pkg_id = pkgid; END IF; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE new_patch ( snewpatchversion IN package_versions.pkg_version%TYPE, nparentpvid IN NUMBER, spatchidlist IN VARCHAR2, nuserid IN NUMBER, returnpatchid OUT NUMBER ) IS patchpv_id NUMBER; parpkg_id NUMBER; lastinstallorder NUMBER; ispatchdlocked package_versions.dlocked%TYPE; ssv_mm package_versions.v_mm%TYPE; ssv_nmm package_versions.v_nmm%TYPE; ssv_ext package_versions.v_ext%TYPE; opatchdepcollector relmgr_number_tab_t := relmgr_number_tab_t (); CURSOR parent_cur IS SELECT pv.*, pkg.pkg_name FROM package_versions pv, PACKAGES pkg WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id; parent_rec parent_cur%ROWTYPE; CURSOR patch_cur IS SELECT pv.*, pg.pkg_name FROM package_versions pv, PACKAGES pg WHERE pv.pkg_id = parpkg_id AND pv.pkg_version = snewpatchversion AND pv.pkg_id = pg.pkg_id; patch_rec patch_cur%ROWTYPE; CURSOR releases_cur IS SELECT rc.pv_id FROM release_content rc WHERE rc.pv_id = patch_rec.pv_id; releases_rec releases_cur%ROWTYPE; BEGIN -- Get Last Install Order SELECT COUNT (*) INTO lastinstallorder FROM package_patches pp WHERE pp.pv_id = nparentpvid; -- Get parent details OPEN parent_cur; FETCH parent_cur INTO parent_rec; parpkg_id := parent_rec.pkg_id; -- Find if patch exists in database OPEN patch_cur; FETCH patch_cur INTO patch_rec; -- Parent must be official IF parent_rec.dlocked = 'Y' THEN IF patch_cur%NOTFOUND THEN ispatchdlocked := 'N'; -- Create new patch version -- SELECT seq_pv_id.NEXTVAL INTO patchpv_id FROM DUAL; split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext); INSERT INTO package_versions (pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, v_mm, v_nmm, v_ext, src_path, pv_description, owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id, is_autobuildable ) VALUES (patchpv_id, parpkg_id, snewpatchversion, ispatchdlocked, ora_sysdate, nuserid, ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext, parent_rec.src_path, 'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version, nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N' ); INSERT INTO package_patches (pv_id, patch_id, install_order) (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id, lastinstallorder + 1 AS install_order FROM package_versions pv WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y'); /* LOG ACTION */ log_action (patchpv_id, 'new_version', nuserid, 'Patch version created: ' || snewpatchversion ); log_action (nparentpvid, 'patch_add', nuserid, 'New patch created and attached: ' || snewpatchversion ); ELSE patchpv_id := patch_rec.pv_id; ispatchdlocked := patch_rec.dlocked; -- Find if pv_id exists in release content (i.e. it cannot be a patch) OPEN releases_cur; FETCH releases_cur INTO releases_rec; IF releases_cur%NOTFOUND THEN -- This pv_id is trully a patch, hence add Y to column IS_PATCH UPDATE package_versions SET is_patch = 'Y' WHERE pv_id = patchpv_id; INSERT INTO package_patches (pv_id, patch_id, install_order) (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id, lastinstallorder + 1 AS install_order FROM package_versions pv WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y'); END IF; CLOSE releases_cur; /* LOG ACTION */ log_action (nparentpvid, 'patch_add', nuserid, 'Patch version was found and attached: ' || snewpatchversion ); END IF; END IF; /* Create Patch Dependencies */ opatchdepcollector := in_list_number (spatchidlist); -- Make sure patch is unofficial before altering its dependencies IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N') THEN -- Delete Existing Dependencies DELETE FROM package_dependencies dep WHERE dep.pv_id = patchpv_id; -- Insert new dependencies INSERT INTO package_dependencies (pv_id, dpv_id, pkg_id, dpkg_id, build_type) SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id, parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id, 'L' AS build_type FROM package_versions pv WHERE pv.pv_id IN ( SELECT * FROM TABLE (CAST (opatchdepcollector AS relmgr_number_tab_t) )); END IF; -- Return patch_id returnpatchid := patchpv_id; CLOSE parent_cur; CLOSE patch_cur; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN raise_application_error (-20000, 'Patch version ' || snewpatchversion || ' already exist.' ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE obsolete_patch ( patchid IN NUMBER, isobsolete IN CHAR, obsoletecomments IN VARCHAR2, userid IN NUMBER ) IS BEGIN -- Update patch UPDATE package_versions pv SET pv.is_obsolete = isobsolete, pv.obsolete_comments = obsoletecomments WHERE pv.pv_id = patchid; /* -- Update patch children UPDATE PACKAGE_VERSIONS pv SET pv.IS_OBSOLETE = IsObsolete, pv.OBSOLETE_COMMENTS = ObsoleteComments WHERE pv.PV_ID IN ( SELECT DISTINCT dep.DPV_ID FROM PACKAGE_DEPENDENCIES dep WHERE dep.PV_ID = PatchId ); -- Update patch parent UPDATE PACKAGE_VERSIONS pv SET pv.IS_OBSOLETE = IsObsolete, pv.OBSOLETE_COMMENTS = ObsoleteComments WHERE pv.PV_ID IN ( SELECT DISTINCT dep.PV_ID FROM PACKAGE_DEPENDENCIES dep WHERE dep.DPV_ID = PatchId ); */ /* LOG ACTION */ IF isobsolete IS NOT NULL THEN log_action (patchid, 'patch_obsolete', userid, 'Obsolete patch. ' || obsoletecomments ); ELSE log_action (patchid, 'patch_obsolete', userid, 'Undo patch obsolete.' ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE obsolete_patches ( spatchidlist IN VARCHAR2, isobsolete IN CHAR, obsoletecomments IN VARCHAR2, userid IN NUMBER ) IS BEGIN /*--------------- Business Rules Here -------------------*/ IF spatchidlist IS NULL THEN raise_application_error (-20000, 'Please select one or more Patches.' ); END IF; /*-------------------------------------------------------*/ -- Update patch UPDATE package_versions pv SET pv.is_obsolete = isobsolete, pv.obsolete_comments = obsoletecomments WHERE pv.pv_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (spatchidlist) AS relmgr_number_tab_t ) FROM DUAL )); /* -- Update patch children UPDATE PACKAGE_VERSIONS pv SET pv.IS_OBSOLETE = IsObsolete, pv.OBSOLETE_COMMENTS = ObsoleteComments WHERE pv.PV_ID IN ( SELECT DISTINCT dep.DPV_ID FROM PACKAGE_DEPENDENCIES dep WHERE dep.PV_ID = PatchId ); -- Update patch parent UPDATE PACKAGE_VERSIONS pv SET pv.IS_OBSOLETE = IsObsolete, pv.OBSOLETE_COMMENTS = ObsoleteComments WHERE pv.PV_ID IN ( SELECT DISTINCT dep.PV_ID FROM PACKAGE_DEPENDENCIES dep WHERE dep.DPV_ID = PatchId ); */ /* LOG ACTION IF IsObsolete IS NOT NULL THEN Log_Action ( PatchId, 'patch_obsolete', UserId, 'Obsolete patch. '|| ObsoleteComments ); ELSE Log_Action ( PatchId, 'patch_obsolete', UserId, 'Undo patch obsolete.' ); END IF; */ END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE add_process ( nprocid IN processes.proc_id%TYPE, shealthtag IN processes.proc_name%TYPE, sprocdesc IN processes.proc_description%TYPE, scmdinterface IN processes.run_as%TYPE, spkgowner IN processes.pkg_owner%TYPE, sisinterface IN processes.is_interface%TYPE, npvid IN package_processes.pv_id%TYPE, nuserid IN NUMBER ) IS pkgname VARCHAR2 (100); /*Rupesh Release on 17/05/2006*/ BEGIN INSERT INTO processes (proc_id, proc_name, proc_description, run_as, pkg_owner, is_interface ) VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner, sisinterface ); pk_package.add_package_process (nprocid, npvid, nuserid); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE add_package_process ( nprocidlist IN VARCHAR2, npvid IN package_processes.pv_id%TYPE, nuserid IN NUMBER ) IS processname VARCHAR2 (4000); /*Rupesh Release on 17/05/2006*/ CURSOR proc_cur IS SELECT prc.proc_id FROM processes prc WHERE prc.proc_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (nprocidlist) AS relmgr_number_tab_t ) FROM DUAL )); proc_rec proc_cur%ROWTYPE; BEGIN OPEN proc_cur; FETCH proc_cur INTO proc_rec; WHILE proc_cur%FOUND LOOP INSERT INTO package_processes (proc_id, pv_id ) VALUES (proc_rec.proc_id, npvid ); SELECT prc.proc_name INTO processname FROM processes prc WHERE prc.proc_id = proc_rec.proc_id; -- Log Action -- log_action (npvid, 'process_add', nuserid, 'Added process with health tag ' || processname ); FETCH proc_cur INTO proc_rec; END LOOP; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE remove_process ( nprocid IN package_processes.proc_id%TYPE, npvid IN package_processes.pv_id%TYPE, nuserid IN NUMBER ) IS processname VARCHAR2 (4000); /* Rupesh Release on 17/05/2006*/ BEGIN SELECT prc.proc_name INTO processname FROM processes prc WHERE prc.proc_id = nprocid; DELETE FROM package_processes WHERE proc_id = nprocid AND pv_id = npvid; -- Log Action -- log_action (npvid, 'process_remove', nuserid, 'Removed process with health tag ' || processname ); END; /*-------------------------------------------------------------------------------------------------------*/ /* Author: Rupesh Solanki Purpose: To move package versions from one release to another Release: 4th September 2006 */ PROCEDURE move_package ( npvid IN package_versions.pv_id%TYPE, nrtagid IN release_tags.rtag_id%TYPE, nnewrtagid IN release_tags.rtag_id%TYPE, nuserid IN NUMBER ) IS oldrtag_name VARCHAR2(4000); newrtag_name VARCHAR2(4000); BEGIN SELECT rtag_name into oldrtag_name FROM RELEASE_TAGS WHERE rtag_id = nrtagid; SELECT rtag_name into newrtag_name FROM RELEASE_TAGS WHERE rtag_id = nnewrtagid; /* Table Work In Progress*/ UPDATE WORK_IN_PROGRESS SET RTAG_ID = nnewrtagid WHERE RTAG_ID = nrtagid AND PV_ID = npvid; /* Table PLANNED*/ UPDATE PLANNED SET RTAG_ID = nnewrtagid WHERE RTAG_ID = nrtagid AND PV_ID = npvid; -- Log Action -- log_action (npvid, 'move_package_version', nuserid, 'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE modify_product_state ( npvid IN package_versions.pv_id%TYPE, nstateid IN product_states.state_id%TYPE, nuserid IN NUMBER ) IS sStateName VARCHAR(4000); /* Author: Rupesh Solanki Purpose: To modify the product state from integration to test to deployment Release: 25th January 2006 */ BEGIN UPDATE PACKAGE_VERSIONS SET PRODUCT_STATE = nstateid WHERE PV_ID = npvid; SELECT STATE INTO sStateName FROM PRODUCT_STATES WHERE STATE_ID = nstateid; -- Log Action -- log_action (npvid, 'modify_product_state', nuserid, sStateName ); END; /*-------------------------------------------------------------------------------------------------------*/ END pk_package_Test; / ALTER PACKAGE "RELEASE_MANAGER"."PK_PACKAGE_TEST" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:45' / CREATE PACKAGE BODY "RELEASE_MANAGER"."RM_ISSUES" AS -- Private Implementation ----------------------------------------------------- FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER AS BEGIN -- start boundary case IF ( XXstart < XX ) THEN RETURN 1; ELSIF ( XXstart = XX ) THEN -- need to consider YY IF ( YYstart < YY ) THEN RETURN 1; ELSIF ( YYstart = YY ) THEN -- need to consider ZZ IF ( ZZstart <= ZZ ) THEN RETURN 1; ELSE RETURN 0; END IF; ELSE RETURN 0; END IF; ELSE RETURN 0; END IF; EXCEPTION WHEN OTHERS THEN RETURN -1; END; FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER AS BEGIN -- end boundary case IF ( XX < XXend ) THEN RETURN 1; ELSIF ( XX = XXend ) THEN -- need to consider YY IF ( YY < YYend ) THEN RETURN 1; ELSIF ( YY = YYend ) THEN -- need to consider ZZ IF ( ZZ <= ZZend ) THEN RETURN 1; ELSE RETURN 0; END IF; ELSE RETURN 0; END IF; ELSE RETURN 0; END IF; EXCEPTION WHEN OTHERS THEN RETURN -1; END; /* - version format: XX.YY.ZZ.abc */ FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER AS XXstart NUMBER := 0; XXend NUMBER := 0; XX NUMBER := 0; YYstart NUMBER := 0; YYend NUMBER := 0; YY NUMBER := 0; ZZstart NUMBER := 0; ZZend NUMBER := 0; ZZ NUMBER := 0; first_dot NUMBER := 0; second_dot NUMBER := 0; third_dot NUMBER := 0; ProjExtstart VARCHAR2(10); ProjExtend VARCHAR2(10); ProjExt VARCHAR2(10); BEGIN -- strip the version number first_dot := INSTR(version_start, '.', 1, 1); second_dot := INSTR(version_start, '.', 1, 2); third_dot := INSTR(version_start, '.', 1, 3); XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) ); YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) ); ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) ); ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot ); first_dot := INSTR(version_end, '.', 1, 1); second_dot := INSTR(version_end, '.', 1, 2); third_dot := INSTR(version_end, '.', 1, 3); XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) ); YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) ); ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) ); ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot ); first_dot := INSTR(version, '.', 1, 1); second_dot := INSTR(version, '.', 1, 2); third_dot := INSTR(version, '.', 1, 3); XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) ); YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) ); ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) ); ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot ); -- only include versions if all project extensions are the same IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN RETURN 1; ELSE RETURN 0; END IF; ELSE RETURN 0; END IF; EXCEPTION WHEN OTHERS THEN RETURN -1; END; FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER AS pkg_id NUMBER; BEGIN SELECT p.PKG_ID INTO pkg_id FROM PACKAGES p WHERE p.PKG_NAME = pkgName; RETURN pkg_id; EXCEPTION WHEN OTHERS THEN dbms_output.put_line('GetPkgId exception: ' || SQLERRM ); RETURN -1; END; -- Public Implementation ------------------------------------------------------ /* -- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep -- -- INPUT PARAMETERS: -- -- pkg_name - The name of the top level package to get issues for -- version_start - The start version for the comparison -- version_end - The end version for the comparison */ PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 ) AS pkgId NUMBER; BEGIN -- get pkg_id of the input package: pkgId := GetPkgId( pkg_name ); OPEN vCursor FOR SELECT pv.PKG_ID, pv.PKG_VERSION, pv.PV_ID, i_pkg.ISS_ID, ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME, pd.DPKG_ID, ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER, pd.DPV_ID, i_dpkg.ISS_ID AS ISSUE_ID FROM PACKAGE_VERSIONS pv LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID WHERE pv.PKG_ID = pkgId AND VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1 AND ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL ) ORDER BY pv.PKG_ID, pv.PV_ID, pd.DPKG_ID, pd.DPV_ID; EXCEPTION WHEN OTHERS THEN dbms_output.put_line('AllIssues exception: ' || SQLERRM ); END; -- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok /* -- Proc: LoadIssuesTable -- -- Populates Package_Issues table with details of issues from all dependent packages. -- This will be for all package versions of the input pkg_name between the -- version_start and version_end. -- -- INPUT PARAMETERS: -- -- pkg_name - The name of the top level package to get issues for -- version_start - The start version for the comparison -- version_end - The end version for the comparison */ PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 ) AS pkgId NUMBER; CURSOR pack_vers_cur IS SELECT pv.PV_ID, pv.PKG_VERSION, pv.PKG_ID, p.PKG_NAME FROM PACKAGE_VERSIONS pv JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID WHERE pv.PKG_ID = pkgId AND VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1; BEGIN DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/ -- get the pkg_id we are finding issues for pkgId := GetPkgId( pkg_name ); -- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues. FOR pack_ver_rec IN pack_vers_cur LOOP InsertIssuesForDepends( pack_ver_rec.PV_ID, pack_ver_rec.PKG_ID, pack_ver_rec.PKG_NAME, pack_ver_rec.PV_ID, pack_ver_rec.PKG_VERSION ); COMMIT; END LOOP; -- The output cursor - shows the individual versions of the top level package then were reported on OPEN vCursor FOR SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/ /*removed SELECT PKG_VERSION FROM RELEASE_MANAGER.RM_PACKAGE_ISSUES; */ EXCEPTION WHEN OTHERS THEN dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM ); END; /* -- Proc: InsertIssuesForDepends -- -- Used by LoadIssuesTable to recursively find issues for all dependent packages -- -- INPUT PARAMETERS: -- -- pvID - The package version id of the package to get issues for -- top_pkgID - The package id of the top level package to get issues for - should be the same as pvID when called from LoadIssuesTable (different when called recursively) -- top_pkgName - The package name of the top level package -- top_pvID - The package version id of the top level package -- top_pkgVer - The package version description of the top level package */ PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 ) AS pkgId NUMBER; issCnt NUMBER := 0; pkgCheck NUMBER := 0; depCheck NUMBER := 0; dpkgName VARCHAR(50); dpkgVersion VARCHAR(50); CURSOR dep_packs_cur IS SELECT DPV_ID FROM PACKAGE_DEPENDENCIES WHERE PV_ID = pvID; BEGIN -- check to see if the package has been processed previously SELECT COUNT(*) INTO pkgCheck FROM RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/ WHERE DPV_ID = pvID; dbms_output.put_line('pkgCheck: ' || pkgCheck ); -- Package not already processed (no cyclic dependency) - process it IF ( pkgCheck = 0 ) THEN -- check to see if this package version has any issues assigned to it SELECT COUNT(*) INTO issCnt FROM CQ_ISSUES i WHERE i.PV_ID = pvID; dbms_output.put_line('issCnt: ' || issCnt ); -- Always enter a marker row into the table even if there are no issues for the package. -- This allows us to pick up any cyclic dependencies. IF ( issCnt > 0 ) THEN -- get issues and insert into RM_PACKAGE_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/ INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID ) SELECT DISTINCT top_pkgID AS PKG_ID, top_pkgName AS PKG_NAME, top_pvID AS PV_ID, top_pkgVer AS PKG_VERSION, pv.PV_ID AS DPV_ID, p.PKG_NAME AS DPKG_NAME, pv.PKG_VERSION AS DPKG_VERSION, ci.ISS_DB, ci.ISS_ID FROM PACKAGE_VERSIONS pv JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID WHERE pv.PV_ID = pvID; ELSE -- get the dpkg details - there will always be a row returned here SELECT p.PKG_NAME INTO dpkgName FROM PACKAGE_VERSIONS pv JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID WHERE pv.PV_ID = pvID; SELECT pv.PKG_VERSION INTO dpkgVersion FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = pvID; -- enter a marker row /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/ INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID ) VALUES ( top_pkgID, top_pkgName, top_pvID, top_pkgVer, pvID, dpkgName, dpkgVersion, NULL, NULL ); END IF; -- If this package version has dependencies then recurse SELECT COUNT(*) INTO depCheck FROM PACKAGE_DEPENDENCIES WHERE PV_ID = pvID; IF ( depCheck > 0 ) THEN -- get dependencies and call this function recursively for each one FOR dep_rec IN dep_packs_cur LOOP InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer ); END LOOP; END IF; END IF; /*EXCEPTION WHEN OTHERS THEN no exception handling required */ END; END Rm_Issues; / ALTER PACKAGE "RELEASE_MANAGER"."RM_ISSUES" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2008-05-26 11:58:46' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_BUILDAPI_TEST" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 30/Mar/2005 || Body Version: 1.0 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE Add_Product_Component ( nPvId IN NUMBER, sOsName IN VARCHAR2, sOrigFilePath IN VARCHAR2, sFileName IN VARCHAR2, sDestFilePath IN VARCHAR2, nByteSize IN NUMBER, sCRCcksum IN VARCHAR2 ) IS nOsId NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ -- OS Name Requirements -- IF (sOsName IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'OsName cannot be NULL.'); END IF; -- File Requirements -- IF (NOT sFileName IS NULL) THEN IF (nByteSize IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Byte Size cannot be NULL.'); ELSIF (sCRCcksum IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'CRC CKSUM cannot be NULL.'); END IF; END IF; -- Folder Requirements -- -- No requirements for now. /*-------------------------------------------------------*/ -- Get OsId nOsId := Get_OsId ( sOsName ); -- Insert component entry INSERT INTO PRODUCT_COMPONENTS ( PV_ID, OS_ID, FILE_PATH, FILE_NAME, DESTINATION_PATH, BYTE_SIZE, CRC_CKSUM ) VALUES ( nPvId, nOsId, sOrigFilePath, sFileName, sDestFilePath, nByteSize, sCRCcksum ); EXCEPTION WHEN DUP_VAL_ON_INDEX THEN RAISE_APPLICATION_ERROR (-20000, 'Cannot have duplicate product components.'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 ) IS nOsId NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ -- Get OsId nOsId := Get_OsId ( sOsName ); -- Delete component entry DELETE FROM PRODUCT_COMPONENTS pc WHERE pc.PV_ID = nPvId AND pc.OS_ID = nOsId; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER IS Code NUMBER; BEGIN -- Get Platform Code -- SELECT pf.CODE INTO Code FROM PLATFORMS pf WHERE UPPER( pf.NAME ) = UPPER( sOsName ); RETURN Code; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR (-20000, 'Platform '|| sOsName ||' is not valid. It needs to be added to PLATFORMS table in Release Manager.' ); RAISE; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2, sWebServer IN VARCHAR2, sMailServer IN VARCHAR2, sMailSender IN VARCHAR2) IS BEGIN UPDATE BUILD_SERVICE_CONFIG SET CONFIG = sDatabaseServer WHERE SERVICE = 'DATABASE SERVER'; UPDATE BUILD_SERVICE_CONFIG SET CONFIG = sWebServer WHERE SERVICE = 'WEB SERVER'; UPDATE BUILD_SERVICE_CONFIG SET CONFIG = sMailServer WHERE SERVICE = 'MAIL SERVER'; UPDATE BUILD_SERVICE_CONFIG SET CONFIG = sMailSender WHERE SERVICE = 'BUILD FAILURE MAIL SENDER'; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue in VARCHAR2 ) IS GBE_ID NUMBER; BEGIN -- Get GBE_ID SELECT SEQ_GBE_ID.NEXTVAL INTO GBE_ID FROM DUAL; INSERT INTO GBE_MACHTYPE (GBE_ID, GBE_VALUE) VALUES( GBE_ID, sGBEValue); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER ) IS BEGIN DELETE FROM GBE_MACHTYPE WHERE GBE_ID = nGBE_ID; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 ) IS BEGIN UPDATE GBE_MACHTYPE SET GBE_VALUE = sGBEValue WHERE GBE_ID = nGBE_ID; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER ) IS nRecordNumber NUMBER; nRconId NUMBER; BEGIN -- Get RCON_ID SELECT SEQ_RCON_ID.NEXTVAL INTO nRconId FROM DUAL; SELECT count(*) INTO nRecordNumber FROM RELEASE_CONFIG WHERE RTAG_ID = nRtagId; IF nRecordNumber = 0 THEN INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID) VALUES (nRconId, nRtagId, sDaemonHostname, 'M', nGbeId); ELSE INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID) VALUES (nRconId, nRtagId, sDaemonHostname, 'S', nGbeId); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ END PK_BUILDAPI_TEST; / ALTER PACKAGE "RELEASE_MANAGER"."PK_BUILDAPI_TEST" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-07-04 14:13:56' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_PROJECT" IS /* ------------------------------ || Last Modified: J.Tweddle || Modified Date: 23/Aug/2007 || Body Version: 1.0 ------------------------------ */ /*------------------------------------------------------------------------*/ PROCEDURE update_base_url ( nprojid IN projects.proj_id%TYPE, sbaseurl IN VARCHAR2 ) IS BEGIN UPDATE projects SET base_url = sbaseurl WHERE proj_id = nprojid; END update_base_url; /*------------------------------------------------------------------------*/ END pk_project; / ALTER PACKAGE "RELEASE_MANAGER"."PK_PROJECT" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-08-23 16:12:34' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_RELEASE_TEST" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 12/Sep/2005 || Body Version: 3.0 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS RtagId NUMBER; ParentRtagId NUMBER; RecCount NUMBER := 0; BEGIN /*--------------- Business Rules Here -------------------*/ -- Check for missing parameters IF (sReleaseName IS NULL) OR (nUserId IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ); END IF; -- Check for duplicate Release Names SELECT COUNT(rt.RTAG_ID) INTO RecCount FROM RELEASE_TAGS rt WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName ) AND rt.PROJ_ID = nProjId; IF (RecCount > 0) THEN RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.'); END IF; /*-------------------------------------------------------*/ -- Get rtag_id SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL; -- Get Parent RtagId ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched ); -- Create new release INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, OFFICIAL, REBUILD_ENV, REBUILD_STAMP, PARENT_RTAG_ID, PROJ_ID ) VALUES ( RtagId, sReleaseName, sReleaseComments, ORA_SYSDATE, nUserId, 'N', 'N', 0, ParentRtagId, nProjId ); -- Update display Order UPDATE_DISPLAY_ORDER ( nProjId ); /* Log Project Action */ Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId ); -- Import Release Contents IF (NOT nSourceRtagId IS NULL) THEN Import_Release_Contents ( nSourceRtagId, RtagId, nUserId ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ UPDATE RELEASE_TAGS urt SET urt.DISPLAY_ORDER = ( SELECT qry.REC_NUM FROM ( SELECT rel.*, ROWNUM AS REC_NUM FROM ( SELECT rt.RTAG_ID, rt.DISPLAY_ORDER, DECODE( rt.PARENT_RTAG_ID, rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID FROM RELEASE_TAGS rt WHERE rt.PROJ_ID = nProjId ) rel START WITH rel.PARENT_RTAG_ID = 0 CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID ORDER SIBLINGS BY rel.DISPLAY_ORDER ) qry WHERE qry.RTAG_ID = urt.RTAG_ID ) WHERE urt.PROJ_ID = nProjId; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER ) IS nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t(); SeqNum NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ nIdCollector := IN_LIST_NUMBER ( sRtagIdList ); -- Set start sequence number SeqNum := 1; FOR i IN 1..nIdCollector.COUNT LOOP -- Update new display order UPDATE RELEASE_TAGS rt SET rt.DISPLAY_ORDER = SeqNum WHERE rt.PROJ_ID = nProjId AND rt.RTAG_ID = nIdCollector(i); SeqNum := SeqNum + 1; END LOOP; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, nUserId IN NUMBER ) IS RecCount NUMBER := 0; ProjId NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ -- Check for missing parameters IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId); END IF; -- Check for duplicate Release Names SELECT rt.PROJ_ID INTO ProjId FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nRtagId; SELECT COUNT(rt.RTAG_ID) INTO RecCount FROM RELEASE_TAGS rt WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName ) AND rt.RTAG_ID != nRtagId AND rt.PROJ_ID = ProjId; IF (RecCount > 0) THEN RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.'); END IF; /*-------------------------------------------------------*/ -- Update release details UPDATE RELEASE_TAGS rt SET rt.RTAG_NAME = sReleaseName, rt.DESCRIPTION = sReleaseComments, rt.PARENT_RTAG_ID = nParentRtagId, rt.ASSOC_MASS_REF = nMASSRtagId, rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch WHERE rt.RTAG_ID = nRtagId; -- Update display Order UPDATE_DISPLAY_ORDER ( ProjId ); /* Log Project Action */ Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name:
Release Comments:', nRtagId ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS RecCount NUMBER := 0; sReleaseId VARCHAR2(4000); ProjId NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ IF (nRtagId IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ); END IF; -- Check for any kids SELECT COUNT( rt.RTAG_ID ) INTO RecCount FROM RELEASE_TAGS rt WHERE rt.PARENT_RTAG_ID = nRtagId AND rt.RTAG_ID != rt.PARENT_RTAG_ID; IF (RecCount > 0) THEN RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.' ); END IF; /*-------------------------------------------------------*/ -- Clear the release contents Clean_Release_Contents ( nRtagId, nUserId ); /* Log Project Action */ SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nRtagId; Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId ); -- Remove Release DELETE FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nRtagId; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER ) IS sSourceLocation VARCHAR2(4000); sTargetLocation VARCHAR2(4000); ProjId NUMBER; cReleaseMode CHAR(1); BEGIN /*--------------- Business Rules Here -------------------*/ IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId ); END IF; IF (nSourceRtagId = nTargetRtagId) THEN RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' ); END IF; -- Check if Target release is in OPEN mode SELECT rt.OFFICIAL INTO cReleaseMode FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nTargetRtagId; IF (cReleaseMode != 'N') THEN RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' ); END IF; /*-------------------------------------------------------*/ -- Clean target contents Clean_Release_Contents ( nTargetRtagId, nUserId ); -- Import Released Area Contents INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE ) SELECT nTargetRtagId AS RTAG_ID, rc.PV_ID, rc.BASE_VIEW_ID, rc.INSERT_STAMP, rc.INSERTOR_ID, rc.PKG_STATE FROM RELEASE_CONTENT rc WHERE rc.RTAG_ID = nSourceRtagId; -- Import Ignore Warning states INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID ) SELECT nTargetRtagId AS RTAG_ID, igw.PV_ID, igw.DPV_ID FROM IGNORE_WARNINGS igw WHERE igw.rtag_id = nSourceRtagId; /* Log Project Action */ -- Get Source Location SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO sSourceLocation FROM RELEASE_TAGS rt, PROJECTS pr WHERE rt.PROJ_ID = pr.PROJ_ID AND rt.RTAG_ID = nSourceRtagId; -- Get Target Location SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO sTargetLocation FROM RELEASE_TAGS rt, PROJECTS pr WHERE rt.PROJ_ID = pr.PROJ_ID AND rt.RTAG_ID = nTargetRtagId; -- Get project id SELECT rt.PROJ_ID INTO ProjId FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nTargetRtagId; Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||' TARGET: '|| sTargetLocation, nTargetRtagId ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS RecCount NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ IF (nRtagId IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ); END IF; -- Check if other release references this release SELECT COUNT( rl.RTAG_ID ) INTO RecCount FROM RELEASE_LINKS rl WHERE rl.REF_RTAG_ID = nRtagId; IF (RecCount > 0) THEN RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.' ); END IF; /*-------------------------------------------------------*/ -- Delete Release links DELETE FROM RELEASE_LINKS rl WHERE rl.RTAG_ID = nRtagId; -- Delete ignore warning DELETE FROM IGNORE_WARNINGS iw WHERE iw.RTAG_ID = nRtagId; -- Delete Build Order cached calculations DELETE FROM BUILD_ORDER bo WHERE bo.RTAG_ID = nRtagId; -- Delete Notification History DELETE FROM NOTIFICATION_HISTORY nh WHERE nh.RTAG_ID = nRtagId; -- Delete Released Area Contents DELETE FROM RELEASE_CONTENT rc WHERE rc.RTAG_ID = nRtagId; -- Delete Work In Progress Area Contents DELETE FROM WORK_IN_PROGRESS wip WHERE wip.RTAG_ID = nRtagId; -- Delete Pending Area Contents DELETE FROM PLANNED pl WHERE pl.RTAG_ID = nRtagId; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER IS nSourceParentRtagId NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ IF (nRtagId IS NULL) OR (cIsBranch IS NULL) THEN RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch ); END IF; /*-------------------------------------------------------*/ IF ( nSourceRtagId IS NULL ) THEN -- Create new on main branch RETURN nRtagId; ELSE -- Create from source rtag_id -- Find parent of Source RtagId SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = nSourceRtagId; IF (UPPER(cIsBranch) = 'Y') THEN RETURN nSourceRtagId; ELSE IF (nSourceRtagId = nSourceParentRtagId) THEN RETURN nRtagId; ELSE RETURN nSourceParentRtagId; END IF; END IF; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ -- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER, -- sNextVersion OUT VARCHAR2, -- nNextLifeCycle OUT NUMBER, -- nParentRtagId OUT NUMBER, -- nProjId IN NUMBER ) IS -- -- SourceBranchCount NUMBER; -- ProjRootVersion VARCHAR2(4000); -- LastLifeCycle NUMBER; -- ROOT_VERSION_NOT_FOUND NUMBER := -1; -- SET_PARENT_AS_YOURSELF NUMBER := -1; -- -- SourceProjId NUMBER; -- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE; -- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE; -- -- BEGIN -- /*--------------- Business Rules Here -------------------*/ -- /*-------------------------------------------------------*/ -- -- -- BEGIN -- -- Get Project root version -- SELECT rt.RTAG_VERSION INTO ProjRootVersion -- FROM RELEASE_TAGS rt -- WHERE rt.PROJ_ID = nProjId -- AND rt.RTAG_ID = rt.PARENT_RTAG_ID; -- -- EXCEPTION -- WHEN NO_DATA_FOUND THEN -- ProjRootVersion := ROOT_VERSION_NOT_FOUND; -- END; -- -- -- -- -- BEGIN -- -- Get info for source rtagid -- SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE INTO SourceProjId, SourceVersion, SourceLifeCycle -- FROM RELEASE_TAGS rt -- WHERE rt.RTAG_ID = nSourceRtagId; -- -- EXCEPTION -- WHEN NO_DATA_FOUND THEN -- SourceProjId := NULL; -- SourceVersion := NULL; -- SourceLifeCycle := NULL; -- END; -- -- -- IF (nSourceRtagId IS NULL) OR ( SourceProjId != nProjId ) THEN -- -- /* Blank Release Required OR Release imported from other project */ -- -- IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN -- /* No Releases found in the project, hence calculate next version available. */ -- -- -- Set parent rtag -- nParentRtagId := SET_PARENT_AS_YOURSELF; -- -- -- BEGIN -- -- Get Next Available Global Root Version -- SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) ) INTO ProjRootVersion -- FROM RELEASE_TAGS rt -- WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID; -- -- -- Set Next Rtag Version -- sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 ); -- -- -- Restart Lifecycle -- nNextLifeCycle := 0; -- -- -- EXCEPTION -- WHEN NO_DATA_FOUND THEN -- -- Release Manager has no releases, hence start from 1 -- sNextVersion := '1'; -- nNextLifeCycle := 0; -- -- END; -- -- -- -- ELSE -- /* Releases found in this project. */ -- -- SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE INTO nParentRtagId, LastLifeCycle -- FROM ( -- SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE -- FROM RELEASE_TAGS rt -- WHERE rt.PROJ_ID = nProjId -- AND rt.RTAG_VERSION = ProjRootVersion -- ORDER BY rt.RTAG_LIFE_CYCLE DESC -- ) qry -- WHERE ROWNUM = 1; -- -- -- -- Set same Rtag Version -- sNextVersion := ProjRootVersion; -- -- -- Increase Lifecycle -- nNextLifeCycle := LastLifeCycle + 1; -- -- END IF; -- -- -- -- ELSE -- /* Create Release From other release within this project */ -- -- -- Set parent id -- nParentRtagId := nSourceRtagId; -- -- -- -- Get number of source branches -- SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount -- FROM RELEASE_TAGS rt -- WHERE rt.PROJ_ID = nProjId -- AND rt.PARENT_RTAG_ID = nSourceRtagId; -- -- -- IF SourceBranchCount = 0 THEN -- /* Release is Head (i.e. Tip on its branch ) */ -- -- -- Set Next Rtag Version -- sNextVersion := SourceVersion; -- -- -- Increase Lifecycle -- nNextLifeCycle := SourceLifeCycle + 1; -- -- -- ELSIF SourceBranchCount = 1 THEN -- /* Release IS NOT Head, but can be branched */ -- -- -- Set Next Rtag Version -- sNextVersion := SourceVersion ||'.'|| SourceLifeCycle; -- -- -- Reset Lifecycle to 1 -- nNextLifeCycle := 1; -- -- -- ELSE -- -- Limit of two branches is reached -- RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. '); -- -- END IF; -- -- -- -- -- -- -- END IF; -- -- -- END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS IsBaseView CHAR(1); BEGIN -- Check if the view is BASE VIEW SELECT vi.BASE_VIEW INTO IsBaseView FROM VIEWS vi WHERE vi.VIEW_ID = ViewId; IF (IsBaseView = 'Y') THEN -- Get Base view content OPEN RecordSet FOR SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description, pv.BUILD_TYPE FROM release_content rel, packages pkg, package_versions pv WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.BASE_VIEW_ID = ViewId AND rel.RTAG_ID = RtagId ORDER BY UPPER(pkg.PKG_NAME); ELSE -- Get non base view content OPEN RecordSet FOR SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description, pv.BUILD_TYPE FROM release_content rel, packages pkg, package_versions pv, VIEW_DEF vd WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND vd.VIEW_ID = ViewId AND vd.PKG_ID = pv.PKG_ID AND rel.RTAG_ID = RtagId ORDER BY UPPER(pkg.PKG_NAME); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS ReleaseLocation VARCHAR2(4000); sPkgVersion VARCHAR2(4000); nPkgId NUMBER; sVExt VARCHAR2(4000); IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N'; -- Find package for replacement CURSOR curReplacePkg IS SELECT pv.PV_ID FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE rc.PV_ID = pv.PV_ID AND rc.RTAG_ID = RtagId AND pv.PKG_ID = nPkgId AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' ); recReplacePkg curReplacePkg%ROWTYPE; BEGIN -- Get is_patch, pkg_id and v_ext SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = newPvId; -- Never put patch in relesed area IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN -- Try to get a package to be replaced with this new one. -- Use unique constraint of PKG_ID and V_EXT OPEN curReplacePkg; FETCH curReplacePkg INTO recReplacePkg; IF curReplacePkg%FOUND THEN -- Replace package REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId ); ELSE -- Add new package INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE ) VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0); /* LOG ACTION */ SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; SELECT pv.PKG_VERSION INTO sPkgVersion FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = newPvId; Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation ); END IF; CLOSE curReplacePkg; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS ReleaseLocation VARCHAR2(4000); sPkgVersion VARCHAR2(4000); BEGIN -- Replace Package UPDATE RELEASE_CONTENT SET pv_id = newPvId, insert_stamp = Ora_Sysdate, insertor_id = UserId WHERE rtag_id = RtagId AND pv_id = oldPvId; /* LOG ACTION */ SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; SELECT pv.PKG_VERSION INTO sPkgVersion FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = newPvId; Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation ); Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS ReleaseLocation VARCHAR2(4000); BEGIN -- Delete old package DELETE FROM RELEASE_CONTENT rc WHERE rc.PV_ID = PvId AND rc.RTAG_ID = RtagId; /* LOG ACTION */ SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS ReleaseLocation VARCHAR2(4000); CURSOR curMatchingPackage IS SELECT mpv.PV_ID FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS mpv, PACKAGE_VERSIONS pv WHERE rc.PV_ID = mpv.PV_ID AND rc.RTAG_ID = RtagId AND pv.PV_ID = PvId AND pv.PKG_ID = mpv.PKG_ID AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' ); recMatchingPackage curMatchingPackage%ROWTYPE; BEGIN OPEN curMatchingPackage; FETCH curMatchingPackage INTO recMatchingPackage; IF curMatchingPackage%FOUND THEN -- Delete old package DELETE FROM RELEASE_CONTENT rc WHERE rc.PV_ID = recMatchingPackage.PV_ID AND rc.RTAG_ID = RtagId; /* LOG ACTION */ SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation ); END IF; CLOSE curMatchingPackage; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS ReturnValue NUMBER; BEGIN SELECT rc.BASE_VIEW_ID INTO ReturnValue FROM RELEASE_CONTENT rc WHERE rc.RTAG_ID = RtagId AND rc.PV_ID = PvId; RETURN ReturnValue; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS BEGIN -- Reset Ignore warnings up-the-tree RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId ); -- Refresh Package states TOUCH_RELEASE ( RtagId ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS CURSOR curReleases IS SELECT rc.RTAG_ID FROM RELEASE_CONTENT rc WHERE rc.PV_ID = PvId; recReleases curReleases%ROWTYPE; BEGIN OPEN curReleases; FETCH curReleases INTO recReleases; WHILE curReleases%FOUND LOOP RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID ); FETCH curReleases INTO recReleases; END LOOP; CLOSE curReleases; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS BEGIN UPDATE RELEASE_CONTENT rc SET rc.BASE_VIEW_ID = NewViewId WHERE rc.PV_ID = PvId AND rc.RTAG_ID = RtagId; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS RowCount NUMBER; CURSOR curPackageClash IS SELECT pkg.PKG_NAME, er.* FROM ( /* Get existing referenced packages */ SELECT pv.PKG_ID, pv.V_EXT FROM RELEASE_LINKS rl, RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE rl.RTAG_ID = nRtagId AND rl.REF_RTAG_ID = rc.RTAG_ID AND rc.PV_ID = pv.PV_ID ) er, ( /* Get current reference packages */ SELECT pv.PKG_ID, pv.V_EXT FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE rc.RTAG_ID = nRefRtagId AND rc.PV_ID = pv.PV_ID ) cr, PACKAGES PKG WHERE er.PKG_ID = cr.PKG_ID AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|') AND er.PKG_ID = pkg.PKG_ID; recPackageClash curPackageClash%ROWTYPE; BEGIN /*--------------- Business Rules Here -------------------*/ IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' ); END IF; IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' ); END IF; /*-------------------------------------------------------*/ ProblemString := NULL; -- Check if release already has references SELECT COUNT(rl.RTAG_ID) INTO RowCount FROM RELEASE_LINKS rl WHERE rl.RTAG_ID = nRtagId; IF RowCount > 0 THEN -- Found existing references -- Make sure there is no package clashes OPEN curPackageClash; FETCH curPackageClash INTO recPackageClash; IF curPackageClash%FOUND THEN ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF; WHILE curPackageClash%FOUND LOOP EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT || UTL_TCP.CRLF ) > 200; -- Do not allow variable overflow ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT || UTL_TCP.CRLF; FETCH curPackageClash INTO recPackageClash; END LOOP; END IF; CLOSE curPackageClash; ELSE -- No references found, hence reference a release -- Remove exising package from this release to be referenced REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId); -- Add new linked packages to release INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE) SELECT nRtagId, rc.PV_ID, rc.BASE_VIEW_ID, rc.INSERT_STAMP, rc.INSERTOR_ID, rc.PKG_STATE FROM RELEASE_CONTENT rc WHERE rc.RTAG_ID = nRefRtagId; -- Copy ignore warnings for referenced packages INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE) SELECT nRtagId, iw.PV_ID, iw.DPV_ID, iw.IS_PATCH_IGNORE FROM IGNORE_WARNINGS iw, RELEASE_CONTENT rc WHERE iw.RTAG_ID = rc.RTAG_ID AND iw.PV_ID = rc.PV_ID AND rc.RTAG_ID = nRefRtagId; -- Reference release INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID) VALUES ( nRtagId, nRefRtagId ); -- Refresh Package states TOUCH_RELEASE ( nRtagId ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS BEGIN /*--------------- Business Rules Here -------------------*/ IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' ); END IF; IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' ); END IF; /*-------------------------------------------------------*/ -- Remove ignore warnings for those packages who use referenced packages DELETE FROM IGNORE_WARNINGS iw WHERE iw.RTAG_ID = nRtagId AND iw.DPV_ID IN ( SELECT dep.DPV_ID FROM ( /* Get referenced packages */ SELECT pv.PKG_ID, pv.V_EXT FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE rc.RTAG_ID = nRefRtagId AND rc.PV_ID = pv.PV_ID ) cr, ( /* Get all dependencies for current release */ SELECT DISTINCT pv.PKG_ID, pv.V_EXT, dep.DPV_ID FROM RELEASE_CONTENT rc, PACKAGE_DEPENDENCIES dep, PACKAGE_VERSIONS pv WHERE rc.RTAG_ID = nRtagId AND rc.PV_ID = dep.PV_ID AND dep.PV_ID = pv.PV_ID ) dep WHERE dep.PKG_ID = cr.PKG_ID AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|') ); -- Remove ignore warnings for those package which are going to be replaced with the reference DELETE FROM IGNORE_WARNINGS iw WHERE iw.RTAG_ID = nRtagId AND iw.PV_ID IN ( SELECT pv.PV_ID FROM ( /* Get referenced packages */ SELECT pv.PKG_ID, pv.V_EXT FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE rc.RTAG_ID = nRefRtagId AND rc.PV_ID = pv.PV_ID ) cr, RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE pv.PKG_ID = cr.PKG_ID AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|') AND rc.RTAG_ID = nRtagId AND rc.PV_ID = pv.PV_ID ); -- Remove matching packages from release DELETE FROM RELEASE_CONTENT rc WHERE rc.RTAG_ID = nRtagId AND rc.PV_ID IN ( SELECT pv.PV_ID FROM ( /* Get referenced packages */ SELECT pv.PKG_ID, pv.V_EXT FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE rc.RTAG_ID = nRefRtagId AND rc.PV_ID = pv.PV_ID ) cr, RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE pv.PKG_ID = cr.PKG_ID AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|') AND rc.RTAG_ID = nRtagId AND rc.PV_ID = pv.PV_ID ); -- Remove Reference release DELETE FROM RELEASE_LINKS rl WHERE rl.RTAG_ID = nRtagId AND rl.REF_RTAG_ID = nRefRtagId; -- Refresh Package states TOUCH_RELEASE ( nRtagId ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS cReleaseMode CHAR(1); cPvMode CHAR(1); BEGIN -- Get Release Mode SELECT rt.OFFICIAL INTO cReleaseMode FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = RtagId; -- Get Package Mode SELECT pv.DLOCKED INTO cPvMode FROM PACKAGE_VERSIONS pv WHERE pv.PV_ID = PvId; -- Only check if package is locked IF (cPvMode = 'Y') THEN IF (cReleaseMode != 'N') AND (Permission != 'Y') THEN RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' ); END IF; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ END PK_RELEASE_TEST; / ALTER PACKAGE "RELEASE_MANAGER"."PK_RELEASE_TEST" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-08-29 16:25:16' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_RMAPI" IS /* ------------------------------ || Last Modified: Jeremy Tweddle || Modified Date: 08/Feb/2008 || Body Version: 3.3 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2) RETURN typecur IS npvid NUMBER := 0; RECORDS typecur; BEGIN BEGIN -- Get PV_ID -- SELECT pv.pv_id INTO npvid FROM PACKAGES pkg, package_versions pv WHERE pv.pkg_id = pkg.pkg_id AND pkg.pkg_name = pkgname AND pv.pkg_version = pkgversion; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error (-20000, 'Package Not Found!'); --WHEN OTHERS THEN -- Consider logging the error and then re-raise RAISE; END; -- Finally get package dependencies -- OPEN RECORDS FOR SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv WHERE dep.pv_id = npvid AND dpv.pkg_id = dpkg.pkg_id AND dpv.pv_id = dep.dpv_id; RETURN RECORDS; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION wip_iteration_package ( projname VARCHAR2, iterationname VARCHAR2, pkgname VARCHAR2 ) RETURN typecur IS nrtagid NUMBER := 0; RECORDS typecur; BEGIN BEGIN -- Get latest rtag_id -- SELECT rt.rtag_id INTO nrtagid FROM projects proj, release_tags rt WHERE rt.proj_id = proj.proj_id AND UPPER (proj.proj_name) = UPPER (projname) AND UPPER (rt.rtag_name) = UPPER (iterationname); IF (nrtagid IS NULL) THEN raise_application_error (-20000, 'Work In Progress is Not Found!'); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error (-20000, 'Work In Progress is Not Found!'); RAISE; END; -- Finally get package dependencies -- OPEN RECORDS FOR SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label, pv.src_path FROM PACKAGES pkg, package_versions pv, work_in_progress wip WHERE pv.pkg_id = pkg.pkg_id AND wip.pv_id = pv.pv_id AND wip.rtag_id = nrtagid AND pkg.pkg_name = pkgname; RETURN RECORDS; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION auto_make_release ( rtagid IN NUMBER, pkgname IN VARCHAR2, vext IN VARCHAR2, newpkgversion IN VARCHAR2, label IN VARCHAR2, dependenciesimportlist IN VARCHAR2, isrippled IN NUMBER, username IN VARCHAR2 ) RETURN NUMBER IS pkgid NUMBER; pvid NUMBER := 0; userid NUMBER; dlocked VARCHAR2 (20) := NULL; clonefrompvid NUMBER; ssv_mm package_versions.v_mm%TYPE; ssv_nmm package_versions.v_nmm%TYPE; ssv_ext package_versions.v_ext%TYPE; return_package_not_found NUMBER := -1; return_package_already_exists NUMBER := -2; return_not_approved NUMBER := -3; BEGIN /*--------------- Business Rules Here -------------------*/ IF (rtagid IS NULL) THEN raise_application_error (-20000, 'RtagId must be supplied.'); END IF; IF (pkgname IS NULL) THEN raise_application_error (-20000, 'PkgName must be supplied.'); END IF; IF (newpkgversion IS NULL) THEN raise_application_error (-20000, 'PkgVersion must be supplied.'); END IF; IF (label IS NULL) THEN raise_application_error (-20000, 'Label must be supplied.'); END IF; IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1) THEN raise_application_error (-20000, 'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).' ); END IF; IF (username IS NULL) THEN raise_application_error (-20000, 'UserName must be supplied.'); END IF; -- Get user_id BEGIN SELECT usr.user_id INTO userid FROM users usr WHERE UPPER (usr.user_name) = UPPER (username) AND usr.is_disabled IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error (-20000, 'UserName ' || username || ' is not valid or disabled.' ); END; /*-------------------------------------------------------*/ -- Create package if necessary IF isrippled = 1 THEN /* Ripple Build */ BEGIN -- Make sure that package does not exist SELECT pv.pv_id INTO pvid FROM package_versions pv, PACKAGES pkg WHERE pv.pkg_id = pkg.pkg_id AND pkg.pkg_name = pkgname AND pv.pkg_version = newpkgversion; EXCEPTION WHEN NO_DATA_FOUND THEN pvid := 0; END; IF (pvid = 0) THEN -- Split current version in parts split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext); BEGIN -- Find package to be replaced with thie ripple package IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|') THEN SELECT pv.pv_id INTO clonefrompvid FROM PACKAGES pkg, package_versions pv, release_content rc WHERE rc.pv_id = pv.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.rtag_id = rtagid AND pkg.pkg_name = pkgname AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|'); ELSE SELECT pv.pv_id INTO clonefrompvid FROM PACKAGES pkg, package_versions pv, release_content rc WHERE rc.pv_id = pv.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.rtag_id = rtagid AND pkg.pkg_name = pkgname AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|'); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error (-20000, 'Cannot get CloneFromPvId. VExt=' || vext || ', RtagId=' || rtagid || ', PkgName=' || pkgname || ', SSV_EXT=' || ssv_ext ); END; IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|') THEN -- Create package seed_package_names_versions (pkgname, newpkgversion, userid, pvid, clonefrompvid ); ELSE -- Create package seed_package_names_versions2 (pkgname, newpkgversion, userid, pvid, clonefrompvid ); END IF; -- Update Package reason for release UPDATE package_versions pv SET pv.comments = 'Rippled Build.', pv.build_type = 'Y' WHERE pv.pv_id = pvid; ELSE -- Package already exists, hence cannot be used for ripple build RETURN return_package_already_exists; END IF; ELSE /* Auto build from Pending area */ -- Find package in pending area BEGIN SELECT pv.pv_id, pv.dlocked INTO pvid, dlocked FROM planned pl, package_versions pv, PACKAGES pkg WHERE pl.pv_id = pv.pv_id AND pv.pkg_id = pkg.pkg_id AND pl.rtag_id = rtagid AND pkg.pkg_name = pkgname AND pv.dlocked = 'A' AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|'); EXCEPTION WHEN NO_DATA_FOUND THEN pvid := 0; END; IF (pvid = 0) THEN -- Package does not exist in pending area, hence report it RETURN return_package_not_found; ELSIF (dlocked != 'A') THEN -- Package is not approved for autobuild RETURN return_not_approved; END IF; END IF; BEGIN -- Import Dependencies import_dependencies (pvid, dependenciesimportlist, userid); END; BEGIN -- Split current version in parts split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext); -- Update Package Details UPDATE package_versions pv SET pv.pkg_version = newpkgversion, pv.v_ext = ssv_ext, pv.v_mm = ssv_mm, pv.v_nmm = ssv_nmm, pv.pkg_label = label WHERE pv.pv_id = pvid; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN -- Package already exists, hence cannot be used for ripple build RETURN return_package_already_exists; END; -- Update the is_autobuildable UPDATE package_versions SET is_autobuildable = 'Y' WHERE pv_id = pvid; -- Now release package pk_environment.auto_make_release (pvid, rtagid, userid, vext, ssv_ext, clonefrompvid ); --Now clean the PLANNED_VERSIONS table SELECT pkg_id INTO pkgid FROM PACKAGES WHERE pkg_name = pkgname; DELETE FROM planned_versions WHERE pkg_id = pkgid AND pkg_version = newpkgversion; RETURN pvid; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE import_dependencies ( pvid IN NUMBER, dependenciesimportlist IN VARCHAR2, userid IN NUMBER ) IS /* || DependenciesImportList Format: || "pkgA","1.0.0";"pkgB","2.0.0"; || OR 'pkgA','1.0.0';'pkgB','2.0.0'; */ TYPE tdictionary IS TABLE OF VARCHAR2 (4000) INDEX BY VARCHAR2 (4000); seperator VARCHAR2 (2) := '||'; pkgname VARCHAR2 (4000); pkgversion VARCHAR2 (4000); buildtype VARCHAR2 (50); pkgid NUMBER; vext VARCHAR2 (4000); dpvid NUMBER; slist VARCHAR2 (4000); cbuildtypes tdictionary; dependencyrow NUMBER; sdependency VARCHAR2 (4000); first_pos VARCHAR2 (4000); second_pos VARCHAR2 (4000); third_pos VARCHAR2 (4000); forth_pos VARCHAR2 (4000); citemcollection relmgr_varchar2_tab_t := relmgr_varchar2_tab_t (); CURSOR curbuildtype IS SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext, dep.build_type FROM package_dependencies dep, package_versions dpv WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id; recbuildtype curbuildtype%ROWTYPE; BEGIN slist := dependenciesimportlist; -- Preformat String IF NOT slist IS NULL THEN slist := REPLACE (slist, ' '); -- Remove spaces slist := REPLACE (slist, UTL_TCP.crlf); -- Remove new line and carriage-return characters slist := REPLACE (slist, '''', '"'); -- Replace ' with " END IF; -- Get Current Dependencies OPEN curbuildtype; FETCH curbuildtype INTO recbuildtype; WHILE curbuildtype%FOUND LOOP cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type; FETCH curbuildtype INTO recbuildtype; END LOOP; CLOSE curbuildtype; -- Separate dependencies with ; separator citemcollection := in_list_varchar2 (slist, ';'); BEGIN -- Remove old dependencies DELETE FROM package_dependencies dep WHERE dep.pv_id = pvid; -- Loop through dependencies FOR dependencyrow IN 1 .. citemcollection.COUNT LOOP -- Extract pkg_name and pkg_version sdependency := citemcollection (dependencyrow); first_pos := INSTR (sdependency, '"', 1, 1); second_pos := INSTR (sdependency, '"', 1, 2); third_pos := INSTR (sdependency, '"', 1, 3); forth_pos := INSTR (sdependency, '"', 1, 4); pkgname := SUBSTR (sdependency, (first_pos + 1), (second_pos - first_pos - 1) ); pkgversion := SUBSTR (sdependency, (third_pos + 1), (forth_pos - third_pos - 1) ); -- Dependency must exits to be linked against BEGIN SELECT pv.pv_id, pv.pkg_id, pv.v_ext INTO dpvid, pkgid, vext FROM package_versions pv, PACKAGES pkg WHERE pv.pkg_id = pkg.pkg_id AND pkg.pkg_name = pkgname AND pv.pkg_version = pkgversion; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error (-20000, 'Dependency [' || pkgname || ' ' || pkgversion || '] does not exist yet and cannot be used!' ); END; -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive) BEGIN buildtype := cbuildtypes (pkgid || seperator || vext); IF buildtype IS NULL THEN -- Set build type to LinkPackageArchive by default buildtype := 'L'; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN buildtype := 'L'; END; -- Insert Dependencies update_package_dependency (pvid, pkgname, pkgversion, buildtype, userid, 0 ); END LOOP; END; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER) RETURN VARCHAR2 IS pkgversion VARCHAR2 (4000); BEGIN BEGIN SELECT pv.pkg_version INTO pkgversion FROM PACKAGES pkg, release_content rc, package_versions pv WHERE pv.pv_id = rc.pv_id AND pkg.pkg_id = pv.pkg_id AND pkg.pkg_name = pkgname AND rc.rtag_id = rtagid; RETURN pkgversion; END; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER) RETURN VARCHAR2 IS pkgversion VARCHAR2 (4000); BEGIN BEGIN SELECT pv.pkg_version INTO pkgversion FROM PACKAGES pkg, work_in_progress wip, package_versions pv WHERE pv.pv_id = wip.pv_id AND pkg.pkg_id = pv.pkg_id AND pkg.pkg_name = pkgname AND wip.rtag_id = rtagid; IF pkgversion IS NULL THEN SELECT pv.pkg_version INTO pkgversion FROM PACKAGES pkg, planned pl, package_versions pv WHERE pv.pv_id = pl.pv_id AND pkg.pkg_id = pv.pkg_id AND pkg.pkg_name = pkgname AND pl.rtag_id = rtagid; END IF; RETURN pkgversion; END; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE update_dash_board (rtagid IN NUMBER) IS projid NUMBER; projiddb NUMBER; total NUMBER; auto_total NUMBER; rtagiddb NUMBER; BEGIN SELECT COUNT (*) INTO total FROM release_content rc, package_versions pv WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid; SELECT COUNT (*) INTO auto_total FROM release_content rc, package_versions pv WHERE pv.pv_id = rc.pv_id AND pv.is_autobuildable = 'Y' AND rc.rtag_id = rtagid; BEGIN SELECT rtag_id INTO rtagiddb FROM dash_board WHERE rtag_id = rtagid; SELECT proj_id INTO projiddb FROM dash_board WHERE rtag_id = rtagid; EXCEPTION WHEN NO_DATA_FOUND THEN rtagiddb := ''; END; IF rtagiddb IS NULL THEN SELECT proj_id INTO projid FROM release_tags WHERE rtag_id = rtagid; INSERT INTO dash_board (proj_id, rtag_id, last_build_time, automated_packages, total_packages ) VALUES (projid, rtagid, ora_sysdatetime, auto_total, total ); ELSE UPDATE dash_board SET last_build_time = ora_sysdatetime, automated_packages = auto_total, total_packages = total WHERE proj_id = projiddb AND rtag_id = rtagiddb; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION exclude_from_build ( pvid IN NUMBER, spkgversion IN VARCHAR2, rtagid IN NUMBER, username IN VARCHAR2 ) RETURN NUMBER IS userid NUMBER; outerrcode NUMBER; pkgid NUMBER; CURSOR dnr_duplicate_cur IS SELECT * FROM do_not_ripple WHERE pv_id = pvid AND rtag_id = rtagid; dnr_duplicate_rec dnr_duplicate_cur%ROWTYPE; BEGIN outerrcode := -1; -- Set default return error code to ERROR state /*--------------- Business Rules Here -------------------*/ IF (rtagid IS NULL) THEN RETURN outerrcode; -- raise_application_error (-20000, 'RtagId must be supplied.'); END IF; IF (pvid IS NULL) THEN RETURN outerrcode; -- raise_application_error (-20000, 'PvId must be supplied.'); END IF; IF (username IS NULL) THEN RETURN outerrcode; -- raise_application_error (-20000, 'UserName must be supplied.'); END IF; -- Get user_id BEGIN SELECT usr.user_id INTO userid FROM users usr WHERE UPPER (usr.user_name) = UPPER (username) AND usr.is_disabled IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN outerrcode; -- raise_application_error (-20000, -- 'UserName ' -- || username -- || ' is not valid or disabled.' -- ); END; OPEN dnr_duplicate_cur; FETCH dnr_duplicate_cur INTO dnr_duplicate_rec; IF dnr_duplicate_cur%FOUND THEN outerrcode := 0; END IF; IF dnr_duplicate_cur%NOTFOUND THEN /* No duplicate recordset */ unripple_package (pvid, rtagid, userid); outerrcode := 0; -- Set return to SUCCESS END IF; CLOSE dnr_duplicate_cur; SELECT pkg_id INTO pkgid FROM package_versions WHERE pv_id = pvid; DELETE FROM planned_versions WHERE pkg_id = pkgid AND pkg_version = spkgversion; RETURN outerrcode; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2) IS BEGIN INSERT INTO abt_action_log (rcon_id, action_datetime, action ) VALUES (rconid, ora_sysdatetime, action ); END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION insert_package_metrics ( rtagid IN NUMBER, pkgname IN VARCHAR2, vext IN VARCHAR2, metricstring IN VARCHAR2 ) RETURN NUMBER IS citemcollection relmgr_varchar2_tab_t := relmgr_varchar2_tab_t (); pvid NUMBER := 0; rownumber NUMBER; rowcontent VARCHAR2(4000); metricname VARCHAR2(1000); metricvalue VARCHAR2(4000); return_insert_error NUMBER := -1; return_insert_success NUMBER := 0; /* Metrics */ branches NUMBER; branchlist VARCHAR2(4000); codefiles NUMBER; ignoredfiles NUMBER; directories NUMBER; directorydepth NUMBER; totalfiles NUMBER; makefiles NUMBER; blanklines NUMBER; codelines NUMBER; commentlines NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ IF (rtagid IS NULL) THEN RETURN return_insert_error; END IF; IF (pkgname IS NULL) THEN RETURN return_insert_error; END IF; IF (metricstring IS NULL) THEN RETURN return_insert_error; END IF; BEGIN SELECT pv.pv_id INTO pvid FROM package_versions pv, packages pkg, release_content rc WHERE pv.pkg_id = pkg.pkg_id AND rc.rtag_id = rtagid AND pv.pv_id = rc.pv_id AND pkg.pkg_name = pkgname AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|'); EXCEPTION WHEN NO_DATA_FOUND THEN pvid := 0; END; citemcollection := in_list_varchar2 (metricstring, ';'); FOR rownumber IN 1 .. citemcollection.COUNT LOOP rowcontent := citemcollection(rownumber); metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1)); metricname := REGEXP_REPLACE(rowcontent, '=.*$', ''); IF metricname = 'ccbranch.count' THEN branches := metricvalue; ELSIF metricname = 'ccbranch.list' THEN branchlist := metricvalue; ELSIF metricname = 'code.files' THEN codefiles := metricvalue; ELSIF metricname = 'code.ignored' THEN ignoredfiles := metricvalue; ELSIF metricname = 'count.dir' THEN directories := metricvalue; ELSIF metricname = 'count.dirdepth' THEN directorydepth := metricvalue; ELSIF metricname = 'count.file' THEN totalfiles := metricvalue; ELSIF metricname = 'count.makefile' THEN makefiles := metricvalue; ELSIF metricname = 'lines.blank' THEN blanklines := metricvalue; ELSIF metricname = 'lines.code' THEN codelines := metricvalue; ELSIF metricname = 'lines.comment' THEN commentlines := metricvalue; END IF; END LOOP; IF (pvid > 0) THEN -- Delete any existing entries for this package version to makes sure our data is untainted DELETE FROM package_metrics pm WHERE pm.pv_id = pvid; -- Insert the new data into the metrics table INSERT INTO package_metrics (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth, total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp ) VALUES (pvid, branches, branchlist, codefiles, ignoredfiles, directories, directorydepth, totalfiles, makefiles, blanklines, codelines, commentlines, ora_sysdatetime ); -- Now update the Release_Metrics Table update_release_metrics(rtagid); RETURN return_insert_success; ELSE RETURN return_insert_error; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE update_release_metrics (rtagid IN NUMBER) IS totalpackages NUMBER; autobuilt NUMBER; linesofcode NUMBER; unittested NUMBER; autotested NUMBER; numOfbranches NUMBER; lastbuildtime DATE; BEGIN IF (rtagid > 0) THEN -- Get the total number of packages in this release and the number of -- those that are autobuilt SELECT COUNT (DISTINCT rc.pv_id), COUNT (DISTINCT autobuilt_qry.pv_id) INTO totalpackages, autobuilt FROM release_content rc, package_versions pv, ( SELECT rc.pv_id FROM release_content rc, package_versions pv WHERE pv.is_autobuildable = 'Y' AND pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid ) autobuilt_qry WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid AND autobuilt_qry.pv_id (+) = rc.pv_id; -- Get the build time of the last package built in this release and the -- total number of lines of code SELECT MAX(pm.created_stamp), SUM(pm.code_lines) INTO lastbuildtime, linesofcode FROM package_metrics pm, release_content rc WHERE pm.pv_id = rc.pv_id AND rc.rtag_id = rtagid; -- Get the number of packages with unit tests in this release and the -- number of those that are autotested SELECT COUNT(DISTINCT ut.pv_id), COUNT(DISTINCT autotest_qry.pv_id) INTO unittested, autotested FROM unit_tests ut, release_content rc, ( SELECT ut.pv_id FROM unit_tests ut, release_content rc WHERE ut.pv_id = rc.pv_id AND rc.rtag_id = rtagid AND ut.test_types_fk = 7 ) autotest_qry WHERE ut.pv_id = rc.pv_id AND rc.rtag_id = rtagid AND autotest_qry.pv_id (+) = ut.pv_id; -- Count the number of unique branches in the packages in this release. -- SELECT COUNT(DISTINCT branch) INTO numOfbranches -- FROM ( -- SELECT pv_id, -- regexp_substr(str, '[^,]+', 1, level) branch, -- level lv, -- lag(level, 1, 0) over (partition by pv_id order by level) lg -- FROM ( -- SELECT pm.pv_id, -- ','||pm.branch_list str -- FROM package_metrics pm, -- release_content rc -- WHERE pm.pv_id = rc.pv_id -- AND rc.rtag_id = rtagid -- ) -- CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL -- ) -- WHERE lv != lg; UPDATE release_metrics rm SET rm.total_packages = totalpackages, rm.autobuilt = autobuilt, rm.lines_of_code = linesofcode, rm.unit_tested = unittested, rm.autotested = autotested, -- rm.branches = numOfbranches, rm.last_build_time = lastbuildtime WHERE rtag_id = rtagid; IF (SQL%ROWCOUNT = 0) THEN INSERT INTO release_metrics (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested, autotested, last_build_time ) VALUES (rtagid, totalpackages, autobuilt, linesofcode, unittested, autotested, lastbuildtime ); END IF; -- IF (SQL%ROWCOUNT = 0) -- THEN -- INSERT INTO release_metrics -- (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested, -- autotested, branches, last_build_time -- ) -- VALUES (rtagid, totalpackages, autobuilt, linesofcode, unittested, -- autotested, numOfbranches, lastbuildtime -- ); -- END IF; -- ELSE -- raise_application_error (-20000, 'RtagId must be supplied.'); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ END pk_rmapi; / ALTER PACKAGE "RELEASE_MANAGER"."PK_RMAPI" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-05-09 14:47:11' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_RMAPI_TEST" IS /* ------------------------------ || Last Modified: Rupesh Solanki || Modified Date: 11 September 2006 || Body Version: 2.0 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2) RETURN typecur IS npvid NUMBER := 0; RECORDS typecur; BEGIN BEGIN -- Get PV_ID -- SELECT pv.pv_id INTO npvid FROM PACKAGES pkg, package_versions pv WHERE pv.pkg_id = pkg.pkg_id AND pkg.pkg_name = pkgname AND pv.pkg_version = pkgversion; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error (-20000, 'Package Not Found!'); --WHEN OTHERS THEN -- Consider logging the error and then re-raise RAISE; END; -- Finally get package dependencies -- OPEN RECORDS FOR SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv WHERE dep.pv_id = npvid AND dpv.pkg_id = dpkg.pkg_id AND dpv.pv_id = dep.dpv_id; RETURN RECORDS; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION wip_iteration_package ( projname VARCHAR2, iterationname VARCHAR2, pkgname VARCHAR2 ) RETURN typecur IS nrtagid NUMBER := 0; RECORDS typecur; BEGIN BEGIN -- Get latest rtag_id -- SELECT rt.rtag_id INTO nrtagid FROM projects proj, release_tags rt WHERE rt.proj_id = proj.proj_id AND UPPER (proj.proj_name) = UPPER (projname) AND UPPER (rt.rtag_name) = UPPER (iterationname); IF (nrtagid IS NULL) THEN raise_application_error (-20000, 'Work In Progress is Not Found!'); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error (-20000, 'Work In Progress is Not Found!'); RAISE; END; -- Finally get package dependencies -- OPEN RECORDS FOR SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label, pv.src_path FROM PACKAGES pkg, package_versions pv, work_in_progress wip WHERE pv.pkg_id = pkg.pkg_id AND wip.pv_id = pv.pv_id AND wip.rtag_id = nrtagid AND pkg.pkg_name = pkgname; RETURN RECORDS; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION auto_make_release ( rtagid IN NUMBER, pkgname IN VARCHAR2, vext IN VARCHAR2, newpkgversion IN VARCHAR2, label IN VARCHAR2, dependenciesimportlist IN VARCHAR2, isrippled IN NUMBER, username IN VARCHAR2 ) RETURN NUMBER IS pvid NUMBER := 0; userid NUMBER; dlocked VARCHAR2 (20) := NULL; clonefrompvid NUMBER; ssv_mm package_versions.v_mm%TYPE; ssv_nmm package_versions.v_nmm%TYPE; ssv_ext package_versions.v_ext%TYPE; return_package_not_found NUMBER := -1; return_package_already_exists NUMBER := -2; return_not_approved NUMBER := -3; BEGIN /*--------------- Business Rules Here -------------------*/ IF (rtagid IS NULL) THEN raise_application_error (-20000, 'RtagId must be supplied.'); END IF; IF (pkgname IS NULL) THEN raise_application_error (-20000, 'PkgName must be supplied.'); END IF; IF (newpkgversion IS NULL) THEN raise_application_error (-20000, 'PkgVersion must be supplied.'); END IF; IF (label IS NULL) THEN raise_application_error (-20000, 'Label must be supplied.'); END IF; IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1) THEN raise_application_error (-20000, 'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).' ); END IF; IF (username IS NULL) THEN raise_application_error (-20000, 'UserName must be supplied.'); END IF; -- Get user_id BEGIN SELECT usr.user_id INTO userid FROM users usr WHERE UPPER (usr.user_name) = UPPER (username) AND usr.is_disabled IS NULL; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error (-20000, 'UserName ' || username || ' is not valid or disabled.' ); END; /*-------------------------------------------------------*/ -- Create package if necessary IF isrippled = 1 THEN /* Ripple Build */ BEGIN -- Make sure that package does not exist SELECT pv.pv_id INTO pvid FROM package_versions pv, PACKAGES pkg WHERE pv.pkg_id = pkg.pkg_id AND pkg.pkg_name = pkgname AND pv.pkg_version = newpkgversion; EXCEPTION WHEN NO_DATA_FOUND THEN pvid := 0; END; IF (pvid = 0) THEN -- Split current version in parts split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext); BEGIN -- Find package to be replaced with thie ripple package IF vext = ssv_ext THEN SELECT pv.pv_id INTO clonefrompvid FROM PACKAGES pkg, package_versions pv, release_content rc WHERE rc.pv_id = pv.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.rtag_id = rtagid AND pkg.pkg_name = pkgname AND pv.v_ext = ssv_ext; ELSE SELECT pv.pv_id INTO clonefrompvid FROM PACKAGES pkg, package_versions pv, release_content rc WHERE rc.pv_id = pv.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.rtag_id = rtagid AND pkg.pkg_name = pkgname AND pv.v_ext = vext; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error (-20000, 'Cannot get CloneFromPvId. VExt=' || vext || ', RtagId=' || rtagid || ', PkgName=' || pkgname || ', SSV_EXT=' || ssv_ext ); END; IF vext = ssv_ext THEN -- Create package seed_package_names_versions (pkgname, newpkgversion, userid, pvid, clonefrompvid ); ELSE -- Create package seed_package_names_versions2 (pkgname, newpkgversion, userid, pvid, clonefrompvid ); END IF; -- Update Package reason for release UPDATE package_versions pv SET pv.comments = 'Rippled Build.', pv.build_type = 'Y' WHERE pv.pv_id = pvid; ELSE -- Package already exists, hence cannot be used for ripple build RETURN return_package_already_exists; END IF; ELSE /* Auto build from Pending area */ -- Find package in pending area BEGIN SELECT pv.pv_id, pv.dlocked INTO pvid, dlocked FROM planned pl, package_versions pv, PACKAGES pkg WHERE pl.pv_id = pv.pv_id AND pv.pkg_id = pkg.pkg_id AND pl.rtag_id = rtagid AND pkg.pkg_name = pkgname AND pv.dlocked = 'A' AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|'); EXCEPTION WHEN NO_DATA_FOUND THEN pvid := 0; END; IF (pvid = 0) THEN -- Package does not exist in pending area, hence report it RETURN return_package_not_found; ELSIF (dlocked != 'A') THEN -- Package is not approved for autobuild RETURN return_not_approved; END IF; END IF; BEGIN -- Import Dependencies import_dependencies (pvid, dependenciesimportlist, userid); END; BEGIN -- Split current version in parts split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext); -- Update Package Details UPDATE package_versions pv SET pv.pkg_version = newpkgversion, pv.v_ext = ssv_ext, pv.v_mm = ssv_mm, pv.v_nmm = ssv_nmm, pv.pkg_label = label WHERE pv.pv_id = pvid; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN -- Package already exists, hence cannot be used for ripple build RETURN return_package_already_exists; END; -- Update the is_autobuildable update package_versions set is_autobuildable = 'Y' where pv_id = pvid; -- Now release package pk_environment.auto_make_release (pvid, rtagid, userid, vext, ssv_ext, clonefrompvid ); RETURN pvid; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE import_dependencies ( pvid IN NUMBER, dependenciesimportlist IN VARCHAR2, userid IN NUMBER ) IS /* || DependenciesImportList Format: || "pkgA","1.0.0";"pkgB","2.0.0"; || OR 'pkgA','1.0.0';'pkgB','2.0.0'; */ TYPE tdictionary IS TABLE OF VARCHAR2 (4000) INDEX BY VARCHAR2 (4000); seperator VARCHAR2 (2) := '||'; pkgname VARCHAR2 (4000); pkgversion VARCHAR2 (4000); buildtype VARCHAR2 (50); pkgid NUMBER; vext VARCHAR2 (4000); dpvid NUMBER; slist VARCHAR2 (4000); cbuildtypes tdictionary; dependencyrow NUMBER; sdependency VARCHAR2 (4000); first_pos VARCHAR2 (4000); second_pos VARCHAR2 (4000); third_pos VARCHAR2 (4000); forth_pos VARCHAR2 (4000); citemcollection relmgr_varchar2_tab_t := relmgr_varchar2_tab_t (); CURSOR curbuildtype IS SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext, dep.build_type FROM package_dependencies dep, package_versions dpv WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id; recbuildtype curbuildtype%ROWTYPE; BEGIN slist := dependenciesimportlist; -- Preformat String IF NOT slist IS NULL THEN slist := REPLACE (slist, ' '); -- Remove spaces slist := REPLACE (slist, UTL_TCP.crlf); -- Remove new line and carriage-return characters slist := REPLACE (slist, '''', '"'); -- Replace ' with " END IF; -- Get Current Dependencies OPEN curbuildtype; FETCH curbuildtype INTO recbuildtype; WHILE curbuildtype%FOUND LOOP cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type; FETCH curbuildtype INTO recbuildtype; END LOOP; CLOSE curbuildtype; -- Separate dependencies with ; separator citemcollection := in_list_varchar2 (slist, ';'); BEGIN -- Remove old dependencies DELETE FROM package_dependencies dep WHERE dep.pv_id = pvid; -- Loop through dependencies FOR dependencyrow IN 1 .. citemcollection.COUNT LOOP -- Extract pkg_name and pkg_version sdependency := citemcollection (dependencyrow); first_pos := INSTR (sdependency, '"', 1, 1); second_pos := INSTR (sdependency, '"', 1, 2); third_pos := INSTR (sdependency, '"', 1, 3); forth_pos := INSTR (sdependency, '"', 1, 4); pkgname := SUBSTR (sdependency, (first_pos + 1), (second_pos - first_pos - 1) ); pkgversion := SUBSTR (sdependency, (third_pos + 1), (forth_pos - third_pos - 1) ); -- Dependency must exits to be linked against BEGIN SELECT pv.pv_id, pv.pkg_id, pv.v_ext INTO dpvid, pkgid, vext FROM package_versions pv, PACKAGES pkg WHERE pv.pkg_id = pkg.pkg_id AND pkg.pkg_name = pkgname AND pv.pkg_version = pkgversion; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error (-20000, 'Dependency [' || pkgname || ' ' || pkgversion || '] does not exist yet and cannot be used!' ); END; -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive) BEGIN buildtype := cbuildtypes (pkgid || seperator || vext); IF buildtype IS NULL THEN -- Set build type to LinkPackageArchive by default buildtype := 'L'; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN buildtype := 'L'; END; -- Insert Dependencies update_package_dependency (pvid, pkgname, pkgversion, buildtype, userid, 0 ); END LOOP; END; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION return_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER) RETURN VARCHAR2 IS pkgversion VARCHAR2 (4000); BEGIN BEGIN SELECT pv.pkg_version INTO pkgversion FROM PACKAGES pkg, release_content rc, package_versions pv WHERE pv.pv_id = rc.pv_id AND pkg.pkg_id = pv.pkg_id AND pkg.pkg_name = pkgname AND rc.rtag_id = rtagid; RETURN pkgversion; END; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE CQ_TEST IS INPUT NUMBER(8,2); RESULT VARCHAR2(50); BEGIN INPUT := 33558440; RESULT := dbo.sp_RM_getIssueDetails@DEVI(INPUT); INSERT INTO CQ_TEST (ID) VALUES (RESULT); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER ) IS projId NUMBER; projIdDB NUMBER; TOTAL NUMBER; AUTO_TOTAL NUMBER; rtagIdDB NUMBER; BEGIN SELECT count(*) INTO TOTAL FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE pv.pv_id = rc.pv_id and rc.rtag_id = RtagId; SELECT count(*) INTO AUTO_TOTAL FROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pv WHERE pv.pv_id = rc.pv_id and pv.is_autobuildable = 'Y' and rc.rtag_id = RtagId; BEGIN SELECT RTAG_ID INTO rtagIdDB FROM DASH_BOARD WHERE RTAG_ID = RtagId; SELECT PROJ_ID INTO projIdDB FROM DASH_BOARD WHERE RTAG_ID = RtagId; EXCEPTION WHEN NO_DATA_FOUND THEN rtagIdDB := ''; END; IF rtagIdDB IS NULL THEN SELECT PROJ_ID INTO projId FROM RELEASE_TAGS WHERE RTAG_ID = RtagId; INSERT INTO DASH_BOARD (PROJ_ID, RTAG_ID, LAST_BUILD_TIME, AUTOMATED_PACKAGES, TOTAL_PACKAGES) VALUES ( projId, RtagId, ORA_SYSDATETIME, AUTO_TOTAL, TOTAL); ELSE UPDATE DASH_BOARD SET LAST_BUILD_TIME = ORA_SYSDATETIME, AUTOMATED_PACKAGES = AUTO_TOTAL, TOTAL_PACKAGES = TOTAL WHERE PROJ_ID = projIdDB AND RTAG_ID = rtagIdDB; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ END pk_rmapi_test; / ALTER PACKAGE "RELEASE_MANAGER"."PK_RMAPI_TEST" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-02-06 11:21:54' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_APP_UTILS" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 26/Apr/2005 || Body Version: 1.0 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur) IS BEGIN IF (NOT RtagId IS NULL) THEN -- Case with RTAG_ID present OPEN records FOR SELECT rt.PROJ_ID, rt.RTAG_ID AS RTAG_ID FROM RELEASE_TAGS rt WHERE rt.RTAG_ID = TO_NUMBER(RtagId); ELSIF (NOT ProjId IS NULL) THEN -- Case with PROJ_ID present OPEN records FOR SELECT TO_NUMBER(ProjId) AS PROJ_ID, -1 AS RTAG_ID FROM DUAL; ELSE -- Case with none present OPEN records FOR SELECT -1 AS PROJ_ID, -1 AS RTAG_ID FROM DUAL; END IF; --RETURN records; END; /*-------------------------------------------------------------------------------------------------------*/ END PK_APP_UTILS; / ALTER PACKAGE "RELEASE_MANAGER"."PK_APP_UTILS" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-04-11 16:21:37' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_ENVIRONMENT" IS /* ------------------------------ || Last Modified: Rupesh Solanki || Modified Date: 30/Aug/2007 || Body Version: 1.2 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE) RETURN NUMBER IS BEGIN /* || N - unlocked || Y - release and locked || P - penging approval || A - approved package ready for auto-build */ IF cdlock = 'N' OR cdlock = 'R' THEN -- WORK IN PROGRESS -- RETURN 0; ELSIF cdlock = 'P' OR cdlock = 'A' THEN -- PENDING -- RETURN 1; ELSIF cdlock = 'Y' THEN -- RELEASED -- RETURN 2; ELSE -- NOT FOUND -- raise_application_error (-20000, 'Cannot decide where to place package. [cDlock=' || cdlock || ']' ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER) RETURN NUMBER IS envtab NUMBER := -1; CURSOR curarea IS SELECT 2 AS envtab FROM release_content rc WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid UNION SELECT 0 AS envtab FROM work_in_progress wip WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid UNION SELECT 1 AS envtab FROM planned pl WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid; recarea curarea%ROWTYPE; BEGIN OPEN curarea; FETCH curarea INTO recarea; IF curarea%FOUND THEN envtab := recarea.envtab; END IF; CLOSE curarea; RETURN envtab; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER) RETURN NUMBER IS ispatch package_versions.dlocked%TYPE; viewid NUMBER := -1; CURSOR curview IS SELECT rc.base_view_id AS view_id FROM release_content rc WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid UNION SELECT wip.view_id AS view_id FROM work_in_progress wip WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid UNION SELECT pl.view_id AS view_id FROM planned pl WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid; recview curview%ROWTYPE; BEGIN -- Get dlock state SELECT pv.is_patch INTO ispatch FROM package_versions pv WHERE pv.pv_id = pvid; -- Decide which view id should package go under. IF (ispatch != 'Y') OR (ispatch IS NULL) THEN -- Get VIEW ID of Package OPEN curview; FETCH curview INTO recview; IF curview%FOUND THEN viewid := recview.view_id; ELSE raise_application_error (-20000, 'Cannot find view_id to proceed. [PvId=' || pvid || ']. The current version may not exist in the release anymore.' ); END IF; CLOSE curview; ELSE -- Get VIEW ID of Patch (view id of parent package) SELECT rc.base_view_id INTO viewid FROM release_content rc, package_patches ppv WHERE rc.rtag_id = rtagid AND rc.pv_id = ppv.pv_id AND ppv.patch_id = pvid; END IF; RETURN viewid; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE add_package ( pvid IN NUMBER, viewid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER ) IS dlocked package_versions.dlocked%TYPE; envtab NUMBER; BEGIN IF can_edit_pkg_in_project (pvid, rtagid) = 1 THEN -- Get dlock state SELECT pv.dlocked INTO dlocked FROM package_versions pv WHERE pv.pv_id = pvid; -- Get which area should go under envtab := select_environment_area (dlocked); -- Log log_action (pvid, 'action', userid, 'Start of Package Add...'); -- Remove Package IF envtab = 0 THEN -- WORK IN PROGRESS -- pk_work_in_progress.add_package (pvid, viewid, rtagid, userid); ELSIF envtab = 1 THEN -- PENDING -- pk_planned.add_package (pvid, viewid, rtagid, userid); ELSIF envtab = 2 THEN -- RELEASED -- -- NOTE: this package will be replaced with matching package pk_release.add_package (pvid, viewid, rtagid, userid); -- Now do post Release Actions pk_release.run_post_actions (pvid, rtagid); END IF; -- Log log_action (pvid, 'action', userid, 'End of Package Add...'); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE add_package_bulk ( pvidlist IN VARCHAR2, viewid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER ) IS nidcollector relmgr_number_tab_t := relmgr_number_tab_t (); dlocked package_versions.dlocked%TYPE; pvid NUMBER; envtab NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ IF (pvidlist IS NULL) THEN raise_application_error (-20000, 'Please select at least one package.' ); END IF; /*-------------------------------------------------------*/ nidcollector := in_list_number (pvidlist); FOR i IN 1 .. nidcollector.COUNT LOOP pvid := nidcollector (i); add_package (pvid, viewid, rtagid, userid); END LOOP; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE replace_package ( newpvid IN NUMBER, oldpvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER ) IS dlocked package_versions.dlocked%TYPE; viewid NUMBER; envtab NUMBER; ROWCOUNT NUMBER; creleasemode CHAR (1); npkgid NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ -- Check if oldPvId exists. It could have been removed SELECT COUNT (pv.pv_id) INTO ROWCOUNT FROM package_versions pv WHERE pv.pv_id = oldpvid; /*-------------------------------------------------------*/ /* This procedure is usually used by "History" option in Release Manager */ -- Get dlock state SELECT pv.dlocked INTO dlocked FROM package_versions pv WHERE pv.pv_id = newpvid; -- Get VIEW_ID --- IF ROWCOUNT = 1 THEN viewid := get_view_location (oldpvid, rtagid); ELSE -- Set ViewID to default viewid := 7; END IF; -- Get which area should go under envtab := select_environment_area (dlocked); -- Log log_action (oldpvid, 'action', userid, 'Start of Package Replace...'); -- Replace package IF envtab = 0 THEN -- WORK IN PROGRESS -- -- Delete old package pk_work_in_progress.remove_package (oldpvid, rtagid, userid); -- Add new package pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid); ELSIF envtab = 1 THEN -- PENDING -- -- Delete old package pk_planned.remove_package (oldpvid, rtagid, userid); -- Add new package pk_planned.add_package (newpvid, viewid, rtagid, userid); ELSIF envtab = 2 THEN -- RELEASED -- -- Delete old package pk_release.remove_package (oldpvid, rtagid, userid); -- Add new package pk_release.add_package (newpvid, viewid, rtagid, userid); -- Now do post Release Actions pk_release.run_post_actions (newpvid, rtagid); END IF; -- Log log_action (oldpvid, 'action', userid, 'End of Package Replace...'); END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION remove_package ( pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER, forceremove IN CHAR ) RETURN NUMBER IS envtab NUMBER; isused BOOLEAN; recordcount NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ -- Find location of package envtab := get_package_area (pvid, rtagid); -- Remove Package IF envtab = 0 THEN -- WORK IN PROGRESS -- -- Delete package pk_work_in_progress.remove_package (pvid, rtagid, userid); RETURN 0; ELSIF envtab = 1 THEN -- PENDING -- -- Delete package pk_planned.remove_package (pvid, rtagid, userid); RETURN 0; ELSIF envtab = 2 THEN -- RELEASED -- -- Check if is used by other packages isused := TRUE; IF forceremove = 'N' THEN SELECT COUNT (pv.pv_id) INTO recordcount FROM (SELECT dpv.pkg_id, dpv.v_ext FROM release_content rc, package_dependencies dep, package_versions dpv WHERE rc.rtag_id = rtagid AND rc.pv_id = dep.pv_id AND dep.dpv_id = dpv.pv_id) rdep, package_versions pv WHERE pv.pkg_id = rdep.pkg_id AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (rdep.v_ext, '|LINK_A_NULL|') AND pv.pv_id = pvid; IF recordcount > 0 THEN RETURN 1; -- Return 1 as package being used ELSE isused := FALSE; END IF; END IF; IF forceremove = 'Y' OR NOT isused THEN -- Delete old package pk_release.remove_package (pvid, rtagid, userid); -- Now do post Release Actions pk_release.run_post_actions (pvid, rtagid); RETURN 0; END IF; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_environment_items ( viewtype IN NUMBER, userid IN NUMBER, rtagid IN NUMBER, sviewidshowlist IN VARCHAR2, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count because views can give false count SELECT COUNT (pl.pv_id) INTO ntruerecordcount FROM environment_view pl WHERE pl.rtag_id = rtagid; IF viewtype = 1 THEN /*--- GUEST VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM environment_view rel, views vi WHERE rel.view_id = vi.view_id AND rtag_id = rtagid AND rel.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, DECODE (rel.pkg_state, NULL, 0, rel.pkg_state ) AS pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM environment_view rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = vi.view_id AND rel.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); ELSIF viewtype = 2 THEN /*--- PERSONAL VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM environment_view rel, view_settings vs, views vi WHERE rel.view_id = vi.view_id AND vs.view_id = rel.view_id AND vs.user_id = userid AND rtag_id = rtagid AND rel.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, DECODE (rel.pkg_state, NULL, 0, rel.pkg_state ) AS pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM environment_view rel, PACKAGES pkg, package_versions pv, views vi, view_settings vs WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = vi.view_id AND vs.view_id = vi.view_id AND vs.user_id = userid AND rel.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid UNION /* Private Views collapsed */ SELECT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM view_settings vs, view_def vd, views vi, environment_view rel, package_versions pv WHERE vs.view_id = vi.view_id AND rel.pv_id = pv.pv_id AND vd.pkg_id = pv.pkg_id AND vd.view_id = vi.view_id AND vi.base_view = 'N' AND rel.rtag_id = rtagid AND vs.user_id = userid AND vi.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Private Views expanded */ SELECT vi.view_id, vi.view_name, DECODE (rel.pkg_state, NULL, 0, rel.pkg_state ) AS pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM users usr, view_settings vs, view_def vd, views vi, environment_view rel, PACKAGES pkg, package_versions pv WHERE vs.user_id = usr.user_id AND vs.view_id = vi.view_id AND vd.view_id = vi.view_id AND pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.rtag_id = rtagid AND vd.pkg_id = pkg.pkg_id AND vi.base_view = 'N' AND vi.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND usr.user_id = userid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_released_items ( viewtype IN NUMBER, userid IN NUMBER, rtagid IN NUMBER, sviewidshowlist IN VARCHAR2, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count because views can give false count SELECT COUNT (rc.pv_id) INTO ntruerecordcount FROM release_content rc WHERE rc.rtag_id = rtagid; IF viewtype = 1 THEN /*--- GUEST VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM release_content rel, views vi WHERE rel.base_view_id = vi.view_id AND rtag_id = rtagid AND rel.base_view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND rel.base_view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); ELSIF viewtype = 2 THEN /*--- PERSONAL VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM release_content rel, view_settings vs, views vi WHERE rel.base_view_id = vi.view_id AND vs.view_id = rel.base_view_id AND vs.user_id = userid AND rtag_id = rtagid AND rel.base_view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi, view_settings vs WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND vs.view_id = vi.view_id AND vs.user_id = userid AND rel.base_view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid UNION /* Private Views collapsed */ SELECT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM view_settings vs, view_def vd, views vi, release_content rel, package_versions pv WHERE vs.view_id = vi.view_id AND rel.pv_id = pv.pv_id AND vd.pkg_id = pv.pkg_id AND vd.view_id = vi.view_id AND vi.base_view = 'N' AND rel.rtag_id = rtagid AND vs.user_id = userid AND vi.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Private Views expanded */ SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM users usr, view_settings vs, view_def vd, views vi, release_content rel, PACKAGES pkg, package_versions pv WHERE vs.user_id = usr.user_id AND vs.view_id = vi.view_id AND vd.view_id = vi.view_id AND pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.rtag_id = rtagid AND vd.pkg_id = pkg.pkg_id AND vi.base_view = 'N' AND vi.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND usr.user_id = userid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_work_in_progress_items ( viewtype IN NUMBER, userid IN NUMBER, rtagid IN NUMBER, sviewidshowlist IN VARCHAR2, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count because views can give false count SELECT COUNT (wip.pv_id) INTO ntruerecordcount FROM work_in_progress wip WHERE wip.rtag_id = rtagid; IF viewtype = 1 THEN /*--- GUEST VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM work_in_progress rel, views vi WHERE rel.view_id = vi.view_id AND rtag_id = rtagid AND rel.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, 0 AS pkg_state, --rel.pkg_state, TO_NUMBER (NULL) AS deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM work_in_progress rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = vi.view_id AND rel.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); ELSIF viewtype = 2 THEN /*--- PERSONAL VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM work_in_progress rel, view_settings vs, views vi WHERE rel.view_id = vi.view_id AND vs.view_id = rel.view_id AND vs.user_id = userid AND rtag_id = rtagid AND rel.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, 0 AS pkg_state, --rel.pkg_state, TO_NUMBER (NULL) AS deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM work_in_progress rel, PACKAGES pkg, package_versions pv, views vi, view_settings vs WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = vi.view_id AND vs.view_id = vi.view_id AND vs.user_id = userid AND rel.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid UNION /* Private Views collapsed */ SELECT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM view_settings vs, view_def vd, views vi, work_in_progress rel, package_versions pv WHERE vs.view_id = vi.view_id AND rel.pv_id = pv.pv_id AND vd.pkg_id = pv.pkg_id AND vd.view_id = vi.view_id AND vi.base_view = 'N' AND rel.rtag_id = rtagid AND vs.user_id = userid AND vi.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Private Views expanded */ SELECT vi.view_id, vi.view_name, 0 AS pkg_state, --rel.pkg_state, TO_NUMBER (NULL) AS deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM users usr, view_settings vs, view_def vd, views vi, work_in_progress rel, PACKAGES pkg, package_versions pv WHERE vs.user_id = usr.user_id AND vs.view_id = vi.view_id AND vd.view_id = vi.view_id AND pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.rtag_id = rtagid AND vd.pkg_id = pkg.pkg_id AND vi.base_view = 'N' AND vi.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND usr.user_id = userid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_pending_items ( viewtype IN NUMBER, userid IN NUMBER, rtagid IN NUMBER, sviewidshowlist IN VARCHAR2, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count because views can give false count SELECT COUNT (pl.pv_id) INTO ntruerecordcount FROM planned pl WHERE pl.rtag_id = rtagid; IF viewtype = 1 THEN /*--- GUEST VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM planned rel, views vi WHERE rel.view_id = vi.view_id AND rtag_id = rtagid AND rel.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, 0 AS pkg_state, --rel.pkg_state, TO_NUMBER (NULL) AS deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM planned rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = vi.view_id AND rel.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); ELSIF viewtype = 2 THEN /*--- PERSONAL VIEW ---*/ OPEN recordset FOR SELECT * FROM ( /* Base Views collapsed */ SELECT DISTINCT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM planned rel, view_settings vs, views vi WHERE rel.view_id = vi.view_id AND vs.view_id = rel.view_id AND vs.user_id = userid AND rtag_id = rtagid AND rel.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist ) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Base Views expanded */ SELECT vi.view_id, vi.view_name, 0 AS pkg_state, --rel.pkg_state, TO_NUMBER (NULL) AS deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM planned rel, PACKAGES pkg, package_versions pv, views vi, view_settings vs WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = vi.view_id AND vs.view_id = vi.view_id AND vs.user_id = userid AND rel.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND rtag_id = rtagid UNION /* Private Views collapsed */ SELECT vi.view_id, vi.view_name, TO_NUMBER (NULL) AS pkg_state, TO_NUMBER (NULL) AS deprecated_state, TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name, NULL AS pkg_version, NULL AS dlocked, NULL AS pv_description FROM view_settings vs, view_def vd, views vi, planned rel, package_versions pv WHERE vs.view_id = vi.view_id AND rel.pv_id = pv.pv_id AND vd.pkg_id = pv.pkg_id AND vd.view_id = vi.view_id AND vi.base_view = 'N' AND rel.rtag_id = rtagid AND vs.user_id = userid AND vi.view_id NOT IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) UNION /* Private Views expanded */ SELECT vi.view_id, vi.view_name, 0 AS pkg_state, --rel.pkg_state, TO_NUMBER (NULL) AS deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM users usr, view_settings vs, view_def vd, views vi, planned rel, PACKAGES pkg, package_versions pv WHERE vs.user_id = usr.user_id AND vs.view_id = vi.view_id AND vd.view_id = vi.view_id AND pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.rtag_id = rtagid AND vd.pkg_id = pkg.pkg_id AND vi.base_view = 'N' AND vi.view_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (sviewidshowlist) AS relmgr_number_tab_t ) FROM DUAL )) AND usr.user_id = userid) ord ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_view_content ( rtagid IN NUMBER, viewid IN NUMBER, recordset OUT typecur ) IS isbaseview CHAR (1); BEGIN -- Check if the view is BASE VIEW SELECT vi.base_view INTO isbaseview FROM views vi WHERE vi.view_id = viewid; IF (isbaseview = 'Y') THEN -- Get Base view content OPEN recordset FOR SELECT DECODE (rel.pkg_state, NULL, 0, rel.pkg_state ) AS pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description, pv.build_type FROM environment_view rel, PACKAGES pkg, package_versions pv WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.view_id = viewid AND rel.rtag_id = rtagid ORDER BY UPPER (pkg.pkg_name); ELSE -- Get non base view content OPEN recordset FOR SELECT DECODE (rel.pkg_state, NULL, 0, rel.pkg_state ) AS pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description, pv.build_type FROM environment_view rel, PACKAGES pkg, package_versions pv, view_def vd WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.rtag_id = rtagid AND vd.view_id = viewid AND vd.pkg_id = pv.pkg_id ORDER BY UPPER (pkg.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER) RETURN NUMBER IS envtab NUMBER; returnvalue NUMBER; return_not_found NUMBER := -1; BEGIN envtab := get_package_area (pvid, rtagid); IF envtab = 0 THEN -- WORK IN PROGRESS -- returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid); ELSIF envtab = 1 THEN -- PENDING -- returnvalue := pk_planned.get_package_view (pvid, rtagid); ELSIF envtab = 2 THEN -- RELEASED -- returnvalue := pk_release.get_package_view (pvid, rtagid); ELSE -- This may be a Patch not located anywhere but unlocked returnvalue := return_not_found; END IF; RETURN returnvalue; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER) IS viewid NUMBER; envtab NUMBER; ispatch CHAR (1) := NULL; buildtype CHAR (1) := NULL; lastversionid NUMBER; BEGIN -- Check if package is patch SELECT pv.is_patch, pv.build_type, pv.last_pv_id INTO ispatch, buildtype, lastversionid FROM package_versions pv WHERE pv.pv_id = pvid; -- Get ViewId viewid := get_package_view (pvid, rtagid); -- Remove from current area envtab := pk_environment.get_package_area (pvid, rtagid); -- Make sure that package was in work-in-progress or pending before makeing it release -- Exclude patches, ripple builds IF (envtab < 0) THEN -- Not found in work-in-progress or pending IF (ispatch IS NULL) AND (buildtype = 'M') THEN raise_application_error (-20000, 'This package cannot be released here.' ); END IF; END IF; -- Log log_action (pvid, 'action', userid, 'Start of Make Package Release...'); IF envtab = 0 THEN -- WORK IN PROGRESS -- pk_work_in_progress.remove_package (pvid, rtagid, userid); ELSIF envtab = 1 THEN -- PENDING -- pk_planned.remove_package (pvid, rtagid, userid); END IF; -- Change package state pk_package.change_state (pvid, 'Y', userid); -- Make sure it is valid BASE VIEW IF viewid < 1 THEN viewid := 7; -- This is default base view END IF; IF (ispatch IS NULL) THEN -- Add package to new area pk_release.add_package (pvid, viewid, rtagid, userid); END IF; -- Now do post Release Actions pk_release.run_post_actions (pvid, rtagid); -- Now delete old version from DO_NOT_RIPPLE Table if it Exists DELETE FROM do_not_ripple WHERE rtag_id = rtagid AND pv_id = lastversionid; -- Now delete old version from ADVISORY_RIPPLES Table if it Exists DELETE FROM advisory_ripple WHERE rtag_id = rtagid AND pv_id = lastversionid; -- Log log_action (pvid, 'action', userid, 'End of Make Package Release...'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE auto_make_release ( pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER, vext IN package_versions.v_ext%TYPE, ssv_ext IN package_versions.v_ext%TYPE, clonefrompvid IN NUMBER ) IS viewid NUMBER; envtab NUMBER; ispatch CHAR (1) := NULL; buildtype CHAR (1) := NULL; lastversionid NUMBER; BEGIN -- Check if package is patch SELECT pv.is_patch, pv.build_type, pv.last_pv_id INTO ispatch, buildtype, lastversionid FROM package_versions pv WHERE pv.pv_id = pvid; IF vext <> ssv_ext THEN -- Get ViewId viewid := get_package_view (clonefrompvid, rtagid); -- Remove from current area envtab := pk_environment.get_package_area (clonefrompvid, rtagid); ELSE -- Get ViewId viewid := get_package_view (pvid, rtagid); -- Remove from current area envtab := pk_environment.get_package_area (pvid, rtagid); END IF; -- Make sure that package was in work-in-progress or pending before makeing it release -- Exclude patches, ripple builds IF (envtab < 0) THEN -- Not found in work-in-progress or pending IF (ispatch IS NULL) AND (buildtype = 'M') THEN raise_application_error (-20000, 'This package cannot be released here.' ); END IF; END IF; -- Log log_action (pvid, 'action', userid, 'Start of Make Package Release...'); IF vext <> ssv_ext THEN IF envtab = 0 THEN -- WORK IN PROGRESS -- pk_work_in_progress.remove_package (clonefrompvid, rtagid, userid); ELSIF envtab = 1 THEN -- PENDING -- pk_planned.remove_package (clonefrompvid, rtagid, userid); ELSIF envtab = 2 THEN -- RELEASED -- pk_release.remove_package (clonefrompvid, rtagid, userid); END IF; ELSE IF envtab = 0 THEN -- WORK IN PROGRESS -- pk_work_in_progress.remove_package (pvid, rtagid, userid); ELSIF envtab = 1 THEN -- PENDING -- pk_planned.remove_package (pvid, rtagid, userid); END IF; END IF; -- Change package state pk_package.change_state (pvid, 'Y', userid); -- Make sure it is valid BASE VIEW IF viewid < 1 THEN viewid := 7; -- This is default base view END IF; IF (ispatch IS NULL) THEN -- Add package to new area pk_release.add_package (pvid, viewid, rtagid, userid); END IF; -- Now do post Release Actions pk_release.run_post_actions (pvid, rtagid); -- Now update the Dash_Board Table (DEPRECATED) pk_rmapi.update_dash_board (rtagid); -- Now delete old version from DO_NOT_RIPPLE Table if it Exists DELETE FROM do_not_ripple WHERE rtag_id = rtagid AND pv_id = lastversionid; -- Now delete old version from ADVISORY_RIPPLES Table if it Exists DELETE FROM advisory_ripple WHERE rtag_id = rtagid AND pv_id = lastversionid; -- Log log_action (pvid, 'action', userid, 'End of Make Package Release...'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER) IS viewid NUMBER; envtab NUMBER; BEGIN -- Get ViewId --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId ); viewid := get_package_view (pvid, rtagid); -- Remove from current area envtab := pk_environment.get_package_area (pvid, rtagid); -- Log log_action (pvid, 'action', userid, 'Start of Make Package UnRelease...' ); IF envtab = 2 THEN -- RELEASE AREA -- pk_release.remove_package (pvid, rtagid, userid); ELSIF envtab = 1 THEN -- PENDING -- pk_planned.remove_package (pvid, rtagid, userid); END IF; -- Change package state pk_package.change_state (pvid, 'N', userid); -- Make sure it is valid BASE VIEW IF viewid < 1 THEN viewid := 7; -- This is default base view END IF; -- Add package to new area pk_work_in_progress.add_package (pvid, viewid, rtagid, userid); -- Now do post Release Actions pk_release.run_post_actions (pvid, rtagid); -- Log log_action (pvid, 'action', userid, 'End of Make Package UnRelease...'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER) IS viewid NUMBER; ispatch CHAR (1) := NULL; buildtype CHAR (1) := NULL; BEGIN -- Check if package is patch SELECT pv.is_patch, pv.build_type INTO ispatch, buildtype FROM package_versions pv WHERE pv.pv_id = pvid; -- Get ViewId viewid := get_package_view (pvid, rtagid); --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId ); -- Log log_action (pvid, 'action', userid, 'Start of Make Package Pending...'); IF (ispatch IS NULL) THEN -- Remove from current area pk_work_in_progress.remove_package (pvid, rtagid, userid); -- Change package state pk_package.change_state (pvid, 'P', userid); -- Add package to new area pk_planned.add_package (pvid, viewid, rtagid, userid); END IF; -- Log log_action (pvid, 'action', userid, 'End of Make Package Pending...'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER) IS BEGIN -- Log log_action (pvid, 'action', userid, 'Start of Package Pending Approval...' ); -- Change package state pk_package.change_state (pvid, 'A', userid); -- Log log_action (pvid, 'action', userid, 'End of Package Pending Approval...'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER) IS viewid NUMBER; BEGIN -- Get ViewId viewid := get_package_view (pvid, rtagid); -- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId ); -- Log log_action (pvid, 'action', userid, 'Start of Reject Package...'); -- Remove from current area pk_planned.remove_package (pvid, rtagid, userid); -- Change package state pk_package.change_state (pvid, 'R', userid); -- Add package to new area pk_work_in_progress.add_package (pvid, viewid, rtagid, userid); -- Log log_action (pvid, 'action', userid, 'Start of Reject Package...'); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE change_package_view ( pvid IN NUMBER, rtagid IN NUMBER, newviewid IN NUMBER ) IS envtab NUMBER; BEGIN envtab := pk_environment.get_package_area (pvid, rtagid); IF envtab = 0 THEN -- WORK IN PROGRESS -- pk_work_in_progress.change_package_view (pvid, rtagid, newviewid); ELSIF envtab = 1 THEN -- PENDING -- pk_planned.change_package_view (pvid, rtagid, newviewid); ELSIF envtab = 2 THEN -- RELEASED -- pk_release.change_package_view (pvid, rtagid, newviewid); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE find_package ( skeyword IN VARCHAR2, nrtagid IN NUMBER, nsearcharea IN NUMBER, recordset OUT typecur ) IS BEGIN IF nsearcharea = 0 THEN /* Search Work In Progress */ OPEN recordset FOR SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked, pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments, pv.modified_stamp, usr.full_name, usr.user_email FROM views vi, work_in_progress rc, PACKAGES pkg, package_versions pv, users usr WHERE rc.view_id = vi.view_id AND rc.pv_id = pv.pv_id AND pkg.pkg_id = pv.pkg_id AND pv.modifier_id = usr.user_id AND rc.rtag_id = nrtagid AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword) ORDER BY UPPER (pkg.pkg_name); ELSIF nsearcharea = 1 THEN /* Search Pending */ OPEN recordset FOR SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked, pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments, pv.modified_stamp, usr.full_name, usr.user_email FROM views vi, planned rc, PACKAGES pkg, package_versions pv, users usr WHERE rc.view_id = vi.view_id AND rc.pv_id = pv.pv_id AND pkg.pkg_id = pv.pkg_id AND pv.modifier_id = usr.user_id AND rc.rtag_id = nrtagid AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword) ORDER BY UPPER (pkg.pkg_name); ELSIF nsearcharea = 2 THEN /* Search Released */ OPEN recordset FOR SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked, pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments, pv.modified_stamp, usr.full_name, usr.user_email FROM views vi, release_content rc, PACKAGES pkg, package_versions pv, users usr WHERE rc.base_view_id = vi.view_id AND rc.pv_id = pv.pv_id AND pkg.pkg_id = pv.pkg_id AND pv.modifier_id = usr.user_id AND rc.rtag_id = nrtagid AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword) ORDER BY UPPER (pkg.pkg_name); ELSIF nsearcharea = 3 THEN /* Search ALL */ OPEN recordset FOR SELECT rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments, pv.modified_stamp, usr.full_name, usr.user_email FROM views vi, environment_view rc, PACKAGES pkg, package_versions pv, users usr WHERE rc.view_id = vi.view_id AND rc.pv_id = pv.pv_id AND pkg.pkg_id = pv.pkg_id AND pv.modifier_id = usr.user_id AND rc.rtag_id = nrtagid AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword) ORDER BY UPPER (pkg.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE find_file ( skeyword IN VARCHAR2, nrtagid IN NUMBER, nsearcharea IN NUMBER, npagesize IN NUMBER, recordset OUT typecur ) IS BEGIN IF nsearcharea = 0 THEN /* Search Work In Progress */ OPEN recordset FOR SELECT qry.* FROM ( /* File search on Packages */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum FROM work_in_progress rc, PACKAGES pkg, package_versions pv, release_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword) UNION ALL /* File search on Products */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum FROM work_in_progress rc, PACKAGES pkg, package_versions pv, product_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry WHERE ROWNUM <= npagesize ORDER BY UPPER (qry.pkg_name); ELSIF nsearcharea = 1 THEN /* Search Pending */ OPEN recordset FOR SELECT qry.* FROM ( /* File search on Packages */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum FROM planned rc, PACKAGES pkg, package_versions pv, release_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword) UNION ALL /* File search on Products */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum FROM planned rc, PACKAGES pkg, package_versions pv, product_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry WHERE ROWNUM <= npagesize ORDER BY UPPER (qry.pkg_name); ELSIF nsearcharea = 2 THEN /* Search Released */ OPEN recordset FOR SELECT qry.* FROM ( /* File search on Packages */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum, NULL AS patch_id FROM release_content rc, PACKAGES pkg, package_versions pv, release_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword) UNION ALL /* File search on Products */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum, NULL AS patch_id FROM release_content rc, PACKAGES pkg, package_versions pv, product_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword) UNION ALL /* File search on Patches */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum, DECODE (art.file_path, NULL, pp.patch_id, NULL ) AS patch_id FROM release_content rc, PACKAGES pkg, package_versions pv, release_components art, package_patches pp WHERE pv.pv_id = pp.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.rtag_id = nrtagid AND art.pv_id = pp.patch_id AND rc.pv_id = pp.pv_id AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry WHERE ROWNUM <= npagesize ORDER BY UPPER (qry.pkg_name); ELSIF nsearcharea = 3 THEN /* Search ALL */ OPEN recordset FOR SELECT qry.* FROM ( /* File search on Packages */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum, NULL AS patch_id FROM environment_view rc, PACKAGES pkg, package_versions pv, release_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword) UNION ALL /* File search on Products */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum, NULL AS patch_id FROM environment_view rc, PACKAGES pkg, package_versions pv, product_components art WHERE rc.pv_id = art.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.pv_id = pv.pv_id AND rc.rtag_id = nrtagid AND UPPER (art.file_name) LIKE UPPER (skeyword) UNION ALL /* File search on Patches */ SELECT art.file_name, art.file_path, pkg.pkg_name, pv.pv_id, pv.pkg_version, art.crc_cksum, DECODE (art.file_path, NULL, pp.patch_id, NULL ) AS patch_id FROM release_content rc, PACKAGES pkg, package_versions pv, release_components art, package_patches pp WHERE pv.pv_id = pp.pv_id AND pv.pkg_id = pkg.pkg_id AND rc.rtag_id = nrtagid AND art.pv_id = pp.patch_id AND rc.pv_id = pp.pv_id AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry WHERE ROWNUM <= npagesize ORDER BY UPPER (qry.pkg_name); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_prodrelease_items ( rtagid IN NUMBER, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count n the number of integration products SELECT COUNT (rc.pv_id) INTO ntruerecordcount FROM release_content rc WHERE rc.rtag_id = rtagid; OPEN recordset FOR SELECT vi.view_id, vi.view_name, rel.pkg_state, --rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND pv.is_deployable = 'Y' AND rtag_id = rtagid AND pv.pv_id NOT IN (SELECT DISTINCT prod_id FROM deployment_manager.os_contents) AND rel.product_state IS NULL ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_integration_items ( rtagid IN NUMBER, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count n the number of integration products SELECT COUNT (rc.pv_id) INTO ntruerecordcount FROM release_content rc WHERE rc.rtag_id = rtagid AND rc.product_state = 1; OPEN recordset FOR SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND pv.is_deployable = 'Y' AND rtag_id = rtagid AND rel.product_state IN (1, 5) ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_test_items ( rtagid IN NUMBER, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count n the number of test products SELECT COUNT (rc.pv_id) INTO ntruerecordcount FROM release_content rc WHERE rc.rtag_id = rtagid AND rc.product_state = 2; OPEN recordset FOR SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND pv.is_deployable = 'Y' AND rtag_id = rtagid AND rel.product_state = 2 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_deploy_items ( rtagid IN NUMBER, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count n the number of deploy products SELECT COUNT (rc.pv_id) INTO ntruerecordcount FROM release_content rc WHERE rc.rtag_id = rtagid AND rc.product_state = 3; OPEN recordset FOR SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND pv.is_deployable = 'Y' AND rtag_id = rtagid AND rel.product_state IN (3, 5) AND pv.pv_id NOT IN (SELECT DISTINCT prod_id FROM deployment_manager.os_contents) ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE get_reject_items ( rtagid IN NUMBER, ntruerecordcount OUT NUMBER, recordset OUT typecur ) IS BEGIN -- Get true record count n the number of reject products SELECT COUNT (rc.pv_id) INTO ntruerecordcount FROM release_content rc WHERE rc.rtag_id = rtagid AND rc.product_state = 4; OPEN recordset FOR SELECT vi.view_id, vi.view_name, rel.pkg_state, rel.deprecated_state, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description FROM release_content rel, PACKAGES pkg, package_versions pv, views vi WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.base_view_id = vi.view_id AND pv.is_deployable = 'Y' AND rtag_id = rtagid AND rel.product_state = 4 ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name); END; /*-------------------------------------------------------------------------------------------------------*/ END pk_environment; / ALTER PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-05-09 14:47:20' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_PACKAGE" IS /* ------------------------------ || Last Modified: J. Tweddle || Modified Date: 24/08/2007 || Body Version: 1.8 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE new_version ( nlastpvid IN NUMBER, snewpkgversion IN VARCHAR2 DEFAULT NULL, cbuildtype IN CHAR, nsettopvid IN NUMBER DEFAULT NULL, nrtagid IN NUMBER, nuserid IN NUMBER, enumissues_state_imported IN NUMBER, returnpvid OUT NUMBER ) IS origpkg_id package_versions.pkg_id%TYPE; origdlocked package_versions.dlocked%TYPE; ssv_mm package_versions.v_mm%TYPE; ssv_nmm package_versions.v_nmm%TYPE; ssv_ext package_versions.v_ext%TYPE; spackageversion VARCHAR2 (4000); nissuestypes NUMBER; nviewid NUMBER; reccount NUMBER; isreleased package_versions.dlocked%TYPE := 'N'; slabel VARCHAR2 (4000) := NULL; CURSOR package_versions_cur IS SELECT pv.pv_id, pv.is_patch, pv.dlocked FROM package_versions pv WHERE pv.pkg_version = snewpkgversion AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id FROM package_versions origpv WHERE origpv.pv_id = nlastpvid); package_versions_rec package_versions_cur%ROWTYPE; CURSOR clone_package_versions_cur IS SELECT DISTINCT pkg_id, dlocked FROM package_versions WHERE pv_id = nlastpvid; clone_package_versions_rec clone_package_versions_cur%ROWTYPE; BEGIN spackageversion := snewpkgversion; IF nsettopvid IS NULL THEN -- SetToPv_id is not supplied, hence proceed. /* ---------------------------------------------------- */ /* Find id package_version exists */ /* ---------------------------------------------------- */ OPEN package_versions_cur; FETCH package_versions_cur INTO package_versions_rec; IF package_versions_cur%NOTFOUND THEN --- Create brand new package --- SELECT seq_pv_id.NEXTVAL INTO returnpvid FROM DUAL; -- Split Version to get extention + other split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext); -- Get previous package to clone from OPEN clone_package_versions_cur; FETCH clone_package_versions_cur INTO clone_package_versions_rec; origpkg_id := clone_package_versions_rec.pkg_id; origdlocked := clone_package_versions_rec.dlocked; CLOSE clone_package_versions_cur; -- Automated built config IF (cbuildtype = 'A') THEN spackageversion := '(' || returnpvid || ')' || ssv_ext; -- Make sure that version is still unique END IF; -- Clone Package Version Details -- INSERT INTO package_versions (pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, v_mm, v_nmm, v_ext, src_path, pv_description, pv_overview, last_pv_id, owner_id, is_deployable, is_build_env_required, build_type, bs_id, is_autobuildable, ripple_field) SELECT returnpvid AS pv_id, origpkg_id AS pkg_id, spackageversion AS pkg_version, 'N' AS dlocked, ora_sysdate AS created_stamp, nuserid AS creator_id, ora_sysdatetime AS modified_stamp, nuserid AS modifier_id, ssv_mm AS v_mm, ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path, pv.pv_description, pv.pv_overview, nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable, pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable, pv.ripple_field FROM package_versions pv WHERE pv.pv_id = nlastpvid; -- Set Issues Type for cloning --- IF origdlocked = 'Y' THEN nissuestypes := enumissues_state_imported; ELSE nissuestypes := NULL; END IF; -- Update Label for automated built IF (cbuildtype = 'A') THEN slabel := get_automated_label (returnpvid); UPDATE package_versions pv SET pv.pkg_label = slabel WHERE pv.pv_id = returnpvid; END IF; basic_clone (nlastpvid, returnpvid, nrtagid, nuserid, origpkg_id, nissuestypes ); ELSE --- Package already exists, hence reuse --- returnpvid := package_versions_rec.pv_id; isreleased := package_versions_rec.dlocked; END IF; CLOSE package_versions_cur; ELSE returnpvid := nsettopvid; END IF; END new_version; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE change_state ( pvid IN NUMBER, newstate IN package_versions.dlocked%TYPE, userid IN NUMBER ) IS BEGIN -- Set package in Released mode UPDATE package_versions pv SET pv.dlocked = newstate, pv.modified_stamp = ora_sysdatetime, pv.modifier_id = userid WHERE pv.pv_id = pvid; -- Log action -- IF newstate = 'Y' THEN -- RELEASED -- log_action (pvid, 'makeofficial', userid, 'Package state change to: Released' ); ELSIF newstate = 'N' THEN -- UNLOCKED -- log_action (pvid, 'makeunofficial', userid, 'Package state change to: Ulocked' ); ELSIF newstate = 'P' THEN -- PENDING APPROVAL -- log_action (pvid, 'add_to_planned', userid, 'Package state change to: Pending Approval' ); ELSIF newstate = 'R' THEN -- REJECTED -- log_action (pvid, 'reject_package', userid, 'Package state change to: Rejected' ); ELSIF newstate = 'A' THEN -- APPROVED -- log_action (pvid, 'approve_package', userid, 'Package state change to: Approved' ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE destroy_package ( pvid IN NUMBER, overridewarnings IN CHAR DEFAULT 'N', problemstring OUT VARCHAR2 ) IS LOCKED CHAR; pkgid NUMBER; ROWCOUNT NUMBER; BEGIN /* || This will destroy all package details from database. || It will only be used to remove unwanted work in progress packages, || or mestaken versions */ /*--------------- Business Rules Here -------------------*/ problemstring := NULL; IF overridewarnings = 'N' THEN -- Package must not be official SELECT pv.dlocked INTO LOCKED FROM package_versions pv WHERE pv.pv_id = pvid; IF LOCKED = 'Y' THEN problemstring := problemstring || '- Package is locked and released.' || UTL_TCP.crlf; END IF; -- Cannot remove if used in BOMs SELECT COUNT (osc.prod_id) INTO ROWCOUNT FROM deployment_manager.os_contents osc WHERE osc.prod_id = pvid; IF ROWCOUNT > 0 THEN problemstring := problemstring || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.' || UTL_TCP.crlf; END IF; -- Cannot remove if Referenced as build dependency SELECT COUNT (dep.pv_id) INTO ROWCOUNT FROM package_dependencies dep WHERE dep.dpv_id = pvid; IF ROWCOUNT > 0 THEN problemstring := problemstring || '- Package is referenced by other package as build dependency.' || UTL_TCP.crlf; END IF; -- Cannot remove if Referenced as runtime dependency SELECT COUNT (rd.pv_id) INTO ROWCOUNT FROM runtime_dependencies rd WHERE rd.rtd_id = pvid; IF ROWCOUNT > 0 THEN problemstring := problemstring || '- Package is referenced by other package as runtime dependency.' || UTL_TCP.crlf; END IF; -- Cannot remove if Referenced as patch SELECT COUNT (pp.pv_id) INTO ROWCOUNT FROM package_patches pp WHERE pp.patch_id = pvid; IF ROWCOUNT > 0 THEN problemstring := problemstring || '- Package is used as patch by other package.' || UTL_TCP.crlf; END IF; END IF; /*-------------------------------------------------------*/ IF (problemstring IS NULL) THEN --- Remove From Work in Progress DELETE FROM work_in_progress wip WHERE wip.pv_id = pvid; --- Remove From Pending DELETE FROM planned pl WHERE pl.pv_id = pvid; --- Remove From Released area DELETE FROM release_content rc WHERE rc.pv_id = pvid; ---Remove From Package Processes DELETE FROM package_processes pp WHERE pp.pv_id = pvid; --- Remove Dependencies DELETE FROM package_dependencies dep WHERE dep.pv_id = pvid; DELETE FROM package_dependencies dep WHERE dep.dpv_id = pvid; --- Remove Runtime dependencies DELETE FROM runtime_dependencies rtd WHERE rtd.pv_id = pvid; DELETE FROM runtime_dependencies rtd WHERE rtd.rtd_id = pvid; --- Remove components DELETE FROM product_components pc WHERE pc.pv_id = pvid; DELETE FROM release_components rc WHERE rc.pv_id = pvid; --- Remove From Notification History DELETE FROM notification_history nh WHERE nh.pv_id = pvid; --- Remove From Ignore Warnings DELETE FROM ignore_warnings iw WHERE iw.pv_id = pvid; --- Remove From Additional Notes DELETE FROM additional_notes an WHERE an.pv_id = pvid; --- Remove From CQ Issues DELETE FROM cq_issues cq WHERE cq.pv_id = pvid; --- Remove from Package Patches DELETE FROM package_patches pp WHERE pp.pv_id = pvid; DELETE FROM package_patches pp WHERE pp.patch_id = pvid; --- Remove From Package Documents DELETE FROM package_documents pd WHERE pd.pv_id = pvid; --- Remove from Code Review DELETE FROM code_reviews cr WHERE cr.pv_id = pvid; --- Remove from Code Review URL DELETE FROM code_review_url cru WHERE cru.pv_id = pvid; --- Remove from Unit Tests DELETE FROM unit_tests ut WHERE ut.pv_id = pvid; --- Remove from Package BuildEnv DELETE FROM package_build_env pbe WHERE pbe.pv_id = pvid; --- Remove from Package Build Info DELETE FROM package_build_info pbi WHERE pbi.pv_id = pvid; --- Remove from Build Order DELETE FROM build_order bo WHERE bo.pv_id = pvid; --- Remove from Note Manager DELETE FROM note_manager nm WHERE nm.nid = pvid; --- Remove from Action log DELETE FROM action_log al WHERE al.pv_id = pvid; --- Remove from Do Not Ripple DELETE FROM DO_NOT_RIPPLE dnr WHERE dnr.PV_ID = pvid; --- Remove from Advisory Ripple DELETE FROM ADVISORY_RIPPLE ar WHERE ar.PV_ID = pvid; --- Remove from Jira Issues DELETE FROM JIRA_ISSUES jira WHERE jira.PV_ID = pvid; --- Finally Remove From Package Versions --- Get Package name SELECT pv.pkg_id INTO pkgid FROM package_versions pv WHERE pv.pv_id = pvid; DELETE FROM package_versions pv WHERE pv.pv_id = pvid; --- Remove package name if not used any more SELECT COUNT (pv.pv_id) INTO ROWCOUNT FROM package_versions pv WHERE pv.pkg_id = pkgid; IF ROWCOUNT < 1 THEN DELETE FROM PACKAGES pkg WHERE pkg.pkg_id = pkgid; END IF; END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE new_patch ( snewpatchversion IN package_versions.pkg_version%TYPE, nparentpvid IN NUMBER, spatchidlist IN VARCHAR2, nuserid IN NUMBER, returnpatchid OUT NUMBER ) IS patchpv_id NUMBER; parpkg_id NUMBER; lastinstallorder NUMBER; ispatchdlocked package_versions.dlocked%TYPE; ssv_mm package_versions.v_mm%TYPE; ssv_nmm package_versions.v_nmm%TYPE; ssv_ext package_versions.v_ext%TYPE; opatchdepcollector relmgr_number_tab_t := relmgr_number_tab_t (); CURSOR parent_cur IS SELECT pv.*, pkg.pkg_name FROM package_versions pv, PACKAGES pkg WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id; parent_rec parent_cur%ROWTYPE; CURSOR patch_cur IS SELECT pv.*, pg.pkg_name FROM package_versions pv, PACKAGES pg WHERE pv.pkg_id = parpkg_id AND pv.pkg_version = snewpatchversion AND pv.pkg_id = pg.pkg_id; patch_rec patch_cur%ROWTYPE; CURSOR releases_cur IS SELECT rc.pv_id FROM release_content rc WHERE rc.pv_id = patch_rec.pv_id; releases_rec releases_cur%ROWTYPE; BEGIN -- Get Last Install Order SELECT COUNT (*) INTO lastinstallorder FROM package_patches pp WHERE pp.pv_id = nparentpvid; -- Get parent details OPEN parent_cur; FETCH parent_cur INTO parent_rec; parpkg_id := parent_rec.pkg_id; -- Find if patch exists in database OPEN patch_cur; FETCH patch_cur INTO patch_rec; -- Parent must be official IF parent_rec.dlocked = 'Y' THEN IF patch_cur%NOTFOUND THEN ispatchdlocked := 'N'; -- Create new patch version -- SELECT seq_pv_id.NEXTVAL INTO patchpv_id FROM DUAL; split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext); INSERT INTO package_versions (pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, v_mm, v_nmm, v_ext, src_path, pv_description, owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id, is_autobuildable, ripple_field ) VALUES (patchpv_id, parpkg_id, snewpatchversion, ispatchdlocked, ora_sysdate, nuserid, ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext, parent_rec.src_path, 'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version, nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field ); INSERT INTO package_patches (pv_id, patch_id, install_order) (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id, lastinstallorder + 1 AS install_order FROM package_versions pv WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y'); /* LOG ACTION */ log_action (patchpv_id, 'new_version', nuserid, 'Patch version created: ' || snewpatchversion ); log_action (nparentpvid, 'patch_add', nuserid, 'New patch created and attached: ' || snewpatchversion ); ELSE patchpv_id := patch_rec.pv_id; ispatchdlocked := patch_rec.dlocked; -- Find if pv_id exists in release content (i.e. it cannot be a patch) OPEN releases_cur; FETCH releases_cur INTO releases_rec; IF releases_cur%NOTFOUND THEN -- This pv_id is trully a patch, hence add Y to column IS_PATCH UPDATE package_versions SET is_patch = 'Y' WHERE pv_id = patchpv_id; INSERT INTO package_patches (pv_id, patch_id, install_order) (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id, lastinstallorder + 1 AS install_order FROM package_versions pv WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y'); END IF; CLOSE releases_cur; /* LOG ACTION */ log_action (nparentpvid, 'patch_add', nuserid, 'Patch version was found and attached: ' || snewpatchversion ); END IF; END IF; /* Create Patch Dependencies */ opatchdepcollector := in_list_number (spatchidlist); -- Make sure patch is unofficial before altering its dependencies IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N') THEN -- Delete Existing Dependencies DELETE FROM package_dependencies dep WHERE dep.pv_id = patchpv_id; -- Insert new dependencies INSERT INTO package_dependencies (pv_id, dpv_id, pkg_id, dpkg_id, build_type) SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id, parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id, 'L' AS build_type FROM package_versions pv WHERE pv.pv_id IN ( SELECT * FROM TABLE (CAST (opatchdepcollector AS relmgr_number_tab_t) )); END IF; -- Return patch_id returnpatchid := patchpv_id; CLOSE parent_cur; CLOSE patch_cur; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN raise_application_error (-20000, 'Patch version ' || snewpatchversion || ' already exist.' ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE obsolete_patch ( patchid IN NUMBER, isobsolete IN CHAR, obsoletecomments IN VARCHAR2, userid IN NUMBER ) IS BEGIN -- Update patch UPDATE package_versions pv SET pv.is_obsolete = isobsolete, pv.obsolete_comments = obsoletecomments WHERE pv.pv_id = patchid; /* -- Update patch children UPDATE PACKAGE_VERSIONS pv SET pv.IS_OBSOLETE = IsObsolete, pv.OBSOLETE_COMMENTS = ObsoleteComments WHERE pv.PV_ID IN ( SELECT DISTINCT dep.DPV_ID FROM PACKAGE_DEPENDENCIES dep WHERE dep.PV_ID = PatchId ); -- Update patch parent UPDATE PACKAGE_VERSIONS pv SET pv.IS_OBSOLETE = IsObsolete, pv.OBSOLETE_COMMENTS = ObsoleteComments WHERE pv.PV_ID IN ( SELECT DISTINCT dep.PV_ID FROM PACKAGE_DEPENDENCIES dep WHERE dep.DPV_ID = PatchId ); */ /* LOG ACTION */ IF isobsolete IS NOT NULL THEN log_action (patchid, 'patch_obsolete', userid, 'Obsolete patch. ' || obsoletecomments ); ELSE log_action (patchid, 'patch_obsolete', userid, 'Undo patch obsolete.' ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE obsolete_patches ( spatchidlist IN VARCHAR2, isobsolete IN CHAR, obsoletecomments IN VARCHAR2, userid IN NUMBER ) IS BEGIN /*--------------- Business Rules Here -------------------*/ IF spatchidlist IS NULL THEN raise_application_error (-20000, 'Please select one or more Patches.' ); END IF; /*-------------------------------------------------------*/ -- Update patch UPDATE package_versions pv SET pv.is_obsolete = isobsolete, pv.obsolete_comments = obsoletecomments WHERE pv.pv_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (spatchidlist) AS relmgr_number_tab_t ) FROM DUAL )); /* -- Update patch children UPDATE PACKAGE_VERSIONS pv SET pv.IS_OBSOLETE = IsObsolete, pv.OBSOLETE_COMMENTS = ObsoleteComments WHERE pv.PV_ID IN ( SELECT DISTINCT dep.DPV_ID FROM PACKAGE_DEPENDENCIES dep WHERE dep.PV_ID = PatchId ); -- Update patch parent UPDATE PACKAGE_VERSIONS pv SET pv.IS_OBSOLETE = IsObsolete, pv.OBSOLETE_COMMENTS = ObsoleteComments WHERE pv.PV_ID IN ( SELECT DISTINCT dep.PV_ID FROM PACKAGE_DEPENDENCIES dep WHERE dep.DPV_ID = PatchId ); */ /* LOG ACTION IF IsObsolete IS NOT NULL THEN Log_Action ( PatchId, 'patch_obsolete', UserId, 'Obsolete patch. '|| ObsoleteComments ); ELSE Log_Action ( PatchId, 'patch_obsolete', UserId, 'Undo patch obsolete.' ); END IF; */ END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE add_process ( nprocid IN processes.proc_id%TYPE, shealthtag IN processes.proc_name%TYPE, sprocdesc IN processes.proc_description%TYPE, scmdinterface IN processes.run_as%TYPE, spkgowner IN processes.pkg_owner%TYPE, sisinterface IN processes.is_interface%TYPE, npvid IN package_processes.pv_id%TYPE, nuserid IN NUMBER ) IS pkgname VARCHAR2 (100); /*Rupesh Release on 17/05/2006*/ BEGIN INSERT INTO processes (proc_id, proc_name, proc_description, run_as, pkg_owner, is_interface ) VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner, sisinterface ); pk_package.add_package_process (nprocid, npvid, nuserid); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE add_package_process ( nprocidlist IN VARCHAR2, npvid IN package_processes.pv_id%TYPE, nuserid IN NUMBER ) IS processname VARCHAR2 (4000); /*Rupesh Release on 17/05/2006*/ CURSOR proc_cur IS SELECT prc.proc_id FROM processes prc WHERE prc.proc_id IN ( SELECT * FROM THE (SELECT CAST (in_list_number (nprocidlist) AS relmgr_number_tab_t ) FROM DUAL )); proc_rec proc_cur%ROWTYPE; BEGIN OPEN proc_cur; FETCH proc_cur INTO proc_rec; WHILE proc_cur%FOUND LOOP INSERT INTO package_processes (proc_id, pv_id ) VALUES (proc_rec.proc_id, npvid ); SELECT prc.proc_name INTO processname FROM processes prc WHERE prc.proc_id = proc_rec.proc_id; -- Log Action -- log_action (npvid, 'process_add', nuserid, 'Added process with health tag ' || processname ); FETCH proc_cur INTO proc_rec; END LOOP; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE remove_process ( nprocid IN package_processes.proc_id%TYPE, npvid IN package_processes.pv_id%TYPE, nuserid IN NUMBER ) IS processname VARCHAR2 (4000); /* Rupesh Release on 17/05/2006*/ BEGIN SELECT prc.proc_name INTO processname FROM processes prc WHERE prc.proc_id = nprocid; DELETE FROM package_processes WHERE proc_id = nprocid AND pv_id = npvid; -- Log Action -- log_action (npvid, 'process_remove', nuserid, 'Removed process with health tag ' || processname ); END; /*-------------------------------------------------------------------------------------------------------*/ /* Author: Rupesh Solanki Purpose: To move package versions from one release to another Release: 4th September 2006 */ PROCEDURE move_package ( npvid IN package_versions.pv_id%TYPE, nrtagid IN release_tags.rtag_id%TYPE, nnewrtagid IN release_tags.rtag_id%TYPE, nuserid IN NUMBER ) IS oldrtag_name VARCHAR2(4000); newrtag_name VARCHAR2(4000); BEGIN SELECT rtag_name into oldrtag_name FROM RELEASE_TAGS WHERE rtag_id = nrtagid; SELECT rtag_name into newrtag_name FROM RELEASE_TAGS WHERE rtag_id = nnewrtagid; /* Table Work In Progress*/ UPDATE WORK_IN_PROGRESS SET RTAG_ID = nnewrtagid WHERE RTAG_ID = nrtagid AND PV_ID = npvid; /* Table PLANNED*/ UPDATE PLANNED SET RTAG_ID = nnewrtagid WHERE RTAG_ID = nrtagid AND PV_ID = npvid; -- Log Action -- log_action (npvid, 'move_package_version', nuserid, 'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE modify_product_state ( npvid IN package_versions.pv_id%TYPE, nrtagid IN release_tags.rtag_id%TYPE, nstateid IN product_states.state_id%TYPE, nuserid IN NUMBER ) IS sStateName VARCHAR2(4000); sRtagName VARCHAR2(4000); /* Author: Rupesh Solanki Purpose: To modify the product state from integration to test to deployment Release: 25th January 2006 */ BEGIN UPDATE RELEASE_CONTENT SET PRODUCT_STATE = nstateid WHERE PV_ID = npvid AND RTAG_ID = nrtagid; SELECT STATE INTO sStateName FROM PRODUCT_STATES WHERE STATE_ID = nstateid; SELECT RTAG_NAME into sRtagName FROM RELEASE_TAGS WHERE RTAG_ID = nrtagid; -- Log Action -- log_action (npvid, 'modify_product_state', nuserid, sStateName || ' in '|| sRtagName ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE add_code_review_url ( npvid IN NUMBER, nprojid IN NUMBER, surl IN VARCHAR2, sreason IN VARCHAR2, ddateofreview IN DATE ) IS ncrid NUMBER; /* Author: Jeremy Tweddle Date: 24/Aug/2007 */ BEGIN SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL; INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review, last_modified ) VALUES ( ncrid, npvid, nprojid, surl, sreason, ddateofreview, ora_sysdate ); END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE update_code_review_url ( ncrid IN NUMBER, nprojid IN NUMBER, surl IN VARCHAR2, sreason IN VARCHAR2 ) IS /* Author: Jeremy Tweddle Date: 22/Aug/2007 */ BEGIN UPDATE code_review_url SET url = surl, proj_id = nprojid, reason = sreason, last_modified = ora_sysdate WHERE cr_id = ncrid; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE remove_code_review_url ( ncrid IN NUMBER ) IS /* Author: Jeremy Tweddle Date: 22/Aug/2007 */ BEGIN DELETE FROM code_review_url WHERE cr_id = ncrid; END; /*-------------------------------------------------------------------------------------------------------*/ END pk_package; / ALTER PACKAGE "RELEASE_MANAGER"."PK_PACKAGE" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= TRUE REUSE SETTINGS TIMESTAMP '2008-04-11 12:58:37' / CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_PLANNED" IS /* ------------------------------ || Last Modified: S.Vukovic || Modified Date: 6/May/2005 || Body Version: 1.0 ------------------------------ */ /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS oldPvId NUMBER; ReleaseLocation VARCHAR2(4000); IsPatch CHAR(1) := NULL; sLocation VARCHAR2(4000) := NULL; nRtagIdLocation NUMBER; BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ BEGIN -- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID INTO sLocation, nRtagIdLocation FROM PLANNED pl, RELEASE_TAGS rt, PROJECTS proj WHERE pl.PV_ID = newPvId AND pl.RTAG_ID = rt.RTAG_ID AND rt.OFFICIAL != 'Y' AND rt.PROJ_ID = proj.PROJ_ID; EXCEPTION WHEN NO_DATA_FOUND THEN sLocation := NULL; END; IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN -- Add to "Pending" area INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID ) VALUES( RtagId, newPvId, ViewId ); /* LOG ACTION */ SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation ); ELSE RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' ); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS ReleaseLocation VARCHAR2(4000); BEGIN /*--------------- Business Rules Here -------------------*/ /*-------------------------------------------------------*/ -- Get release location for logging pusposes SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation FROM PROJECTS proj, RELEASE_TAGS rt WHERE rt.PROJ_ID = proj.PROJ_ID AND rt.RTAG_ID = RtagId; -- Delete from Work In Progress DELETE FROM PLANNED pl WHERE pl.RTAG_ID = RtagId AND pl.PV_ID = PvId; Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation ); END; /*-------------------------------------------------------------------------------------------------------*/ FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS ReturnValue NUMBER; BEGIN SELECT pl.VIEW_ID INTO ReturnValue FROM PLANNED pl WHERE pl.RTAG_ID = RtagId AND pl.PV_ID = PvId; RETURN ReturnValue; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS IsBaseView CHAR(1); BEGIN -- Check if the view is BASE VIEW SELECT vi.BASE_VIEW INTO IsBaseView FROM VIEWS vi WHERE vi.VIEW_ID = ViewId; IF (IsBaseView = 'Y') THEN -- Get Base view content OPEN RecordSet FOR SELECT 0 AS PKG_STATE, NULL AS DEPRECATED_STATE, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description, pv.BUILD_TYPE FROM PLANNED rel, packages pkg, package_versions pv WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.VIEW_ID = ViewId AND rel.RTAG_ID = RtagId ORDER BY UPPER(pkg.PKG_NAME); ELSE -- Get non base view content OPEN RecordSet FOR SELECT 0 AS PKG_STATE, NULL AS DEPRECATED_STATE, pv.pv_id, pkg.pkg_name, pv.pkg_version, pv.dlocked, pv.pv_description, pv.BUILD_TYPE FROM PLANNED rel, packages pkg, package_versions pv, VIEW_DEF vd WHERE pv.pkg_id = pkg.pkg_id AND rel.pv_id = pv.pv_id AND rel.RTAG_ID = RtagId AND vd.VIEW_ID = ViewId AND vd.PKG_ID = pv.PKG_ID ORDER BY UPPER(pkg.PKG_NAME); END IF; END; /*-------------------------------------------------------------------------------------------------------*/ PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS BEGIN UPDATE PLANNED pl SET pl.VIEW_ID = NewViewId WHERE pl.PV_ID = PvId AND pl.RTAG_ID = RtagId; END; /*-------------------------------------------------------------------------------------------------------*/ END PK_PLANNED; / ALTER PACKAGE "RELEASE_MANAGER"."PK_PLANNED" COMPILE BODY PLSQL_OPTIMIZE_LEVEL= 2 PLSQL_CODE_TYPE= INTERPRETED PLSQL_DEBUG= FALSE REUSE SETTINGS TIMESTAMP '2007-08-23 16:29:22' / -- new object type path is: SCHEMA_EXPORT/TABLE/INDEX/FUNCTIONAL_AND_BITMAP/INDEX CREATE INDEX "RELEASE_MANAGER"."INX_FILE_NAME" ON "RELEASE_MANAGER"."RELEASE_COMPONENTS" (UPPER("FILE_NAME")) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_FILE_NAME" NOPARALLEL; CREATE INDEX "RELEASE_MANAGER"."INX_PC_FILE_NAME" ON "RELEASE_MANAGER"."PRODUCT_COMPONENTS" (UPPER("FILE_NAME")) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" PARALLEL 1 ; ALTER INDEX "RELEASE_MANAGER"."INX_PC_FILE_NAME" NOPARALLEL; -- new object type path is: SCHEMA_EXPORT/POST_SCHEMA/PROCOBJ BEGIN dbms_scheduler.disable1_calendar_check(); dbms_scheduler.create_schedule('"HOUSEKEEP_RUN_LEVEL_SCHEDULE"','28-JUN-07 01.00.00.000000 AM +08:00', 'FREQ=DAILY; BYHOUR=1', NULL, 'Run at 1am all days' ); COMMIT; END; / BEGIN dbms_scheduler.create_job('"DAILY_HOUSEKEEPING_SCHEDULE"', job_type=>'STORED_PROCEDURE', job_action=> 'pk_buildapi.delete_out_of_date_schedule' , number_of_arguments=>0, schedule_name=>'"HOUSEKEEP_RUN_LEVEL_SCHEDULE"', job_class=>'"DEFAULT_JOB_CLASS"', enabled=>FALSE, auto_drop=>FALSE,comments=> 'Clean Table when the scheduled resume datetime is past the current datetime' ); dbms_scheduler.enable('"DAILY_HOUSEKEEPING_SCHEDULE"'); COMMIT; END; /