Rev 57 | Blame | Compare with Previous | Last modification | View Log | RSS feed
CREATE OR REPLACE TYPE TDICTIONARY;/CREATE TABLE PACKAGE_BUILD_ENV(PV_ID NUMBER NOT NULL,BE_ID NUMBER NOT NULL,BUILD_TYPE NUMBER)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE NOTIFICATION_HISTORY(RTAG_ID NUMBER NOT NULL,PV_ID NUMBER NOT NULL,USER_ID NUMBER NOT NULL,DATE_TIME_STAMP DATE NOT NULL, CONSTRAINT PK_NOTIFICATION_HISTORY PRIMARY KEY(RTAG_ID,PV_ID,USER_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE TEMP_ENV_STATES(SESSION_NUM NUMBER NOT NULL,LEVEL_NUM NUMBER NOT NULL,PV_ID NUMBER NOT NULL,PKG_ID NUMBER NOT NULL,V_EXT VARCHAR2(50 BYTE),TES_STATE NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE TEMP_TREE_BROWSE(SESSION_NUM NUMBER,LEVEL_NUM NUMBER,PV_ID NUMBER,PKG_ID NUMBER,V_EXT VARCHAR2(50 BYTE),DIRECTION NUMBER)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE IGNORE_WARNINGS(RTAG_ID NUMBER NOT NULL,PV_ID NUMBER NOT NULL,DPV_ID NUMBER NOT NULL,IS_PATCH_IGNORE CHAR(1 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE LICENCING(PV_ID NUMBER NOT NULL,LICENCE NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE DEPRECATED_PACKAGES(RTAG_ID NUMBER NOT NULL,PKG_ID NUMBER NOT NULL,COMMENTS VARCHAR2(4000 BYTE) NOT NULL,V_EXT VARCHAR2(50 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE MICROSOFTDTPROPERTIES(ID NUMBER NOT NULL,OBJECTID NUMBER,PROPERTY VARCHAR2(64 BYTE) NOT NULL,VALUE VARCHAR2(255 BYTE),LVALUE LONG RAW,VERSION NUMBER DEFAULT (0) NOT NULL, CONSTRAINT MICROSOFT_PK_DTPROPERTIES PRIMARY KEY(ID,PROPERTY)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PACKAGE_DOCUMENTS(PV_ID NUMBER NOT NULL,TEST_ID NUMBER,DOC_ID NUMBER NOT NULL,DOC_NUM VARCHAR2(50 BYTE) NOT NULL,IS_LATEST CHAR(1 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE RELEASE_TAGS(RTAG_ID NUMBER NOT NULL,VTREE_ID NUMBER,RTAG_NAME VARCHAR2(50 BYTE) NOT NULL,DESCRIPTION VARCHAR2(4000 BYTE),CREATED_STAMP DATE,CREATOR_ID NUMBER,OFFICIAL_STAMP DATE,RELEASOR_ID NUMBER,OFFICIAL CHAR(1 BYTE) NOT NULL,REBUILD_ENV CHAR(1 BYTE) NOT NULL,REBUILD_STAMP NUMBER NOT NULL,RTAG_VERSION VARCHAR2(4000 BYTE),RTAG_LIFE_CYCLE NUMBER,PARENT_RTAG_ID NUMBER NOT NULL,PROJ_ID NUMBER NOT NULL,DISPLAY_ORDER NUMBER,OWNER_EMAIL VARCHAR2(1000 BYTE),ASSOC_MASS_REF NUMBER,OWNER_PERSONAL_EMAIL VARCHAR2(1000 BYTE),CONFIG_SPEC_BRANCH VARCHAR2(4000 BYTE),PRODUCT_STATE_USED CHAR(1 BYTE), CONSTRAINT PK_RELEASE_TAGS PRIMARY KEY(RTAG_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE BUILD_STANDARDS_ADDENDUM(BSA_ID NUMBER NOT NULL,BSA_NAME VARCHAR2(4000 BYTE) NOT NULL,BS_ID NUMBER NOT NULL, CONSTRAINT BUILD_STANDARDS_ADDENDUM_PK PRIMARY KEY(BSA_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE UNIT_TESTS(TEST_ID NUMBER NOT NULL,PV_ID NUMBER NOT NULL,TEST_TYPES_FK NUMBER NOT NULL,TEST_SUMMARY VARCHAR2(4000 BYTE),COMPLETION_DATE DATE,COMPLETED_BY NUMBER,RESULTS_URL VARCHAR2(2000 BYTE),RESULTS_ATTACHMENT_NAME VARCHAR2(2000 BYTE),TEST_ACCEPTED CHAR(1 BYTE),ACCEPTANCE_DATE DATE,ACCEPTED_BY NUMBER,REVIEW_COMMENTS VARCHAR2(4000 BYTE),NUMOF_TEST VARCHAR2(50 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE BUILD_ENVIRONMENTS(BE_ID NUMBER NOT NULL,BE_NAME VARCHAR2(255 BYTE) NOT NULL, CONSTRAINT PK_BUILD_ENVIRONMENTS PRIMARY KEY(BE_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE LICENCES(LICENCE NUMBER NOT NULL,NAME VARCHAR2(50 BYTE) NOT NULL, CONSTRAINT PK_LICENCES PRIMARY KEY(LICENCE)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE RELEASE_COMPONENTS(PV_ID NUMBER NOT NULL,FILE_NAME VARCHAR2(255 BYTE),FILE_PATH VARCHAR2(2000 BYTE),BYTE_SIZE NUMBER,CRC_CKSUM VARCHAR2(50 BYTE),CRC_MODCRC VARCHAR2(50 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE RIPPLE_FIELD_STATES(STATE_ID NUMBER NOT NULL,STATE_ACRONYM CHAR(1 BYTE),STATE_NAME VARCHAR2(50 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE BUILD_ORDER(RTAG_ID NUMBER NOT NULL,STEP_NUM NUMBER NOT NULL,PV_ID NUMBER NOT NULL,UNRESOLVED CHAR(1 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PLANNED(RTAG_ID NUMBER NOT NULL,PV_ID NUMBER NOT NULL,VIEW_ID NUMBER NOT NULL,OPERATION CHAR(1 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PROJECT_ACTION_LOG(USER_ID NUMBER NOT NULL,ACTION_DATETIME DATE NOT NULL,PROJ_ID NUMBER NOT NULL,DESCRIPTION VARCHAR2(4000 BYTE),ACTTYPE_ID NUMBER NOT NULL,RTAG_ID NUMBER)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PACKAGE_METRICS(PV_ID NUMBER NOT NULL,BRANCHES NUMBER,BRANCH_LIST VARCHAR2(4000 BYTE),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)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE ARCHIVE_DATA(RTAG_ID NUMBER(*, 0) NOT NULL,PV_ID NUMBER(*, 0) NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE VIEW_SETTINGS(USER_ID NUMBER NOT NULL,VIEW_ID NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE ACTION_TYPE(ACTTYPE_ID NUMBER NOT NULL,NAME VARCHAR2(255 BYTE) NOT NULL,DESCRIPTION VARCHAR2(4000 BYTE), CONSTRAINT UNQ_ACTTYPE_ID PRIMARY KEY(ACTTYPE_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE RUN_LEVEL_SCHEDULE(SCHEDULED_ID NUMBER NOT NULL,SCHEDULED_PAUSE DATE,SCHEDULED_RESUME DATE,REPEAT CHAR(1 BYTE),INDEFINITE_PAUSE CHAR(1 BYTE), PRIMARY KEY(SCHEDULED_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE VTREES(VTREE_ID NUMBER NOT NULL,PROJ_ID NUMBER NOT NULL,VTREE_NAME VARCHAR2(50 BYTE) NOT NULL,HIDE CHAR(1 BYTE) NOT NULL, CONSTRAINT PK_VTREES PRIMARY KEY(VTREE_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE BUILD_STANDARDS(BS_ID NUMBER NOT NULL,BS_NAME VARCHAR2(20 BYTE) NOT NULL, CONSTRAINT BUILD_STANDARDS_PK PRIMARY KEY(BS_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE TEMP_SASH(RTAG_ID NUMBER,PROJ_ID NUMBER)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE BUILD_MACHINES(BM_ID NUMBER NOT NULL,BM_NAME VARCHAR2(20 BYTE) NOT NULL, CONSTRAINT BUILD_MACHINES_PK PRIMARY KEY(BM_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE RELEASE_LINKS(RTAG_ID NUMBER NOT NULL,REF_RTAG_ID NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE BUILD_ENV_DOCUMENTS(BE_ID NUMBER NOT NULL,DOC_NUM VARCHAR2(255 BYTE) NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PRODUCT_STATES(STATE_ID NUMBER NOT NULL,STATE VARCHAR2(4000 BYTE) NOT NULL, CONSTRAINT PRODUCT_STATES_PK PRIMARY KEY(STATE_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE WORLDS(WORLD_ID NUMBER NOT NULL,WORLD_NAME VARCHAR2(30 BYTE) NOT NULL,WORLD_DESC VARCHAR2(255 BYTE), CONSTRAINT PK_WORLDS PRIMARY KEY(WORLD_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE ACTION_LOG(USER_ID NUMBER NOT NULL,ACTION_DATETIME DATE NOT NULL,PV_ID NUMBER NOT NULL,DESCRIPTION VARCHAR2(4000 BYTE),ACTTYPE_ID NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PROJECT_EXTENTIONS(PROJ_ID NUMBER NOT NULL,EXT_NAME VARCHAR2(10 BYTE) NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE ADDITIONAL_NOTES(NOTE_ID NUMBER NOT NULL,PV_ID NUMBER NOT NULL,NOTE_TITLE VARCHAR2(2000 BYTE) NOT NULL,NOTE_BODY VARCHAR2(4000 BYTE),MOD_DATE DATE NOT NULL,MOD_USER NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE MESSAGE_BOARD(MSG_ID NUMBER NOT NULL,MSG_DETAILS VARCHAR2(2000 BYTE) NOT NULL,SUBMITION_DATE DATE NOT NULL,EXPIRY_DATE DATE,DUE_DATE DATE, CONSTRAINT PK_MESSAGE_BOARD PRIMARY KEY(MSG_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE VTREES_WORLD(WORLD_ID NUMBER NOT NULL,VTREE_ID NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE CODE_REVIEWS(PV_ID NUMBER NOT NULL,DATE_OF_REVIEW DATE,TIME_SPENT FLOAT(126),REVIEW_REASON VARCHAR2(4000 BYTE),RTEAM_DOMAIN_EXPERT VARCHAR2(4000 BYTE),RTEAM_LANGUAGE_EXPERT VARCHAR2(4000 BYTE),RTEAM_PEER_DEVELOPER VARCHAR2(4000 BYTE),RTEAM_AUTHOR VARCHAR2(4000 BYTE),FILES_REVIEWED VARCHAR2(4000 BYTE),REVIEW_RESULTS NUMBER,ISSUES_RAISED VARCHAR2(4000 BYTE),REVIEW_COMMENTS VARCHAR2(4000 BYTE),FNC_S_MEETS_FUNCTIONALITY CHAR(1 BYTE),FNC_C_MEETS_FUNCTIONALITY VARCHAR2(4000 BYTE),RBS_S_BOUND_COND_HANDLED CHAR(1 BYTE),RBS_C_BOUND_COND_HANDLED VARCHAR2(4000 BYTE),RBS_S_CLASS_INTERF_PRECOND CHAR(1 BYTE),RBS_C_CLASS_INTERF_PRECOND VARCHAR2(4000 BYTE),RBS_S_NO_UNITIALISED_DATE CHAR(1 BYTE),RBS_C_NO_UNITIALISED_DATE VARCHAR2(4000 BYTE),RBS_S_EXCEP_HANDING CHAR(1 BYTE),RBS_C_EXCEP_HANDING VARCHAR2(4000 BYTE),RBS_S_RESOURCE_MNG CHAR(1 BYTE),RBS_C_RESOURCE_MNG VARCHAR2(4000 BYTE),RBS_S_TRANS_COMPLET CHAR(1 BYTE),RBS_C_TRANS_COMPLET VARCHAR2(4000 BYTE),RBS_S_THREADSAFETY CHAR(1 BYTE),RBS_C_THREADSAFETY VARCHAR2(4000 BYTE),RBS_S_RET_VALS CHAR(1 BYTE),RBS_C_RET_VALS VARCHAR2(4000 BYTE),RBS_S_CORR_ERR_HANDLING CHAR(1 BYTE),RBS_C_CORR_ERR_HANDLING VARCHAR2(4000 BYTE),RBS_S_SQL_STD CHAR(1 BYTE),RBS_C_SQL_STD VARCHAR2(4000 BYTE),MNT_S_EXT_REF CHAR(1 BYTE),MNT_C_EXT_REF VARCHAR2(4000 BYTE),MNT_S_CLASS_SIZE CHAR(1 BYTE),MNT_C_CLASS_SIZE VARCHAR2(4000 BYTE),MNT_S_METHOD_SIZE CHAR(1 BYTE),MNT_C_METHOD_SIZE VARCHAR2(4000 BYTE),MNT_S_APPROP_COMM CHAR(1 BYTE),MNT_C_APPROP_COMM VARCHAR2(4000 BYTE),MNT_S_IDENT_NAME_STD CHAR(1 BYTE),MNT_C_IDENT_NAME_STD VARCHAR2(4000 BYTE),MNT_S_SWITCH_HAVE_DEFAULTS CHAR(1 BYTE),MNT_C_SWITCH_HAVE_DEFAULTS VARCHAR2(4000 BYTE),MNT_S_NO_LIT_NUM CHAR(1 BYTE),MNT_C_NO_LIT_NUM VARCHAR2(4000 BYTE),MNT_S_NO_DEAD_CODE CHAR(1 BYTE),MNT_C_NO_DEAD_CODE VARCHAR2(4000 BYTE),DEI_S_STD_DES_PATT CHAR(1 BYTE),DEI_C_STD_DES_PATT VARCHAR2(4000 BYTE),DEI_S_APPROP_ALGOR CHAR(1 BYTE),DEI_C_APPROP_ALGOR VARCHAR2(4000 BYTE),DEI_S_APPROP_OBJ CHAR(1 BYTE),DEI_C_APPROP_OBJ VARCHAR2(4000 BYTE),DEI_S_APPROP_ERR_MSG CHAR(1 BYTE),DEI_C_APPROP_ERR_MSG VARCHAR2(4000 BYTE),DEI_S_STD_FRAMEW_COMP CHAR(1 BYTE),DEI_C_STD_FRAMEW_COMP VARCHAR2(4000 BYTE),DEI_S_APPROP_LOGGING CHAR(1 BYTE),DEI_C_APPROP_LOGGING VARCHAR2(4000 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PLANNED_VERSIONS(PKG_ID NUMBER,PKG_VERSION VARCHAR2(50 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE VALIDATION_RULES(FIELD_NAME VARCHAR2(1000 BYTE) NOT NULL,IS_REQUIRED CHAR(1 BYTE) NOT NULL,IS_NUMERIC CHAR(1 BYTE),MIN_NUMERIC_VALUE NUMBER,MAX_NUMERIC_VALUE NUMBER,IS_DATE CHAR(1 BYTE),START_DATE DATE,END_DATE DATE,MIN_STRING_LENGTH NUMBER,MAX_STRING_LENGTH NUMBER,REGEXP VARCHAR2(4000 BYTE),REGEXP_DESCRIPTION VARCHAR2(50 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE DO_NOT_RIPPLE(RTAG_ID NUMBER NOT NULL,PV_ID NUMBER NOT NULL,ROOT_PV_ID NUMBER,ROOT_CAUSE VARCHAR2(50 BYTE),ROOT_FILE VARCHAR2(100 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE NOTE_MANAGER(NID VARCHAR2(30 BYTE) NOT NULL,LAST_USER VARCHAR2(20 BYTE),LAST_DATE DATE,DESCRIPTION VARCHAR2(4000 BYTE), CONSTRAINT PKNOTE_MANAGER1 PRIMARY KEY(NID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE RELEASE_CONTENT(RTAG_ID NUMBER NOT NULL,PV_ID NUMBER NOT NULL,BASE_VIEW_ID NUMBER NOT NULL,INSERT_STAMP DATE NOT NULL,INSERTOR_ID NUMBER NOT NULL,PKG_STATE NUMBER NOT NULL,PKG_ID NUMBER,DEPRECATED_STATE NUMBER,PRODUCT_STATE NUMBER)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PROCESSES(PROC_ID NUMBER NOT NULL,PROC_NAME VARCHAR2(255 BYTE) NOT NULL,PROC_DESCRIPTION VARCHAR2(255 BYTE),RUN_AS VARCHAR2(255 BYTE),PKG_OWNER VARCHAR2(4000 BYTE),IS_INTERFACE CHAR(1 BYTE), CONSTRAINT PROCESSES_PK PRIMARY KEY(PROC_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE RM_PACKAGE_ISSUES(PKG_ID NUMBER,PKG_NAME VARCHAR2(50 BYTE),PV_ID NUMBER,PKG_VERSION VARCHAR2(50 BYTE),DPV_ID NUMBER,DPKG_NAME VARCHAR2(50 BYTE),DPKG_VERSION VARCHAR2(50 BYTE),ISS_DB NUMBER,ISS_ID NUMBER)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PACKAGE_PROCESSES(PV_ID NUMBER NOT NULL,PROC_ID NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE ADVISORY_RIPPLE(RTAG_ID NUMBER NOT NULL,PV_ID NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PACKAGE_PATCHES(PV_ID NUMBER NOT NULL,PATCH_ID NUMBER NOT NULL,INSTALL_ORDER NUMBER NOT NULL,PATCH_OBSOLETED_BY NUMBER)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PACKAGE_INTEREST(PKG_ID NUMBER NOT NULL,PROJ_ID NUMBER NOT NULL,USER_ID NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PLATFORMS(CODE NUMBER NOT NULL,NAME VARCHAR2(255 BYTE) NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE RELEASE_CONFIG(RCON_ID NUMBER NOT NULL,RTAG_ID NUMBER NOT NULL,GBE_ID NUMBER NOT NULL,DAEMON_HOSTNAME VARCHAR2(50 BYTE),DAEMON_MODE CHAR(1 CHAR),GBE_BUILDFILTER VARCHAR2(255 BYTE), PRIMARY KEY(RCON_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE GBE_MACHTYPE(GBE_ID NUMBER NOT NULL,GBE_VALUE VARCHAR2(20 BYTE) NOT NULL, PRIMARY KEY(GBE_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE ARCHIVE_ACTION_LOG(USER_ID NUMBER NOT NULL,DATE_TIME_STAMP DATE NOT NULL,RTAG_ID NUMBER NOT NULL,DESCRIPTION VARCHAR2(4000 BYTE) NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 0INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE RELEASE_METRICS(RTAG_ID NUMBER NOT NULL,TOTAL_PACKAGES NUMBER,AUTOBUILT NUMBER,LINES_OF_CODE NUMBER,UNIT_TESTED NUMBER,AUTOTESTED NUMBER,BRANCHES NUMBER,LAST_BUILD_TIME DATE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE AUTOBUILD_FAILURE(GROUP_EMAIL_ID NUMBER NOT NULL,PROJ_ID NUMBER,VIEW_ID NUMBER, PRIMARY KEY(GROUP_EMAIL_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE JIRA_ISSUES(PV_ID NUMBER NOT NULL,ISS_KEY VARCHAR2(4000 BYTE),DATE_TIME_STAMP DATE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE VIEW_DEF(VIEW_ID NUMBER NOT NULL,PKG_ID NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE WORK_IN_PROGRESS(RTAG_ID NUMBER NOT NULL,PV_ID NUMBER NOT NULL,VIEW_ID NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE RUN_LEVEL(RCON_ID NUMBER,CURRENT_BUILD_FILES CLOB,CURRENT_RUN_LEVEL NUMBER,PAUSE NUMBER,CURRENT_PKG_ID_BEING_BUILT NUMBER)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT)LOB (CURRENT_BUILD_FILES) STORE AS SYS_LOB0000136885C00002$$(ENABLE STORAGE IN ROWCHUNK 8192PCTVERSION 10NOCACHE LOGGINGTABLESPACE USERSSTORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT));CREATE TABLE TEST_TYPES(TEST_TYPE_ID NUMBER NOT NULL,TEST_TYPE_NAME VARCHAR2(50 BYTE) NOT NULL,DISPLAY_ORDER NUMBER, CONSTRAINT PK_TEST_TYPES PRIMARY KEY(TEST_TYPE_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PACKAGE_DEPENDENCIES(PV_ID NUMBER NOT NULL,DPV_ID NUMBER NOT NULL,PKG_ID NUMBER NOT NULL,DPKG_ID NUMBER NOT NULL,BUILD_TYPE CHAR(1 BYTE) NOT NULL,DISPLAY_ORDER NUMBER)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 320KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PRODUCT_COMPONENTS(PV_ID NUMBER NOT NULL,OS_ID NUMBER NOT NULL,FILE_PATH VARCHAR2(4000 BYTE),FILE_NAME VARCHAR2(4000 BYTE),DESTINATION_PATH VARCHAR2(4000 BYTE),BYTE_SIZE NUMBER,CRC_CKSUM VARCHAR2(2000 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE GLOBAL TEMPORARY TABLE RM_PKG_ISSUES(PKG_ID NUMBER,PKG_NAME VARCHAR2(50 BYTE),PV_ID NUMBER,PKG_VERSION VARCHAR2(50 BYTE),DPV_ID NUMBER,DPKG_NAME VARCHAR2(50 BYTE),DPKG_VERSION VARCHAR2(50 BYTE),ISS_DB NUMBER,ISS_ID NUMBER)ON COMMIT PRESERVE ROWS;CREATE TABLE PACKAGE_BUILD_INFO(PV_ID NUMBER NOT NULL,BM_ID NUMBER NOT NULL,BSA_ID NUMBER)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PACKAGES(PKG_ID NUMBER NOT NULL,PKG_NAME VARCHAR2(255 BYTE) NOT NULL,SUNOS_ELECTRONIC_NAME VARCHAR2(255 BYTE),WIN_ELECTRONIC_NAME VARCHAR2(255 BYTE), CONSTRAINT PK_PACKAGES PRIMARY KEY(PKG_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE MEMBERS_GROUP(GROUP_EMAIL_ID NUMBER NOT NULL,USER_ID NUMBER)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE BUILD_SERVICE_CONFIG(SERVICE VARCHAR2(50 BYTE) NOT NULL,CONFIG VARCHAR2(2000 BYTE) NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PROJECTS(PROJ_ID NUMBER NOT NULL,PROJ_NAME VARCHAR2(50 BYTE) NOT NULL,BASE_URL VARCHAR2(4000 BYTE), CONSTRAINT PK_PROJECTS PRIMARY KEY(PROJ_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE VIEWS(VIEW_ID NUMBER NOT NULL,VIEW_NAME VARCHAR2(30 BYTE) NOT NULL,OWNER_ID NUMBER NOT NULL,BASE_VIEW CHAR(1 BYTE) NOT NULL,PUBLIC_READ CHAR(1 BYTE) NOT NULL, CONSTRAINT PK_VIEWS PRIMARY KEY(VIEW_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE DAEMON_ACTION_LOG(USER_ID NUMBER NOT NULL,ACTION_DATETIME DATE,RCON_ID NUMBER NOT NULL,DESCRIPTION VARCHAR2(4000 BYTE),ACTTYPE_ID NUMBER)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE DASH_BOARD(PROJ_ID NUMBER NOT NULL,RTAG_ID NUMBER NOT NULL,LAST_BUILD_TIME DATE NOT NULL,AUTOMATED_PACKAGES NUMBER NOT NULL,TOTAL_PACKAGES NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE ABT_ACTION_LOG(RCON_ID NUMBER NOT NULL,ACTION_DATETIME DATE,ACTION VARCHAR2(4000 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE RUNTIME_DEPENDENCIES(PV_ID NUMBER NOT NULL,RTD_ID NUMBER,RTD_COMMENTS VARCHAR2(2000 BYTE),RTD_URL VARCHAR2(2000 BYTE),MOD_DATE DATE NOT NULL,MOD_USER NUMBER NOT NULL)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE PACKAGE_VERSIONS(PV_ID NUMBER NOT NULL,PKG_ID NUMBER NOT NULL,PKG_VERSION VARCHAR2(50 BYTE) NOT NULL,DLOCKED CHAR(1 BYTE) NOT NULL,RELEASED_AT NUMBER,MODIFIED_STAMP DATE,MODIFIER_ID NUMBER NOT NULL,CREATED_STAMP DATE,CREATOR_ID NUMBER NOT NULL,COMMENTS VARCHAR2(4000 BYTE),V_MM VARCHAR2(50 BYTE),V_NMM VARCHAR2(50 BYTE),V_EXT VARCHAR2(50 BYTE),PKG_LABEL VARCHAR2(60 BYTE),SRC_PATH VARCHAR2(2000 BYTE),PV_DESCRIPTION VARCHAR2(4000 BYTE),OWNER_ID NUMBER NOT NULL,PV_OVERVIEW VARCHAR2(4000 BYTE),IS_PATCH CHAR(1 BYTE),LAST_PV_ID NUMBER NOT NULL,RELEASE_NOTES_INFO VARCHAR2(1000 BYTE),IS_DEPLOYABLE CHAR(1 BYTE),IS_BUILD_ENV_REQUIRED CHAR(1 BYTE),IS_OBSOLETE CHAR(1 BYTE),OBSOLETE_COMMENTS VARCHAR2(4000 BYTE),BUILD_TYPE CHAR(1 BYTE) NOT NULL,CHANGE_TYPE CHAR(1 BYTE),LINK VARCHAR2(4000 BYTE),PATCH_ELECTRONIC_NAME VARCHAR2(4000 BYTE),BS_ID NUMBER,IS_AUTOBUILDABLE CHAR(1 BYTE),SBOM_PRIORITY CHAR(1 BYTE),RIPPLE_FIELD CHAR(1 CHAR),MAXIMUM_BUILD_TIME NUMBER,ESTIMATED_COMPLETION_TIME DATE,MAJOR_LIMIT NUMBER(10, 0),MINOR_LIMIT NUMBER(10, 0),PATCH_LIMIT NUMBER(10, 0),BUILD_NUMBER_LIMIT NUMBER(10, 0), CONSTRAINT PK_PACKAGE_VERSIONS PRIMARY KEY(PV_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 192KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE REPEAT_SCHEDULE(RPT_ID NUMBER NOT NULL,REPEAT CHAR(1 BYTE), PRIMARY KEY(RPT_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE CODE_REVIEW_URL(CR_ID NUMBER NOT NULL,PV_ID NUMBER NOT NULL,PROJ_ID NUMBER NOT NULL,URL VARCHAR2(4000 BYTE) NOT NULL,REASON VARCHAR2(4000 BYTE),DATE_OF_REVIEW DATE NOT NULL,LAST_MODIFIED DATE, CONSTRAINT CODE_REVIEW_URL_PK PRIMARY KEY(CR_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE DEF_ACTION_BUTTONS(ABTN_ID NUMBER NOT NULL,ABTN_NAME VARCHAR2(1000 BYTE) NOT NULL,TEXT VARCHAR2(50 BYTE),ACTION_LINK VARCHAR2(4000 BYTE),EVENT_HANDLER VARCHAR2(4000 BYTE),IMG_ENABLED VARCHAR2(1000 BYTE),IMG_DISABLED VARCHAR2(1000 BYTE),HINT VARCHAR2(255 BYTE),VISIBLE CHAR(1 BYTE) NOT NULL,ACTIVE CHAR(1 BYTE) NOT NULL,IS_READONLY_ACTION CHAR(1 BYTE) NOT NULL, CONSTRAINT PK_DEF_ACTION_BUTTONS PRIMARY KEY(ABTN_ID)ENABLE)TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE TABLE CQ_ISSUES(PV_ID NUMBER NOT NULL,ISS_DB NUMBER NOT NULL,ISS_ID NUMBER NOT NULL,ISS_STATE NUMBER NOT NULL,MOD_DATE DATE NOT NULL,NOTES VARCHAR2(255 BYTE))TABLESPACE "USERS"LOGGINGPCTFREE 10PCTUSED 40INITRANS 1MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);ALTER TABLE PLANNEDADD CONSTRAINT UNIQUE_PV_RTAG UNIQUE(PV_ID,RTAG_ID)ENABLE;ALTER TABLE PACKAGE_METRICSADD CONSTRAINT UNQ_PACKAGE_METRICS UNIQUE(PV_ID)ENABLE;ALTER TABLE RELEASE_METRICSADD CONSTRAINT UNQ_RELEASE_METRICS UNIQUE(RTAG_ID)ENABLE;ALTER TABLE PACKAGE_BUILD_ENVADD CONSTRAINT FK_PKG_BUILD_E_REF_BUILD_ENV FOREIGN KEY(BE_ID)REFERENCES BUILD_ENVIRONMENTS(BE_ID) ENABLE;ALTER TABLE PACKAGE_BUILD_ENVADD CONSTRAINT FK_PKG_BUILD_E_REF_PKG_VERSION FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE NOTIFICATION_HISTORYADD CONSTRAINT FK_NK_PV_ID FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) DISABLE;ALTER TABLE NOTIFICATION_HISTORYADD CONSTRAINT FK_NH_RTAG_ID FOREIGN KEY(RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) ENABLE;ALTER TABLE IGNORE_WARNINGSADD CONSTRAINT FK_IGW_RTAG_ID FOREIGN KEY(RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) ENABLE;ALTER TABLE IGNORE_WARNINGSADD CONSTRAINT FK_IGW_DPV_ID FOREIGN KEY(DPV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE IGNORE_WARNINGSADD CONSTRAINT FK_IGW_PV_ID FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE LICENCINGADD FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE LICENCINGADD FOREIGN KEY(LICENCE)REFERENCES LICENCES(LICENCE) ENABLE;ALTER TABLE PACKAGE_DOCUMENTSADD CONSTRAINT FK_PKGDOCS_REF_PV FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE BUILD_STANDARDS_ADDENDUMADD CONSTRAINT BUILD_STANDARDS_ADDENDUM_R01 FOREIGN KEY(BS_ID)REFERENCES BUILD_STANDARDS(BS_ID) ENABLE;ALTER TABLE UNIT_TESTSADD CONSTRAINT FK_UT_REF_TEST_TYPES FOREIGN KEY(TEST_TYPES_FK)REFERENCES TEST_TYPES(TEST_TYPE_ID) ENABLE;ALTER TABLE UNIT_TESTSADD CONSTRAINT FK_UT_REF_PV_ID FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE RELEASE_COMPONENTSADD CONSTRAINT FK_RCONT_PV_ID FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE BUILD_ORDERADD CONSTRAINT FK_BO_PV_ID FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) DISABLE;ALTER TABLE BUILD_ORDERADD CONSTRAINT FK_BO_RTAG_ID FOREIGN KEY(RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) ENABLE;ALTER TABLE PLANNEDADD CONSTRAINT REFRELEASE_TAGS53 FOREIGN KEY(RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) ENABLE;ALTER TABLE PLANNEDADD CONSTRAINT REFPACKAGE_VERSIONS54 FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE PLANNEDADD CONSTRAINT REFVIEWS55 FOREIGN KEY(VIEW_ID)REFERENCES VIEWS(VIEW_ID) ENABLE;ALTER TABLE PROJECT_ACTION_LOGADD FOREIGN KEY(RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) DISABLE;ALTER TABLE PROJECT_ACTION_LOGADD CONSTRAINT REFACTION_TYPE63 FOREIGN KEY(ACTTYPE_ID)REFERENCES ACTION_TYPE(ACTTYPE_ID) ENABLE;ALTER TABLE PACKAGE_METRICSADD CONSTRAINT FK_PACKAGE_METRICS_PV_ID FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE RELEASE_LINKSADD CONSTRAINT REFRELEASE_TAGS58 FOREIGN KEY(REF_RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) ENABLE;ALTER TABLE RELEASE_LINKSADD CONSTRAINT REFRELEASE_TAGS56 FOREIGN KEY(RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) ENABLE;ALTER TABLE BUILD_ENV_DOCUMENTSADD CONSTRAINT FK_BUILD_E_DOCS_REF_BUILD_ENV FOREIGN KEY(BE_ID)REFERENCES BUILD_ENVIRONMENTS(BE_ID) ENABLE;ALTER TABLE ACTION_LOGADD CONSTRAINT REFACTION_TYPE48 FOREIGN KEY(ACTTYPE_ID)REFERENCES ACTION_TYPE(ACTTYPE_ID) ENABLE;ALTER TABLE ADDITIONAL_NOTESADD CONSTRAINT FK_ADDITION_REF_PV_ID FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE VTREES_WORLDADD CONSTRAINT FK_VW_REF_VTREE_ID FOREIGN KEY(VTREE_ID)REFERENCES VTREES(VTREE_ID) ENABLE;ALTER TABLE VTREES_WORLDADD CONSTRAINT FK_VW_REF_WORLD_ID FOREIGN KEY(WORLD_ID)REFERENCES WORLDS(WORLD_ID) ENABLE;ALTER TABLE CODE_REVIEWSADD CONSTRAINT FK_CODE_REV_REF_PV_ID FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE PLANNED_VERSIONSADD FOREIGN KEY(PKG_ID)REFERENCES PACKAGES(PKG_ID) ENABLE;ALTER TABLE DO_NOT_RIPPLEADD FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE DO_NOT_RIPPLEADD FOREIGN KEY(RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) ENABLE;ALTER TABLE RELEASE_CONTENTADD FOREIGN KEY(PKG_ID)REFERENCES PACKAGES(PKG_ID) ENABLE;ALTER TABLE RELEASE_CONTENTADD FOREIGN KEY(PRODUCT_STATE)REFERENCES PRODUCT_STATES(STATE_ID) ENABLE;ALTER TABLE PACKAGE_PROCESSESADD CONSTRAINT PACKAGE_PROCESSES_R02 FOREIGN KEY(PROC_ID)REFERENCES PROCESSES(PROC_ID) ENABLE;ALTER TABLE PACKAGE_PROCESSESADD CONSTRAINT PACKAGE_PROCESSES_R01 FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE ADVISORY_RIPPLEADD FOREIGN KEY(RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) ENABLE;ALTER TABLE ADVISORY_RIPPLEADD FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE PACKAGE_PATCHESADD CONSTRAINT FK_PP_PATCH_ID FOREIGN KEY(PATCH_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE PACKAGE_PATCHESADD CONSTRAINT FK_PP_PV_ID FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE PACKAGE_INTERESTADD FOREIGN KEY(PROJ_ID)REFERENCES PROJECTS(PROJ_ID) ENABLE;ALTER TABLE RELEASE_CONFIGADD FOREIGN KEY(RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) ENABLE;ALTER TABLE RELEASE_CONFIGADD FOREIGN KEY(GBE_ID)REFERENCES GBE_MACHTYPE(GBE_ID) ENABLE;ALTER TABLE RELEASE_METRICSADD CONSTRAINT FK_RELEASE_METRICS_RTAG_ID FOREIGN KEY(RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) ENABLE;ALTER TABLE AUTOBUILD_FAILUREADD FOREIGN KEY(VIEW_ID)REFERENCES VIEWS(VIEW_ID) ENABLE;ALTER TABLE AUTOBUILD_FAILUREADD FOREIGN KEY(PROJ_ID)REFERENCES PROJECTS(PROJ_ID) ENABLE;ALTER TABLE JIRA_ISSUESADD CONSTRAINT FK_JIRA_PV_ID FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE WORK_IN_PROGRESSADD CONSTRAINT REFPACKAGE_VERSIONS51 FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE WORK_IN_PROGRESSADD CONSTRAINT REFVIEWS52 FOREIGN KEY(VIEW_ID)REFERENCES VIEWS(VIEW_ID) ENABLE;ALTER TABLE WORK_IN_PROGRESSADD CONSTRAINT REFRELEASE_TAGS50 FOREIGN KEY(RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) ENABLE;ALTER TABLE RUN_LEVELADD FOREIGN KEY(RCON_ID)REFERENCES RELEASE_CONFIG(RCON_ID) ENABLE;ALTER TABLE RUN_LEVELADD FOREIGN KEY(CURRENT_PKG_ID_BEING_BUILT)REFERENCES PACKAGES(PKG_ID) ENABLE;ALTER TABLE PRODUCT_COMPONENTSADD CONSTRAINT REFPACKAGE_VERSIONS49 FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE PACKAGE_BUILD_INFOADD FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE PACKAGE_BUILD_INFOADD FOREIGN KEY(BM_ID)REFERENCES BUILD_MACHINES(BM_ID) ENABLE;ALTER TABLE MEMBERS_GROUPADD FOREIGN KEY(GROUP_EMAIL_ID)REFERENCES AUTOBUILD_FAILURE(GROUP_EMAIL_ID) ENABLE;ALTER TABLE DAEMON_ACTION_LOGADD FOREIGN KEY(ACTTYPE_ID)REFERENCES ACTION_TYPE(ACTTYPE_ID) ENABLE;ALTER TABLE DAEMON_ACTION_LOGADD FOREIGN KEY(RCON_ID)REFERENCES RELEASE_CONFIG(RCON_ID) ENABLE;ALTER TABLE DASH_BOARDADD FOREIGN KEY(PROJ_ID)REFERENCES PROJECTS(PROJ_ID) ENABLE;ALTER TABLE DASH_BOARDADD FOREIGN KEY(RTAG_ID)REFERENCES RELEASE_TAGS(RTAG_ID) ENABLE;ALTER TABLE ABT_ACTION_LOGADD FOREIGN KEY(RCON_ID)REFERENCES RELEASE_CONFIG(RCON_ID) ENABLE;ALTER TABLE RUNTIME_DEPENDENCIESADD CONSTRAINT FK_RTD_RTD_ID FOREIGN KEY(RTD_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE RUNTIME_DEPENDENCIESADD CONSTRAINT FK_RTD_PV_ID FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE PACKAGE_VERSIONSADD FOREIGN KEY(BS_ID)REFERENCES BUILD_STANDARDS(BS_ID) ENABLE;ALTER TABLE CODE_REVIEW_URLADD CONSTRAINT CODE_REVIEW_URL_PROJECT_V_FK1 FOREIGN KEY(PROJ_ID)REFERENCES PROJECTS(PROJ_ID) ENABLE;ALTER TABLE CODE_REVIEW_URLADD CONSTRAINT CODE_REVIEW_URL_PACKAGE_V_FK1 FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE CQ_ISSUESADD CONSTRAINT FK_CQ_PV_ID FOREIGN KEY(PV_ID)REFERENCES PACKAGE_VERSIONS(PV_ID) ENABLE;ALTER TABLE MICROSOFTDTPROPERTIESADD CONSTRAINT MICROSOFT_NN_PROPERTY CHECK("PROPERTY" IS NOT NULL)ENABLE;ALTER TABLE MICROSOFTDTPROPERTIESADD CONSTRAINT MICROSOFT_NN_ID CHECK("ID" IS NOT NULL)ENABLE;ALTER TABLE MICROSOFTDTPROPERTIESADD CONSTRAINT MICROSOFT_NN_VERSION CHECK("VERSION" IS NOT NULL)ENABLE;ALTER TABLE RIPPLE_FIELD_STATESADD CHECK("STATE_ACRONYM" IS NOT NULL)DISABLE;CREATE OR REPLACE VIEW RM_PKG_ISSUES_ID AS SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PACKAGE_ISSUES WHERE ISS_ID IS NOT NULL;CREATE OR REPLACE VIEW ENVIRONMENT_VIEW 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,' ' AS OPERATIONFROM RELEASE_CONTENT rcUNIONSELECT 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,' ' AS OPERATIONFROM WORK_IN_PROGRESS wipUNIONSELECT 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,pl.operationFROM PLANNED pl;CREATE UNIQUE INDEX UNQ_PKG_BUILD_ENV ON PACKAGE_BUILD_ENV (PV_ID ASC, BE_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_TES_PKGEXT ON TEMP_ENV_STATES (PKG_ID ASC, V_EXT ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_TES_PV ON TEMP_ENV_STATES (PV_ID ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_TES_TES_STATE ON TEMP_ENV_STATES (TES_STATE ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_TTB_LEVEL_NUM ON TEMP_TREE_BROWSE (LEVEL_NUM ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_TTB_PKG ON TEMP_TREE_BROWSE (PKG_ID ASC, V_EXT ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_TTB_SESSION ON TEMP_TREE_BROWSE (SESSION_NUM ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_IS_PATCH_IGNORE ON IGNORE_WARNINGS (IS_PATCH_IGNORE ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_IGW ON IGNORE_WARNINGS (RTAG_ID ASC, PV_ID ASC, DPV_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PV_ID_PKGDOC ON PACKAGE_DOCUMENTS (PV_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PV_ID_TEST_ID_PKGDOC ON PACKAGE_DOCUMENTS (PV_ID ASC, TEST_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_PKG_DOC ON PACKAGE_DOCUMENTS (PV_ID ASC, DOC_NUM ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX FK_PROJ_ID_RELEASE_TAGS ON RELEASE_TAGS (PROJ_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_UT_COMPLETED ON UNIT_TESTS (COMPLETION_DATE ASC, COMPLETED_BY ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_UT_PV_TEST_TYPE ON UNIT_TESTS (PV_ID ASC, TEST_TYPES_FK ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_UT_PART1 ON UNIT_TESTS (PV_ID ASC, TEST_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_BUILD_ENV ON BUILD_ENVIRONMENTS (BE_NAME ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_FILE_NAME ON RELEASE_COMPONENTS (UPPER("FILE_NAME") ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_RCOMP_PV_ID ON RELEASE_COMPONENTS (PV_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_REL_COMPONENTS ON RELEASE_COMPONENTS (PV_ID ASC, FILE_NAME ASC, FILE_PATH ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_BUILD_ORDER ON BUILD_ORDER (RTAG_ID ASC, PV_ID ASC, STEP_NUM ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX UNQ_PLANNED ON PLANNED (RTAG_ID ASC, PV_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PROJ_ACTION_DATE_TIME ON PROJECT_ACTION_LOG (ACTION_DATETIME ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PROJ_ACTION_LOG_PROJ ON PROJECT_ACTION_LOG (PROJ_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_VIEW_SETTINGS ON VIEW_SETTINGS (USER_ID ASC, VIEW_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_VTREES ON VTREES (PROJ_ID ASC, VTREE_NAME ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_RL_REFRTAG_ID ON RELEASE_LINKS (REF_RTAG_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_RL_RTAG_ID ON RELEASE_LINKS (RTAG_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_RELEASE_LINKS ON RELEASE_LINKS (RTAG_ID ASC, REF_RTAG_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_BUILD_ENV_DOCS ON BUILD_ENV_DOCUMENTS (BE_ID ASC, DOC_NUM ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_ACTION_DATE_TIME ON ACTION_LOG (ACTION_DATETIME ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_ACTION_LOG_PV_ID ON ACTION_LOG (PV_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_PROJECT_EXT ON PROJECT_EXTENTIONS (PROJ_ID ASC, EXT_NAME ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_AN_PART1 ON ADDITIONAL_NOTES (PV_ID ASC, NOTE_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_AN_PART2 ON ADDITIONAL_NOTES (PV_ID ASC, NOTE_TITLE ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_MSGBOARD ON MESSAGE_BOARD (EXPIRY_DATE ASC, DUE_DATE ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_VTREE_WORLD ON VTREES_WORLD (WORLD_ID ASC, VTREE_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX INX_CODE_REVIEW ON CODE_REVIEWS (PV_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_VALIDATION_RULES ON VALIDATION_RULES (FIELD_NAME ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_RC_BASE_VIEW_ID ON RELEASE_CONTENT (BASE_VIEW_ID ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_RC_PKG_STATE ON RELEASE_CONTENT (PKG_STATE ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_RELEASE_CONTENTS ON RELEASE_CONTENT (RTAG_ID ASC, PV_ID ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PP_PV_ID ON PACKAGE_PATCHES (PV_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_PACKAGE_PATCHES ON PACKAGE_PATCHES (PATCH_ID ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_PLATFORM ON PLATFORMS (NAME ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_VIEW_DEF ON VIEW_DEF (VIEW_ID ASC, PKG_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_WORK_IN_PROGRESS ON WORK_IN_PROGRESS (RTAG_ID ASC, PV_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_TEST_TYPE_NAME ON TEST_TYPES (TEST_TYPE_NAME ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PACKAGE_DEPS_DPKG_ID ON PACKAGE_DEPENDENCIES (DPKG_ID ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 256KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PACKAGE_DEPS_DPV_ID ON PACKAGE_DEPENDENCIES (DPV_ID ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 384KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PACKAGE_DEPS_PKG_ID ON PACKAGE_DEPENDENCIES (PKG_ID ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 256KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PACKAGE_DEPS_PV_ID ON PACKAGE_DEPENDENCIES (PV_ID ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 384KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_PACKAGE_DEPENDENCIES ON PACKAGE_DEPENDENCIES (PV_ID ASC, DPV_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 384KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PCOMP_FK_PV_ID ON PRODUCT_COMPONENTS (PV_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PC_FILE_NAME ON PRODUCT_COMPONENTS (UPPER("FILE_NAME") ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_PACKAGES ON PACKAGES (PKG_NAME ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_PROJECTS ON PROJECTS (PROJ_NAME ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_VIEWS ON VIEWS (VIEW_NAME ASC, OWNER_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX UNQ_RTD ON RUNTIME_DEPENDENCIES (PV_ID ASC, RTD_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PACKAGES_PKG_NAME ON PACKAGE_VERSIONS (PKG_ID ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PACKAGES_PKG_VERSION ON PACKAGE_VERSIONS (PKG_VERSION ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PACKAGES_V_EXT ON PACKAGE_VERSIONS (V_EXT ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PACKAGES_V_MM ON PACKAGE_VERSIONS (V_MM ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PACKAGES_V_NMM ON PACKAGE_VERSIONS (V_NMM ASC) TABLESPACE "USERS"NOLOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE INDEX INX_PV_OWNER_ID ON PACKAGE_VERSIONS (OWNER_ID ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_PACKAGE_VERSIONS ON PACKAGE_VERSIONS (PKG_ID ASC, PKG_VERSION ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_ABTN_DEF ON DEF_ACTION_BUTTONS (ABTN_NAME ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 64KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE UNIQUE INDEX UNQ_CQ ON CQ_ISSUES (PV_ID ASC, ISS_ID ASC, ISS_DB ASC) TABLESPACE "USERS"LOGGINGPCTFREE 10INITRANS 2MAXTRANS 255STORAGE(INITIAL 128KMINEXTENTS 1MAXEXTENTS 2147483645FREELISTS 1FREELIST GROUPS 1BUFFER_POOL DEFAULT);CREATE SEQUENCE SEQ_PV_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_CR_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_RCON_ID INCREMENT BY 1 MAXVALUE 9999999999999999999999999990 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_SCHEDULED_ID INCREMENT BY 1 MAXVALUE 9999999999999999999999999990 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_ADDITIONAL_NOTES INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_GROUP_EMAIL_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999 MINVALUE 1 CACHE 20 ;CREATE SEQUENCE SEQ_UNIT_TESTS INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_USER_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_GBE_ID INCREMENT BY 10 MAXVALUE 9999999999999999999999990 MINVALUE 40 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_RTAG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_VTREE_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_VIEW_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE MICROSOFTSEQDTPROPERTIES INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 50 ;CREATE SEQUENCE SEQ_SESSION_NUM INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_MSG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_PKG_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;CREATE SEQUENCE SEQ_PROJ_ID INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 1 CACHE 20 ORDER ;CREATE OR REPLACE SYNONYM ROLE_PRIVILEGES FOR ACCESS_MANAGER.ROLE_PRIVILEGES;CREATE OR REPLACE SYNONYM ROLES FOR ACCESS_MANAGER.ROLES;CREATE OR REPLACE SYNONYM APPLICATIONS FOR ACCESS_MANAGER.APPLICATIONS;CREATE OR REPLACE SYNONYM DATA_PERMISSIONS FOR ACCESS_MANAGER.DATA_PERMISSIONS;CREATE OR REPLACE SYNONYM CONTROL_OBJECTS FOR ACCESS_MANAGER.CONTROL_OBJECTS;CREATE OR REPLACE SYNONYM USERS FOR ACCESS_MANAGER.USERS;CREATE OR REPLACE SYNONYM DATA_TABLES FOR ACCESS_MANAGER.DATA_TABLES;CREATE OR REPLACE SYNONYM USER_APPLICATIONS FOR ACCESS_MANAGER.USER_APPLICATIONS;CREATE OR REPLACE SYNONYM PAGE_CONTROL_OBJECTS FOR ACCESS_MANAGER.PAGE_CONTROL_OBJECTS;CREATE OR REPLACE SYNONYM APPLICATION_PAGES FOR ACCESS_MANAGER.APPLICATION_PAGES;CREATE OR REPLACE SYNONYM PERMISSION_TYPES FOR ACCESS_MANAGER.PERMISSION_TYPES;CREATE OR REPLACE SYNONYM USER_ROLES FOR ACCESS_MANAGER.USER_ROLES;CREATE OR REPLACE SYNONYM PK_AMUTILS FOR ACCESS_MANAGER.PK_AMUTILS;CREATE OR REPLACE SYNONYM PK_SECURITY FOR ACCESS_MANAGER.PK_SECURITY;CREATE OR REPLACE PROCEDURE update_deprecation_state(nnrtag_id IN NUMBER) ASrecno NUMBER;CURSOR deprecate_cur ISSELECT rc.pv_idFROM release_content rcWHERE rtag_id = nnrtag_idAND deprecated_state IN(7);deprecate_rec deprecate_cur % rowtype;BEGINOPEN deprecate_cur;FETCH deprecate_curINTO deprecate_rec;WHILE deprecate_cur % FOUNDLOOPSELECT COUNT(*)INTO recnoFROM package_dependencies pd,release_content rcWHERE pd.pv_id = deprecate_rec.pv_idAND rc.pv_id = pd.dpv_idAND rc.rtag_id = nnrtag_idAND rc.deprecated_state IN(6, 7);IF recno = 0 THENUPDATE release_contentSET pkg_id = NULL, deprecated_state = NULLWHERE pv_id = deprecate_rec.pv_idAND rtag_id = nnrtag_id;END IF;FETCH deprecate_curINTO deprecate_rec;END LOOP;END;/CREATE OR REPLACE PROCEDURE ADD_VIEW_MEMBERS (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS/******************************************************************************NAME: ADD_VIEW_MEMBERSPURPOSE:REVISIONS:Ver Date Author Description--------- ---------- --------------- ------------------------------------1.0 11/04/2006 1. Created this procedure.NOTES:Automatically available Auto Replace Keywords:Object Name: ADD_VIEW_MEMBERSSysdate: 11/04/2006Date and Time: 11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/CURSOR user_cur ISSELECT u.USER_IDFROM USERS uWHERE 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;BEGINOPEN user_cur;FETCH user_cur INTO user_rec;WHILE user_cur%FOUNDLOOPINSERT 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 OR REPLACE PROCEDURE ADD_PACKAGE_INTEREST_TEST (nProjId IN PROJECTS.PROJ_ID%TYPE,nPkgIdList IN VARCHAR2,nUserId IN NUMBER) IS/******************************************************************************NAME: ADD_PACKAGE_INTERESTPURPOSE: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_INTERESTSysdate: 12/05/2006Date and Time: 12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AMUsername: (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;BEGINnpkgidcollector := in_list_number2 (nPkgIdList);FOR i IN 1..npkgidcollector.COUNTLOOPnPkgId := npkgidcollector(i);--- Insert into PACKAGE_INTEREST TABLEINSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)VALUES(nProjId, nPkgId, nUserId);END LOOP;END ADD_PACKAGE_INTEREST_TEST;/CREATE OR REPLACE PROCEDURE 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_statesSELECT 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 MESSAGEFROM package_dependencies dep,package_versions dpv,package_versions pv,release_content rel,temp_env_states tesWHERE rel.pv_id = dep.pv_idAND rel.rtag_id = nnrtag_idAND dep.pv_id = pv.pv_idAND dep.dpv_id = dpv.pv_idAND dpv.pkg_id = tes.pkg_idAND NVL (dpv.v_ext, '|LINK_A_NULL|') =NVL (tes.v_ext, '|LINK_A_NULL|')AND tes.session_num = nnsession_numAND tes.level_num = previterationAND (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_idFROM package_dependencies pd, release_content rcWHERE 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 )MINUSSELECT igw.pv_id, igw.dpv_idFROM ignore_warnings igwWHERE igw.rtag_id = nnrtag_id);nnrowcnt := SQL%ROWCOUNT;END level_n_conflicts;/CREATE OR REPLACE PROCEDURE 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();BEGINoPvIdCollector := IN_LIST_NUMBER ( sPvIdList );oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList );-- Delete From Release ContentDELETEFROM RELEASE_CONTENTWHERE rtag_id = nRTagIdAND 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 OR REPLACE FUNCTION GET_AUTOMATED_LABEL ( nPvId IN NUMBER ) RETURN VARCHAR2 IS/* ---------------------------------------------------------------------------Version: 3.0.0--------------------------------------------------------------------------- */sPkgName VARCHAR2(4000);sVext VARCHAR2(4000);BEGIN-- Get package detailsSELECT pkg.PKG_NAME, pv.V_EXT INTO sPkgName, sVextFROM PACKAGE_VERSIONS pv,PACKAGES pkgWHERE pv.PKG_ID = pkg.PKG_IDAND pv.PV_ID = nPvId;-- Generate Label for automated buildRETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );END GET_AUTOMATED_LABEL;/CREATE OR REPLACE PROCEDURE UnRipple_Package_Indirect (nPvId IN NUMBER,nRtagId IN NUMBER,nUserId IN NUMBER,nrootCausePvId IN NUMBER,srootCause IN VARCHAR2,srootFile IN VARCHAR2) ISReleaseLocation VARCHAR2(4000);BEGIN-- UnRipple Packagedelete from do_not_ripple where rtag_id=nRtagId and pv_id=nPvId;INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID, ROOT_PV_ID, ROOT_CAUSE, ROOT_FILE ) values (nRtagId, nPvId, nrootCausePvId, srootCause, srootFile);/* LOG ACTION */SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.RTAG_ID = nRtagIdAND rt.PROJ_ID = proj.PROJ_ID;/* LOG ACTION */Log_Action ( nPvId, 'unripple_package', nUserId, 'Location: '|| ReleaseLocation );END UnRipple_Package_Indirect;/CREATE OR REPLACE PACKAGE pk_packageIS/*------------------------------|| 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 OR REPLACE PROCEDURE 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 ISSELECT 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%NOTFOUNDTHEN/* 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 OR REPLACE PROCEDURE ADD_PACKAGE_INTEREST (nProjId IN PROJECTS.PROJ_ID%TYPE,nPkgIdList IN VARCHAR2,nUserId IN NUMBER) IS/******************************************************************************NAME: ADD_PACKAGE_INTERESTPURPOSE: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_INTERESTSysdate: 12/05/2006Date and Time: 12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AMUsername: (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;BEGINnpkgidcollector := in_list_number2 (nPkgIdList);FOR i IN 1..npkgidcollector.COUNTLOOPnPkgId := npkgidcollector(i);--- Insert into PACKAGE_INTEREST TABLEINSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)VALUES(nProjId, nPkgId, nUserId);END LOOP;END ADD_PACKAGE_INTEREST;/CREATE OR REPLACE FUNCTION 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)THENRETURN 0;END IF;/*-------------------------------------------------------*//*-- First Check. See if package is used through release reference --*/SELECT COUNT(rc.PV_ID) INTO RowCountFROM (SELECT rl.REF_RTAG_IDFROM RELEASE_LINKS rlWHERE rl.RTAG_ID = nRtagId) rl,RELEASE_CONTENT rcWHERE rc.RTAG_ID = rl.REF_RTAG_IDAND rc.PV_ID = nPvId;-- Decide if package can be editedIF RowCount > 0 THEN-- Package is referenced from other release, hence cannot be editedRETURN 0;ELSE-- Check is only done for releases in restrictive modeSELECT rt.OFFICIAL INTO cReleaseModeFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nRtagId;IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN-- Do not do any firther checking,-- Package is editable hereRETURN 1;END IF;END IF;/*-- Further checking --*/-- Get proj_idSELECT rt.PROJ_ID INTO ProjIdFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nRtagId;BEGIN-- Get v_extSELECT pv.V_EXT INTO VextFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID = nPvId;EXCEPTIONWHEN NO_DATA_FOUND THENVext := NULL;END;--Temp Hack for Step ProjectIF ProjId != 281 THEN-- Find if package can be edited in this projectSELECT COUNT(pe.EXT_NAME) INTO RowCountFROM PROJECT_EXTENTIONS peWHERE pe.PROJ_ID != ProjIdAND pe.EXT_NAME = VExt;END IF;-- Decide if package can be editedIF RowCount > 0 THEN-- Package extension is found in other projects, hece NOT EDITABLERETURN 0;ELSERETURN 1;END IF;END CAN_EDIT_PKG_IN_PROJECT;/CREATE OR REPLACE PACKAGE pk_archiveIS/*------------------------------|| 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 OR REPLACE PROCEDURE Rebuild_Environment ( NNrtag_id IN NUMBER ) IS/* ---------------------------------------------------------------------------Version: 3.3--------------------------------------------------------------------------- */rowCnt NUMBER := 0;iteration NUMBER := 2; -- Iterations countermaxIterations NUMBER := 50; -- Maximum number of iterations allowed.-- This will prevent infinite loops if cyrcular dependencies are foundsessionNum NUMBER;BEGINSELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;-- Redo Patch Ignore warningsIgnore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE );Level_One_Conflicts ( NNrtag_id, sessionNum );LOOPLevel_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 AvailableCheck_New_Patches ( NNrtag_id );Clean_Do_Not_Ripple( NNrtag_id );/* Circular Dependency Flag *//*IF iteration > maxIterationsTHENUPDATE release_tags SETcircular_dependency = 'Y'WHERE rtag_id = NNrtag_id;ELSEUPDATE release_tags SETcircular_dependency = NULLWHERE rtag_id = NNrtag_id;END IF;*/END Rebuild_Environment;/CREATE OR REPLACE PROCEDURE INSERT_INTO_PACKAGE_BUILD_INFO IS/******************************************************************************NAME: INSERT_INTO_PACKAGE_BUILD_INFOPURPOSE: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_INFOSysdate: 6/12/2006Date and Time: 6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/CURSOR curInfo ISSELECT PV_IDFROM PACKAGE_BUILD_ENVWHERE BE_ID IN (11, 12);recInfo curInfo%ROWTYPE;BEGINOPEN curInfo;FETCH curInfo INTO recInfo;WHILE curInfo%FOUNDLOOPINSERT 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 OR REPLACE PROCEDURE 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 ) THENRAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );END IF/*-------------------------------------------------------*/UPDATE release_content rcSET rc.pkg_state = 5 -- enumPKG_STATE_NEW_PATCHWHERE rc.pv_id IN (SELECT prod.pv_idFROM (SELECT pp.pv_id AS orig_parent_id,COUNT (*) AS num_of_patchesFROM release_content rc, package_patches ppWHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagidGROUP BY pp.pv_id) orig,(SELECT prodpp.pv_id, pp.pv_id AS parent_id,COUNT (*) AS num_of_patchesFROM release_content rc,package_patches pp,package_dependencies dep,package_versions pv,package_patches prodppWHERE rc.pv_id = pp.pv_idAND rc.rtag_id = nrtagidAND pp.patch_id = dep.dpv_idAND dep.pv_id = pv.pv_idAND pv.is_patch = 'Y'AND pv.dlocked = 'Y'AND prodpp.patch_id = dep.pv_idGROUP BY prodpp.pv_id, pp.pv_id) prod,release_content rcWHERE orig.orig_parent_id = prod.pv_idAND orig.num_of_patches != prod.num_of_patchesAND rc.rtag_id = nrtagidAND rc.pv_id = prod.pv_idAND rc.pkg_state = 0UNIONSELECT prodpp.pv_idFROM release_content rc,package_patches pp,package_dependencies dep,package_versions pv,package_patches prodppWHERE rc.pv_id = pp.pv_idAND rc.rtag_id = nrtagidAND pp.patch_id = dep.dpv_idAND dep.pv_id = pv.pv_idAND pv.is_patch = 'Y'AND pv.dlocked = 'Y'AND prodpp.patch_id = dep.pv_idGROUP BY prodpp.pv_id, pp.pv_idMINUSSELECT pp.pv_idFROM release_content rc, package_patches ppWHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagidGROUP BY pp.pv_id);END check_new_patches;/CREATE OR REPLACE PROCEDURE 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 dependencySELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatchFROM PACKAGE_VERSIONSWHERE pv_id = retPV_ID;-- get pkg_id of parent packageSELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatchFROM PACKAGE_VERSIONSWHERE pv_id = NNpv_id;IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR( (PvIsPatch IS NOT NULL) )THENIF NNdelete_old_dependency = 1 THEN/* Used for CUSTOM dependency add/edit */--- Remove old dependency ---IF (PvIsPatch IS NULL) THEN-- Do it for PackagesDELETE FROM PACKAGE_DEPENDENCIESWHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN(SELECT dep.*FROM PACKAGE_DEPENDENCIES dep,PACKAGE_VERSIONS dpv,PACKAGE_VERSIONS pvWHERE dep.dpv_id = dpv.pv_idAND dep.pv_id = NNpv_idAND pv.pv_id = retPV_IDAND dpv.pkg_id = pv.pkg_idAND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|'));ELSE-- Do it for PatchesDELETE FROM PACKAGE_DEPENDENCIESWHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN(SELECT dep.*FROM PACKAGE_DEPENDENCIES depWHERE dep.dpv_id = retPV_IDAND 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 OR REPLACE PACKAGE 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 OR REPLACE FUNCTION get_patch_version(s_version IN VARCHAR2) RETURN VARCHAR2IS/* ---------------------------------------------------------------------------Version: 1.0.0--------------------------------------------------------------------------- */BEGINIF is_number(s_version) AND LENGTH(s_version) > 3THENRETURN FLOOR(TO_NUMBER(s_version) / 1000);ELSERETURN s_version;END IF;END get_patch_version;/CREATE OR REPLACE FUNCTION 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 OR REPLACE PACKAGE 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 OR REPLACE PROCEDURE 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 FKSELECT act.ACTTYPE_ID INTO ActionTypeIdFROM ACTION_TYPE actWHERE 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 OR REPLACE FUNCTION 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);BEGINIF NOT sInList IS NULLTHENLOOPEXIT WHEN in_list IS NULL;pos := INSTR ( in_list, cSeparator );val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );IF (NOT val IS NULL) THENcItemCollection.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 OR REPLACE PROCEDURE New_Package_Name ( SSpkg_name IN PACKAGES.pkg_name%TYPE,retPKG_ID OUT NUMBER ) IS/* ---------------------------------------------------------------------------Version: 3.0.0--------------------------------------------------------------------------- */CURSOR packages_cur ISSELECT pkg.pkg_idFROM packages pkgWHERE 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%NOTFOUNDTHEN-- 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 );ELSEretPKG_ID := packages_rec.pkg_id;END IF;CLOSE packages_cur;END New_Package_Name;/CREATE OR REPLACE PROCEDURE UPDATE_PROCESSESISproc_id NUMBER;/******************************************************************************NAME: DELETE_DO_NOT_RIPPLEPURPOSE: TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGEIS RELEASEDREVISIONS: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_RIPPLESysdate: 21/04/2006Date and Time: 21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/CURSOR ripple_curISselect proc_id, proc_name, run_as, pkg_owner, is_interface from processes;ripple_rec ripple_cur%ROWTYPE;BEGINOPEN ripple_cur;FETCH ripple_curINTO ripple_rec;WHILE ripple_cur%FOUNDLOOPupdate deployment_manager.processes_configset proc_id = ripple_rec.proc_idwhere pkg_health_tag = ripple_rec.proc_nameand cmd_interface IS NULLand pkg_owner IS NULLand is_interface IS NULL;FETCH ripple_curINTO ripple_rec;END LOOP;END UPDATE_PROCESSES;/CREATE OR REPLACE PROCEDURE INSERT_MULTIPLE_STICKY_NOTES IS/******************************************************************************NAME: INSERT_MULTIPLE_STICKY_NOTESPURPOSE: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_NOTESSysdate: 6/12/2006Date and Time: 6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/CURSOR curInfo ISSELECT PV_IDFROM PACKAGE_BUILD_ENVWHERE BE_ID IN (11, 12);recInfo curInfo%ROWTYPE;BEGINOPEN curInfo;FETCH curInfo INTO recInfo;WHILE curInfo%FOUNDLOOPINSERT 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 OR REPLACE PACKAGE 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 OR REPLACE FUNCTION ORA_SYSDATETIMERETURN DATEIS/* ---------------------------------------------------------------------------Version: 3.0.0--------------------------------------------------------------------------- */BEGINRETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );END ORA_SYSDATETIME;/CREATE OR REPLACE FUNCTION get_build_number(s_version IN VARCHAR2) RETURN VARCHAR2IS/* ---------------------------------------------------------------------------Version: 1.0.0--------------------------------------------------------------------------- */BEGINIF is_number(s_version) AND LENGTH(s_version) > 3THENRETURN MOD(TO_NUMBER(s_version), 1000);ELSERETURN 0;END IF;END get_build_number;/CREATE OR REPLACE PACKAGE 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 OR REPLACE PROCEDURE 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 ISSELECT note_idFROM ADDITIONAL_NOTESWHERE pv_id = pnPv_idAND note_title = psNote_title;an_duplicate_rec an_duplicate_cur%ROWTYPE;BEGINoutErrCode := -1; -- Set default return error code to ERROR stateOPEN an_duplicate_cur;FETCH an_duplicate_cur INTO an_duplicate_rec;IF an_duplicate_cur%NOTFOUNDTHEN/* 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 SUCCESSEND IF;CLOSE an_duplicate_cur;END New_Additional_Note;/CREATE OR REPLACE PROCEDURE DEPLOY_TO_RELEASE IS/************************************************************************************************************************************************************/CURSOR curInfo ISSELECT DISTINCTqry.DPV_IDFROM (SELECT dep.*,LEVEL AS LEVEL_NUMFROM PACKAGE_DEPENDENCIES depSTART 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 pvWHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_IDand (pv.is_patch is null or pv.is_patch = 'N');recInfo curInfo%ROWTYPE;BEGINOPEN curInfo;FETCH curInfo INTO recInfo;WHILE curInfo%FOUNDLOOPinsert 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 OR REPLACE PROCEDURE 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 ISSELECT pv.*, pkg.pkg_nameFROM package_versions pv,packages pkgWHERE pv.pv_id = NNparent_idAND pv.pkg_id = pkg.pkg_id;parent_rec parent_cur%ROWTYPE;CURSOR patch_cur ISSELECT pv.*, pg.pkg_nameFROM package_versions pv,packages pgWHERE pv.pkg_id = parPkg_idAND pv.pkg_version = SSpatch_versionAND pv.pkg_id = pg.pkg_id;patch_rec patch_cur%ROWTYPE;CURSOR releases_cur ISSELECT rc.pv_idFROM release_content rcWHERE rc.pv_id = patch_rec.pv_id;releases_rec releases_cur%ROWTYPE;BEGIN-- Get Last Install OrderSELECT Count(*) INTO LastInstallOrderFROM PACKAGE_PATCHES ppWHERE pp.PV_ID = NNparent_id;-- Get parent detailsOPEN parent_cur;FETCH parent_cur INTO parent_rec;parPkg_id := parent_rec.pkg_id;-- Find if patch exists in databaseOPEN patch_cur;FETCH patch_cur INTO patch_rec;-- Parent must be officialIF parent_rec.dlocked = 'Y' THENIF patch_cur%NOTFOUNDTHENisPatchDlocked := '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_ORDERFROM package_versions pvWHERE pv.pv_id = patchPv_idAND 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 );ELSEpatchPv_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%NOTFOUNDTHEN-- This pv_id is trully a patch, hence add Y to column IS_PATCHUPDATE package_versions SETis_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_ORDERFROM package_versions pvWHERE pv.pv_id = patchPv_idAND 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 dependenciesIF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN-- Delete Existing DependenciesDELETEFROM PACKAGE_DEPENDENCIES depWHERE dep.PV_ID = patchPv_id;-- Insert new dependenciesINSERT 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_TYPEFROM PACKAGE_VERSIONS pvWHERE 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 OR REPLACE PROCEDURE 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;BEGINIF (NOT bDoPatchIgnore) THEN/* Manual Ignore Warnings */oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );/* Log Action */-- Get Release LocationSELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = nRtagId;-- Get Action Type Id for IGNORE_ONSELECT act.ACTTYPE_ID INTO ActionTypeIdFROM ACTION_TYPE actWHERE 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, ActionTypeIdFROM (SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_IDFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )MINUSSELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_IDFROM IGNORE_WARNINGS igwWHERE igw.RTAG_ID = nRtagIdAND igw.PV_ID = nPvId) qry,PACKAGE_VERSIONS pv,PACKAGES pkg,RELEASE_CONTENT rc,PACKAGE_VERSIONS rpvWHERE pv.PKG_ID = pkg.PKG_IDAND rc.RTAG_ID = nRtagIdAND rc.PV_ID = rpv.PV_IDAND rpv.PKG_ID = pv.PKG_IDAND 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_OFFSELECT act.ACTTYPE_ID INTO ActionTypeIdFROM ACTION_TYPE actWHERE 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, ActionTypeIdFROM (SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_IDFROM IGNORE_WARNINGS igwWHERE igw.RTAG_ID = nRtagIdAND igw.PV_ID = nPvIdMINUSSELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_IDFROM PACKAGE_VERSIONS pvWHERE 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 rpvWHERE pv.PKG_ID = pkg.PKG_IDAND rc.RTAG_ID = nRtagIdAND rc.PV_ID = rpv.PV_IDAND rpv.PKG_ID = pv.PKG_IDAND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )AND qry.DPV_ID = pv.PV_ID;-- Delete Current Ignore WarningsDELETEFROM IGNORE_WARNINGS igwWHERE igw.RTAG_ID = nRtagIdAND igw.PV_ID = nPvIdAND igw.IS_PATCH_IGNORE IS NULL;IF (oIgnoreIdCollector.COUNT > 0) THEN-- Insert Ignore WarningsINSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )SELECT nRtagId,nPvId,pv.PV_ID AS DPV_IDFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );END IF;-- Touch Release if package is in Release AreaIF PK_ENVIRONMENT.GET_PACKAGE_AREA ( nPvId, nRtagId ) = 2 THENTouch_Release (nRtagId);END IF;ELSE/* Patch Ignore Warnings */-- Delete Current Patch Ignore WarningsDELETEFROM IGNORE_WARNINGS igwWHERE igw.RTAG_ID = nRtagIdAND igw.IS_PATCH_IGNORE = 'Y';-- Delete Manual Ignores that need to be Patch IgnoresDELETEFROM IGNORE_WARNINGS igwWHERE ( RTAG_ID, PV_ID, DPV_ID ) IN(SELECT DISTINCTnRtagId,err.PV_ID,err.ERR_DPV AS DPV_IDFROM(/* 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_mmFROM release_content rel, package_versions rpvWHERE rel.pv_id = rpv.pv_idAND rtag_id = nRtagId) frc,(/* DPV_IDs not fount in release*/SELECT dep.pv_id, dep.dpv_id AS err_dpvFROM package_dependencies depWHERE 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_IDFROM PACKAGE_PATCHES pp,PACKAGE_DEPENDENCIES dep,RELEASE_CONTENT rcWHERE rc.RTAG_ID = nRtagIdAND rc.PV_ID = pp.PV_IDAND dep.PV_ID = pp.PATCH_ID) pp,package_versions errpkg,package_versions errpvWHERE err.err_dpv = errpv.pv_idAND errpv.pkg_id = frc.pkg_id(+)AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)AND err.pv_id = errpkg.pv_idAND err.PV_ID = pp.PV_IDAND frc.PV_ID = pp.DPV_ID);/*----------------------------------------------------- Make sure that select statement above and below are same---------------------------------------------------*/-- Insert Patch IgnoresINSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )SELECT DISTINCTnRtagId,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_mmFROM release_content rel, package_versions rpvWHERE rel.pv_id = rpv.pv_idAND rtag_id = nRtagId) frc,(/* DPV_IDs not fount in release*/SELECT dep.pv_id, dep.dpv_id AS err_dpvFROM package_dependencies depWHERE 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_IDFROM PACKAGE_PATCHES pp,PACKAGE_DEPENDENCIES dep,RELEASE_CONTENT rcWHERE rc.RTAG_ID = nRtagIdAND rc.PV_ID = pp.PV_IDAND dep.PV_ID = pp.PATCH_ID) pp,package_versions errpkg,package_versions errpvWHERE err.err_dpv = errpv.pv_idAND errpv.pkg_id = frc.pkg_id(+)AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)AND err.pv_id = errpkg.pv_idAND err.PV_ID = pp.PV_IDAND frc.PV_ID = pp.DPV_ID;END IF;END Ignore_Dependency_Warnings;/CREATE OR REPLACE PROCEDURE 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();BEGINIF (sPvIdList IS NULL) THENRAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );END IF;oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );-- UnRipple PackageINSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )SELECT nRtagId, pv.PV_IDFROM PACKAGE_VERSIONS pvWHERE 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 OR REPLACE PROCEDURE set_to_autobuildable (nrtagid IN NUMBER,spvidlist IN VARCHAR2)IS/******************************************************************************NAME: SET_TO_AUTOBUILDABLEPURPOSE: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_AUTOBUILDABLESysdate: 15/12/2006Date and Time: 15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AMUsername: (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;BEGINnpvidcollector := in_list_number2 (spvidlist);UPDATE package_versionsSET is_autobuildable = 'N'WHERE pv_id IN (SELECT pv_idFROM release_contentWHERE rtag_id = nrtagid);FOR i IN 1..npvidcollector.COUNTLOOPPvId := npvidcollector(i);UPDATE package_versionsset is_autobuildable = 'Y'where pv_id = PvId;END LOOP;END set_to_autobuildable;/CREATE OR REPLACE PROCEDURE Touch_Release_Bulk ( nRtagIdList IN VARCHAR2 ) IS/* ---------------------------------------------------------------------------Version: 3.0--------------------------------------------------------------------------- */oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();BEGINoRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );-- Touch Release for RebuildUPDATE RELEASE_TAGS rt SETrt.REBUILD_ENV = 'Y',rt.REBUILD_STAMP = 0WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );END Touch_Release_Bulk;/CREATE OR REPLACE PROCEDURE TEST_MARCO IS/******************************************************************************NAME: TEST_MARCOPURPOSE:REVISIONS:Ver Date Author Description--------- ---------- --------------- ------------------------------------1.0 2/03/2007 1. Created this procedure.NOTES:Automatically available Auto Replace Keywords:Object Name: TEST_MARCOSysdate: 2/03/2007Date and Time: 2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PMUsername: (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;BEGINSELECT 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_DEPLOYABLEFROM PACKAGE_VERSIONS pvWHERE pv.pv_id = 112982;Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );END TEST_MARCO;/CREATE OR REPLACE PACKAGE 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 OR REPLACE FUNCTION 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 || ',';BEGINIF NOT sInList IS NULLTHENLOOPEXIT 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 OR REPLACE PROCEDURE delete_autobuild_failure_infoIS/******************************************************************************NAME: DELETE_AUTOBUILD_FAILURE_INFOPURPOSE: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_INFOSysdate: 2/06/2006Date and Time: 2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/BEGINDELETE FROM autobuild_failureWHERE group_email_id NOT IN (SELECT group_email_idFROM members_group);END delete_autobuild_failure_info;/CREATE OR REPLACE PACKAGE "PK_ENVIRONMENT" IS/*------------------------------|| Last Modified: G.Huddy|| Modified Date: 28/May/2008|| Spec Version: 1.2------------------------------*/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 APPROVE_MERGE ( 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 INPACKAGE_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 OR REPLACE PROCEDURE 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 PackageDELETE FROM ADVISORY_RIPPLEWHERE PV_ID = nPvIdAND RTAG_ID = nRtagId;/* LOG ACTION */Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );/*Rebuild_Environment(nRtagId);*/END Clear_Advisory_Ripple;/CREATE OR REPLACE PROCEDURE Lock_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,nUserId IN NUMBER ) IS/* ---------------------------------------------------------------------------Version: 4.0--------------------------------------------------------------------------- */BEGIN-- Lock PackageUPDATE PACKAGE_VERSIONS pv SETpv.DLOCKED = 'Y'WHERE pv.PV_ID = nPvId;/* LOG ACTION */Log_Action ( nPvId, 'lock_package', nUserId );END Lock_Package;/CREATE OR REPLACE PROCEDURE 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 SolankiVersion: 3.0.1--------------------------------------------------------------------------- */nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();BsId NUMBER;HackBsId NUMBER;BEGINnBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );-- Delete Current Build Env settingsDELETE FROM PACKAGE_BUILD_ENVWHERE pv_id = nPvId;-- Delet Current Package Build Info SettingsDELETE FROM PACKAGE_BUILD_INFOWHERE pv_id = nPvId;-- Reset flag to NUPDATE PACKAGE_VERSIONS SETIS_BUILD_ENV_REQUIRED = 'N'WHERE PV_ID = nPvId;-- Set new Build EnvIF NOT sBuildEnvIdList IS NULL THENFOR i IN 1..nBsCollector.COUNTLOOPBsId := nBsCollector(i);IF nBuildStandard = 2 THENIF BsId = 1 THENHackBsId := 11;ELSEHackBsId := 12;END IF;-- Insert into PACKAGE_BUILD_ENVINSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )SELECT nPvId AS PV_ID,be.BE_IDFROM BUILD_ENVIRONMENTS beWHERE be.BE_ID IN ( HackBsId );-- Insert into PACKAGE_BUILD_INFOINSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )SELECT nPvId AS PV_ID,be.BM_IDFROM BUILD_MACHINES beWHERE be.BM_ID IN ( BsId );-- Set flag to YUPDATE PACKAGE_VERSIONS SETIS_BUILD_ENV_REQUIRED = 'Y'WHERE PV_ID = nPvId;ELSE-- Insert into PACKAGE_BUILD_ENVINSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )SELECT nPvId AS PV_ID,be.BE_IDFROM BUILD_ENVIRONMENTS beWHERE be.BE_ID IN ( BsId );-- Insert into PACKAGE_BUILD_INFOINSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )SELECT nPvId AS PV_ID,be.BM_IDFROM BUILD_MACHINES beWHERE be.BM_ID IN ( BsId );-- Set flag to YUPDATE PACKAGE_VERSIONS SETIS_BUILD_ENV_REQUIRED = 'Y'WHERE PV_ID = nPvId;END IF;END LOOP;END IF;END Set_Package_Build_Env_Temp;/CREATE OR REPLACE PROCEDURE 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 ISSELECT pv_idFROM package_versionsWHERE 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 versionSELECT pv.PKG_VERSION INTO OldPkgVersionFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID = NNpv_id;sPackageVersion := SSpkg_version;IF OldPkgVersion != sPackageVersion THENOPEN package_versions_cur;FETCH package_versions_cur INTO package_versions_rec;IF package_versions_cur%NOTFOUNDTHEN-- Split current version in partsSplit_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );-- Automated built configIF (cBuildType = 'A') THENsPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT; -- Make sure that version is still uniqueEND IF;-- Packge version not found, hence rename it.UPDATE package_versionsSET 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 = NULLWHERE pv_id = NNpv_id;IF (cBuildType = 'A') THENsLabel := GET_AUTOMATED_LABEL( NNpv_id );UPDATE PACKAGE_VERSIONS pv SETpv.PKG_LABEL = sLabelWHERE 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 OR REPLACE FUNCTION IS_VERSION_EXTENSION (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEANIS/* ---------------------------------------------------------------------------Version: 3.0.0--------------------------------------------------------------------------- */BEGINIF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0THENRETURN FALSE;ELSERETURN TRUE;END IF;END IS_VERSION_EXTENSION;/CREATE OR REPLACE PROCEDURE 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 ISSELECT pkg_id FROM PACKAGESWHERE pkg_name = SSpkg_name;packages_rec packages_cur%ROWTYPE;CURSOR package_versions_cur ISSELECT pv_id FROM PACKAGE_VERSIONSWHERE pkg_id = parPkg_idAND pkg_version = SSpkg_version;package_versions_rec package_versions_cur%ROWTYPE;CURSOR clone_package_versions_cur ISSELECT MAX(pv_id) AS pv_idFROM PACKAGE_VERSIONSWHERE pkg_id = parPkg_idAND 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%NOTFOUNDTHEN/* 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 );ELSEparPkg_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%NOTFOUNDTHENSELECT 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 NULLTHEN/* CLONE details from similar version OR from nCloneFromPvId */IF ( NOT nCloneFromPvId IS NULL) THENcloneFrom_pv_id := nCloneFromPvId;ELSEcloneFrom_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_fieldFROM PACKAGE_VERSIONS pvWHERE 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;ELSEretPV_ID := package_versions_rec.pv_id;END IF;CLOSE package_versions_cur;END Seed_Package_Names_Versions;/CREATE OR REPLACE PROCEDURE 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 dependencySELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION INTO RuntimeDependencyFROM RUNTIME_DEPENDENCIES rtd,PACKAGES pkg,PACKAGE_VERSIONS pvWHERE rtd.PV_ID = nPvIdAND pv.PKG_ID = pkg.PKG_IDAND rtd.RTD_ID = pv.PV_IDAND rtd.RTD_ID = nRuntimeId;-- Delete DocumentDELETEFROM RUNTIME_DEPENDENCIES rtdWHERE rtd.PV_ID = nPvIdAND rtd.RTD_ID = nRuntimeId;/* LOG ACTION */Log_Action ( nPvId, 'runtime_remove', nUserId,'Runtime package: '|| RuntimeDependency );END Remove_Runtime;/CREATE OR REPLACE PROCEDURE 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) ISext VARCHAR2(50);BEGIN--Extract the package version extensionSELECT V_EXT into extFROM PACKAGE_VERSIONSWHERE PV_ID = nPvId;-- Deprecate PackageINSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)VALUES (nRtagId, nPkgId, sComments, ext);IF ext IS NOT NULL THENUPDATE RELEASE_CONTENTSET PKG_ID = nPkgId, DEPRECATED_STATE = 6WHERE RTAG_ID = nRtagIdAND PV_ID IN (SELECT PV.PV_IDFROM PACKAGE_VERSIONS PV, PACKAGES PKGWHERE PKG.PKG_ID = PV.PKG_IDAND PV.V_EXT = extAND PKG.PKG_ID = nPkgId);ELSEUPDATE RELEASE_CONTENTSET PKG_ID = nPkgId, DEPRECATED_STATE = 6WHERE RTAG_ID = nRtagIdAND PV_ID IN (SELECT PV.PV_IDFROM PACKAGE_VERSIONS PV, PACKAGES PKGWHERE PKG.PKG_ID = PV.PKG_IDAND PV.V_EXT IS NULLAND PKG.PKG_ID = nPkgId);END IF;UPDATE RELEASE_CONTENTSET PKG_ID = nPkgId, DEPRECATED_STATE = 7WHERE RTAG_ID = nRtagIdAND PV_ID IN ( SELECT DISTINCTqry.PV_IDFROM (SELECT dep.*,LEVEL AS LEVEL_NUMFROM PACKAGE_DEPENDENCIES depSTART WITH dep.DPV_ID IN ( nPvId )CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID) qry,PACKAGES pkg,PACKAGE_VERSIONS pv,RELEASE_CONTENT rcWHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_IDAND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_IDAND rc.DEPRECATED_STATE IS NULL);/* LOG ACTION *//*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/END Deprecate_Package;/CREATE OR REPLACE PROCEDURE add_autobuild_failure_info (nprojid IN NUMBER,nviewid IN NUMBER,suserlist IN VARCHAR2)ISgroupid NUMBER;/******************************************************************************NAME: ADD_AUTOBUILD_FAILUREPURPOSE: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_FAILURESysdate: 11/04/2006Date and Time: 11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/BEGINBEGINSELECT group_email_idINTO groupidFROM autobuild_failureWHERE proj_id = nprojid AND view_id = nviewid;EXCEPTIONWHEN NO_DATA_FOUNDTHEN-- Create Next Sequence Id ---SELECT seq_group_email_id.NEXTVALINTO groupidFROM 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 OR REPLACE function 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 OR REPLACE TYPE "RELMGR_VARCHAR2_TAB_T"as TABLE of VARCHAR2(4000)/CREATE OR REPLACE PROCEDURE 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 SolankiModified: 24th October 2006Reason: 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 IdSELECT rt.PROJ_ID INTO nProjIdFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nRtagId;IF nModeCode = 1 THEN-- Open ModecMode := 'N';/* LOG ACTION */Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId );ELSIF nModeCode = 2 THEN-- Restrictive ModecMode := 'R';/* LOG ACTION */Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId );ELSIF nModeCode = 3 THEN-- Closed ModecMode := 'Y';/* LOG ACTION */Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId );ELSIF nModeCode = 4 THEN-- CCB ModecMode := 'C';/* LOG ACTION */Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId );ELSIF nModeCode = 5 THEN-- Archive ModecMode := 'A';/* LOG ACTION */Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId );END IF;-- Now update tableIF NOT cMode IS NULL THENUPDATE RELEASE_TAGS rt SETrt.OFFICIAL = cModeWHERE rt.RTAG_ID = nRtagId;END IF;END CHANGE_RELEASE_MODE;/CREATE OR REPLACE PROCEDURE 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 NumSELECT pd.DOC_NUM INTO DocNumberFROM PACKAGE_DOCUMENTS pdWHERE pd.PV_ID = nPvIdAND pd.DOC_ID = nDocId;-- Delete DocumentDELETEFROM PACKAGE_DOCUMENTS pdWHERE pd.PV_ID = nPvIdAND pd.DOC_ID = nDocId;/* LOG ACTION */Log_Action ( nPvId, 'document_remove', nUserId,'Document number: '|| DocNumber );END Remove_Document;/CREATE OR REPLACE PROCEDURE 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;BEGINIF nTestTypeId = enumTEST_TYPE_AUTOMATIC THENResultsURL := sResults;ELSEIF (sResults <> '') OR ( NOT sResults IS NULL ) THENoutFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;ResultsAttachment := sDpkg_path || '/' || outFileName;END IF;END IF;--- Update Unit Test ---UPDATE UNIT_TESTS SETTEST_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 = ResultsAttachmentWHERE TEST_ID = nTest_idAND PV_ID = nPv_id;END Update_Unit_Test;/CREATE OR REPLACE PROCEDURE 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;BEGINIF nTestTypeId = enumTEST_TYPE_AUTOMATIC THENResultsURL := sResults;ELSEIF (sResults <> '') OR ( NOT sResults IS NULL ) THENoutFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;ResultsAttachment := sDpkg_path || '/' || outFileName;END IF;END IF;/* IF (sResults <> '') OR ( NOT sResults IS NULL ) THENoutFileName := FILENAME_PREFIX || newID ||'_'|| sResults;sResults_url:= 'doc' || '/' ||;END IF;*/--- Update Unit Test ---UPDATE UNIT_TESTS SETTEST_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 = ResultsAttachmentWHERE TEST_ID = nTest_idAND PV_ID = nPv_id;END Update_Unit_Test_Test;/CREATE OR REPLACE PROCEDURE 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 ISSELECT COUNT(*) AS cnt_noteFROM ADDITIONAL_NOTESWHERE pv_id = pnPv_idAND note_id != pnNote_idAND note_title = psNote_title;an_duplicate_rec an_duplicate_cur%ROWTYPE;BEGINoutErrCode := -1; -- Set default return error code to ERROR stateOPEN an_duplicate_cur;FETCH an_duplicate_cur INTO an_duplicate_rec;IF an_duplicate_rec.cnt_note < 1THEN--- Update Additional Note ---UPDATE ADDITIONAL_NOTES SETnote_title = psNote_title,note_body = psNote_body,mod_date = Ora_Sysdate,mod_user = pnUser_idWHERE note_id = pnNote_idAND pv_id = pnPv_id;outErrCode := 0; -- Set return to SUCCESSEND IF;CLOSE an_duplicate_cur;END Update_Additional_Note;/CREATE OR REPLACE FUNCTION 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;BEGINlastDot := 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 )THENRETURN SSV_EXT;ELSERETURN NULL;END IF;ELSE-- NO dot separator found --RETURN NULL;END IF;END GET_V_EXT;/CREATE OR REPLACE PROCEDURE 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 ISSELECT pv.pkg_version, pkg.pkg_nameFROM runtime_dependencies rtd,package_versions pv,packages pkgWHERE rtd.rtd_id = pv.pv_idAND pv.pkg_id = pkg.pkg_idAND rtd.pv_id = NNpv_idAND rtd.rtd_id = NNrtd_id;rtd_rec rtd_cur%ROWTYPE;CURSOR old_rtd_cur ISSELECT pv.pv_idFROM package_versions pvWHERE pv.pkg_id IN ( SELECT rtdpv.pkg_idFROM package_versions rtdpvWHERE rtdpv.pv_id = NNrtd_id )AND pv.pkg_version = SSrtd_version;old_rtd_rec old_rtd_cur%ROWTYPE;BEGIN-- Get current runtime dependency detailsOPEN 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 affectall 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%NOTFOUNDTHEN-- 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 SETrtd_id = retRTD_ID,rtd_url = SSrtd_url,rtd_comments = SSrtd_commentsWHERE pv_id = NNpv_idAND rtd_id = NNrtd_id;ELSE-- Update runtime dependency table --UPDATE runtime_dependencies SETrtd_id = old_rtd_rec.pv_id,rtd_url = SSrtd_url,rtd_comments = SSrtd_commentsWHERE pv_id = NNpv_idAND rtd_id = NNrtd_id;END IF;CLOSE old_rtd_cur;ELSE-- Version has not changed, hence update everithing except version --UPDATE runtime_dependencies SETrtd_url = SSrtd_url,rtd_comments = SSrtd_commentsWHERE pv_id = NNpv_idAND rtd_id = NNrtd_id;END IF;CLOSE rtd_cur;END Update_Runtime_Dependency;/CREATE OR REPLACE PROCEDURE UPDATE_MISC_VIEW IS/******************************************************************************NAME: UPDATE_MISC_VIEWPURPOSE:REVISIONS:Ver Date Author Description--------- ---------- --------------- ------------------------------------1.0 16/03/2007 1. Created this procedure.NOTES:Automatically available Auto Replace Keywords:Object Name: UPDATE_MISC_VIEWSysdate: 16/03/2007Date and Time: 16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AMUsername: (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*/ISSELECT pkg.pkg_id, rc.base_view_idFROM package_versions pv, packages pkg, release_content rcwhere rc.rtag_id = 2362and rc.pv_id = pv.pv_idand pv.pkg_id = pkg.pkg_id;view_rec view_cur%ROWTYPE;BEGINOPEN view_cur;FETCH view_curINTO view_rec;WHILE view_cur%FOUNDLOOPupdate release_contentset base_view_id = view_rec.base_view_idwhere rtag_id = 8027and pv_id IN(select pv.pv_id from release_content rc, package_versions pvwhere rc.rtag_id = 8027and pv.pv_id = rc.pv_idand pv.pkg_id = view_rec.pkg_id);FETCH view_curINTO view_rec;END LOOP;END UPDATE_MISC_VIEW;/CREATE OR REPLACE PACKAGE 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 OR REPLACE PROCEDURE 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_statesSELECT 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 MESSAGEFROM (/* 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_mmFROM release_content rel, package_versions rpvWHERE 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_dpvFROM package_dependencies depWHERE dep.pv_id IN (SELECT pv_idFROM release_contentWHERE rtag_id = nnrtag_id)AND NOT dep.dpv_id IN (SELECT pv_idFROM release_contentWHERE rtag_id = nnrtag_id)MINUS/* MINUS Dependencies to be ignored */SELECT igw.pv_id, igw.dpv_id AS err_dpvFROM ignore_warnings igwWHERE rtag_id = nnrtag_id) err,package_versions errpkg,package_versions errpvWHERE err.err_dpv = errpv.pv_idAND 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 OR REPLACE PROCEDURE CLONED_PROCESSESISproc_id NUMBER;/******************************************************************************NAME: DELETE_DO_NOT_RIPPLEPURPOSE: TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGEIS RELEASEDREVISIONS: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_RIPPLESysdate: 21/04/2006Date and Time: 21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/CURSOR ripple_curISselect distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;ripple_rec ripple_cur%ROWTYPE;BEGINOPEN ripple_cur;FETCH ripple_curINTO ripple_rec;WHILE ripple_cur%FOUNDLOOPselect 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_curINTO ripple_rec;END LOOP;END CLONED_PROCESSES;/CREATE OR REPLACE PACKAGE pk_package_TestIS/*------------------------------|| 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 OR REPLACE PROCEDURE 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 OrderSELECT pp.INSTALL_ORDER INTO currInstallOrderFROM PACKAGE_PATCHES ppWHERE pp.PV_ID = nPvIdAND pp.PATCH_ID = nPatchId;IF currInstallOrder > nToInstallOrderTHENFromInstallOrder := nToInstallOrder;-- Shift others UpUPDATE PACKAGE_PATCHES pp SETpp.INSTALL_ORDER = pp.INSTALL_ORDER + 1WHERE pp.PV_ID = nPvIdAND pp.PATCH_ID != nPatchIdAND pp.INSTALL_ORDER BETWEEN FromInstallOrder AND currInstallOrder - 1;ELSIF currInstallOrder < nToInstallOrderTHENFromInstallOrder := currInstallOrder + 1;-- Shift others DownUPDATE PACKAGE_PATCHES pp SETpp.INSTALL_ORDER = pp.INSTALL_ORDER - 1WHERE pp.PV_ID = nPvIdAND pp.PATCH_ID != nPatchIdAND pp.INSTALL_ORDER BETWEEN FromInstallOrder AND nToInstallOrder;END IF;-- Move Patch to new install orderUPDATE PACKAGE_PATCHES pp SETpp.INSTALL_ORDER = nToInstallOrderWHERE pp.PV_ID = nPvIdAND pp.PATCH_ID = nPatchId;END Shift_Install_Order;/CREATE OR REPLACE FUNCTION is_number(p_val IN VARCHAR2) RETURN BOOLEANIStemp_num NUMBER;/* ---------------------------------------------------------------------------Version: 1.0.0--------------------------------------------------------------------------- */BEGINtemp_num := TO_NUMBER(p_val);RETURN true;EXCEPTION WHEN VALUE_ERROR THENRETURN false;END IS_NUMBER;/CREATE OR REPLACE PROCEDURE "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/* ---------------------------------------------------------------------------|| Last Modified: G.Huddy|| Modified Date: 19/Aug/2008|| Version : 3.6 (added licencing cloning)--------------------------------------------------------------------------- */FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;major NUMBER;minor NUMBER;patch NUMBER;buildn NUMBER;BEGIN------------------------------------- Limits ---------------------------------------------------select major_limit, minor_limit, patch_limit, build_number_limitinto major, minor, patch, buildnfrom package_versions where pv_id=nFROMpv_id;UPDATE package_versions SETmajor_limit = major,minor_limit = minor,patch_limit = patch,build_number_limit = buildnWHERE PV_ID = nTOpv_id;------------------------------------- Clone Dependencies ---------------------------------------------------IF NOT nRtag_id IS NULLTHEN-- Auto Update Dependencies --INSERT INTO PACKAGE_DEPENDENCIESSELECT 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_orderFROM 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.dlockedFROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpvWHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id) frcWHERE dep.pv_id = nFROMpv_idAND dep.dpv_id = pv.pv_idAND pv.pkg_id = frc.pkg_id(+)AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);ELSE-- Clone Dependencies --INSERT INTO PACKAGE_DEPENDENCIESSELECT nTOpv_id AS pv_id,dep.dpv_id,nTOpkg_id AS pkg_id,dep.dpkg_id,dep.build_type,dep.display_orderFROM PACKAGE_DEPENDENCIES depWHERE dep.pv_id = nFROMpv_id;END IF;----------------------------------------- Clone Issues -------------------------------------------------------IF enumISSUES_STATE_IMPORTED IS NULLTHEN/* 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, notesFROM CQ_ISSUESWHERE 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, notesFROM CQ_ISSUESWHERE pv_id = nFROMpv_idAND 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_userFROM 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_USERFROM ADDITIONAL_NOTES anWHERE 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_TESTFROM UNIT_TESTS utWHERE ut.PV_ID = nFROMpv_idAND 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_SUMMARYFROM UNIT_TESTS utWHERE ut.PV_ID = nFROMpv_idAND 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_LATESTFROM PACKAGE_DOCUMENTS pdWHERE 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_TYPEFROM PACKAGE_BUILD_ENV pkgbeWHERE 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_IDFROM PACKAGE_BUILD_INFO pkgbinfoWHERE 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_IDFROM PACKAGE_PROCESSES ppWHERE pp.PV_ID = nFROMpv_id;---------------------------------------------Clone Licencing Associations-----------------------------------PK_LICENCING.CLONE_LICENCING(nFROMpv_id, nTOpv_id, nUser_id);---------------------------------------------------------------------------------------------------------------/* LOG ACTION */SELECT pv.PKG_VERSION INTO FromVersionFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID = nFROMpv_id;Log_Action ( nTOpv_id, 'clone_from', nUser_id,'Details cloned from: '|| FromVersion );---------------------------------------------------------------------------------------------------------------END Basic_Clone;/CREATE OR REPLACE PROCEDURE Remove_Components ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS/* ---------------------------------------------------------------------------Version: 3.0.0--------------------------------------------------------------------------- */BEGIN--- Delete From RELEASE_COMPONENTSDELETE FROM RELEASE_COMPONENTSWHERE PV_ID = nPvId;END Remove_Components;/CREATE OR REPLACE PROCEDURE Sync_Projects_New_Version ( nPv_id IN NUMBER,sSyncRtagsInList IN VARCHAR2,nUser_id IN NUMBER ) IS/* ---------------------------------------------------------------------------Version: 3.0.0--------------------------------------------------------------------------- */CURSOR sync_rtags_cur ISSELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_idFROM release_content rc,package_versions pv,package_versions opvWHERE rc.pv_id = pv.pv_idAND opv.pkg_id = pv.pkg_idAND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')AND opv.pv_id = nPv_idAND 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;BEGINOPEN sync_rtags_cur;FETCH sync_rtags_cur INTO sync_rtags_rec;WHILE sync_rtags_cur%FOUNDLOOPDELETE FROM RELEASE_CONTENTWHERE rtag_id = sync_rtags_rec.rtag_idAND 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 OR REPLACE PROCEDURE 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 PackageINSERT 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 OR REPLACE PACKAGE 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 OR REPLACE PROCEDURE RELEASE_MANAGER_MAILOUT (sender IN VARCHAR2,recipient IN VARCHAR2,ccrecipient IN VARCHAR2,subject IN VARCHAR2,message IN VARCHAR2) IScrlf 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);EXCEPTIONWHEN UTL_SMTP.INVALID_OPERATION THENdbms_output.put_line(' Invalid Operation in SMTP transaction.');WHEN UTL_SMTP.TRANSIENT_ERROR THENdbms_output.put_line(' Temporary problems with sending email - try again later.');WHEN UTL_SMTP.PERMANENT_ERROR THENdbms_output.put_line(' Errors in code for SMTP transaction.');END RELEASE_MANAGER_MAILOUT;/CREATE OR REPLACE PROCEDURE Build_Tree ( nRtag_id IN NUMBER,retSessionNum OUT NUMBER ) IS/* ---------------------------------------------------------------------------Version: 3.0.0--------------------------------------------------------------------------- */rowCnt NUMBER := 0; -- Iterations counteriteration NUMBER := 1; -- Maximum number of iterations allowed.maxIterations NUMBER := 50; -- This will prevent infinite loops if cyrcular dependencies are foundUP_THE_TREE CONSTANT NUMBER DEFAULT 1;DOWN_THE_TREE CONSTANT NUMBER DEFAULT -1;sessionNum NUMBER;levelNum NUMBER;BEGINSELECT 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_extFROM release_content rc,package_versions pvWHERE rc.rtag_id = nRtag_idAND rc.pv_id = pv.pv_idMINUSSELECT sessionNum AS SESSION_NUM,iteration AS LEVEL_NUM,UP_THE_TREE AS DIRECTION,dep.pv_id, pv.pkg_id, pv.v_extFROM package_dependencies dep,package_versions pvWHERE 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;LOOPINSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )SELECT DISTINCTsessionNum AS SESSION_NUM,iteration AS LEVEL_NUM,UP_THE_TREE AS DIRECTION,rdep.pv_id, rdep.pkg_id, rdep.v_extFROM (SELECT dep.pv_id, pv.pkg_id, pv.v_ext, dep.dpv_id, dpv.pkg_id AS dpkg_id, dpv.v_ext AS dv_extFROM package_dependencies dep,release_content rc,package_versions pv,package_versions dpvWHERE dep.pv_id = rc.pv_idAND rc.rtag_id = nRtag_idAND dep.pv_id = pv.pv_idAND dep.dpv_id = dpv.pv_id) rdep,temp_tree_browse ttbWHERE rdep.dpkg_id = ttb.pkg_idAND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')AND ttb.SESSION_NUM = sessionNumAND ttb.LEVEL_NUM = iteration - 1MINUS/* Packages with all depencencies NOT matched */SELECT DISTINCTsessionNum AS SESSION_NUM,iteration AS LEVEL_NUM,UP_THE_TREE AS DIRECTION,rdep.pv_id, rdep.pkg_id, rdep.v_extFROM (SELECT dep.pv_id, pv.pkg_id, pv.v_ext, dep.dpv_id, dpv.pkg_id AS dpkg_id, dpv.v_ext AS dv_extFROM package_dependencies dep,release_content rc,package_versions pv,package_versions dpvWHERE dep.pv_id = rc.pv_idAND rc.rtag_id = nRtag_idAND dep.pv_id = pv.pv_idAND dep.dpv_id = dpv.pv_id) rdep,(SELECT tb.*FROM temp_tree_browse tbWHERE tb.SESSION_NUM = sessionNum) ttbWHERE 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 THENiteration := iteration + 1;END IF;EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);END LOOP;/*---------------------------------------------------------------------------------------------------------------------*//* Check for unresolved dependencies||*//* UNRESOLVED */SELECT COUNT(*) INTO rowCntFROM (SELECT pv.pv_id, pv.pkg_id, pv.v_extFROM release_content rc,package_versions pvWHERE rc.rtag_id = nRtag_idAND rc.pv_id = pv.pv_idMINUSSELECT ttb.pv_id, ttb.pkg_id, ttb.v_extFROM temp_tree_browse ttbWHERE ttb.session_num = sessionNum);IF rowCnt > 0THEN/* 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_extFROM (/* Packages no one depends on ( Top level packages )*/(/* All parents*/SELECT pv.pkg_id, pv.v_extFROM package_dependencies dep,release_content rc,package_versions pvWHERE dep.pv_id = rc.pv_idAND rc.rtag_id = nRtag_idAND dep.pv_id = pv.pv_idMINUS/* All children */SELECT dpv.pkg_id, dpv.v_extFROM package_dependencies dep,release_content rc,package_versions dpvWHERE dep.pv_id = rc.pv_idAND rc.rtag_id = nRtag_idAND dep.dpv_id = dpv.pv_id)MINUS/* Packages with resolved dependencies from UP THE TREE */SELECT ttb.pkg_id, ttb.v_extFROM temp_tree_browse ttbWHERE ttb.session_num = sessionNum) tpkg,package_versions pv,release_content rcWHERE rc.rtag_id = nRtag_idAND rc.pv_id = pv.pv_idAND tpkg.pkg_id = pv.pkg_idAND 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;LOOPINSERT 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_extFROM (/* All Unresolved */(SELECT pv.pkg_id, pv.v_extFROM release_content rc,package_versions pvWHERE rc.rtag_id = nRtag_idAND rc.pv_id = pv.pv_idMINUSSELECT ttb.pkg_id, ttb.v_extFROM temp_tree_browse ttbWHERE ttb.session_num = sessionNum)MINUS(/* Children of Unresolved */SELECT dpv.pkg_id, dpv.V_EXTFROM (SELECT pv.pv_id, pv.pkg_id, pv.v_extFROM release_content rc,package_versions pvWHERE rc.rtag_id = nRtag_idAND rc.pv_id = pv.pv_idMINUSSELECT ttb.pv_id, ttb.pkg_id, ttb.v_extFROM temp_tree_browse ttbWHERE ttb.session_num = sessionNum) unr,package_dependencies dep,package_versions dpvWHERE unr.pv_id = dep.pv_idAND dep.dpv_id = dpv.pv_id)) tpkg,package_versions pv,release_content rcWHERE rc.rtag_id = nRtag_idAND rc.pv_id = pv.pv_idAND tpkg.pkg_id = pv.pkg_idAND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');rowCnt := SQL%ROWCOUNT;IF rowCnt > 0 THENiteration := 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_IDFROM temp_tree_browse ttbWHERE ttb.session_num = sessionNumAND ttb.direction = UP_THE_TREE;/*Get last step_num */SELECT MAX(ttb.level_num) + 1 INTO levelNumFROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;/* UNRESOLVED */SELECT COUNT(*) INTO rowCntFROM (SELECT pv.pv_id, pv.pkg_id, pv.v_extFROM release_content rc,package_versions pvWHERE rc.rtag_id = nRtag_idAND rc.pv_id = pv.pv_idMINUSSELECT ttb.pv_id, ttb.pkg_id, ttb.v_extFROM temp_tree_browse ttbWHERE ttb.session_num = sessionNum);IF rowCnt > 0THEN/* 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 UNRESOLVEDFROM (SELECT pv.pv_id, pv.pkg_id, pv.v_extFROM release_content rc,package_versions pvWHERE rc.rtag_id = nRtag_idAND rc.pv_id = pv.pv_idMINUSSELECT ttb.pv_id, ttb.pkg_id, ttb.v_extFROM temp_tree_browse ttbWHERE 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_IDFROM temp_tree_browse ttbWHERE ttb.session_num = sessionNumAND ttb.direction = DOWN_THE_TREE;/*---------------------------------------------------------------------------------------------------------------------*//* Clean up temp table */DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;retSessionNum := sessionNum;END Build_Tree;/CREATE OR REPLACE FUNCTION 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 || ',';BEGINIF NOT sInList IS NULLTHENLOOPEXIT 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 OR REPLACE PACKAGE pk_buildapiIS/*------------------------------|| 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 OR REPLACE PROCEDURE 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 ISSELECT pp.PV_ID,pp.PATCH_ID,ROWNUM AS NEW_INSTALL_ORDERFROM PACKAGE_PATCHES ppWHERE pp.PV_ID = nPvIdORDER BY pp.INSTALL_ORDER;recPatch curPatch%ROWTYPE;BEGIN-- Delete PatchDELETEFROM PACKAGE_PATCHES ppWHERE pp.PV_ID = nPvIdAND pp.PATCH_ID = nPatchId;-- Redo Install OrderOPEN curPatch;FETCH curPatch INTO recPatch;WHILE curPatch%FOUNDLOOPUPDATE PACKAGE_PATCHES pp SETpp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDERWHERE pp.PV_ID = nPvIdAND pp.PATCH_ID = recPatch.PATCH_ID;FETCH curPatch INTO recPatch;END LOOP;CLOSE curPatch;/* LOG ACTION */SELECT pv.PKG_VERSION INTO PatchVersionFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID = nPatchId;Log_Action ( nPvId, 'patch_remove', nUserId,'Version: '|| PatchVersion );END Remove_Patch;/CREATE OR REPLACE TYPE "RELMGR_NUMBER_TAB_T" as TABLE of NUMBER/CREATE OR REPLACE PROCEDURE 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_COMPONENTSINSERT 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 OR REPLACE PROCEDURE oleIS retval VARCHAR2(40);BEGIN retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 )DBMS_OUTPUT.PUT_LINE(retval);/CREATE OR REPLACE PROCEDURE REMOVE_PROJECT_VIEW_OWNER (nProjId IN NUMBER,nViewId IN NUMBER,sUserIdList IN VARCHAR2,nUserId IN NUMBER ) ISGroupId NUMBER;/******************************************************************************NAME: UPDATE_VIEWPURPOSE: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_VIEWSysdate: 10/04/2006Date and Time: 10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/BEGINSELECT GROUP_EMAIL_ID into GroupIdFROM AUTOBUILD_FAILUREWHERE PROJ_ID = nProjIdAND VIEW_ID = nViewId;DELETE FROM MEMBERS_GROUPWHERE GROUP_EMAIL_ID = GroupIdAND 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 OR REPLACE PROCEDURE testISproc_id NUMBER;/******************************************************************************NAME: DELETE_DO_NOT_RIPPLEPURPOSE: TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGEIS RELEASEDREVISIONS: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_RIPPLESysdate: 21/04/2006Date and Time: 21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/CURSOR ripple_curISselect distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;ripple_rec ripple_cur%ROWTYPE;BEGINOPEN ripple_cur;FETCH ripple_curINTO ripple_rec;WHILE ripple_cur%FOUNDLOOPselect 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_curINTO ripple_rec;END LOOP;END test;/CREATE OR REPLACE PROCEDURE Change_Package_State ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS/* ---------------------------------------------------------------------------Version: 4.0--------------------------------------------------------------------------- */BEGIN-- Unlock PackageUPDATE RELEASE_CONTENT rc SETrc.PKG_STATE = 0WHERE rc.PV_ID = nPvIdAND rc.RTAG_ID = nRtagId;/* LOG ACTION *//* Log_Action ( nPvId, 'unlock_package', nUserId );*/END Change_Package_State;/CREATE OR REPLACE PACKAGE Rm_Issues ASTYPE 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;/CREATE OR REPLACE PROCEDURE 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 THENResultsURL := sResults;ELSEIF (sResults <> '') OR ( NOT sResults IS NULL ) THENoutFileName := FILENAME_PREFIX || newID ||'_'|| sResults;ResultsAttachment := sDpkg_path || '/' || outFileName;END IF;END IF;-- Remove NOT_DONE entry if existsDELETE FROM UNIT_TESTSWHERE pv_id = nPv_idAND 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 OR REPLACE PROCEDURE Ripple_Package (sPvIdList IN VARCHAR2,nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,nUserId IN NUMBER) IS/* ---------------------------------------------------------------------------Version: 4.1--------------------------------------------------------------------------- */BEGINIF (sPvIdList IS NULL) THENRAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );END IF;-- Ripple PackageDELETE FROM DO_NOT_RIPPLEWHERE RTAG_ID = nRtagIdAND 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 OR REPLACE PROCEDURE Set_Package_Build_Env ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,sBuildEnvIdList IN VARCHAR2 ) IS/* ---------------------------------------------------------------------------Last Modified: Rupesh SolankiVersion: 3.0.1--------------------------------------------------------------------------- */BEGIN-- Delete Current Build Env settingsDELETE FROM PACKAGE_BUILD_ENVWHERE pv_id = nPvId;-- Delet Current Package Build Info SettingsDELETE FROM PACKAGE_BUILD_INFOWHERE pv_id = nPvId;-- Reset flag to NUPDATE PACKAGE_VERSIONS SETIS_BUILD_ENV_REQUIRED = 'N'WHERE PV_ID = nPvId;-- Set new Build EnvIF NOT sBuildEnvIdList IS NULL THEN-- Insert into PACKAGE_BUILD_ENVINSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )SELECT nPvId AS PV_ID,be.BE_IDFROM BUILD_ENVIRONMENTS beWHERE be.BE_ID IN (SELECT *FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ));-- Insert into PACKAGE_BUILD_INFOINSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )SELECT nPvId AS PV_ID,be.BM_IDFROM BUILD_MACHINES beWHERE be.BM_ID IN (SELECT *FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ));-- Set flag to YUPDATE PACKAGE_VERSIONS SETIS_BUILD_ENV_REQUIRED = 'Y'WHERE PV_ID = nPvId;END IF;END Set_Package_Build_Env;/CREATE OR REPLACE PROCEDURE 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;BEGINcurrDot := INSTR ( SSpkg_version, '.', -1 ); -- Find 1st dot from the rightIF ( currDot > 0 )THEN-- YES dot separator found --SSV_EXT := GET_V_EXT( SSpkg_version );IF NOT SSV_EXT IS NULLTHENlastDot := currDot;currDot := INSTR ( SSpkg_version, '.', -1, 2 ); -- Find 2nd dot from the rightIF ( currDot > 0 )THEN-- XXXX.M.ESSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;ELSE-- XXXX.ESSV_MM := NULL;SSV_NMM := SSpkg_version;END IF;ELSE-- XXXX.MSSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );END IF;ELSE-- NO dot separator found ---- XXXXXXSSV_MM := NULL;SSV_NMM := SSpkg_version;SSV_EXT := NULL;END IF;END Split_Version;/CREATE OR REPLACE FUNCTION RELEASE_MODE ( nRtagId IN NUMBER ) RETURN CHAR IS/* ---------------------------------------------------------------------------Version: 3.0.0--------------------------------------------------------------------------- */returnValue CHAR(1);BEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/-- Get release modeSELECT rt.OFFICIAL INTO returnValueFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nRtagId;RETURN returnValue;END RELEASE_MODE;/CREATE OR REPLACE TYPE tDictionary AS TABLE OF VARCHAR2(4000) INDEX BY VARCHAR2(4000)/CREATE OR REPLACE PROCEDURE Unlock_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,nUserId IN NUMBER ) IS/* ---------------------------------------------------------------------------Author: Rupesh SolankiVersion: 4.0--------------------------------------------------------------------------- */STATE CHAR;BEGINSELECT DLOCKED INTO STATEFROM PACKAGE_VERSIONSWHERE PV_ID = nPvId;IF STATE = 'A' THEN --It was made official for autobuilds-- Unlock PackageUPDATE PACKAGE_VERSIONS pv SETpv.DLOCKED = 'P'WHERE pv.PV_ID = nPvId;ELSE-- Unlock PackageUPDATE PACKAGE_VERSIONS pv SETpv.DLOCKED = 'N'WHERE pv.PV_ID = nPvId;END IF;/* LOG ACTION */Log_Action ( nPvId, 'unlock_package', nUserId );END Unlock_Package;/CREATE OR REPLACE PACKAGE "PK_PLANNED" IS/*------------------------------|| Last Modified: G.Huddy|| Modified Date: 28/May/2008|| Spec Version: 1.1------------------------------*/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 );PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR);/*================================================================================================*/END PK_PLANNED;/CREATE OR REPLACE PROCEDURE Pending_Package ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,nUserId IN NUMBER ) IS/* ---------------------------------------------------------------------------Version: 4.0--------------------------------------------------------------------------- */BEGIN-- Lock PackageUPDATE PACKAGE_VERSIONS pv SETpv.DLOCKED = 'A'WHERE pv.PV_ID = nPvId;/* LOG ACTION */Log_Action ( nPvId, 'lock_package', nUserId );END Pending_Package;/CREATE OR REPLACE PROCEDURE clean_do_not_ripple (nrtagid IN NUMBER)IS/******************************************************************************NAME: DELETE_DO_NOT_RIPPLEPURPOSE: TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGEIS RELEASEDREVISIONS: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_RIPPLESysdate: 21/04/2006Date and Time: 21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/BEGINDELETE FROM do_not_rippleWHERE rtag_id = nrtagid AND pv_id NOT IN (SELECT pv_idFROM release_contentWHERE rtag_id = nrtagid);END clean_do_not_ripple;/CREATE OR REPLACE PROCEDURE 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 ISSELECT pkg_id FROM PACKAGESWHERE pkg_name = SSpkg_name;packages_rec packages_cur%ROWTYPE;CURSOR package_versions_cur ISSELECT pv_id FROM PACKAGE_VERSIONSWHERE pkg_id = parPkg_idAND pkg_version = SSpkg_version;package_versions_rec package_versions_cur%ROWTYPE;CURSOR clone_package_versions_cur ISSELECT MAX(pv_id) AS pv_idFROM PACKAGE_VERSIONSWHERE pkg_id = parPkg_idAND 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%NOTFOUNDTHEN/* 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 );ELSEparPkg_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%NOTFOUNDTHENSELECT 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) THENcloneFrom_pv_id := nCloneFromPvId;ELSEcloneFrom_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_fieldFROM PACKAGE_VERSIONS pvWHERE pv.pv_id = cloneFrom_pv_id;Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );retPV_ID := parPv_id;ELSEretPV_ID := package_versions_rec.pv_id;END IF;CLOSE package_versions_cur;END Seed_Package_Names_Versions2;/CREATE OR REPLACE PROCEDURE PAOLO_Build_Tree ( nRtag_id IN NUMBER ) ISsessionNumber NUMBER := 0;iteration NUMBER := 1;rowCnt NUMBER := 0;maxIterations NUMBER := 50;BEGININSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )SELECT sessionNumber, iteration, rc.PV_IDFROM RELEASE_CONTENT rcWHERE rc.RTAG_ID = nRtag_id;iteration := iteration + 1;LOOPINSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )SELECT sessionNumber,iteration,dep.DPV_IDFROM TEMP_TREE_BROWSE ttb,PACKAGE_DEPENDENCIES depWHERE dep.PV_ID = ttb.PV_IDAND ttb.LEVEL_NUM = iteration - 1MINUSSELECT sessionNumber, iteration, ttb.PV_IDFROM TEMP_TREE_BROWSE ttb;rowCnt := SQL%ROWCOUNT;IF rowCnt > 0 THENiteration := iteration + 1;END IF;EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);END LOOP;END PAOLO_Build_Tree;/CREATE OR REPLACE PROCEDURE 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();BEGINoPvIdCollector := IN_LIST_NUMBER ( nPvIdList );-- Get Action Type FKSELECT act.ACTTYPE_ID INTO ActionTypeIdFROM ACTION_TYPE actWHERE act.NAME = enumActionTypeName;-- Log ActionINSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )SELECT nUserId,ORA_SYSDATETIME,pv.PV_ID,sAdditionalComments,ActionTypeIdFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );END Log_Action_Bulk;/CREATE OR REPLACE PROCEDURE CLONED_PACKAGE_PROCESSESISproc_id NUMBER;/******************************************************************************NAME: DELETE_DO_NOT_RIPPLEPURPOSE: TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGEIS RELEASEDREVISIONS: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_RIPPLESysdate: 21/04/2006Date and Time: 21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/CURSOR ripple_curISselect distinct proc_id, prod_id from deployment_manager.processes_config;ripple_rec ripple_cur%ROWTYPE;BEGINOPEN ripple_cur;FETCH ripple_curINTO ripple_rec;WHILE ripple_cur%FOUNDLOOPinsert into package_processes (PROC_ID, PV_ID)values( ripple_rec.proc_id, ripple_rec.prod_id);FETCH ripple_curINTO ripple_rec;END LOOP;END CLONED_PACKAGE_PROCESSES;/CREATE OR REPLACE PACKAGE "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;FUNCTION exclude_indirect_from_build (pvid IN NUMBER,spkgversion IN VARCHAR2,rtagid IN NUMBER,username IN VARCHAR2,rootpvid IN NUMBER,rootcause IN VARCHAR2,rootfile 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 OR REPLACE PROCEDURE 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 OR REPLACE PROCEDURE 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 FKSELECT act.ACTTYPE_ID INTO ActionTypeIdFROM ACTION_TYPE actWHERE act.NAME = enumActionTypeName;INSERT INTO DAEMON_ACTION_LOGVALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId );END Log_Daemon_Action;/CREATE OR REPLACE PACKAGE 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 INPACKAGE_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 OR REPLACE PROCEDURE 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 | OK0 0 0 1 | MAJOR0 0 1 0 | MINOR0 0 1 1 | MAJOR------------------------------------0 1 0 0 | MAJOR_READY0 1 0 1 | MAJOR0 1 1 0 | MAJOR0 1 1 1 | MAJOR------------------------------------1 0 0 0 | MINOR_READY1 0 0 1 | MAJOR1 0 1 0 | MINOR1 0 1 1 | MAJOR------------------------------------1 1 0 0 | MAJOR_READY1 1 0 1 | MAJOR1 1 1 0 | MAJOR1 1 1 1 | MAJOR------------------------------------*/BEGIN/*----------------------------------------------|| MINOR READY*/----------------------------------------------UPDATE release_contentSET pkg_state = 4WHERE rtag_id = NNrtag_idAND pv_id IN(SELECT DISTINCT pv_idFROM temp_env_statesWHERE session_num = NNsession_numAND level_num = 1AND tes_state = 2);/*----------------------------------------------|| MAJOR READY*/----------------------------------------------UPDATE release_contentSET pkg_state = 3WHERE rtag_id = NNrtag_idAND pv_id IN(SELECT DISTINCT pv_idFROM temp_env_statesWHERE session_num = NNsession_numAND level_num = 1AND tes_state IN (0,1));/*----------------------------------------------|| MINOR*/----------------------------------------------UPDATE release_contentSET pkg_state = 2WHERE rtag_id = NNrtag_idAND pv_id IN(SELECT DISTINCT pv_idFROM temp_env_statesWHERE session_num = NNsession_numAND level_num >= 2AND tes_state = 2MINUSSELECT pv_idFROM release_contentWHERE rtag_id = NNrtag_idAND pkg_state = 3);/*----------------------------------------------|| MAJOR*/----------------------------------------------UPDATE release_contentSET pkg_state = 1WHERE rtag_id = NNrtag_idAND pv_id IN(SELECT DISTINCT pv_idFROM temp_env_statesWHERE session_num = NNsession_numAND level_num >= 2AND tes_state IN (0,1)/* MAJOR EXCEPTION - When package has Major Ready and Minor */UNIONSELECT DISTINCT tes.pv_idFROM temp_env_states tes,release_content rcWHERE tes.session_num = NNsession_numAND tes.level_num >= 2AND tes.tes_state = 2AND rtag_id = NNrtag_idAND rc.pv_id = tes.pv_idAND rc.pkg_state = 3);/*----------------------------------------------|| OK*/----------------------------------------------UPDATE release_contentSET pkg_state = 0WHERE rtag_id = NNrtag_idAND pv_id IN(SELECT rc.pv_idFROM release_content rcWHERE rc.rtag_id = NNrtag_idAND NOT rc.pv_id IN(SELECT DISTINCT pv_idFROM temp_env_states WHERE session_num = NNsession_num));/*----------------------------------------------|| ADVISORY RIPPLE - NEW STUFF*/----------------------------------------------/* UPDATE release_contentSET pkg_state = 8WHERE rtag_id = NNrtag_idAND pv_id IN(SELECT DISTINCT pv_idFROM temp_env_statesWHERE session_num = NNsession_numAND level_num = 1AND tes_state = 3); *//*----------------------------------------------|| ADVISORY RIPPLE DEPENDANT*/----------------------------------------------/* UPDATE release_contentSET pkg_state = 9WHERE rtag_id = NNrtag_idAND pv_id IN(SELECT DISTINCT pv_idFROM temp_env_statesWHERE session_num = NNsession_numAND level_num >= 2AND tes_state = 3); */Update_Deprecation_State (NNrtag_id);END Update_Package_States;/CREATE OR REPLACE PROCEDURE TO_INSERT_VTREE_ID IS/******************************************************************************NAME: TO_INSERT_VTREE_IDPURPOSE: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_IDSysdate: 2/02/2007Date and Time: 2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/VTreeId NUMBER;CURSOR curInfo ISSELECT RTAG_IDFROM RELEASE_TAGSWHERE VTREE_ID IS NULL;recInfo curInfo%ROWTYPE;BEGINOPEN curInfo;FETCH curInfo INTO recInfo;WHILE curInfo%FOUNDLOOPSELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;UPDATE RELEASE_TAGSSET VTREE_ID = VTreeIdWHERE RTAG_ID = recInfo.RTAG_ID;FETCH curInfo INTO recInfo;END LOOP;CLOSE curInfo;END TO_INSERT_VTREE_ID;/CREATE OR REPLACE PROCEDURE DT_DROPUSEROBJECTBYID ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;/CREATE OR REPLACE PACKAGE "PK_LICENCING" IS/*------------------------------|| Last Modified: G.Huddy|| Modified Date: 19/Aug/2008|| Spec Version: 1.0------------------------------*/TYPE typeCur IS REF CURSOR;/*================================================================================================*/PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER );FUNCTION IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER;PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER );/*================================================================================================*/END PK_LICENCING;/CREATE OR REPLACE FUNCTION ORA_SYSDATERETURN DATEIS/* ---------------------------------------------------------------------------Version: 3.0.0--------------------------------------------------------------------------- */BEGINRETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );END ORA_SYSDATE;/CREATE OR REPLACE PROCEDURE 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) ISext VARCHAR2(50);PvIdList VARCHAR2(32767);nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();PvId NUMBER;sComments VARCHAR2(32767);BEGIN--Extract the package extensionSELECT V_EXT into extFROM PACKAGE_VERSIONSWHERE 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 PackageDELETE FROM DEPRECATED_PACKAGESWHERE RTAG_ID = nRtagIdAND PKG_ID = nPkgIdAND V_EXT = ext;UPDATE RELEASE_CONTENTSET PKG_ID = NULL, DEPRECATED_STATE = NULLWHERE RTAG_ID = nRtagIdAND PV_ID IN (SELECT PV.PV_IDFROM PACKAGE_VERSIONS PV, PACKAGES PKGWHERE PKG.PKG_ID = PV.PKG_IDAND PKG.PKG_ID = nPkgIdAND PV.V_EXT = extUNIONSELECT DISTINCTqry.PV_IDFROM (SELECT dep.*,LEVEL AS LEVEL_NUMFROM PACKAGE_DEPENDENCIES depSTART 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 rcWHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_IDAND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID);ELSE-- Undeprecate PackageDELETE FROM DEPRECATED_PACKAGESWHERE RTAG_ID = nRtagIdAND PKG_ID = nPkgIdAND V_EXT IS NULL;UPDATE RELEASE_CONTENTSET PKG_ID = NULL, DEPRECATED_STATE = NULLWHERE RTAG_ID = nRtagIdAND PV_ID IN (SELECT PV.PV_IDFROM PACKAGE_VERSIONS PV, PACKAGES PKGWHERE PKG.PKG_ID = PV.PKG_IDAND PKG.PKG_ID = nPkgIdAND PV.V_EXT IS NULLUNIONSELECT DISTINCTqry.PV_IDFROM (SELECT dep.*,LEVEL AS LEVEL_NUMFROM PACKAGE_DEPENDENCIES depSTART 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 rcWHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_IDAND 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 OR REPLACE PROCEDURE 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--------------------------------------------------------------------------- */BEGINIF cUpdateAcceptedStateOnly = 'Y'THEN--- Update Accepted State Only ---IF ( sAccepted IS NULL )THEN-- Clear alleptanceUPDATE UNIT_TESTS SETTEST_ACCEPTED = NULL,ACCEPTANCE_DATE = NULL,ACCEPTED_BY = NULL,REVIEW_COMMENTS = NULLWHERE TEST_ID = pnTest_idAND PV_ID = pnPv_id;ELSEUPDATE UNIT_TESTS SETTEST_ACCEPTED = sAccepted,ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),ACCEPTED_BY = sAcceptedByWHERE TEST_ID = pnTest_idAND PV_ID = pnPv_id;END IF;ELSE--- Update Unit Test Acceptance ---UPDATE UNIT_TESTS SETTEST_ACCEPTED = sAccepted,REVIEW_COMMENTS = sReviewComments,ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),ACCEPTED_BY = sAcceptedByWHERE TEST_ID = pnTest_idAND PV_ID = pnPv_id;END IF;END Update_Unit_Test_Acceptance;/CREATE OR REPLACE PROCEDURE 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 ) ISTO 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 ISSELECT pv.pv_id, pv.is_patchFROM PACKAGE_VERSIONS pvWHERE pv.pkg_version = SSpkg_versionAND 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 ISSELECT DISTINCT pkg_id, dlocked FROM PACKAGE_VERSIONS WHERE pv_id = NNorig_pv_id;clone_package_versions_rec clone_package_versions_cur%ROWTYPE;BEGINIF NNsetto_pv_id IS NULLTHEN-- 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%NOTFOUNDTHENSELECT 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_REQUIREDFROM PACKAGE_VERSIONS pvWHERE pv.pv_id = NNorig_pv_id;-- Set Issues Type for cloning ---IF origDlocked = 'Y'THENnIssuesTypes := enumISSUES_STATE_IMPORTED;ELSEnIssuesTypes := NULL;END IF;Basic_Clone ( NNorig_pv_id, retPv_id, NNrtag_id, NNuser_id, origPkg_id, nIssuesTypes );ELSEretPv_id := package_versions_rec.pv_id;END IF;CLOSE package_versions_cur;ELSEretPv_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) THENUPDATE RELEASE_CONTENTSET pv_id = retPv_id,insert_stamp = Ora_Sysdate,insertor_id = NNuser_idWHERE rtag_id = NNrtag_idAND pv_id = NNorig_pv_id;/* LOG ACTION */SELECT proj.PROJ_NAME ||' / '|| vt.VTREE_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,VTREES vt,RELEASE_TAGS rtWHERE rt.VTREE_ID = vt.VTREE_IDAND vt.PROJ_ID = proj.PROJ_IDAND 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 OR REPLACE PROCEDURE 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();BEGINoPvIdCollector := IN_LIST_NUMBER ( sPvIdList );-- Remove Ignore WarningsDELETEFROM ignore_warningsWHERE (rtag_id, pv_id, dpv_id) IN(SELECT igw.rtag_id, igw.pv_id, igw.dpv_idFROM ignore_warnings igw,package_versions dpv,package_versions pvWHERE igw.dpv_id = dpv.pv_idAND igw.rtag_id = nRTagIdAND dpv.pkg_id = pv.pkg_idAND 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 OR REPLACE PROCEDURE SWITCH_REPRODUCIBLE_PACKAGE (nPvId IN NUMBER, nUserId IN NUMBER)ISAuto CHAR;/******************************************************************************NAME: SWITCH_REPRODUCIBLE_PACKAGEPURPOSE: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_PACKAGESysdate: 14/12/2006Date and Time: 14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/BEGINSELECT IS_AUTOBUILDABLE into AutoFROM PACKAGE_VERSIONSWHERE PV_ID = nPvId;IF Auto = 'N' ThenUPDATE PACKAGE_VERSIONSSET IS_AUTOBUILDABLE = 'Y'WHERE PV_ID = nPvId;/* LOG ACTION */Log_Action ( nPvId, 'reproducible_package', nUserId );ElseUPDATE PACKAGE_VERSIONSSET IS_AUTOBUILDABLE = 'N'WHERE PV_ID = nPvId;/* LOG ACTION */Log_Action ( nPvId, 'unreproducible_package', nUserId );End If;END SWITCH_REPRODUCIBLE_PACKAGE;/CREATE OR REPLACE PROCEDURE REMOVE_PACKAGE_INTEREST(nProjId IN PROJECTS.PROJ_ID%TYPE,nPkgId IN PACKAGES.PKG_ID%TYPE,nUserId IN NUMBER) IS/******************************************************************************NAME: REMOVE_PACKAGE_INTERESTPURPOSE: To remove interest in a given package per projectREVISIONS: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_INTERESTSysdate: 12/05/2006Date and Time: 12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AMUsername: (set in TOAD Options, Procedure Editor)Table Name: (set in the "New PL/SQL Object" dialog)******************************************************************************/BEGIN--Delete from PACKAGE_INTERESTDELETE FROM PACKAGE_INTERESTWHERE PROJ_ID = nProjIdAND PKG_ID = nPkgIdAND USER_ID = nUserId;END REMOVE_PACKAGE_INTEREST;/CREATE OR REPLACE PROCEDURE Touch_Release ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS/* ---------------------------------------------------------------------------Version: 3.0--------------------------------------------------------------------------- */BEGIN-- Touch Release for RebuildUPDATE RELEASE_TAGS rt SETrt.REBUILD_ENV = 'Y',rt.REBUILD_STAMP = 0WHERE rt.RTAG_ID = nRtagId;COMMIT;END Touch_Release;/CREATE OR REPLACE PROCEDURE 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 FKSELECT act.ACTTYPE_ID INTO ActionTypeIdFROM ACTION_TYPE actWHERE 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 OR REPLACE PACKAGE BODY "PK_PACKAGE"IS/*------------------------------|| Last Modified: G.Huddy|| Modified Date: 20/08/2008|| Body Version: 1.9 - added licencing removal to destroy_package()------------------------------*//*-------------------------------------------------------------------------------------------------------*/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)ISorigpkg_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_curISSELECT pv.pv_id, pv.is_patch, pv.dlockedFROM package_versions pvWHERE pv.pkg_version = snewpkgversionAND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_idFROM package_versions origpvWHERE origpv.pv_id = nlastpvid);package_versions_rec package_versions_cur%ROWTYPE;CURSOR clone_package_versions_curISSELECT DISTINCT pkg_id, dlockedFROM package_versionsWHERE pv_id = nlastpvid;clone_package_versions_rec clone_package_versions_cur%ROWTYPE;BEGINspackageversion := snewpkgversion;IF nsettopvid IS NULLTHEN-- SetToPv_id is not supplied, hence proceed./* ---------------------------------------------------- *//* Find id package_version exists *//* ---------------------------------------------------- */OPEN package_versions_cur;FETCH package_versions_curINTO package_versions_rec;IF package_versions_cur%NOTFOUNDTHEN--- Create brand new package ---SELECT seq_pv_id.NEXTVALINTO returnpvidFROM DUAL;-- Split Version to get extention + othersplit_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);-- Get previous package to clone fromOPEN clone_package_versions_cur;FETCH clone_package_versions_curINTO 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 configIF (cbuildtype = 'A')THENspackageversion := '(' || returnpvid || ')' || ssv_ext;-- Make sure that version is still uniqueEND 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_fieldFROM package_versions pvWHERE pv.pv_id = nlastpvid;-- Set Issues Type for cloning ---IF origdlocked = 'Y'THENnissuestypes := enumissues_state_imported;ELSEnissuestypes := NULL;END IF;-- Update Label for automated builtIF (cbuildtype = 'A')THENslabel := get_automated_label (returnpvid);UPDATE package_versions pvSET pv.pkg_label = slabelWHERE 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;ELSEreturnpvid := nsettopvid;END IF;END new_version;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE change_state (pvid IN NUMBER,newstate IN package_versions.dlocked%TYPE,userid IN NUMBER)ISBEGIN-- Set package in Released modeUPDATE package_versions pvSET pv.dlocked = newstate,pv.modified_stamp = ora_sysdatetime,pv.modifier_id = useridWHERE 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)ISLOCKED 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 officialSELECT pv.dlockedINTO LOCKEDFROM package_versions pvWHERE pv.pv_id = pvid;IF LOCKED = 'Y'THENproblemstring :=problemstring|| '- Package is locked and released.'|| UTL_TCP.crlf;END IF;-- Cannot remove if used in BOMsSELECT COUNT (osc.prod_id)INTO ROWCOUNTFROM deployment_manager.os_contents oscWHERE osc.prod_id = pvid;IF ROWCOUNT > 0THENproblemstring :=problemstring|| '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'|| UTL_TCP.crlf;END IF;-- Cannot remove if Referenced as build dependencySELECT COUNT (dep.pv_id)INTO ROWCOUNTFROM package_dependencies depWHERE dep.dpv_id = pvid;IF ROWCOUNT > 0THENproblemstring :=problemstring|| '- Package is referenced by other package as build dependency.'|| UTL_TCP.crlf;END IF;-- Cannot remove if Referenced as runtime dependencySELECT COUNT (rd.pv_id)INTO ROWCOUNTFROM runtime_dependencies rdWHERE rd.rtd_id = pvid;IF ROWCOUNT > 0THENproblemstring :=problemstring|| '- Package is referenced by other package as runtime dependency.'|| UTL_TCP.crlf;END IF;-- Cannot remove if Referenced as patchSELECT COUNT (pp.pv_id)INTO ROWCOUNTFROM package_patches ppWHERE pp.patch_id = pvid;IF ROWCOUNT > 0THENproblemstring :=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 ProgressDELETE FROM work_in_progress wipWHERE wip.pv_id = pvid;--- Remove From PendingDELETE FROM planned plWHERE pl.pv_id = pvid;--- Remove From Released areaDELETE FROM release_content rcWHERE rc.pv_id = pvid;---Remove From Package ProcessesDELETE FROM package_processes ppWHERE pp.pv_id = pvid;--- Remove DependenciesDELETE FROM package_dependencies depWHERE dep.pv_id = pvid;DELETE FROM package_dependencies depWHERE dep.dpv_id = pvid;--- Remove Runtime dependenciesDELETE FROM runtime_dependencies rtdWHERE rtd.pv_id = pvid;DELETE FROM runtime_dependencies rtdWHERE rtd.rtd_id = pvid;--- Remove componentsDELETE FROM product_components pcWHERE pc.pv_id = pvid;DELETE FROM release_components rcWHERE rc.pv_id = pvid;--- Remove From Notification HistoryDELETE FROM notification_history nhWHERE nh.pv_id = pvid;--- Remove From Ignore WarningsDELETE FROM ignore_warnings iwWHERE iw.pv_id = pvid;--- Remove From Additional NotesDELETE FROM additional_notes anWHERE an.pv_id = pvid;--- Remove From CQ IssuesDELETE FROM cq_issues cqWHERE cq.pv_id = pvid;--- Remove from Package PatchesDELETE FROM package_patches ppWHERE pp.pv_id = pvid;DELETE FROM package_patches ppWHERE pp.patch_id = pvid;--- Remove From Package DocumentsDELETE FROM package_documents pdWHERE pd.pv_id = pvid;--- Remove from Code ReviewDELETE FROM code_reviews crWHERE cr.pv_id = pvid;--- Remove from Code Review URLDELETE FROM code_review_url cruWHERE cru.pv_id = pvid;--- Remove from Unit TestsDELETE FROM unit_tests utWHERE ut.pv_id = pvid;--- Remove from Package BuildEnvDELETE FROM package_build_env pbeWHERE pbe.pv_id = pvid;--- Remove from Package Build InfoDELETE FROM package_build_info pbiWHERE pbi.pv_id = pvid;--- Remove from Build OrderDELETE FROM build_order boWHERE bo.pv_id = pvid;--- Remove from LicencingPK_LICENCING.REMOVE_ALL_LICENCING( pvid, 0 );--- Remove from Note ManagerDELETE FROM note_manager nmWHERE nm.nid = pvid;--- Remove from Action logDELETE FROM action_log alWHERE al.pv_id = pvid;--- Remove from Do Not RippleDELETE FROM DO_NOT_RIPPLE dnrWHERE dnr.PV_ID = pvid;--- Remove from Advisory RippleDELETE FROM ADVISORY_RIPPLE arWHERE ar.PV_ID = pvid;--- Remove from Jira IssuesDELETE FROM JIRA_ISSUES jiraWHERE jira.PV_ID = pvid;--- Remove from Package MetricsDELETE FROM package_metrics pmWHERE pm.pv_id = pvid;--- Finally Remove From Package Versions--- Get Package nameSELECT pv.pkg_idINTO pkgidFROM package_versions pvWHERE pv.pv_id = pvid;DELETE FROM package_versions pvWHERE pv.pv_id = pvid;--- Remove package name if not used any moreSELECT COUNT (pv.pv_id)INTO ROWCOUNTFROM package_versions pvWHERE pv.pkg_id = pkgid;IF ROWCOUNT < 1THENDELETE FROM PACKAGES pkgWHERE 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)ISpatchpv_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_curISSELECT pv.*, pkg.pkg_nameFROM package_versions pv, PACKAGES pkgWHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;parent_rec parent_cur%ROWTYPE;CURSOR patch_curISSELECT pv.*, pg.pkg_nameFROM package_versions pv, PACKAGES pgWHERE pv.pkg_id = parpkg_idAND pv.pkg_version = snewpatchversionAND pv.pkg_id = pg.pkg_id;patch_rec patch_cur%ROWTYPE;CURSOR releases_curISSELECT rc.pv_idFROM release_content rcWHERE rc.pv_id = patch_rec.pv_id;releases_rec releases_cur%ROWTYPE;BEGIN-- Get Last Install OrderSELECT COUNT (*)INTO lastinstallorderFROM package_patches ppWHERE pp.pv_id = nparentpvid;-- Get parent detailsOPEN parent_cur;FETCH parent_curINTO parent_rec;parpkg_id := parent_rec.pkg_id;-- Find if patch exists in databaseOPEN patch_cur;FETCH patch_curINTO patch_rec;-- Parent must be officialIF parent_rec.dlocked = 'Y'THENIF patch_cur%NOTFOUNDTHENispatchdlocked := 'N';-- Create new patch version --SELECT seq_pv_id.NEXTVALINTO patchpv_idFROM 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_orderFROM package_versions pvWHERE 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);ELSEpatchpv_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_curINTO releases_rec;IF releases_cur%NOTFOUNDTHEN-- This pv_id is trully a patch, hence add Y to column IS_PATCHUPDATE package_versionsSET 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_orderFROM package_versions pvWHERE 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 dependenciesIF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')THEN-- Delete Existing DependenciesDELETE FROM package_dependencies depWHERE dep.pv_id = patchpv_id;-- Insert new dependenciesINSERT 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_typeFROM package_versions pvWHERE pv.pv_id IN (SELECT *FROM TABLE(CAST(opatchdepcollector AS relmgr_number_tab_t)));END IF;-- Return patch_idreturnpatchid := patchpv_id;CLOSE parent_cur;CLOSE patch_cur;EXCEPTIONWHEN DUP_VAL_ON_INDEXTHENraise_application_error (-20000,'Patch version '|| snewpatchversion|| ' already exist.');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE obsolete_patch (patchid IN NUMBER,isobsolete IN CHAR,obsoletecomments IN VARCHAR2,userid IN NUMBER)ISBEGIN-- Update patchUPDATE package_versions pvSET pv.is_obsolete = isobsolete,pv.obsolete_comments = obsoletecommentsWHERE pv.pv_id = patchid;/*-- Update patch childrenUPDATE PACKAGE_VERSIONS pv SETpv.IS_OBSOLETE = IsObsolete,pv.OBSOLETE_COMMENTS = ObsoleteCommentsWHERE pv.PV_ID IN (SELECT DISTINCT dep.DPV_IDFROM PACKAGE_DEPENDENCIES depWHERE dep.PV_ID = PatchId);-- Update patch parentUPDATE PACKAGE_VERSIONS pv SETpv.IS_OBSOLETE = IsObsolete,pv.OBSOLETE_COMMENTS = ObsoleteCommentsWHERE pv.PV_ID IN (SELECT DISTINCT dep.PV_IDFROM PACKAGE_DEPENDENCIES depWHERE dep.DPV_ID = PatchId);*//* LOG ACTION */IF isobsolete IS NOT NULLTHENlog_action (patchid,'patch_obsolete',userid,'Obsolete patch. ' || obsoletecomments);ELSElog_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)ISBEGIN/*--------------- Business Rules Here -------------------*/IF spatchidlist IS NULLTHENraise_application_error (-20000,'Please select one or more Patches.');END IF;/*-------------------------------------------------------*/-- Update patchUPDATE package_versions pvSET pv.is_obsolete = isobsolete,pv.obsolete_comments = obsoletecommentsWHERE pv.pv_id IN (SELECT *FROM THE(SELECT CAST(in_list_number (spatchidlist) AS relmgr_number_tab_t)FROM DUAL));/*-- Update patch childrenUPDATE PACKAGE_VERSIONS pv SETpv.IS_OBSOLETE = IsObsolete,pv.OBSOLETE_COMMENTS = ObsoleteCommentsWHERE pv.PV_ID IN (SELECT DISTINCT dep.DPV_IDFROM PACKAGE_DEPENDENCIES depWHERE dep.PV_ID = PatchId);-- Update patch parentUPDATE PACKAGE_VERSIONS pv SETpv.IS_OBSOLETE = IsObsolete,pv.OBSOLETE_COMMENTS = ObsoleteCommentsWHERE pv.PV_ID IN (SELECT DISTINCT dep.PV_IDFROM PACKAGE_DEPENDENCIES depWHERE dep.DPV_ID = PatchId);*//* LOG ACTIONIF IsObsolete IS NOT NULL THENLog_Action ( PatchId, 'patch_obsolete', UserId,'Obsolete patch. '|| ObsoleteComments );ELSELog_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)ISpkgname VARCHAR2 (100);BEGININSERT 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)ISprocessname VARCHAR2 (4000);CURSOR proc_curISSELECT prc.proc_idFROM processes prcWHERE 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;BEGINOPEN proc_cur;FETCH proc_curINTO proc_rec;WHILE proc_cur%FOUNDLOOPINSERT INTO package_processes (proc_id, pv_id)VALUES (proc_rec.proc_id, npvid);SELECT prc.proc_nameINTO processnameFROM processes prcWHERE prc.proc_id = proc_rec.proc_id;-- Log Action --log_action (npvid,'process_add',nuserid,'Added process with health tag ' || processname);FETCH proc_curINTO 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)ISprocessname VARCHAR2 (4000);BEGINSELECT prc.proc_nameINTO processnameFROM processes prcWHERE prc.proc_id = nprocid;DELETE FROM package_processesWHERE 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)ISoldrtag_name VARCHAR2(4000);newrtag_name VARCHAR2(4000);BEGINSELECT rtag_name into oldrtag_nameFROM RELEASE_TAGSWHERE rtag_id = nrtagid;SELECT rtag_name into newrtag_nameFROM RELEASE_TAGSWHERE rtag_id = nnewrtagid;/* Table Work In Progress*/UPDATE WORK_IN_PROGRESSSET RTAG_ID = nnewrtagidWHERE RTAG_ID = nrtagidAND PV_ID = npvid;/* Table PLANNED*/UPDATE PLANNEDSET RTAG_ID = nnewrtagidWHERE RTAG_ID = nrtagidAND PV_ID = npvid;-- Log Action --log_action (npvid,'move_package_version',nuserid,'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name);END;/*-------------------------------------------------------------------------------------------------------*//*** Author: Rupesh Solanki** Purpose: To modify the product state from integration to test to deployment** Release: 25th January 2006*/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) ISsStateName VARCHAR2(4000);sRtagName VARCHAR2(4000);BEGINUPDATE RELEASE_CONTENTSET PRODUCT_STATE = nstateidWHERE PV_ID = npvidAND RTAG_ID = nrtagid;SELECT STATE INTO sStateNameFROM PRODUCT_STATESWHERE STATE_ID = nstateid;SELECT RTAG_NAME into sRtagNameFROM RELEASE_TAGSWHERE RTAG_ID = nrtagid;-- Log Action --log_action (npvid,'modify_product_state',nuserid,sStateName || ' in '|| sRtagName);END;/*-------------------------------------------------------------------------------------------------------*//*** Author: Jeremy Tweddle** Date: 24/Aug/2007*/PROCEDURE add_code_review_url (npvid IN NUMBER,nprojid IN NUMBER,surl IN VARCHAR2,sreason IN VARCHAR2,ddateofreview IN DATE) ISncrid NUMBER;BEGINSELECT 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;/*-------------------------------------------------------------------------------------------------------*//*** Author: Jeremy Tweddle** Date: 22/Aug/2007*/PROCEDURE update_code_review_url (ncrid IN NUMBER,nprojid IN NUMBER,surl IN VARCHAR2,sreason IN VARCHAR2) ISBEGINUPDATE code_review_urlSET url = surl,proj_id = nprojid,reason = sreason,last_modified = ora_sysdateWHERE cr_id = ncrid;END;/*-------------------------------------------------------------------------------------------------------*//*** Author: Jeremy Tweddle** Date: 22/Aug/2007*/PROCEDURE remove_code_review_url (ncrid IN NUMBER) ISBEGINDELETE FROM code_review_urlWHERE cr_id = ncrid;END;/*-------------------------------------------------------------------------------------------------------*/END pk_package;/CREATE OR REPLACE PACKAGE BODY pk_archiveIS/*------------------------------|| Author: Rupesh Solanki|| Date: 26 October 2006|| Version: 1.0------------------------------*//*---------------------------*/PROCEDURE populate_packages_table ISBEGININSERT 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 thenumber of package versions that exist in other releases.*/numcount NUMBER;numusedby NUMBER;numruntime NUMBER;/* Get all the package versions in the release */CURSOR archive_curISSELECT pv_idFROM release_contentWHERE rtag_id = nrtagid;archive_rec archive_cur%ROWTYPE;BEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/OPEN archive_cur;FETCH archive_curINTO archive_rec;WHILE archive_cur%FOUNDLOOP/* How many packages depend on this package version? */SELECT COUNT (*)INTO numusedbyFROM package_dependenciesWHERE dpv_id = archive_rec.pv_id;/* How many project releases use this package version? */SELECT COUNT (*)INTO numcountFROM release_contentWHERE pv_id = archive_rec.pv_id;/* How many packages have this package version as runtimedependency? */SELECT COUNT (*)INTO numruntimeFROM runtime_dependenciesWHERE rtd_id = archive_rec.pv_id;/* Insert into the archive_data table if they are not runtime dependantand package dependant and they exist in that particular release only*/IF numusedby = 0 AND numcount = 1 AND numruntime = 0THENINSERT INTO archive_data(rtag_id, pv_id)VALUES (nrtagid, archive_rec.pv_id);END IF;FETCH archive_curINTO archive_rec;END LOOP;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE migrate_pv_to_archive_schema (nrtagid IN release_tags.rtag_id%TYPE)ISBEGIN/* MIGRATION - PACKAGE_VERSIONS */INSERT INTO archive_manager.package_versionsSELECT *FROM package_versionsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - PACKAGE_BUILD_ENV */INSERT INTO archive_manager.package_build_envSELECT *FROM package_build_envWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM PACKAGE_BUILD_ENV */DELETE FROM package_build_envWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - PACKAGE_BUILD_INFO */INSERT INTO archive_manager.package_build_infoSELECT *FROM package_build_infoWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM PACKAGE_BUILD_info */DELETE FROM package_build_infoWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - UNIT_TESTS */INSERT INTO archive_manager.unit_testsSELECT *FROM unit_testsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM UNIT_TESTS*/DELETE FROM unit_testsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - PACKAGE_PROCESSES */INSERT INTO archive_manager.package_processesSELECT *FROM package_processesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM PACKAGE_PROCESSES*/DELETE FROM package_processesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - PACKAGE_DEPENDENCIES */INSERT INTO archive_manager.package_dependenciesSELECT *FROM package_dependenciesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM PACKAGE_DEPENDENCIES*/DELETE FROM package_dependenciesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - CODE_REVIEWS */INSERT INTO archive_manager.code_reviewsSELECT *FROM code_reviewsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM CODE_REVIEWS*/DELETE FROM code_reviewsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - RUNTIME_DEPENDENCIES*/INSERT INTO archive_manager.runtime_dependenciesSELECT *FROM runtime_dependenciesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM RUNTIME_DEPENDENCIES*/DELETE FROM runtime_dependenciesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - PACKAGE_DOCUMENTS */INSERT INTO archive_manager.package_documentsSELECT *FROM package_documentsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM PACKAGE_DOCUMENTS*/DELETE FROM package_documentsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - PACKAGE_PATCHES */INSERT INTO archive_manager.package_patchesSELECT *FROM package_patchesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM PACKAGE_PATCHES*/DELETE FROM package_patchesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - CQ_ISSUES */INSERT INTO archive_manager.cq_issuesSELECT *FROM cq_issuesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM CQ_ISSUES*/DELETE FROM cq_issuesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - ADDITIONAL_NOTES */INSERT INTO archive_manager.additional_notesSELECT *FROM additional_notesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM ADDITIONAL_NOTES*/DELETE FROM additional_notesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - RELEASE_COMPONENTS */INSERT INTO archive_manager.release_componentsSELECT *FROM release_componentsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM RELEASE_COMPONENTS*/DELETE FROM release_componentsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - IGNORE_WARNINGS */INSERT INTO archive_manager.ignore_warningsSELECT *FROM ignore_warningsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM IGNORE_WARNINGS*/DELETE FROM ignore_warningsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM WORK_IN_PROGRESS */DELETE FROM work_in_progressWHERE rtag_id = nrtagid;/* PURGE DATA FROM PLANNED */DELETE FROM plannedWHERE rtag_id = nrtagid;/* MIGRATION - JIRA_ISSUES */INSERT INTO archive_manager.jira_issuesSELECT *FROM jira_issuesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM JIRA_ISSUES*/DELETE FROM jira_issuesWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - PRODUCT_COMPONENTS */INSERT INTO archive_manager.product_componentsSELECT *FROM product_componentsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM PRODUCT_COMPONENTS*/DELETE FROM product_componentsWHERE pv_id IN (SELECT pv_idFROM archive_data);/* MIGRATION - ACTION_LOG */INSERT INTO archive_manager.action_logSELECT *FROM action_logWHERE pv_id IN (SELECT pv_idFROM archive_data);/* PURGE DATA FROM ACTION_LOG*/DELETE FROM action_logWHERE pv_id IN (SELECT pv_idFROM archive_data);END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE migrate_rtag_to_archive_schema (nrtagid IN release_tags.rtag_id%TYPE)ISBEGIN/* MIGRATION - DO_NOT_RIPPLE */INSERT INTO archive_manager.do_not_rippleSELECT *FROM do_not_ripple dnpWHERE rtag_id = nrtagid;/* PURGE DATA FROM DO_NOT_RIPPLE */DELETE FROM do_not_rippleWHERE rtag_id = nrtagid;/* MIGRATION - ADVISORY_RIPPLES*/INSERT INTO archive_manager.advisory_ripplesSELECT *FROM advisory_ripple dnpWHERE rtag_id = nrtagid;/* PURGE DATA FROM ADVISORY_RIPPLES*/DELETE FROM advisory_rippleWHERE rtag_id = nrtagid;/* MIGRATION - RELEASE_CONTENT */INSERT INTO archive_manager.release_contentSELECT *FROM release_contentWHERE rtag_id = nrtagid;/* PURGE DATA FROM RELEASE_CONTENT*/DELETE FROM release_contentWHERE rtag_id = nrtagid;/* MIGRATION - NOTIFICATION_HISTORY */INSERT INTO archive_manager.notification_historySELECT *FROM notification_historyWHERE rtag_id = nrtagid;/* PURGE DATA FROM NOTIFICATION_HISTORY*/DELETE FROM notification_historyWHERE rtag_id = nrtagid;/* MIGRATION - BUILD_ORDER */INSERT INTO archive_manager.build_orderSELECT *FROM build_orderWHERE rtag_id = nrtagid;/* PURGE DATA FROM BUILD_ORDER*/DELETE FROM build_orderWHERE rtag_id = nrtagid;/* MIGRATION - PROJECT_ACTION_LOG */INSERT INTO archive_manager.project_action_logSELECT *FROM project_action_logWHERE rtag_id = nrtagid;/* PURGE DATA FROM PROJECT_ACTION_LOG */DELETE FROM project_action_logWHERE rtag_id = nrtagid;/* MIGRATION - DEPRECATED_PACKAGES */INSERT INTO archive_manager.deprecated_packagesSELECT *FROM deprecated_packagesWHERE rtag_id = nrtagid;/* PURGE DATA FROM DEPRECATED_PACKAGES */DELETE FROM deprecated_packagesWHERE rtag_id = nrtagid;/* MIGRATION - RELEASE_TAGS */INSERT INTO archive_manager.release_tagsSELECT *FROM release_tagsWHERE rtag_id = nrtagid;/* PURGE DATA FROM PACKAGE_VERSIONS*/DELETE FROM package_versionsWHERE pv_id IN (SELECT pv_idFROM archive_data);END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE clean_up_archive_data_table (nrtagid IN release_tags.rtag_id%TYPE)ISBEGIN/* Cleaning Up The Archive_Data Table */DELETE FROM archive_dataWHERE rtag_id = nrtagid;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE write_action_log (nuserid IN NUMBER,nrtagid IN release_tags.rtag_id%TYPE)ISBEGIN/* 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;/CREATE OR REPLACE PACKAGE BODY pk_rmapi_testIS/*------------------------------|| Last Modified: Rupesh Solanki|| Modified Date: 11 September 2006|| Body Version: 2.0------------------------------*//*-------------------------------------------------------------------------------------------------------*/FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)RETURN typecurISnpvid NUMBER := 0;RECORDS typecur;BEGINBEGIN-- Get PV_ID --SELECT pv.pv_idINTO npvidFROM PACKAGES pkg, package_versions pvWHERE pv.pkg_id = pkg.pkg_idAND pkg.pkg_name = pkgnameAND pv.pkg_version = pkgversion;EXCEPTIONWHEN NO_DATA_FOUNDTHENraise_application_error (-20000, 'Package Not Found!');--WHEN OTHERS THEN-- Consider logging the error and then re-raiseRAISE;END;-- Finally get package dependencies --OPEN RECORDS FORSELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_versionFROM package_dependencies dep, PACKAGES dpkg, package_versions dpvWHERE dep.pv_id = npvidAND dpv.pkg_id = dpkg.pkg_idAND dpv.pv_id = dep.dpv_id;RETURN RECORDS;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION wip_iteration_package (projname VARCHAR2,iterationname VARCHAR2,pkgname VARCHAR2)RETURN typecurISnrtagid NUMBER := 0;RECORDS typecur;BEGINBEGIN-- Get latest rtag_id --SELECT rt.rtag_idINTO nrtagidFROM projects proj, release_tags rtWHERE rt.proj_id = proj.proj_idAND UPPER (proj.proj_name) = UPPER (projname)AND UPPER (rt.rtag_name) = UPPER (iterationname);IF (nrtagid IS NULL)THENraise_application_error (-20000,'Work In Progress is Not Found!');END IF;EXCEPTIONWHEN NO_DATA_FOUNDTHENraise_application_error (-20000,'Work In Progress is Not Found!');RAISE;END;-- Finally get package dependencies --OPEN RECORDS FORSELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,pv.src_pathFROM PACKAGES pkg, package_versions pv, work_in_progress wipWHERE pv.pkg_id = pkg.pkg_idAND wip.pv_id = pv.pv_idAND wip.rtag_id = nrtagidAND 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 NUMBERISpvid 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)THENraise_application_error (-20000, 'RtagId must be supplied.');END IF;IF (pkgname IS NULL)THENraise_application_error (-20000, 'PkgName must be supplied.');END IF;IF (newpkgversion IS NULL)THENraise_application_error (-20000, 'PkgVersion must be supplied.');END IF;IF (label IS NULL)THENraise_application_error (-20000, 'Label must be supplied.');END IF;IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)THENraise_application_error(-20000,'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).');END IF;IF (username IS NULL)THENraise_application_error (-20000, 'UserName must be supplied.');END IF;-- Get user_idBEGINSELECT usr.user_idINTO useridFROM users usrWHERE UPPER (usr.user_name) = UPPER (username)AND usr.is_disabled IS NULL;EXCEPTIONWHEN NO_DATA_FOUNDTHENraise_application_error (-20000,'UserName '|| username|| ' is not valid or disabled.');END;/*-------------------------------------------------------*/-- Create package if necessaryIF isrippled = 1THEN/* Ripple Build */BEGIN-- Make sure that package does not existSELECT pv.pv_idINTO pvidFROM package_versions pv, PACKAGES pkgWHERE pv.pkg_id = pkg.pkg_idAND pkg.pkg_name = pkgnameAND pv.pkg_version = newpkgversion;EXCEPTIONWHEN NO_DATA_FOUNDTHENpvid := 0;END;IF (pvid = 0)THEN-- Split current version in partssplit_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);BEGIN-- Find package to be replaced with thie ripple packageIF vext = ssv_extTHENSELECT pv.pv_idINTO clonefrompvidFROM PACKAGES pkg, package_versions pv,release_content rcWHERE rc.pv_id = pv.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.rtag_id = rtagidAND pkg.pkg_name = pkgnameAND pv.v_ext = ssv_ext;ELSESELECT pv.pv_idINTO clonefrompvidFROM PACKAGES pkg, package_versions pv,release_content rcWHERE rc.pv_id = pv.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.rtag_id = rtagidAND pkg.pkg_name = pkgnameAND pv.v_ext = vext;END IF;EXCEPTIONWHEN NO_DATA_FOUNDTHENraise_application_error(-20000,'Cannot get CloneFromPvId. VExt='|| vext|| ', RtagId='|| rtagid|| ', PkgName='|| pkgname|| ', SSV_EXT='|| ssv_ext);END;IF vext = ssv_extTHEN-- Create packageseed_package_names_versions (pkgname,newpkgversion,userid,pvid,clonefrompvid);ELSE-- Create packageseed_package_names_versions2 (pkgname,newpkgversion,userid,pvid,clonefrompvid);END IF;-- Update Package reason for releaseUPDATE package_versions pvSET pv.comments = 'Rippled Build.',pv.build_type = 'Y'WHERE pv.pv_id = pvid;ELSE-- Package already exists, hence cannot be used for ripple buildRETURN return_package_already_exists;END IF;ELSE/* Auto build from Pending area */-- Find package in pending areaBEGINSELECT pv.pv_id, pv.dlockedINTO pvid, dlockedFROM planned pl, package_versions pv, PACKAGES pkgWHERE pl.pv_id = pv.pv_idAND pv.pkg_id = pkg.pkg_idAND pl.rtag_id = rtagidAND pkg.pkg_name = pkgnameAND pv.dlocked = 'A'AND NVL (pv.v_ext, '|LINK_A_NULL|') =NVL (vext, '|LINK_A_NULL|');EXCEPTIONWHEN NO_DATA_FOUNDTHENpvid := 0;END;IF (pvid = 0)THEN-- Package does not exist in pending area, hence report itRETURN return_package_not_found;ELSIF (dlocked != 'A')THEN-- Package is not approved for autobuildRETURN return_not_approved;END IF;END IF;BEGIN-- Import Dependenciesimport_dependencies (pvid, dependenciesimportlist, userid);END;BEGIN-- Split current version in partssplit_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);-- Update Package DetailsUPDATE package_versions pvSET pv.pkg_version = newpkgversion,pv.v_ext = ssv_ext,pv.v_mm = ssv_mm,pv.v_nmm = ssv_nmm,pv.pkg_label = labelWHERE pv.pv_id = pvid;EXCEPTIONWHEN DUP_VAL_ON_INDEXTHEN-- Package already exists, hence cannot be used for ripple buildRETURN return_package_already_exists;END;-- Update the is_autobuildableupdate package_versionsset is_autobuildable = 'Y'where pv_id = pvid;-- Now release packagepk_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 curbuildtypeISSELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,dep.build_typeFROM package_dependencies dep, package_versions dpvWHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;recbuildtype curbuildtype%ROWTYPE;BEGINslist := dependenciesimportlist;-- Preformat StringIF NOT slist IS NULLTHENslist := REPLACE (slist, ' '); -- Remove spacesslist := REPLACE (slist, UTL_TCP.crlf);-- Remove new line and carriage-return charactersslist := REPLACE (slist, '''', '"'); -- Replace ' with "END IF;-- Get Current DependenciesOPEN curbuildtype;FETCH curbuildtypeINTO recbuildtype;WHILE curbuildtype%FOUNDLOOPcbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;FETCH curbuildtypeINTO recbuildtype;END LOOP;CLOSE curbuildtype;-- Separate dependencies with ; separatorcitemcollection := in_list_varchar2 (slist, ';');BEGIN-- Remove old dependenciesDELETE FROM package_dependencies depWHERE dep.pv_id = pvid;-- Loop through dependenciesFOR dependencyrow IN 1 .. citemcollection.COUNTLOOP-- Extract pkg_name and pkg_versionsdependency := 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 againstBEGINSELECT pv.pv_id, pv.pkg_id, pv.v_extINTO dpvid, pkgid, vextFROM package_versions pv, PACKAGES pkgWHERE pv.pkg_id = pkg.pkg_idAND pkg.pkg_name = pkgnameAND pv.pkg_version = pkgversion;EXCEPTIONWHEN NO_DATA_FOUNDTHENraise_application_error(-20000,'Dependency ['|| pkgname|| ' '|| pkgversion|| '] does not exist yet and cannot be used!');END;-- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)BEGINbuildtype := cbuildtypes (pkgid || seperator || vext);IF buildtype IS NULLTHEN-- Set build type to LinkPackageArchive by defaultbuildtype := 'L';END IF;EXCEPTIONWHEN NO_DATA_FOUNDTHENbuildtype := 'L';END;-- Insert Dependenciesupdate_package_dependency (pvid,pkgname,pkgversion,buildtype,userid,0);END LOOP;END;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION return_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)RETURN VARCHAR2ISpkgversion VARCHAR2 (4000);BEGINBEGINSELECT pv.pkg_versionINTO pkgversionFROM PACKAGES pkg, release_content rc, package_versions pvWHERE pv.pv_id = rc.pv_idAND pkg.pkg_id = pv.pkg_idAND pkg.pkg_name = pkgnameAND rc.rtag_id = rtagid;RETURN pkgversion;END;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE CQ_TEST ISINPUT NUMBER(8,2);RESULT VARCHAR2(50);BEGININPUT := 33558440;RESULT := dbo.sp_RM_getIssueDetails@DEVI(INPUT);INSERT INTO CQ_TEST (ID) VALUES (RESULT);END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE UPDATE_DASH_BOARD ( RtagId IN NUMBER ) ISprojId NUMBER;projIdDB NUMBER;TOTAL NUMBER;AUTO_TOTAL NUMBER;rtagIdDB NUMBER;BEGINSELECT count(*) INTO TOTALFROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pvWHERE pv.pv_id = rc.pv_id and rc.rtag_id = RtagId;SELECT count(*) INTO AUTO_TOTALFROM RELEASE_CONTENT rc, PACKAGE_VERSIONS pvWHERE pv.pv_id = rc.pv_id and pv.is_autobuildable = 'Y'and rc.rtag_id = RtagId;BEGINSELECT RTAG_ID INTO rtagIdDBFROM DASH_BOARDWHERE RTAG_ID = RtagId;SELECT PROJ_ID INTO projIdDBFROM DASH_BOARDWHERE RTAG_ID = RtagId;EXCEPTIONWHEN NO_DATA_FOUNDTHEN rtagIdDB := '';END;IF rtagIdDB IS NULL THENSELECT PROJ_ID INTO projIdFROM RELEASE_TAGSWHERE 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);ELSEUPDATE DASH_BOARDSET LAST_BUILD_TIME = ORA_SYSDATETIME,AUTOMATED_PACKAGES = AUTO_TOTAL,TOTAL_PACKAGES = TOTALWHERE PROJ_ID = projIdDBAND RTAG_ID = rtagIdDB;END IF;END;/*-------------------------------------------------------------------------------------------------------*/END pk_rmapi_test;/CREATE OR REPLACE PACKAGE BODY 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) ISBEGINIF (NOT RtagId IS NULL) THEN-- Case with RTAG_ID presentOPEN records FORSELECT rt.PROJ_ID,rt.RTAG_ID AS RTAG_IDFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = TO_NUMBER(RtagId);ELSIF (NOT ProjId IS NULL) THEN-- Case with PROJ_ID presentOPEN records FORSELECT TO_NUMBER(ProjId) AS PROJ_ID,-1 AS RTAG_IDFROM DUAL;ELSE-- Case with none presentOPEN records FORSELECT -1 AS PROJ_ID,-1 AS RTAG_IDFROM DUAL;END IF;--RETURN records;END;/*-------------------------------------------------------------------------------------------------------*/END PK_APP_UTILS;/CREATE OR REPLACE PACKAGE BODY 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 ) ISRtagId NUMBER;ParentRtagId NUMBER;RecCount NUMBER := 0;BEGIN/*--------------- Business Rules Here -------------------*/-- Check for missing parametersIF (sReleaseName IS NULL) OR (nUserId IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );END IF;-- Check for duplicate Release NamesSELECT COUNT(rt.RTAG_ID) INTO RecCountFROM RELEASE_TAGS rtWHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )AND rt.PROJ_ID = nProjId;IF (RecCount > 0) THENRAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');END IF;/*-------------------------------------------------------*/-- Get rtag_idSELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;-- Get Parent RtagIdParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );-- Create new releaseINSERT 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 OrderUPDATE_DISPLAY_ORDER ( nProjId );/* Log Project Action */Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );-- Import Release ContentsIF (NOT nSourceRtagId IS NULL) THENImport_Release_Contents ( nSourceRtagId, RtagId, nUserId );END IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) ISBEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/UPDATE RELEASE_TAGS urt SETurt.DISPLAY_ORDER = (SELECT qry.REC_NUMFROM (SELECT rel.*, ROWNUM AS REC_NUMFROM (SELECT rt.RTAG_ID,rt.DISPLAY_ORDER,DECODE( rt.PARENT_RTAG_ID,rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_IDFROM RELEASE_TAGS rtWHERE rt.PROJ_ID = nProjId) relSTART WITH rel.PARENT_RTAG_ID = 0CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_IDORDER SIBLINGS BY rel.DISPLAY_ORDER) qryWHERE qry.RTAG_ID = urt.RTAG_ID)WHERE urt.PROJ_ID = nProjId;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER ) ISnIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();SeqNum NUMBER;BEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/nIdCollector := IN_LIST_NUMBER ( sRtagIdList );-- Set start sequence numberSeqNum := 1;FOR i IN 1..nIdCollector.COUNTLOOP-- Update new display orderUPDATE RELEASE_TAGS rt SETrt.DISPLAY_ORDER = SeqNumWHERE rt.PROJ_ID = nProjIdAND 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 ) ISRecCount NUMBER := 0;ProjId NUMBER;BEGIN/*--------------- Business Rules Here -------------------*/-- Check for missing parametersIF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);END IF;-- Check for duplicate Release NamesSELECT rt.PROJ_ID INTO ProjIdFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nRtagId;SELECT COUNT(rt.RTAG_ID) INTO RecCountFROM RELEASE_TAGS rtWHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )AND rt.RTAG_ID != nRtagIdAND rt.PROJ_ID = ProjId;IF (RecCount > 0) THENRAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');END IF;/*-------------------------------------------------------*/-- Update release detailsUPDATE RELEASE_TAGS rt SETrt.RTAG_NAME = sReleaseName,rt.DESCRIPTION = sReleaseComments,rt.PARENT_RTAG_ID = nParentRtagId,rt.ASSOC_MASS_REF = nMASSRtagId,rt.CONFIG_SPEC_BRANCH = nConfigSpecBranchWHERE rt.RTAG_ID = nRtagId;-- Update display OrderUPDATE_DISPLAY_ORDER ( ProjId );/* Log Project Action */Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) ISRecCount NUMBER := 0;sReleaseId VARCHAR2(4000);ProjId NUMBER;BEGIN/*--------------- Business Rules Here -------------------*/IF (nRtagId IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId );END IF;-- Check for any kidsSELECT COUNT( rt.RTAG_ID ) INTO RecCountFROM RELEASE_TAGS rtWHERE rt.PARENT_RTAG_ID = nRtagIdAND rt.RTAG_ID != rt.PARENT_RTAG_ID;IF (RecCount > 0) THENRAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.' );END IF;/*-------------------------------------------------------*/-- Clear the release contentsClean_Release_Contents ( nRtagId, nUserId );/* Log Project Action */SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseIdFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nRtagId;Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );-- Remove ReleaseDELETEFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nRtagId;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER ) ISsSourceLocation VARCHAR2(4000);sTargetLocation VARCHAR2(4000);ProjId NUMBER;cReleaseMode CHAR(1);BEGIN/*--------------- Business Rules Here -------------------*/IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );END IF;IF (nSourceRtagId = nTargetRtagId) THENRAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );END IF;-- Check if Target release is in OPEN modeSELECT rt.OFFICIAL INTO cReleaseModeFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nTargetRtagId;IF (cReleaseMode != 'N') THENRAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );END IF;/*-------------------------------------------------------*/-- Clean target contentsClean_Release_Contents ( nTargetRtagId, nUserId );-- Import Released Area ContentsINSERT 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_STATEFROM RELEASE_CONTENT rcWHERE rc.RTAG_ID = nSourceRtagId;-- Import Ignore Warning statesINSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )SELECT nTargetRtagId AS RTAG_ID,igw.PV_ID,igw.DPV_IDFROM IGNORE_WARNINGS igwWHERE igw.rtag_id = nSourceRtagId;/* Log Project Action */-- Get Source LocationSELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO sSourceLocationFROM RELEASE_TAGS rt,PROJECTS prWHERE rt.PROJ_ID = pr.PROJ_IDAND rt.RTAG_ID = nSourceRtagId;-- Get Target LocationSELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO sTargetLocationFROM RELEASE_TAGS rt,PROJECTS prWHERE rt.PROJ_ID = pr.PROJ_IDAND rt.RTAG_ID = nTargetRtagId;-- Get project idSELECT rt.PROJ_ID INTO ProjIdFROM RELEASE_TAGS rtWHERE 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 ) ISRecCount NUMBER;BEGIN/*--------------- Business Rules Here -------------------*/IF (nRtagId IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId );END IF;-- Check if other release references this releaseSELECT COUNT( rl.RTAG_ID ) INTO RecCountFROM RELEASE_LINKS rlWHERE rl.REF_RTAG_ID = nRtagId;IF (RecCount > 0) THENRAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.' );END IF;/*-------------------------------------------------------*/-- Delete Release linksDELETEFROM RELEASE_LINKS rlWHERE rl.RTAG_ID = nRtagId;-- Delete ignore warningDELETEFROM IGNORE_WARNINGS iwWHERE iw.RTAG_ID = nRtagId;-- Delete Build Order cached calculationsDELETEFROM BUILD_ORDER boWHERE bo.RTAG_ID = nRtagId;-- Delete Notification HistoryDELETEFROM NOTIFICATION_HISTORY nhWHERE nh.RTAG_ID = nRtagId;-- Delete Released Area ContentsDELETEFROM RELEASE_CONTENT rcWHERE rc.RTAG_ID = nRtagId;-- Delete Work In Progress Area ContentsDELETEFROM WORK_IN_PROGRESS wipWHERE wip.RTAG_ID = nRtagId;-- Delete Pending Area ContentsDELETEFROM PLANNED plWHERE pl.RTAG_ID = nRtagId;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER ISnSourceParentRtagId NUMBER;BEGIN/*--------------- Business Rules Here -------------------*/IF (nRtagId IS NULL) OR (cIsBranch IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );END IF;/*-------------------------------------------------------*/IF ( nSourceRtagId IS NULL ) THEN-- Create new on main branchRETURN nRtagId;ELSE-- Create from source rtag_id-- Find parent of Source RtagIdSELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagIdFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nSourceRtagId;IF (UPPER(cIsBranch) = 'Y') THENRETURN nSourceRtagId;ELSEIF (nSourceRtagId = nSourceParentRtagId) THENRETURN nRtagId;ELSERETURN 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 ) ISIsBaseView CHAR(1);BEGIN-- Check if the view is BASE VIEWSELECT vi.BASE_VIEW INTO IsBaseViewFROM VIEWS viWHERE vi.VIEW_ID = ViewId;IF (IsBaseView = 'Y') THEN-- Get Base view contentOPEN RecordSet FORSELECT 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_TYPEFROM release_content rel,packages pkg,package_versions pvWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.BASE_VIEW_ID = ViewIdAND rel.RTAG_ID = RtagIdORDER BY UPPER(pkg.PKG_NAME);ELSE-- Get non base view contentOPEN RecordSet FORSELECT 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_TYPEFROM release_content rel,packages pkg,package_versions pv,VIEW_DEF vdWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND vd.VIEW_ID = ViewIdAND vd.PKG_ID = pv.PKG_IDAND rel.RTAG_ID = RtagIdORDER BY UPPER(pkg.PKG_NAME);END IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) ISReleaseLocation VARCHAR2(4000);sPkgVersion VARCHAR2(4000);nPkgId NUMBER;sVExt VARCHAR2(4000);IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';-- Find package for replacementCURSOR curReplacePkg ISSELECT pv.PV_IDFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.PV_ID = pv.PV_IDAND rc.RTAG_ID = RtagIdAND pv.PKG_ID = nPkgIdAND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );recReplacePkg curReplacePkg%ROWTYPE;BEGIN-- Get is_patch, pkg_id and v_extSELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExtFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID = newPvId;-- Never put patch in relesed areaIF (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_EXTOPEN curReplacePkg;FETCH curReplacePkg INTO recReplacePkg;IF curReplacePkg%FOUND THEN-- Replace packageREPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );ELSE-- Add new packageINSERT 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 ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = RtagId;SELECT pv.PKG_VERSION INTO sPkgVersionFROM PACKAGE_VERSIONS pvWHERE 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 ) ISReleaseLocation VARCHAR2(4000);sPkgVersion VARCHAR2(4000);BEGIN-- Replace PackageUPDATE RELEASE_CONTENTSET pv_id = newPvId,insert_stamp = Ora_Sysdate,insertor_id = UserIdWHERE rtag_id = RtagIdAND pv_id = oldPvId;/* LOG ACTION */SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = RtagId;SELECT pv.PKG_VERSION INTO sPkgVersionFROM PACKAGE_VERSIONS pvWHERE 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 ) ISReleaseLocation VARCHAR2(4000);BEGIN-- Delete old packageDELETEFROM RELEASE_CONTENT rcWHERE rc.PV_ID = PvIdAND rc.RTAG_ID = RtagId;/* LOG ACTION */SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND 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 ) ISReleaseLocation VARCHAR2(4000);CURSOR curMatchingPackage ISSELECT mpv.PV_IDFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS mpv,PACKAGE_VERSIONS pvWHERE rc.PV_ID = mpv.PV_IDAND rc.RTAG_ID = RtagIdAND pv.PV_ID = PvIdAND pv.PKG_ID = mpv.PKG_IDAND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );recMatchingPackage curMatchingPackage%ROWTYPE;BEGINOPEN curMatchingPackage;FETCH curMatchingPackage INTO recMatchingPackage;IF curMatchingPackage%FOUND THEN-- Delete old packageDELETEFROM RELEASE_CONTENT rcWHERE rc.PV_ID = recMatchingPackage.PV_IDAND rc.RTAG_ID = RtagId;/* LOG ACTION */SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND 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 ISReturnValue NUMBER;BEGINSELECT rc.BASE_VIEW_ID INTO ReturnValueFROM RELEASE_CONTENT rcWHERE rc.RTAG_ID = RtagIdAND rc.PV_ID = PvId;RETURN ReturnValue;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) ISBEGIN-- Reset Ignore warnings up-the-treeRESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );-- Refresh Package statesTOUCH_RELEASE ( RtagId );END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) ISCURSOR curReleases ISSELECT rc.RTAG_IDFROM RELEASE_CONTENT rcWHERE rc.PV_ID = PvId;recReleases curReleases%ROWTYPE;BEGINOPEN curReleases;FETCH curReleases INTO recReleases;WHILE curReleases%FOUNDLOOPRUN_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 ) ISBEGINUPDATE RELEASE_CONTENT rc SETrc.BASE_VIEW_ID = NewViewIdWHERE rc.PV_ID = PvIdAND rc.RTAG_ID = RtagId;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) ISRowCount NUMBER;CURSOR curPackageClash ISSELECT pkg.PKG_NAME,er.*FROM (/* Get existing referenced packages */SELECT pv.PKG_ID,pv.V_EXTFROM RELEASE_LINKS rl,RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rl.RTAG_ID = nRtagIdAND rl.REF_RTAG_ID = rc.RTAG_IDAND rc.PV_ID = pv.PV_ID) er,(/* Get current reference packages */SELECT pv.PKG_ID,pv.V_EXTFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.RTAG_ID = nRefRtagIdAND rc.PV_ID = pv.PV_ID) cr,PACKAGES PKGWHERE er.PKG_ID = cr.PKG_IDAND 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 ) THENRAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );END IF;IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THENRAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );END IF;/*-------------------------------------------------------*/ProblemString := NULL;-- Check if release already has referencesSELECT COUNT(rl.RTAG_ID) INTO RowCountFROM RELEASE_LINKS rlWHERE rl.RTAG_ID = nRtagId;IF RowCount > 0 THEN-- Found existing references-- Make sure there is no package clashesOPEN curPackageClash;FETCH curPackageClash INTO recPackageClash;IF curPackageClash%FOUND THENProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;WHILE curPackageClash%FOUNDLOOPEXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT || UTL_TCP.CRLF ) > 200; -- Do not allow variable overflowProblemString := 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 referencedREMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);-- Add new linked packages to releaseINSERT 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_STATEFROM RELEASE_CONTENT rcWHERE rc.RTAG_ID = nRefRtagId;-- Copy ignore warnings for referenced packagesINSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)SELECT nRtagId,iw.PV_ID,iw.DPV_ID,iw.IS_PATCH_IGNOREFROM IGNORE_WARNINGS iw,RELEASE_CONTENT rcWHERE iw.RTAG_ID = rc.RTAG_IDAND iw.PV_ID = rc.PV_IDAND rc.RTAG_ID = nRefRtagId;-- Reference releaseINSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)VALUES ( nRtagId, nRefRtagId );-- Refresh Package statesTOUCH_RELEASE ( nRtagId );END IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) ISBEGIN/*--------------- Business Rules Here -------------------*/IF (nRtagId = 0) OR ( nRtagId IS NULL ) THENRAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );END IF;IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THENRAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );END IF;/*-------------------------------------------------------*/-- Remove ignore warnings for those packages who use referenced packagesDELETE FROM IGNORE_WARNINGS iwWHERE iw.RTAG_ID = nRtagIdAND iw.DPV_ID IN (SELECT dep.DPV_IDFROM (/* Get referenced packages */SELECT pv.PKG_ID,pv.V_EXTFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.RTAG_ID = nRefRtagIdAND rc.PV_ID = pv.PV_ID) cr,(/* Get all dependencies for current release */SELECT DISTINCTpv.PKG_ID,pv.V_EXT,dep.DPV_IDFROM RELEASE_CONTENT rc,PACKAGE_DEPENDENCIES dep,PACKAGE_VERSIONS pvWHERE rc.RTAG_ID = nRtagIdAND rc.PV_ID = dep.PV_IDAND dep.PV_ID = pv.PV_ID) depWHERE dep.PKG_ID = cr.PKG_IDAND 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 referenceDELETE FROM IGNORE_WARNINGS iwWHERE iw.RTAG_ID = nRtagIdAND iw.PV_ID IN (SELECT pv.PV_IDFROM (/* Get referenced packages */SELECT pv.PKG_ID,pv.V_EXTFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.RTAG_ID = nRefRtagIdAND rc.PV_ID = pv.PV_ID) cr,RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE pv.PKG_ID = cr.PKG_IDAND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')AND rc.RTAG_ID = nRtagIdAND rc.PV_ID = pv.PV_ID);-- Remove matching packages from releaseDELETE FROM RELEASE_CONTENT rcWHERE rc.RTAG_ID = nRtagIdAND rc.PV_ID IN (SELECT pv.PV_IDFROM (/* Get referenced packages */SELECT pv.PKG_ID,pv.V_EXTFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.RTAG_ID = nRefRtagIdAND rc.PV_ID = pv.PV_ID) cr,RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE pv.PKG_ID = cr.PKG_IDAND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')AND rc.RTAG_ID = nRtagIdAND rc.PV_ID = pv.PV_ID);-- Remove Reference releaseDELETEFROM RELEASE_LINKS rlWHERE rl.RTAG_ID = nRtagIdAND rl.REF_RTAG_ID = nRefRtagId;-- Refresh Package statesTOUCH_RELEASE ( nRtagId );END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IScReleaseMode CHAR(1);cPvMode CHAR(1);BEGIN-- Get Release ModeSELECT rt.OFFICIAL INTO cReleaseModeFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = RtagId;-- Get Package ModeSELECT pv.DLOCKED INTO cPvModeFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID = PvId;-- Only check if package is lockedIF (cPvMode = 'Y') THENIF (cReleaseMode != 'N') AND (Permission != 'Y')THENRAISE_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;/CREATE OR REPLACE PACKAGE BODY 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 ) ISRtagId NUMBER;ParentRtagId NUMBER;RecCount NUMBER := 0;VtreeId NUMBER;BEGIN/*--------------- Business Rules Here -------------------*/-- Check for missing parametersIF (sReleaseName IS NULL) OR (nUserId IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );END IF;-- Check for duplicate Release NamesSELECT COUNT(rt.RTAG_ID) INTO RecCountFROM RELEASE_TAGS rtWHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )AND rt.PROJ_ID = nProjId;IF (RecCount > 0) THENRAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');END IF;/*-------------------------------------------------------*/-- Get rtag_idSELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;-- Get Parent RtagIdParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );-- Create new releaseINSERT 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 OrderUPDATE_DISPLAY_ORDER ( nProjId );/* Log Project Action */Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );-- Import Release ContentsIF (NOT nSourceRtagId IS NULL) THENImport_Release_Contents ( nSourceRtagId, RtagId, nUserId );END IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) ISBEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/UPDATE RELEASE_TAGS urt SETurt.DISPLAY_ORDER = (SELECT qry.REC_NUMFROM (SELECT rel.*, ROWNUM AS REC_NUMFROM (SELECT rt.RTAG_ID,rt.DISPLAY_ORDER,DECODE( rt.PARENT_RTAG_ID,rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_IDFROM RELEASE_TAGS rtWHERE rt.PROJ_ID = nProjId) relSTART WITH rel.PARENT_RTAG_ID = 0CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_IDORDER SIBLINGS BY rel.DISPLAY_ORDER) qryWHERE qry.RTAG_ID = urt.RTAG_ID)WHERE urt.PROJ_ID = nProjId;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER ) ISnIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();SeqNum NUMBER;BEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/nIdCollector := IN_LIST_NUMBER ( sRtagIdList );-- Set start sequence numberSeqNum := 1;FOR i IN 1..nIdCollector.COUNTLOOP-- Update new display orderUPDATE RELEASE_TAGS rt SETrt.DISPLAY_ORDER = SeqNumWHERE rt.PROJ_ID = nProjIdAND 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 ) ISRecCount NUMBER := 0;ProjId NUMBER;BEGIN/*--------------- Business Rules Here -------------------*/-- Check for missing parametersIF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);END IF;-- Check for duplicate Release NamesSELECT rt.PROJ_ID INTO ProjIdFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nRtagId;SELECT COUNT(rt.RTAG_ID) INTO RecCountFROM RELEASE_TAGS rtWHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )AND rt.RTAG_ID != nRtagIdAND rt.PROJ_ID = ProjId;IF (RecCount > 0) THENRAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');END IF;/*-------------------------------------------------------*/-- Update release detailsUPDATE RELEASE_TAGS rt SETrt.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 = cStateWHERE rt.RTAG_ID = nRtagId;-- Update display OrderUPDATE_DISPLAY_ORDER ( ProjId );/* Log Project Action */Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) ISRecCount NUMBER := 0;sReleaseId VARCHAR2(4000);ProjId NUMBER;BEGIN/*--------------- Business Rules Here -------------------*/IF (nRtagId IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId );END IF;-- Check for any kidsSELECT COUNT( rt.RTAG_ID ) INTO RecCountFROM RELEASE_TAGS rtWHERE rt.PARENT_RTAG_ID = nRtagIdAND rt.RTAG_ID != rt.PARENT_RTAG_ID;IF (RecCount > 0) THENRAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.' );END IF;/*-------------------------------------------------------*/-- Clear the release contentsClean_Release_Contents ( nRtagId, nUserId );/* Log Project Action */SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseIdFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nRtagId;Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );-- Remove ReleaseDELETEFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nRtagId;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER ) ISsSourceLocation VARCHAR2(4000);sTargetLocation VARCHAR2(4000);ProjId NUMBER;cReleaseMode CHAR(1);RconId NUMBER;CURSOR curReleaseConfigs ISSELECT *FROM RELEASE_CONFIG rcWHERE rc.RTAG_ID = nSourceRtagId;recReleaseConfigs curReleaseConfigs%ROWTYPE;BEGIN/*--------------- Business Rules Here -------------------*/IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );END IF;IF (nSourceRtagId = nTargetRtagId) THENRAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );END IF;-- Check if Target release is in OPEN modeSELECT rt.OFFICIAL INTO cReleaseModeFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nTargetRtagId;IF (cReleaseMode != 'N') THENRAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );END IF;/*-------------------------------------------------------*/-- Clean target contentsClean_Release_Contents ( nTargetRtagId, nUserId );-- Import Released Area ContentsINSERT 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_STATEFROM RELEASE_CONTENT rcWHERE rc.RTAG_ID = nSourceRtagId;--Import Release Configuration InformationOPEN curReleaseConfigs;FETCH curReleaseConfigs INTO recReleaseConfigs;WHILE curReleaseConfigs%FOUNDLOOP-- Get the next rcon idSELECT 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 statesINSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )SELECT nTargetRtagId AS RTAG_ID,igw.PV_ID,igw.DPV_IDFROM IGNORE_WARNINGS igwWHERE igw.rtag_id = nSourceRtagId;/* Log Project Action */-- Get Source LocationSELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO sSourceLocationFROM RELEASE_TAGS rt,PROJECTS prWHERE rt.PROJ_ID = pr.PROJ_IDAND rt.RTAG_ID = nSourceRtagId;-- Get Target LocationSELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO sTargetLocationFROM RELEASE_TAGS rt,PROJECTS prWHERE rt.PROJ_ID = pr.PROJ_IDAND rt.RTAG_ID = nTargetRtagId;-- Get project idSELECT rt.PROJ_ID INTO ProjIdFROM RELEASE_TAGS rtWHERE 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 ) ISRecCount NUMBER;rconIdList VARCHAR2(4000);BEGIN/*--------------- Business Rules Here -------------------*/IF (nRtagId IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId );END IF;-- Check if other release references this releaseSELECT COUNT( rl.RTAG_ID ) INTO RecCountFROM RELEASE_LINKS rlWHERE rl.REF_RTAG_ID = nRtagId;IF (RecCount > 0) THENRAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.' );END IF;/*-------------------------------------------------------*/-- Delete Release linksDELETEFROM RELEASE_LINKS rlWHERE rl.RTAG_ID = nRtagId;-- Delete ignore warningDELETEFROM IGNORE_WARNINGS iwWHERE iw.RTAG_ID = nRtagId;-- Delete Build Order cached calculationsDELETEFROM BUILD_ORDER boWHERE bo.RTAG_ID = nRtagId;-- Delete Notification HistoryDELETEFROM NOTIFICATION_HISTORY nhWHERE nh.RTAG_ID = nRtagId;-- Delete Released Area ContentsDELETEFROM RELEASE_CONTENT rcWHERE rc.RTAG_ID = nRtagId;-- Delete Work In Progress Area ContentsDELETEFROM WORK_IN_PROGRESS wipWHERE wip.RTAG_ID = nRtagId;-- Delete Pending Area ContentsDELETEFROM PLANNED plWHERE pl.RTAG_ID = nRtagId;-- Delete Deprecated Packages (Added By Rupesh Solanki 29/06/2006)DELETEFROM DEPRECATED_PACKAGES dpWHERE dp.RTAG_ID = nRtagId;-- Delete Project Action Log (Added By Rupesh Solanki 29/06/2006)DELETEFROM PROJECT_ACTION_LOG palWHERE pal.RTAG_ID = nRtagId;-- Delete Do Not Ripple Contents (Added By Rupesh Solanki 29/06/2006)DELETEFROM DO_NOT_RIPPLE dnrWHERE dnr.RTAG_ID = nRtagId;-- Delete Dash Board Contents (Added By Rupesh Solanki 16/02/2007)DELETEFROM DASH_BOARD dbWHERE 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 )LOOPrconIdList := rconIdList || rcon.RCON_ID || ',';END LOOP;pk_buildapi.DELETE_DAEMON(rconIdList);-- Delete Release Metrics Contents (Added By Jeremy Tweddle 28/03/2008)DELETEFROM RELEASE_METRICS rmWHERE rm.RTAG_ID = nRtagId;-- Delete Release Configuration Contents ( Added By Rupesh Solanki 10/04/2007)DELETEFROM RELEASE_CONFIG rcWHERE rc.RTAG_ID = nRtagId;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER ISnSourceParentRtagId NUMBER;BEGIN/*--------------- Business Rules Here -------------------*/IF (nRtagId IS NULL) OR (cIsBranch IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );END IF;/*-------------------------------------------------------*/IF ( nSourceRtagId IS NULL ) THEN-- Create new on main branchRETURN nRtagId;ELSE-- Create from source rtag_id-- Find parent of Source RtagIdSELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagIdFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = nSourceRtagId;IF (UPPER(cIsBranch) = 'Y') THENRETURN nSourceRtagId;ELSEIF (nSourceRtagId = nSourceParentRtagId) THENRETURN nRtagId;ELSERETURN 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 ) ISIsBaseView CHAR(1);BEGIN-- Check if the view is BASE VIEWSELECT vi.BASE_VIEW INTO IsBaseViewFROM VIEWS viWHERE vi.VIEW_ID = ViewId;IF (IsBaseView = 'Y') THEN-- Get Base view contentOPEN RecordSet FORSELECT 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_TYPEFROM release_content rel,packages pkg,package_versions pvWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.BASE_VIEW_ID = ViewIdAND rel.RTAG_ID = RtagIdORDER BY UPPER(pkg.PKG_NAME);ELSE-- Get non base view contentOPEN RecordSet FORSELECT 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_TYPEFROM release_content rel,packages pkg,package_versions pv,VIEW_DEF vdWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND vd.VIEW_ID = ViewIdAND vd.PKG_ID = pv.PKG_IDAND rel.RTAG_ID = RtagIdORDER BY UPPER(pkg.PKG_NAME);END IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) ISReleaseLocation VARCHAR2(4000);sPkgVersion VARCHAR2(4000);nPkgId NUMBER;sVExt VARCHAR2(4000);IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';-- Find package for replacementCURSOR curReplacePkg ISSELECT pv.PV_IDFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.PV_ID = pv.PV_IDAND rc.RTAG_ID = RtagIdAND pv.PKG_ID = nPkgIdAND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );recReplacePkg curReplacePkg%ROWTYPE;BEGIN-- Get is_patch, pkg_id and v_extSELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExtFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID = newPvId;-- Never put patch in relesed areaIF (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_EXTOPEN curReplacePkg;FETCH curReplacePkg INTO recReplacePkg;IF curReplacePkg%FOUND THEN-- Replace packageREPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );ELSE-- Add new packageINSERT 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 ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = RtagId;SELECT pv.PKG_VERSION INTO sPkgVersionFROM PACKAGE_VERSIONS pvWHERE 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 ) ISReleaseLocation VARCHAR2(4000);sPkgVersion VARCHAR2(4000);BEGIN-- Replace PackageUPDATE RELEASE_CONTENTSET pv_id = newPvId,insert_stamp = Ora_Sysdate,insertor_id = UserId,product_state = NULLWHERE rtag_id = RtagIdAND pv_id = oldPvId;/* LOG ACTION */SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = RtagId;SELECT pv.PKG_VERSION INTO sPkgVersionFROM PACKAGE_VERSIONS pvWHERE 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 ) ISReleaseLocation VARCHAR2(4000);BEGIN-- Delete old packageDELETEFROM RELEASE_CONTENT rcWHERE rc.PV_ID = PvIdAND rc.RTAG_ID = RtagId;/* LOG ACTION */SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND 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 ) ISReleaseLocation VARCHAR2(4000);CURSOR curMatchingPackage ISSELECT mpv.PV_IDFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS mpv,PACKAGE_VERSIONS pvWHERE rc.PV_ID = mpv.PV_IDAND rc.RTAG_ID = RtagIdAND pv.PV_ID = PvIdAND pv.PKG_ID = mpv.PKG_IDAND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );recMatchingPackage curMatchingPackage%ROWTYPE;BEGINOPEN curMatchingPackage;FETCH curMatchingPackage INTO recMatchingPackage;IF curMatchingPackage%FOUND THEN-- Delete old packageDELETEFROM RELEASE_CONTENT rcWHERE rc.PV_ID = recMatchingPackage.PV_IDAND rc.RTAG_ID = RtagId;/* LOG ACTION */SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND 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 ISReturnValue NUMBER;BEGINSELECT rc.BASE_VIEW_ID INTO ReturnValueFROM RELEASE_CONTENT rcWHERE rc.RTAG_ID = RtagIdAND rc.PV_ID = PvId;RETURN ReturnValue;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) ISBEGIN-- Reset Ignore warnings up-the-treeRESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );-- Refresh Package statesTOUCH_RELEASE ( RtagId );END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) ISCURSOR curReleases ISSELECT rc.RTAG_IDFROM RELEASE_CONTENT rcWHERE rc.PV_ID = PvId;recReleases curReleases%ROWTYPE;BEGINOPEN curReleases;FETCH curReleases INTO recReleases;WHILE curReleases%FOUNDLOOPRUN_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 ) ISBEGINUPDATE RELEASE_CONTENT rc SETrc.BASE_VIEW_ID = NewViewIdWHERE rc.PV_ID = PvIdAND rc.RTAG_ID = RtagId;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) ISRowCount NUMBER;CURSOR curPackageClash ISSELECT pkg.PKG_NAME,er.*FROM (/* Get existing referenced packages */SELECT pv.PKG_ID,pv.V_EXTFROM RELEASE_LINKS rl,RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rl.RTAG_ID = nRtagIdAND rl.REF_RTAG_ID = rc.RTAG_IDAND rc.PV_ID = pv.PV_ID) er,(/* Get current reference packages */SELECT pv.PKG_ID,pv.V_EXTFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.RTAG_ID = nRefRtagIdAND rc.PV_ID = pv.PV_ID) cr,PACKAGES PKGWHERE er.PKG_ID = cr.PKG_IDAND 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 ) THENRAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );END IF;IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THENRAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );END IF;/*-------------------------------------------------------*/ProblemString := NULL;-- Check if release already has referencesSELECT COUNT(rl.RTAG_ID) INTO RowCountFROM RELEASE_LINKS rlWHERE rl.RTAG_ID = nRtagId;IF RowCount > 0 THEN-- Found existing references-- Make sure there is no package clashesOPEN curPackageClash;FETCH curPackageClash INTO recPackageClash;IF curPackageClash%FOUND THENProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;WHILE curPackageClash%FOUNDLOOPEXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT || UTL_TCP.CRLF ) > 200; -- Do not allow variable overflowProblemString := 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 referencedREMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);-- Add new linked packages to releaseINSERT 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_STATEFROM RELEASE_CONTENT rcWHERE rc.RTAG_ID = nRefRtagId;-- Copy ignore warnings for referenced packagesINSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)SELECT nRtagId,iw.PV_ID,iw.DPV_ID,iw.IS_PATCH_IGNOREFROM IGNORE_WARNINGS iw,RELEASE_CONTENT rcWHERE iw.RTAG_ID = rc.RTAG_IDAND iw.PV_ID = rc.PV_IDAND rc.RTAG_ID = nRefRtagId;-- Reference releaseINSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)VALUES ( nRtagId, nRefRtagId );-- Refresh Package statesTOUCH_RELEASE ( nRtagId );END IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) ISBEGIN/*--------------- Business Rules Here -------------------*/IF (nRtagId = 0) OR ( nRtagId IS NULL ) THENRAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );END IF;IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THENRAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );END IF;/*-------------------------------------------------------*/-- Remove ignore warnings for those packages who use referenced packagesDELETE FROM IGNORE_WARNINGS iwWHERE iw.RTAG_ID = nRtagIdAND iw.DPV_ID IN (SELECT dep.DPV_IDFROM (/* Get referenced packages */SELECT pv.PKG_ID,pv.V_EXTFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.RTAG_ID = nRefRtagIdAND rc.PV_ID = pv.PV_ID) cr,(/* Get all dependencies for current release */SELECT DISTINCTpv.PKG_ID,pv.V_EXT,dep.DPV_IDFROM RELEASE_CONTENT rc,PACKAGE_DEPENDENCIES dep,PACKAGE_VERSIONS pvWHERE rc.RTAG_ID = nRtagIdAND rc.PV_ID = dep.PV_IDAND dep.PV_ID = pv.PV_ID) depWHERE dep.PKG_ID = cr.PKG_IDAND 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 referenceDELETE FROM IGNORE_WARNINGS iwWHERE iw.RTAG_ID = nRtagIdAND iw.PV_ID IN (SELECT pv.PV_IDFROM (/* Get referenced packages */SELECT pv.PKG_ID,pv.V_EXTFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.RTAG_ID = nRefRtagIdAND rc.PV_ID = pv.PV_ID) cr,RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE pv.PKG_ID = cr.PKG_IDAND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')AND rc.RTAG_ID = nRtagIdAND rc.PV_ID = pv.PV_ID);-- Remove matching packages from releaseDELETE FROM RELEASE_CONTENT rcWHERE rc.RTAG_ID = nRtagIdAND rc.PV_ID IN (SELECT pv.PV_IDFROM (/* Get referenced packages */SELECT pv.PKG_ID,pv.V_EXTFROM RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE rc.RTAG_ID = nRefRtagIdAND rc.PV_ID = pv.PV_ID) cr,RELEASE_CONTENT rc,PACKAGE_VERSIONS pvWHERE pv.PKG_ID = cr.PKG_IDAND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')AND rc.RTAG_ID = nRtagIdAND rc.PV_ID = pv.PV_ID);-- Remove Reference releaseDELETEFROM RELEASE_LINKS rlWHERE rl.RTAG_ID = nRtagIdAND rl.REF_RTAG_ID = nRefRtagId;-- Refresh Package statesTOUCH_RELEASE ( nRtagId );END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IScReleaseMode CHAR(1);cPvMode CHAR(1);BEGIN-- Get Release ModeSELECT rt.OFFICIAL INTO cReleaseModeFROM RELEASE_TAGS rtWHERE rt.RTAG_ID = RtagId;-- Get Package ModeSELECT pv.DLOCKED INTO cPvModeFROM PACKAGE_VERSIONS pvWHERE pv.PV_ID = PvId;-- Only check if package is lockedIF (cPvMode = 'Y') THENIF (cReleaseMode != 'N') AND (Permission != 'Y')THENRAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );END IF;END IF;END;/*-------------------------------------------------------------------------------------------------------*/END PK_RELEASE;/CREATE OR REPLACE PACKAGE BODY 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 ) ISnOsId NUMBER;BEGIN/*--------------- Business Rules Here -------------------*/-- OS Name Requirements --IF (sOsName IS NULL) THENRAISE_APPLICATION_ERROR (-20000, 'OsName cannot be NULL.');END IF;-- File Requirements --IF (NOT sFileName IS NULL) THENIF (nByteSize IS NULL) THENRAISE_APPLICATION_ERROR (-20000, 'Byte Size cannot be NULL.');ELSIF (sCRCcksum IS NULL) THENRAISE_APPLICATION_ERROR (-20000, 'CRC CKSUM cannot be NULL.');END IF;END IF;-- Folder Requirements ---- No requirements for now./*-------------------------------------------------------*/-- Get OsIdnOsId := Get_OsId ( sOsName );-- Insert component entryINSERT 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);EXCEPTIONWHEN DUP_VAL_ON_INDEXTHENRAISE_APPLICATION_ERROR (-20000, 'Cannot have duplicate product components.');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 ) ISnOsId NUMBER;BEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/-- Get OsIdnOsId := Get_OsId ( sOsName );-- Delete component entryDELETEFROM PRODUCT_COMPONENTS pcWHERE pc.PV_ID = nPvIdAND pc.OS_ID = nOsId;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER ISCode NUMBER;BEGIN-- Get Platform Code --SELECT pf.CODE INTO CodeFROM PLATFORMS pfWHERE UPPER( pf.NAME ) = UPPER( sOsName );RETURN Code;EXCEPTIONWHEN NO_DATA_FOUND THENRAISE_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) ISBEGINUPDATE BUILD_SERVICE_CONFIGSET CONFIG = sDatabaseServerWHERE SERVICE = 'DATABASE SERVER';UPDATE BUILD_SERVICE_CONFIGSET CONFIG = sWebServerWHERE SERVICE = 'WEB SERVER';UPDATE BUILD_SERVICE_CONFIGSET CONFIG = sMailServerWHERE SERVICE = 'MAIL SERVER';UPDATE BUILD_SERVICE_CONFIGSET CONFIG = sMailSenderWHERE SERVICE = 'BUILD FAILURE MAIL SENDER';END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue in VARCHAR2 ) ISGBE_ID NUMBER;BEGIN-- Get GBE_IDSELECT 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 ) ISBEGINDELETE FROM GBE_MACHTYPE WHERE GBE_ID = nGBE_ID;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 ) ISBEGINUPDATE GBE_MACHTYPESET GBE_VALUE = sGBEValueWHERE GBE_ID = nGBE_ID;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER ) ISnRecordNumber NUMBER;nRconId NUMBER;BEGIN-- Get RCON_IDSELECT SEQ_RCON_ID.NEXTVAL INTO nRconId FROM DUAL;SELECT count(*) INTO nRecordNumberFROM RELEASE_CONFIGWHERE RTAG_ID = nRtagId;IF nRecordNumber = 0 THENINSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)VALUES (nRconId, nRtagId, sDaemonHostname, 'M', nGbeId);ELSEINSERT 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;/CREATE OR REPLACE PACKAGE BODY "PK_ENVIRONMENT"IS/*------------------------------|| Last Modified: G.Huddy|| Modified Date: 28/May/2008|| Body Version: 1.3------------------------------*//*-------------------------------------------------------------------------------------------------------*/FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)RETURN NUMBERISBEGIN/*|| 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 NUMBERISenvtab NUMBER := -1;CURSOR curareaISSELECT 2 AS envtabFROM release_content rcWHERE rc.rtag_id = rtagid AND rc.pv_id = pvidUNIONSELECT 0 AS envtabFROM work_in_progress wipWHERE wip.rtag_id = rtagid AND wip.pv_id = pvidUNIONSELECT 1 AS envtabFROM planned plWHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;recarea curarea%ROWTYPE;BEGINOPEN curarea;FETCH curareaINTO recarea;IF curarea%FOUNDTHENenvtab := recarea.envtab;END IF;CLOSE curarea;RETURN envtab;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)RETURN NUMBERISispatch package_versions.dlocked%TYPE;viewid NUMBER := -1;CURSOR curviewISSELECT rc.base_view_id AS view_idFROM release_content rcWHERE rc.rtag_id = rtagid AND rc.pv_id = pvidUNIONSELECT wip.view_id AS view_idFROM work_in_progress wipWHERE wip.rtag_id = rtagid AND wip.pv_id = pvidUNIONSELECT pl.view_id AS view_idFROM planned plWHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;recview curview%ROWTYPE;BEGIN-- Get dlock stateSELECT pv.is_patchINTO ispatchFROM package_versions pvWHERE pv.pv_id = pvid;-- Decide which view id should package go under.IF (ispatch != 'Y') OR (ispatch IS NULL)THEN-- Get VIEW ID of PackageOPEN curview;FETCH curviewINTO recview;IF curview%FOUNDTHENviewid := recview.view_id;ELSEraise_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_idINTO viewidFROM release_content rc, package_patches ppvWHERE rc.rtag_id = rtagidAND rc.pv_id = ppv.pv_idAND ppv.patch_id = pvid;END IF;RETURN viewid;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE add_package (pvid IN NUMBER,viewid IN NUMBER,rtagid IN NUMBER,userid IN NUMBER)ISdlocked package_versions.dlocked%TYPE;envtab NUMBER;BEGINIF can_edit_pkg_in_project (pvid, rtagid) = 1THEN-- Get dlock stateSELECT pv.dlockedINTO dlockedFROM package_versions pvWHERE pv.pv_id = pvid;-- Get which area should go underenvtab := select_environment_area (dlocked);-- Loglog_action (pvid, 'action', userid, 'Start of Package Add...');-- Remove PackageIF envtab = 0THEN-- WORK IN PROGRESS --pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);ELSIF envtab = 1THEN-- PENDING --pk_planned.add_package (pvid, viewid, rtagid, userid);ELSIF envtab = 2THEN-- RELEASED ---- NOTE: this package will be replaced with matching packagepk_release.add_package (pvid, viewid, rtagid, userid);-- Now do post Release Actionspk_release.run_post_actions (pvid, rtagid);END IF;-- Loglog_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)ISnidcollector 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)THENraise_application_error (-20000,'Please select at least one package.');END IF;/*-------------------------------------------------------*/nidcollector := in_list_number (pvidlist);FOR i IN 1 .. nidcollector.COUNTLOOPpvid := 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)ISdlocked 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 removedSELECT COUNT (pv.pv_id)INTO ROWCOUNTFROM package_versions pvWHERE pv.pv_id = oldpvid;/*-------------------------------------------------------*//* This procedure is usually used by "History" option in Release Manager */-- Get dlock stateSELECT pv.dlockedINTO dlockedFROM package_versions pvWHERE pv.pv_id = newpvid;-- Get VIEW_ID ---IF ROWCOUNT = 1THENviewid := get_view_location (oldpvid, rtagid);ELSE-- Set ViewID to defaultviewid := 7;END IF;-- Get which area should go underenvtab := select_environment_area (dlocked);-- Loglog_action (oldpvid, 'action', userid, 'Start of Package Replace...');-- Replace packageIF envtab = 0THEN-- WORK IN PROGRESS ---- Delete old packagepk_work_in_progress.remove_package (oldpvid, rtagid, userid);-- Add new packagepk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);ELSIF envtab = 1THEN-- PENDING ---- Delete old packagepk_planned.remove_package (oldpvid, rtagid, userid);-- Add new packagepk_planned.add_package (newpvid, viewid, rtagid, userid);ELSIF envtab = 2THEN-- RELEASED ---- Delete old packagepk_release.remove_package (oldpvid, rtagid, userid);-- Add new packagepk_release.add_package (newpvid, viewid, rtagid, userid);-- Now do post Release Actionspk_release.run_post_actions (newpvid, rtagid);END IF;-- Loglog_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 NUMBERISenvtab NUMBER;isused BOOLEAN;recordcount NUMBER;BEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/-- Find location of packageenvtab := get_package_area (pvid, rtagid);-- Remove PackageIF envtab = 0THEN-- WORK IN PROGRESS ---- Delete packagepk_work_in_progress.remove_package (pvid, rtagid, userid);RETURN 0;ELSIF envtab = 1THEN-- PENDING ---- Delete packagepk_planned.remove_package (pvid, rtagid, userid);RETURN 0;ELSIF envtab = 2THEN-- RELEASED ---- Check if is used by other packagesisused := TRUE;IF forceremove = 'N'THENSELECT COUNT (pv.pv_id)INTO recordcountFROM (SELECT dpv.pkg_id, dpv.v_extFROM release_content rc,package_dependencies dep,package_versions dpvWHERE rc.rtag_id = rtagidAND rc.pv_id = dep.pv_idAND dep.dpv_id = dpv.pv_id) rdep,package_versions pvWHERE pv.pkg_id = rdep.pkg_idAND NVL (pv.v_ext, '|LINK_A_NULL|') =NVL (rdep.v_ext, '|LINK_A_NULL|')AND pv.pv_id = pvid;IF recordcount > 0THENRETURN 1; -- Return 1 as package being usedELSEisused := FALSE;END IF;END IF;IF forceremove = 'Y' OR NOT isusedTHEN-- Delete old packagepk_release.remove_package (pvid, rtagid, userid);-- Now do post Release Actionspk_release.run_post_actions (pvid, rtagid);RETURN 0;END IF;END IF;END;/*-------------------------------------------------------------------------------------------------------*/-- DEVI-45275 added the return of the new "operation" column in the recordset.PROCEDURE get_environment_items (viewtype IN NUMBER,userid IN NUMBER,rtagid IN NUMBER,sviewidshowlist IN VARCHAR2,ntruerecordcount OUT NUMBER,recordset OUT typecur)ISBEGIN-- Get true record count because views can give false countSELECT COUNT (pl.pv_id)INTO ntruerecordcountFROM environment_view plWHERE pl.rtag_id = rtagid;IF viewtype = 1THEN/*--- GUEST VIEW ---*/OPEN recordset FORSELECT *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,rel.operationFROM environment_view rel, views viWHERE rel.view_id = vi.view_idAND rtag_id = rtagidAND 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,rel.operationFROM environment_view rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = vi.view_idAND rel.view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagid) ordORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);ELSIF viewtype = 2THEN/*--- PERSONAL VIEW ---*/OPEN recordset FORSELECT *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,rel.operationFROM environment_view rel,view_settings vs,views viWHERE rel.view_id = vi.view_idAND vs.view_id = rel.view_idAND vs.user_id = useridAND rtag_id = rtagidAND 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,rel.operationFROM environment_view rel,PACKAGES pkg,package_versions pv,views vi,view_settings vsWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = vi.view_idAND vs.view_id = vi.view_idAND vs.user_id = useridAND rel.view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagidUNION/* 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,rel.operationFROM view_settings vs,view_def vd,views vi,environment_view rel,package_versions pvWHERE vs.view_id = vi.view_idAND rel.pv_id = pv.pv_idAND vd.pkg_id = pv.pkg_idAND vd.view_id = vi.view_idAND vi.base_view = 'N'AND rel.rtag_id = rtagidAND vs.user_id = useridAND 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,rel.operationFROM users usr,view_settings vs,view_def vd,views vi,environment_view rel,PACKAGES pkg,package_versions pvWHERE vs.user_id = usr.user_idAND vs.view_id = vi.view_idAND vd.view_id = vi.view_idAND pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.rtag_id = rtagidAND vd.pkg_id = pkg.pkg_idAND 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) ordORDER 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)ISBEGIN-- Get true record count because views can give false countSELECT COUNT (rc.pv_id)INTO ntruerecordcountFROM release_content rcWHERE rc.rtag_id = rtagid;IF viewtype = 1THEN/*--- GUEST VIEW ---*/OPEN recordset FORSELECT *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_descriptionFROM release_content rel, views viWHERE rel.base_view_id = vi.view_idAND rtag_id = rtagidAND 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND 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) ordORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);ELSIF viewtype = 2THEN/*--- PERSONAL VIEW ---*/OPEN recordset FORSELECT *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_descriptionFROM release_content rel,view_settings vs,views viWHERE rel.base_view_id = vi.view_idAND vs.view_id = rel.base_view_idAND vs.user_id = useridAND rtag_id = rtagidAND 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views vi,view_settings vsWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND vs.view_id = vi.view_idAND vs.user_id = useridAND rel.base_view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagidUNION/* 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_descriptionFROM view_settings vs,view_def vd,views vi,release_content rel,package_versions pvWHERE vs.view_id = vi.view_idAND rel.pv_id = pv.pv_idAND vd.pkg_id = pv.pkg_idAND vd.view_id = vi.view_idAND vi.base_view = 'N'AND rel.rtag_id = rtagidAND vs.user_id = useridAND 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_descriptionFROM users usr,view_settings vs,view_def vd,views vi,release_content rel,PACKAGES pkg,package_versions pvWHERE vs.user_id = usr.user_idAND vs.view_id = vi.view_idAND vd.view_id = vi.view_idAND pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.rtag_id = rtagidAND vd.pkg_id = pkg.pkg_idAND 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) ordORDER 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)ISBEGIN-- Get true record count because views can give false countSELECT COUNT (wip.pv_id)INTO ntruerecordcountFROM work_in_progress wipWHERE wip.rtag_id = rtagid;IF viewtype = 1THEN/*--- GUEST VIEW ---*/OPEN recordset FORSELECT *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_descriptionFROM work_in_progress rel, views viWHERE rel.view_id = vi.view_idAND rtag_id = rtagidAND 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_descriptionFROM work_in_progress rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = vi.view_idAND rel.view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagid) ordORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);ELSIF viewtype = 2THEN/*--- PERSONAL VIEW ---*/OPEN recordset FORSELECT *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_descriptionFROM work_in_progress rel,view_settings vs,views viWHERE rel.view_id = vi.view_idAND vs.view_id = rel.view_idAND vs.user_id = useridAND rtag_id = rtagidAND 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_descriptionFROM work_in_progress rel,PACKAGES pkg,package_versions pv,views vi,view_settings vsWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = vi.view_idAND vs.view_id = vi.view_idAND vs.user_id = useridAND rel.view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagidUNION/* 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_descriptionFROM view_settings vs,view_def vd,views vi,work_in_progress rel,package_versions pvWHERE vs.view_id = vi.view_idAND rel.pv_id = pv.pv_idAND vd.pkg_id = pv.pkg_idAND vd.view_id = vi.view_idAND vi.base_view = 'N'AND rel.rtag_id = rtagidAND vs.user_id = useridAND 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_descriptionFROM users usr,view_settings vs,view_def vd,views vi,work_in_progress rel,PACKAGES pkg,package_versions pvWHERE vs.user_id = usr.user_idAND vs.view_id = vi.view_idAND vd.view_id = vi.view_idAND pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.rtag_id = rtagidAND vd.pkg_id = pkg.pkg_idAND 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) ordORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);END IF;END;/*-------------------------------------------------------------------------------------------------------*/-- DEVI-45275 added the return of the new "operation" column in the recordset.PROCEDURE get_pending_items (viewtype IN NUMBER,userid IN NUMBER,rtagid IN NUMBER,sviewidshowlist IN VARCHAR2,ntruerecordcount OUT NUMBER,recordset OUT typecur)ISBEGIN-- Get true record count because views can give false countSELECT COUNT (pl.pv_id)INTO ntruerecordcountFROM planned plWHERE pl.rtag_id = rtagid;IF viewtype = 1THEN/*--- GUEST VIEW ---*/OPEN recordset FORSELECT *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,rel.operationFROM planned rel, views viWHERE rel.view_id = vi.view_idAND rtag_id = rtagidAND 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,rel.operationFROM planned rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = vi.view_idAND rel.view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagid) ordORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);ELSIF viewtype = 2THEN/*--- PERSONAL VIEW ---*/OPEN recordset FORSELECT *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,rel.operationFROM planned rel, view_settings vs, views viWHERE rel.view_id = vi.view_idAND vs.view_id = rel.view_idAND vs.user_id = useridAND rtag_id = rtagidAND 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,rel.operationFROM planned rel,PACKAGES pkg,package_versions pv,views vi,view_settings vsWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = vi.view_idAND vs.view_id = vi.view_idAND vs.user_id = useridAND rel.view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagidUNION/* 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,rel.operationFROM view_settings vs,view_def vd,views vi,planned rel,package_versions pvWHERE vs.view_id = vi.view_idAND rel.pv_id = pv.pv_idAND vd.pkg_id = pv.pkg_idAND vd.view_id = vi.view_idAND vi.base_view = 'N'AND rel.rtag_id = rtagidAND vs.user_id = useridAND 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,rel.operationFROM users usr,view_settings vs,view_def vd,views vi,planned rel,PACKAGES pkg,package_versions pvWHERE vs.user_id = usr.user_idAND vs.view_id = vi.view_idAND vd.view_id = vi.view_idAND pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.rtag_id = rtagidAND vd.pkg_id = pkg.pkg_idAND 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) ordORDER 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)ISisbaseview CHAR (1);BEGIN-- Check if the view is BASE VIEWSELECT vi.base_viewINTO isbaseviewFROM views viWHERE vi.view_id = viewid;IF (isbaseview = 'Y')THEN-- Get Base view contentOPEN recordset FORSELECT 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,rel.operationFROM environment_view rel, PACKAGES pkg, package_versions pvWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = viewidAND rel.rtag_id = rtagidORDER BY UPPER (pkg.pkg_name);ELSE-- Get non base view contentOPEN recordset FORSELECT 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,rel.operationFROM environment_view rel,PACKAGES pkg,package_versions pv,view_def vdWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.rtag_id = rtagidAND vd.view_id = viewidAND vd.pkg_id = pv.pkg_idORDER BY UPPER (pkg.pkg_name);END IF;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)RETURN NUMBERISenvtab NUMBER;returnvalue NUMBER;return_not_found NUMBER := -1;BEGINenvtab := get_package_area (pvid, rtagid);IF envtab = 0THEN-- WORK IN PROGRESS --returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);ELSIF envtab = 1THEN-- PENDING --returnvalue := pk_planned.get_package_view (pvid, rtagid);ELSIF envtab = 2THEN-- RELEASED --returnvalue := pk_release.get_package_view (pvid, rtagid);ELSE-- This may be a Patch not located anywhere but unlockedreturnvalue := return_not_found;END IF;RETURN returnvalue;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)ISviewid NUMBER;envtab NUMBER;ispatch CHAR (1) := NULL;buildtype CHAR (1) := NULL;lastversionid NUMBER;BEGIN-- Check if package is patchSELECT pv.is_patch, pv.build_type, pv.last_pv_idINTO ispatch, buildtype, lastversionidFROM package_versions pvWHERE pv.pv_id = pvid;-- Get ViewIdviewid := get_package_view (pvid, rtagid);-- Remove from current areaenvtab := 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 buildsIF (envtab < 0)THEN-- Not found in work-in-progress or pendingIF (ispatch IS NULL) AND (buildtype = 'M')THENraise_application_error (-20000,'This package cannot be released here.');END IF;END IF;-- Loglog_action (pvid, 'action', userid, 'Start of Make Package Release...');IF envtab = 0THEN-- WORK IN PROGRESS --pk_work_in_progress.remove_package (pvid, rtagid, userid);ELSIF envtab = 1THEN-- PENDING --pk_planned.remove_package (pvid, rtagid, userid);END IF;-- Change package statepk_package.change_state (pvid, 'Y', userid);-- Make sure it is valid BASE VIEWIF viewid < 1THENviewid := 7; -- This is default base viewEND IF;IF (ispatch IS NULL)THEN-- Add package to new areapk_release.add_package (pvid, viewid, rtagid, userid);END IF;-- Now do post Release Actionspk_release.run_post_actions (pvid, rtagid);-- Now delete old version from DO_NOT_RIPPLE Table if it ExistsDELETE FROM do_not_rippleWHERE rtag_id = rtagid AND pv_id = lastversionid;-- Now delete old version from ADVISORY_RIPPLES Table if it ExistsDELETE FROM advisory_rippleWHERE rtag_id = rtagid AND pv_id = lastversionid;-- Loglog_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)ISviewid NUMBER;envtab NUMBER;ispatch CHAR (1) := NULL;buildtype CHAR (1) := NULL;lastversionid NUMBER;BEGIN-- Check if package is patchSELECT pv.is_patch, pv.build_type, pv.last_pv_idINTO ispatch, buildtype, lastversionidFROM package_versions pvWHERE pv.pv_id = pvid;IF vext <> ssv_extTHEN-- Get ViewIdviewid := get_package_view (clonefrompvid, rtagid);-- Remove from current areaenvtab := pk_environment.get_package_area (clonefrompvid, rtagid);ELSE-- Get ViewIdviewid := get_package_view (pvid, rtagid);-- Remove from current areaenvtab := 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 buildsIF (envtab < 0)THEN-- Not found in work-in-progress or pendingIF (ispatch IS NULL) AND (buildtype = 'M')THENraise_application_error (-20000,'This package cannot be released here.');END IF;END IF;-- Loglog_action (pvid, 'action', userid, 'Start of Make Package Release...');IF vext <> ssv_extTHENIF envtab = 0THEN-- WORK IN PROGRESS --pk_work_in_progress.remove_package (clonefrompvid, rtagid,userid);ELSIF envtab = 1THEN-- PENDING --pk_planned.remove_package (clonefrompvid, rtagid, userid);ELSIF envtab = 2THEN-- RELEASED --pk_release.remove_package (clonefrompvid, rtagid, userid);END IF;ELSEIF envtab = 0THEN-- WORK IN PROGRESS --pk_work_in_progress.remove_package (pvid, rtagid, userid);ELSIF envtab = 1THEN-- PENDING --pk_planned.remove_package (pvid, rtagid, userid);END IF;END IF;-- Change package statepk_package.change_state (pvid, 'Y', userid);-- Make sure it is valid BASE VIEWIF viewid < 1THENviewid := 7; -- This is default base viewEND IF;IF (ispatch IS NULL)THEN-- Add package to new areapk_release.add_package (pvid, viewid, rtagid, userid);END IF;-- Now do post Release Actionspk_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 ExistsDELETE FROM do_not_rippleWHERE rtag_id = rtagid AND pv_id = lastversionid;-- Now delete old version from ADVISORY_RIPPLES Table if it ExistsDELETE FROM advisory_rippleWHERE rtag_id = rtagid AND pv_id = lastversionid;-- Loglog_action (pvid, 'action', userid, 'End of Make Package Release...');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)ISviewid NUMBER;envtab NUMBER;BEGIN-- Get ViewId--ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );viewid := get_package_view (pvid, rtagid);-- Remove from current areaenvtab := pk_environment.get_package_area (pvid, rtagid);-- Loglog_action (pvid,'action',userid,'Start of Make Package UnRelease...');IF envtab = 2THEN-- RELEASE AREA --pk_release.remove_package (pvid, rtagid, userid);ELSIF envtab = 1THEN-- PENDING --pk_planned.remove_package (pvid, rtagid, userid);END IF;-- Change package statepk_package.change_state (pvid, 'N', userid);-- Make sure it is valid BASE VIEWIF viewid < 1THENviewid := 7; -- This is default base viewEND IF;-- Add package to new areapk_work_in_progress.add_package (pvid, viewid, rtagid, userid);-- Now do post Release Actionspk_release.run_post_actions (pvid, rtagid);-- Loglog_action (pvid, 'action', userid, 'End of Make Package UnRelease...');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)ISviewid NUMBER;ispatch CHAR (1) := NULL;buildtype CHAR (1) := NULL;BEGIN-- Check if package is patchSELECT pv.is_patch, pv.build_typeINTO ispatch, buildtypeFROM package_versions pvWHERE pv.pv_id = pvid;-- Get ViewIdviewid := get_package_view (pvid, rtagid);--ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );-- Loglog_action (pvid, 'action', userid, 'Start of Make Package Pending...');IF (ispatch IS NULL)THEN-- Remove from current areapk_work_in_progress.remove_package (pvid, rtagid, userid);-- Change package statepk_package.change_state (pvid, 'P', userid);-- Add package to new areapk_planned.add_package (pvid, viewid, rtagid, userid);END IF;-- Loglog_action (pvid, 'action', userid, 'End of Make Package Pending...');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)ISBEGIN-- Loglog_action (pvid,'action',userid,'Start of Package Pending Approval...');-- Change package statepk_package.change_state (pvid, 'A', userid);-- Loglog_action (pvid, 'action', userid,'End of Package Pending Approval...');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)ISviewid NUMBER;operation CHAR;BEGIN-- Get ViewIdviewid := get_package_view (pvid, rtagid);-- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );-- DEVI-45275-- If the package version is an official version that is to be rejected from a merge operation-- then find out in order to prevent it being added back to work-in-progress table . This will-- be denoted by the operation field in the planned table being A or Soperation := ' ';SELECT(CASE WHEN pl.operation IS NOT NULL THEN pl.operation ELSE ' ' END) INTO operationFROM planned plWHERE pl.PV_ID = pvidAND pl.RTAG_ID = rtagid;-- Loglog_action (pvid, 'action', userid, 'Start of Reject Package...');-- Remove from current areapk_planned.remove_package (pvid, rtagid, userid);-- DEVI-45275 - Prevent merge candidate from being added back to work-in-progress table .IF operation <> 'A' AND operation <> 'S'THEN-- Change package statepk_package.change_state (pvid, 'R', userid);-- Add package to new areapk_work_in_progress.add_package (pvid, viewid, rtagid, userid);ELSElog_action (pvid, 'action', userid, 'Rejected Package Merge');END IF;-- Loglog_action (pvid, 'action', userid, 'End of Reject Package...');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE change_package_view (pvid IN NUMBER,rtagid IN NUMBER,newviewid IN NUMBER)ISenvtab NUMBER;BEGINenvtab := pk_environment.get_package_area (pvid, rtagid);IF envtab = 0THEN-- WORK IN PROGRESS --pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);ELSIF envtab = 1THEN-- PENDING --pk_planned.change_package_view (pvid, rtagid, newviewid);ELSIF envtab = 2THEN-- 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)ISBEGINIF nsearcharea = 0THEN/* Search Work In Progress */OPEN recordset FORSELECT 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_emailFROM views vi,work_in_progress rc,PACKAGES pkg,package_versions pv,users usrWHERE rc.view_id = vi.view_idAND rc.pv_id = pv.pv_idAND pkg.pkg_id = pv.pkg_idAND pv.modifier_id = usr.user_idAND rc.rtag_id = nrtagidAND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)ORDER BY UPPER (pkg.pkg_name);ELSIF nsearcharea = 1THEN/* Search Pending */OPEN recordset FORSELECT 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_emailFROM views vi,planned rc,PACKAGES pkg,package_versions pv,users usrWHERE rc.view_id = vi.view_idAND rc.pv_id = pv.pv_idAND pkg.pkg_id = pv.pkg_idAND pv.modifier_id = usr.user_idAND rc.rtag_id = nrtagidAND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)ORDER BY UPPER (pkg.pkg_name);ELSIF nsearcharea = 2THEN/* Search Released */OPEN recordset FORSELECT 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_emailFROM views vi,release_content rc,PACKAGES pkg,package_versions pv,users usrWHERE rc.base_view_id = vi.view_idAND rc.pv_id = pv.pv_idAND pkg.pkg_id = pv.pkg_idAND pv.modifier_id = usr.user_idAND rc.rtag_id = nrtagidAND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)ORDER BY UPPER (pkg.pkg_name);ELSIF nsearcharea = 3THEN/* Search ALL */OPEN recordset FORSELECT 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_emailFROM views vi,environment_view rc,PACKAGES pkg,package_versions pv,users usrWHERE rc.view_id = vi.view_idAND rc.pv_id = pv.pv_idAND pkg.pkg_id = pv.pkg_idAND pv.modifier_id = usr.user_idAND rc.rtag_id = nrtagidAND 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)ISBEGINIF nsearcharea = 0THEN/* Search Work In Progress */OPEN recordset FORSELECT qry.*FROM (/* File search on Packages */SELECT art.file_name, art.file_path, pkg.pkg_name,pv.pv_id, pv.pkg_version, art.crc_cksumFROM work_in_progress rc,PACKAGES pkg,package_versions pv,release_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND 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_cksumFROM work_in_progress rc,PACKAGES pkg,package_versions pv,product_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND UPPER (art.file_name) LIKE UPPER (skeyword)) qryWHERE ROWNUM <= npagesizeORDER BY UPPER (qry.pkg_name);ELSIF nsearcharea = 1THEN/* Search Pending */OPEN recordset FORSELECT qry.*FROM (/* File search on Packages */SELECT art.file_name, art.file_path, pkg.pkg_name,pv.pv_id, pv.pkg_version, art.crc_cksumFROM planned rc,PACKAGES pkg,package_versions pv,release_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND 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_cksumFROM planned rc,PACKAGES pkg,package_versions pv,product_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND UPPER (art.file_name) LIKE UPPER (skeyword)) qryWHERE ROWNUM <= npagesizeORDER BY UPPER (qry.pkg_name);ELSIF nsearcharea = 2THEN/* Search Released */OPEN recordset FORSELECT 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_idFROM release_content rc,PACKAGES pkg,package_versions pv,release_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND 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_idFROM release_content rc,PACKAGES pkg,package_versions pv,product_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND 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_idFROM release_content rc,PACKAGES pkg,package_versions pv,release_components art,package_patches ppWHERE pv.pv_id = pp.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.rtag_id = nrtagidAND art.pv_id = pp.patch_idAND rc.pv_id = pp.pv_idAND UPPER (art.file_name) LIKE UPPER (skeyword)) qryWHERE ROWNUM <= npagesizeORDER BY UPPER (qry.pkg_name);ELSIF nsearcharea = 3THEN/* Search ALL */OPEN recordset FORSELECT 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_idFROM environment_view rc,PACKAGES pkg,package_versions pv,release_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND 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_idFROM environment_view rc,PACKAGES pkg,package_versions pv,product_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND 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_idFROM release_content rc,PACKAGES pkg,package_versions pv,release_components art,package_patches ppWHERE pv.pv_id = pp.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.rtag_id = nrtagidAND art.pv_id = pp.patch_idAND rc.pv_id = pp.pv_idAND UPPER (art.file_name) LIKE UPPER (skeyword)) qryWHERE ROWNUM <= npagesizeORDER BY UPPER (qry.pkg_name);END IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE get_prodrelease_items (rtagid IN NUMBER,ntruerecordcount OUT NUMBER,recordset OUT typecur)ISBEGIN-- Get true record count n the number of integration productsSELECT COUNT (rc.pv_id)INTO ntruerecordcountFROM release_content rcWHERE rc.rtag_id = rtagid;OPEN recordset FORSELECT 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND pv.is_deployable = 'Y'AND rtag_id = rtagidAND pv.pv_id NOT IN (SELECT DISTINCT prod_idFROM deployment_manager.os_contents)AND rel.product_state IS NULLORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE get_integration_items (rtagid IN NUMBER,ntruerecordcount OUT NUMBER,recordset OUT typecur)ISBEGIN-- Get true record count n the number of integration productsSELECT COUNT (rc.pv_id)INTO ntruerecordcountFROM release_content rcWHERE rc.rtag_id = rtagid AND rc.product_state = 1;OPEN recordset FORSELECT 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND pv.is_deployable = 'Y'AND rtag_id = rtagidAND 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)ISBEGIN-- Get true record count n the number of test productsSELECT COUNT (rc.pv_id)INTO ntruerecordcountFROM release_content rcWHERE rc.rtag_id = rtagid AND rc.product_state = 2;OPEN recordset FORSELECT 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND pv.is_deployable = 'Y'AND rtag_id = rtagidAND rel.product_state = 2ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE get_deploy_items (rtagid IN NUMBER,ntruerecordcount OUT NUMBER,recordset OUT typecur)ISBEGIN-- Get true record count n the number of deploy productsSELECT COUNT (rc.pv_id)INTO ntruerecordcountFROM release_content rcWHERE rc.rtag_id = rtagid AND rc.product_state = 3;OPEN recordset FORSELECT 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND pv.is_deployable = 'Y'AND rtag_id = rtagidAND rel.product_state IN (3, 5)AND pv.pv_id NOT IN (SELECT DISTINCT prod_idFROM 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)ISBEGIN-- Get true record count n the number of reject productsSELECT COUNT (rc.pv_id)INTO ntruerecordcountFROM release_content rcWHERE rc.rtag_id = rtagid AND rc.product_state = 4;OPEN recordset FORSELECT 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND pv.is_deployable = 'Y'AND rtag_id = rtagidAND rel.product_state = 4ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);END;/*-------------------------------------------------------------------------------------------------------*/-- DEVI-45275 - this procedure performs the merge of an existing package version in the planned table-- to the release_content table.PROCEDURE approve_merge (PvId IN NUMBER,RtagId IN NUMBER,UserId IN NUMBER)ISviewid NUMBER;envtab NUMBER;oper CHAR;BEGIN-- Get ViewIdviewid := get_package_view (pvid, rtagid);-- Get the view tabenvtab := pk_environment.get_package_area (pvid, rtagid);-- Make sure that package was in pending before merging it to releasedIF (envtab <> 1)THEN-- Not found in pendingraise_application_error (-20000,'This package cannot be released here.');END IF;-- Loglog_action (pvid, 'action', userid, 'Start of Package Merge...');-- Get the planned operation type A=Add, S=SubtractSELECT ev.operation INTO operFROM environment_view evWHERE ev.rtag_id = RtagIdAND ev.pv_id = PvIdAND (ev.operation = 'A' OR ev.operation = 'S');-- Remove from Pendingpk_planned.remove_package (PvId, RtagId, UserId);-- Either add to the release, or remove from the release as the operation commandsIF oper = 'A'THENpk_release.add_package(PvId, viewId, RtagId, UserId);ELSIF oper = 'S'THENpk_release.remove_package(PvId, RtagId, UserId);END IF;touch_release(RtagId);-- Loglog_action (pvid, 'action', userid, 'End of Package Merge...');END;/*-------------------------------------------------------------------------------------------------------*/END pk_environment;/CREATE OR REPLACE PACKAGE BODY 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 ) ISoldPvId 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" releasesSELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME INTO sLocationFROM WORK_IN_PROGRESS wip,RELEASE_TAGS rt,PROJECTS projWHERE wip.PV_ID = newPvIdAND wip.RTAG_ID = rt.RTAG_IDAND rt.OFFICIAL != 'Y'AND rt.PROJ_ID = proj.PROJ_ID;EXCEPTIONWHEN NO_DATA_FOUND THENsLocation := 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 ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = RtagId;Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );ELSERAISE_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 ) ISReleaseLocation VARCHAR2(4000);BEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/-- Get release location for logging pusposesSELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = RtagId;-- Delete from Work In ProgressDELETEFROM WORK_IN_PROGRESS wipWHERE wip.RTAG_ID = RtagIdAND 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 ) ISnIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();ReleaseLocation VARCHAR2(4000);PvId NUMBER;BEGIN/*--------------- Business Rules Here -------------------*/IF (PvIdList IS NULL)THENRAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );END IF;/*-------------------------------------------------------*/nIdCollector := IN_LIST_NUMBER ( PvIdList );-- Get release location for logging pusposesSELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = RtagId;FOR i IN 1..nIdCollector.COUNTLOOPPvId := nIdCollector(i);-- Delete from Work In ProgressDELETEFROM WORK_IN_PROGRESS wipWHERE wip.RTAG_ID = RtagIdAND 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 ISReturnValue NUMBER;BEGINSELECT wip.VIEW_ID INTO ReturnValueFROM WORK_IN_PROGRESS wipWHERE wip.RTAG_ID = RtagIdAND wip.PV_ID = PvId;RETURN ReturnValue;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) ISIsBaseView CHAR(1);BEGIN-- Check if the view is BASE VIEWSELECT vi.BASE_VIEW INTO IsBaseViewFROM VIEWS viWHERE vi.VIEW_ID = ViewId;IF (IsBaseView = 'Y') THEN-- Get Base view contentOPEN RecordSet FORSELECT 0 AS PKG_STATE,NULL AS DEPRECATED_STATE,pv.pv_id,pkg.pkg_name,pv.pkg_version,pv.dlocked,pv.pv_description,pv.BUILD_TYPEFROM WORK_IN_PROGRESS rel,packages pkg,package_versions pvWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.VIEW_ID = ViewIdAND rel.RTAG_ID = RtagIdORDER BY UPPER(pkg.PKG_NAME);ELSE-- Get non base view contentOPEN RecordSet FORSELECT 0 AS PKG_STATE,NULL AS DEPRECATED_STATE,pv.pv_id,pkg.pkg_name,pv.pkg_version,pv.dlocked,pv.pv_description,pv.BUILD_TYPEFROM WORK_IN_PROGRESS rel,packages pkg,package_versions pv,VIEW_DEF vdWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND vd.VIEW_ID = ViewIdAND vd.PKG_ID = pv.PKG_IDAND rel.RTAG_ID = RtagIdORDER BY UPPER(pkg.PKG_NAME);END IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) ISBEGINUPDATE WORK_IN_PROGRESS wip SETwip.VIEW_ID = NewViewIdWHERE wip.PV_ID = PvIdAND wip.RTAG_ID = RtagId;END;/*-------------------------------------------------------------------------------------------------------*/END PK_WORK_IN_PROGRESS;/CREATE OR REPLACE PACKAGE BODY pk_package_TestIS/*------------------------------|| 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)ISorigpkg_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_curISSELECT pv.pv_id, pv.is_patch, pv.dlockedFROM package_versions pvWHERE pv.pkg_version = snewpkgversionAND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_idFROM package_versions origpvWHERE origpv.pv_id = nlastpvid);package_versions_rec package_versions_cur%ROWTYPE;CURSOR clone_package_versions_curISSELECT DISTINCT pkg_id, dlockedFROM package_versionsWHERE pv_id = nlastpvid;clone_package_versions_rec clone_package_versions_cur%ROWTYPE;BEGINspackageversion := snewpkgversion;IF nsettopvid IS NULLTHEN-- SetToPv_id is not supplied, hence proceed./* ---------------------------------------------------- *//* Find id package_version exists *//* ---------------------------------------------------- */OPEN package_versions_cur;FETCH package_versions_curINTO package_versions_rec;IF package_versions_cur%NOTFOUNDTHEN--- Create brand new package ---SELECT seq_pv_id.NEXTVALINTO returnpvidFROM DUAL;-- Split Version to get extention + othersplit_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);-- Get previous package to clone fromOPEN clone_package_versions_cur;FETCH clone_package_versions_curINTO 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 configIF (cbuildtype = 'A')THENspackageversion := '(' || returnpvid || ')' || ssv_ext;-- Make sure that version is still uniqueEND 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_autobuildableFROM package_versions pvWHERE pv.pv_id = nlastpvid;-- Set Issues Type for cloning ---IF origdlocked = 'Y'THENnissuestypes := enumissues_state_imported;ELSEnissuestypes := NULL;END IF;-- Update Label for automated builtIF (cbuildtype = 'A')THENslabel := get_automated_label (returnpvid);UPDATE package_versions pvSET pv.pkg_label = slabelWHERE 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;ELSEreturnpvid := nsettopvid;END IF;END new_version;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE change_state (pvid IN NUMBER,newstate IN package_versions.dlocked%TYPE,userid IN NUMBER)ISBEGIN-- Set package in Released modeUPDATE package_versions pvSET pv.dlocked = newstate,pv.modified_stamp = ora_sysdatetime,pv.modifier_id = useridWHERE 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)ISLOCKED 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 officialSELECT pv.dlockedINTO LOCKEDFROM package_versions pvWHERE pv.pv_id = pvid;IF LOCKED = 'Y'THENproblemstring :=problemstring|| '- Package is locked and released.'|| UTL_TCP.crlf;END IF;-- Cannot remove if used in BOMsSELECT COUNT (osc.prod_id)INTO ROWCOUNTFROM deployment_manager.os_contents oscWHERE osc.prod_id = pvid;IF ROWCOUNT > 0THENproblemstring :=problemstring|| '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'|| UTL_TCP.crlf;END IF;-- Cannot remove if Referenced as build dependencySELECT COUNT (dep.pv_id)INTO ROWCOUNTFROM package_dependencies depWHERE dep.dpv_id = pvid;IF ROWCOUNT > 0THENproblemstring :=problemstring|| '- Package is referenced by other package as build dependency.'|| UTL_TCP.crlf;END IF;-- Cannot remove if Referenced as runtime dependencySELECT COUNT (rd.pv_id)INTO ROWCOUNTFROM runtime_dependencies rdWHERE rd.rtd_id = pvid;IF ROWCOUNT > 0THENproblemstring :=problemstring|| '- Package is referenced by other package as runtime dependency.'|| UTL_TCP.crlf;END IF;-- Cannot remove if Referenced as patchSELECT COUNT (pp.pv_id)INTO ROWCOUNTFROM package_patches ppWHERE pp.patch_id = pvid;IF ROWCOUNT > 0THENproblemstring :=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 ProgressDELETE FROM work_in_progress wipWHERE wip.pv_id = pvid;--- Remove From PendingDELETE FROM planned plWHERE pl.pv_id = pvid;--- Remove From Released areaDELETE FROM release_content rcWHERE rc.pv_id = pvid;---Remove From Package ProcessesDELETE FROM package_processes ppWHERE pp.pv_id = pvid;--- Remove DependenciesDELETE FROM package_dependencies depWHERE dep.pv_id = pvid;DELETE FROM package_dependencies depWHERE dep.dpv_id = pvid;--- Remove Runtime dependenciesDELETE FROM runtime_dependencies rtdWHERE rtd.pv_id = pvid;DELETE FROM runtime_dependencies rtdWHERE rtd.rtd_id = pvid;--- Remove componentsDELETE FROM product_components pcWHERE pc.pv_id = pvid;DELETE FROM release_components rcWHERE rc.pv_id = pvid;--- Remove From Notification HistoryDELETE FROM notification_history nhWHERE nh.pv_id = pvid;--- Remove From Ignore WarningsDELETE FROM ignore_warnings iwWHERE iw.pv_id = pvid;--- Remove From Additional NotesDELETE FROM additional_notes anWHERE an.pv_id = pvid;--- Remove From CQ IssuesDELETE FROM cq_issues cqWHERE cq.pv_id = pvid;--- Remove from Package PatchesDELETE FROM package_patches ppWHERE pp.pv_id = pvid;DELETE FROM package_patches ppWHERE pp.patch_id = pvid;--- Remove From Package DocumentsDELETE FROM package_documents pdWHERE pd.pv_id = pvid;--- Remove from Code ReviewDELETE FROM code_reviews crWHERE cr.pv_id = pvid;--- Remove from Unit TestsDELETE FROM unit_tests utWHERE ut.pv_id = pvid;--- Remove from Package BuildEnvDELETE FROM package_build_env pbeWHERE pbe.pv_id = pvid;--- Remove from Package Build InfoDELETE FROM package_build_info pbiWHERE pbi.pv_id = pvid;--- Remove from Build OrderDELETE FROM build_order boWHERE bo.pv_id = pvid;--- Remove from Note ManagerDELETE FROM note_manager nmWHERE nm.nid = pvid;--- Remove from Action logDELETE FROM action_log alWHERE al.pv_id = pvid;--- Remove from Do Not RippleDELETE FROM DO_NOT_RIPPLE dnrWHERE dnr.PV_ID = pvid;--- Remove from Jira IssuesDELETE FROM JIRA_ISSUES jiraWHERE jira.PV_ID = pvid;--- Finally Remove From Package Versions--- Get Package nameSELECT pv.pkg_idINTO pkgidFROM package_versions pvWHERE pv.pv_id = pvid;DELETE FROM package_versions pvWHERE pv.pv_id = pvid;--- Remove package name if not used any moreSELECT COUNT (pv.pv_id)INTO ROWCOUNTFROM package_versions pvWHERE pv.pkg_id = pkgid;IF ROWCOUNT < 1THENDELETE FROM PACKAGES pkgWHERE 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)ISpatchpv_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_curISSELECT pv.*, pkg.pkg_nameFROM package_versions pv, PACKAGES pkgWHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;parent_rec parent_cur%ROWTYPE;CURSOR patch_curISSELECT pv.*, pg.pkg_nameFROM package_versions pv, PACKAGES pgWHERE pv.pkg_id = parpkg_idAND pv.pkg_version = snewpatchversionAND pv.pkg_id = pg.pkg_id;patch_rec patch_cur%ROWTYPE;CURSOR releases_curISSELECT rc.pv_idFROM release_content rcWHERE rc.pv_id = patch_rec.pv_id;releases_rec releases_cur%ROWTYPE;BEGIN-- Get Last Install OrderSELECT COUNT (*)INTO lastinstallorderFROM package_patches ppWHERE pp.pv_id = nparentpvid;-- Get parent detailsOPEN parent_cur;FETCH parent_curINTO parent_rec;parpkg_id := parent_rec.pkg_id;-- Find if patch exists in databaseOPEN patch_cur;FETCH patch_curINTO patch_rec;-- Parent must be officialIF parent_rec.dlocked = 'Y'THENIF patch_cur%NOTFOUNDTHENispatchdlocked := 'N';-- Create new patch version --SELECT seq_pv_id.NEXTVALINTO patchpv_idFROM 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_orderFROM package_versions pvWHERE 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);ELSEpatchpv_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_curINTO releases_rec;IF releases_cur%NOTFOUNDTHEN-- This pv_id is trully a patch, hence add Y to column IS_PATCHUPDATE package_versionsSET 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_orderFROM package_versions pvWHERE 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 dependenciesIF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')THEN-- Delete Existing DependenciesDELETE FROM package_dependencies depWHERE dep.pv_id = patchpv_id;-- Insert new dependenciesINSERT 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_typeFROM package_versions pvWHERE pv.pv_id IN (SELECT *FROM TABLE(CAST(opatchdepcollector AS relmgr_number_tab_t)));END IF;-- Return patch_idreturnpatchid := patchpv_id;CLOSE parent_cur;CLOSE patch_cur;EXCEPTIONWHEN DUP_VAL_ON_INDEXTHENraise_application_error (-20000,'Patch version '|| snewpatchversion|| ' already exist.');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE obsolete_patch (patchid IN NUMBER,isobsolete IN CHAR,obsoletecomments IN VARCHAR2,userid IN NUMBER)ISBEGIN-- Update patchUPDATE package_versions pvSET pv.is_obsolete = isobsolete,pv.obsolete_comments = obsoletecommentsWHERE pv.pv_id = patchid;/*-- Update patch childrenUPDATE PACKAGE_VERSIONS pv SETpv.IS_OBSOLETE = IsObsolete,pv.OBSOLETE_COMMENTS = ObsoleteCommentsWHERE pv.PV_ID IN (SELECT DISTINCT dep.DPV_IDFROM PACKAGE_DEPENDENCIES depWHERE dep.PV_ID = PatchId);-- Update patch parentUPDATE PACKAGE_VERSIONS pv SETpv.IS_OBSOLETE = IsObsolete,pv.OBSOLETE_COMMENTS = ObsoleteCommentsWHERE pv.PV_ID IN (SELECT DISTINCT dep.PV_IDFROM PACKAGE_DEPENDENCIES depWHERE dep.DPV_ID = PatchId);*//* LOG ACTION */IF isobsolete IS NOT NULLTHENlog_action (patchid,'patch_obsolete',userid,'Obsolete patch. ' || obsoletecomments);ELSElog_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)ISBEGIN/*--------------- Business Rules Here -------------------*/IF spatchidlist IS NULLTHENraise_application_error (-20000,'Please select one or more Patches.');END IF;/*-------------------------------------------------------*/-- Update patchUPDATE package_versions pvSET pv.is_obsolete = isobsolete,pv.obsolete_comments = obsoletecommentsWHERE pv.pv_id IN (SELECT *FROM THE(SELECT CAST(in_list_number (spatchidlist) AS relmgr_number_tab_t)FROM DUAL));/*-- Update patch childrenUPDATE PACKAGE_VERSIONS pv SETpv.IS_OBSOLETE = IsObsolete,pv.OBSOLETE_COMMENTS = ObsoleteCommentsWHERE pv.PV_ID IN (SELECT DISTINCT dep.DPV_IDFROM PACKAGE_DEPENDENCIES depWHERE dep.PV_ID = PatchId);-- Update patch parentUPDATE PACKAGE_VERSIONS pv SETpv.IS_OBSOLETE = IsObsolete,pv.OBSOLETE_COMMENTS = ObsoleteCommentsWHERE pv.PV_ID IN (SELECT DISTINCT dep.PV_IDFROM PACKAGE_DEPENDENCIES depWHERE dep.DPV_ID = PatchId);*//* LOG ACTIONIF IsObsolete IS NOT NULL THENLog_Action ( PatchId, 'patch_obsolete', UserId,'Obsolete patch. '|| ObsoleteComments );ELSELog_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)ISpkgname VARCHAR2 (100);/*Rupesh Release on 17/05/2006*/BEGININSERT 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)ISprocessname VARCHAR2 (4000);/*Rupesh Release on 17/05/2006*/CURSOR proc_curISSELECT prc.proc_idFROM processes prcWHERE 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;BEGINOPEN proc_cur;FETCH proc_curINTO proc_rec;WHILE proc_cur%FOUNDLOOPINSERT INTO package_processes(proc_id, pv_id)VALUES (proc_rec.proc_id, npvid);SELECT prc.proc_nameINTO processnameFROM processes prcWHERE prc.proc_id = proc_rec.proc_id;-- Log Action --log_action (npvid,'process_add',nuserid,'Added process with health tag ' || processname);FETCH proc_curINTO 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)ISprocessname VARCHAR2 (4000);/* Rupesh Release on 17/05/2006*/BEGINSELECT prc.proc_nameINTO processnameFROM processes prcWHERE prc.proc_id = nprocid;DELETE FROM package_processesWHERE proc_id = nprocid AND pv_id = npvid;-- Log Action --log_action (npvid,'process_remove',nuserid,'Removed process with health tag ' || processname);END;/*-------------------------------------------------------------------------------------------------------*//*Author: Rupesh SolankiPurpose: To move package versions from one release to anotherRelease: 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)ISoldrtag_name VARCHAR2(4000);newrtag_name VARCHAR2(4000);BEGINSELECT rtag_name into oldrtag_nameFROM RELEASE_TAGSWHERE rtag_id = nrtagid;SELECT rtag_name into newrtag_nameFROM RELEASE_TAGSWHERE rtag_id = nnewrtagid;/* Table Work In Progress*/UPDATE WORK_IN_PROGRESSSET RTAG_ID = nnewrtagidWHERE RTAG_ID = nrtagidAND PV_ID = npvid;/* Table PLANNED*/UPDATE PLANNEDSET RTAG_ID = nnewrtagidWHERE RTAG_ID = nrtagidAND 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) ISsStateName VARCHAR(4000);/*Author: Rupesh SolankiPurpose: To modify the product state from integration to test to deploymentRelease: 25th January 2006*/BEGINUPDATE PACKAGE_VERSIONSSET PRODUCT_STATE = nstateidWHERE PV_ID = npvid;SELECT STATE INTO sStateNameFROM PRODUCT_STATESWHERE STATE_ID = nstateid;-- Log Action --log_action (npvid,'modify_product_state',nuserid,sStateName);END;/*-------------------------------------------------------------------------------------------------------*/END pk_package_Test;/CREATE OR REPLACE PACKAGE BODY 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) ISBEGINUPDATE projectsSET base_url = sbaseurlWHERE proj_id = nprojid;END update_base_url;/*------------------------------------------------------------------------*/END pk_project;/CREATE OR REPLACE PACKAGE BODY pk_buildapiIS/*------------------------------|| 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)ISnosid NUMBER;BEGIN/*--------------- Business Rules Here -------------------*/-- OS Name Requirements --IF (sosname IS NULL)THENraise_application_error (-20000, 'OsName cannot be NULL.');END IF;-- File Requirements --IF (NOT sfilename IS NULL)THENIF (nbytesize IS NULL)THENraise_application_error (-20000, 'Byte Size cannot be NULL.');ELSIF (scrccksum IS NULL)THENraise_application_error (-20000, 'CRC CKSUM cannot be NULL.');END IF;END IF;-- Folder Requirements ---- No requirements for now./*-------------------------------------------------------*/-- Get OsIdnosid := get_osid (sosname);-- Insert component entryINSERT 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);EXCEPTIONWHEN DUP_VAL_ON_INDEXTHENraise_application_error (-20000,'Cannot have duplicate product components.');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE remove_all_product_components (npvid IN NUMBER,sosname IN VARCHAR2)ISnosid NUMBER;BEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/-- Get OsIdnosid := get_osid (sosname);-- Delete component entryDELETE FROM product_components pcWHERE pc.pv_id = npvid AND pc.os_id = nosid;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION get_osid (sosname IN VARCHAR2)RETURN NUMBERIScode NUMBER;BEGIN-- Get Platform Code --SELECT pf.codeINTO codeFROM platforms pfWHERE UPPER (pf.NAME) = UPPER (sosname);RETURN code;EXCEPTIONWHEN NO_DATA_FOUNDTHENraise_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)ISBEGINUPDATE build_service_configSET config = sdatabaseserverWHERE service = 'DATABASE SERVER';UPDATE build_service_configSET config = swebserverWHERE service = 'WEB SERVER';UPDATE build_service_configSET config = smailserverWHERE service = 'MAIL SERVER';UPDATE build_service_configSET config = smailsenderWHERE service = 'BUILD FAILURE MAIL SENDER';UPDATE build_service_configSET config = sdiskspaceWHERE service = 'DPKG_ARCHIVE DISK SPACE USED';UPDATE build_service_configSET config = ssbommanagementWHERE service = 'SBOM MANAGEMENT';END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2)ISgbe_id NUMBER;BEGIN-- Get GBE_IDSELECT seq_gbe_id.NEXTVALINTO gbe_idFROM DUAL;INSERT INTO gbe_machtype(gbe_id, gbe_value)VALUES (gbe_id, sgbevalue);END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER)ISBEGINDELETE FROM gbe_machtypeWHERE gbe_id = ngbe_id;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2)ISBEGINUPDATE gbe_machtypeSET gbe_value = sgbevalueWHERE gbe_id = ngbe_id;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE add_daemon (sdaemonhostname IN VARCHAR2,nrtagid IN NUMBER,ngbeid IN NUMBER,sgbebuildfilter IN VARCHAR2)ISnrecordnumber NUMBER;nrconid NUMBER;BEGIN-- Get RCON_IDSELECT seq_rcon_id.NEXTVALINTO nrconidFROM DUAL;SELECT COUNT (*)INTO nrecordnumberFROM release_configWHERE rtag_id = nrtagid;IF nrecordnumber = 0THENINSERT INTO release_config(rcon_id, rtag_id, daemon_hostname, daemon_mode,gbe_id, gbe_buildfilter)VALUES (nrconid, nrtagid, sdaemonhostname, 'M',ngbeid, sgbebuildfilter);ELSEINSERT 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)ISBEGIN-- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first.DELETE FROM daemon_action_logWHERE rcon_id IN (SELECT *FROM THE(SELECT CAST(in_list_number (srconidlist) AS relmgr_number_tab_t)FROM DUAL));DELETE FROM run_levelWHERE rcon_id IN (SELECT *FROM THE(SELECT CAST(in_list_number (srconidlist) AS relmgr_number_tab_t)FROM DUAL));DELETE FROM abt_action_logWHERE 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_configWHERE 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)ISBEGINUPDATE release_configSET daemon_hostname = sdaemonhostname,gbe_id = ngbeid,gbe_buildfilter = sgbebuildfilterWHERE rcon_id = nrconid;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE insert_schedule_info (dschedulepause IN DATE,dscheduleresume IN DATE,crepeat IN VARCHAR2,cindefinitepause IN VARCHAR2)ISnscheduledid NUMBER;BEGIN-- Get Next Available Scheduled IdSELECT seq_scheduled_id.NEXTVALINTO nscheduledidFROM DUAL;INSERT INTO run_level_scheduleVALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat,cindefinitepause);END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE delete_schedule (nscheduleid IN NUMBER)ISBEGINDELETE FROM run_level_scheduleWHERE scheduled_id = nscheduleid;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE set_infinite_pauseISnscheduledid NUMBER;BEGIN-- Get Next Available Scheduled IdSELECT seq_scheduled_id.NEXTVALINTO nscheduledidFROM DUAL;INSERT INTO run_level_scheduleVALUES (nscheduledid, NULL, NULL, NULL, 'P');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE set_resumeISBEGINDELETE FROM run_level_scheduleWHERE indefinite_pause = 'P';END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE delete_out_of_date_scheduleISBEGINDELETE FROM run_level_scheduleWHERE scheduled_resume < ora_sysdatetime AND repeat = 0;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE set_daemon_resume (nrconid IN NUMBER)ISBEGINUPDATE run_levelSET PAUSE = NULLWHERE rcon_id = nrconid;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE set_daemon_pause (nrconid IN NUMBER)ISBEGINUPDATE run_levelSET PAUSE = 1WHERE rcon_id = nrconid;END;/*-------------------------------------------------------------------------------------------------------*/END pk_buildapi;/CREATE OR REPLACE PACKAGE BODY 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 NUMBERASBEGIN-- start boundary caseIF ( XXstart < XX ) THENRETURN 1;ELSIF ( XXstart = XX ) THEN-- need to consider YYIF ( YYstart < YY ) THENRETURN 1;ELSIF ( YYstart = YY ) THEN-- need to consider ZZIF ( ZZstart <= ZZ ) THENRETURN 1;ELSERETURN 0;END IF;ELSERETURN 0;END IF;ELSERETURN 0;END IF;EXCEPTIONWHEN OTHERS THENRETURN -1;END;FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBERASBEGIN-- end boundary caseIF ( XX < XXend ) THENRETURN 1;ELSIF ( XX = XXend ) THEN-- need to consider YYIF ( YY < YYend ) THENRETURN 1;ELSIF ( YY = YYend ) THEN-- need to consider ZZIF ( ZZ <= ZZend ) THENRETURN 1;ELSERETURN 0;END IF;ELSERETURN 0;END IF;ELSERETURN 0;END IF;EXCEPTIONWHEN OTHERS THENRETURN -1;END;/*- version format: XX.YY.ZZ.abc*/FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBERASXXstart 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 numberfirst_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 sameIF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THENIF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THENRETURN 1;ELSERETURN 0;END IF;ELSERETURN 0;END IF;EXCEPTIONWHEN OTHERS THENRETURN -1;END;FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBERASpkg_id NUMBER;BEGINSELECTp.PKG_IDINTOpkg_idFROMPACKAGES pWHEREp.PKG_NAME = pkgName;RETURN pkg_id;EXCEPTIONWHEN OTHERS THENdbms_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 )ASpkgId NUMBER;BEGIN-- get pkg_id of the input package:pkgId := GetPkgId( pkg_name );OPEN vCursor FORSELECTpv.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_IDFROMPACKAGE_VERSIONS pvLEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_IDLEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_IDLEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_IDWHEREpv.PKG_ID = pkgIdANDVersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1AND( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )ORDER BYpv.PKG_ID,pv.PV_ID,pd.DPKG_ID,pd.DPV_ID;EXCEPTIONWHEN OTHERS THENdbms_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 )ASpkgId NUMBER;CURSOR pack_vers_cur ISSELECTpv.PV_ID,pv.PKG_VERSION,pv.PKG_ID,p.PKG_NAMEFROMPACKAGE_VERSIONS pvJOIN PACKAGES p ON pv.PKG_ID = p.PKG_IDWHEREpv.PKG_ID = pkgIdANDVersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;BEGINDELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/-- get the pkg_id we are finding issues forpkgId := 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_curLOOPInsertIssuesForDepends( 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 onOPEN vCursor FORSELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*//*removedSELECTPKG_VERSIONFROMRELEASE_MANAGER.RM_PACKAGE_ISSUES;*/EXCEPTIONWHEN OTHERS THENdbms_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 )ASpkgId NUMBER;issCnt NUMBER := 0;pkgCheck NUMBER := 0;depCheck NUMBER := 0;dpkgName VARCHAR(50);dpkgVersion VARCHAR(50);CURSOR dep_packs_cur ISSELECTDPV_IDFROMPACKAGE_DEPENDENCIESWHEREPV_ID = pvID;BEGIN-- check to see if the package has been processed previouslySELECTCOUNT(*)INTOpkgCheckFROMRM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/WHEREDPV_ID = pvID;dbms_output.put_line('pkgCheck: ' || pkgCheck );-- Package not already processed (no cyclic dependency) - process itIF ( pkgCheck = 0 ) THEN-- check to see if this package version has any issues assigned to itSELECTCOUNT(*)INTOissCntFROMCQ_ISSUES iWHEREi.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 DISTINCTtop_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_IDFROMPACKAGE_VERSIONS pvJOIN PACKAGES p ON pv.PKG_ID = p.PKG_IDJOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_IDWHEREpv.PV_ID = pvID;ELSE-- get the dpkg details - there will always be a row returned hereSELECTp.PKG_NAMEINTOdpkgNameFROMPACKAGE_VERSIONS pvJOIN PACKAGES p ON pv.PKG_ID = p.PKG_IDWHEREpv.PV_ID = pvID;SELECTpv.PKG_VERSIONINTOdpkgVersionFROMPACKAGE_VERSIONS pvWHEREpv.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 recurseSELECTCOUNT(*)INTOdepCheckFROMPACKAGE_DEPENDENCIESWHEREPV_ID = pvID;IF ( depCheck > 0 ) THEN-- get dependencies and call this function recursively for each oneFOR dep_rec IN dep_packs_curLOOPInsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );END LOOP;END IF;END IF;/*EXCEPTIONWHEN OTHERS THENno exception handling required*/END;END Rm_Issues;/CREATE OR REPLACE PACKAGE BODY "PK_PLANNED" IS/*------------------------------|| Last Modified: G.Huddy|| Modified Date: 05/Aug/2008|| Body Version: 1.2------------------------------*//*-------------------------------------------------------------------------------------------------------*/PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) ISoldPvId 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" releasesSELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID INTO sLocation, nRtagIdLocationFROM PLANNED pl,RELEASE_TAGS rt,PROJECTS projWHERE pl.PV_ID = newPvIdAND pl.RTAG_ID = rt.RTAG_IDAND rt.OFFICIAL != 'Y'AND rt.PROJ_ID = proj.PROJ_ID;EXCEPTIONWHEN NO_DATA_FOUND THENsLocation := NULL;END;IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN-- Add to "Pending" areaINSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )VALUES( RtagId, newPvId, ViewId, 'R' );/* LOG ACTION */SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = RtagId;Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );ELSERAISE_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 ) ISReleaseLocation VARCHAR2(4000);BEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/-- Get release location for logging pusposesSELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = RtagId;-- Delete from Work In ProgressDELETEFROM PLANNED plWHERE pl.RTAG_ID = RtagIdAND 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 ISReturnValue NUMBER;BEGINSELECT pl.VIEW_ID INTO ReturnValueFROM PLANNED plWHERE pl.RTAG_ID = RtagIdAND pl.PV_ID = PvId;RETURN ReturnValue;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) ISIsBaseView CHAR(1);BEGIN-- Check if the view is BASE VIEWSELECT vi.BASE_VIEW INTO IsBaseViewFROM VIEWS viWHERE vi.VIEW_ID = ViewId;IF (IsBaseView = 'Y') THEN-- Get Base view contentOPEN RecordSet FORSELECT 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,rel.operationFROM PLANNED rel,packages pkg,package_versions pvWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.VIEW_ID = ViewIdAND rel.RTAG_ID = RtagIdORDER BY UPPER(pkg.PKG_NAME);ELSE-- Get non base view contentOPEN RecordSet FORSELECT 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,rel.operationFROM PLANNED rel,packages pkg,package_versions pv,VIEW_DEF vdWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.RTAG_ID = RtagIdAND vd.VIEW_ID = ViewIdAND vd.PKG_ID = pv.PKG_IDORDER BY UPPER(pkg.PKG_NAME);END IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) ISBEGINUPDATE PLANNED pl SETpl.VIEW_ID = NewViewIdWHERE pl.PV_ID = PvIdAND pl.RTAG_ID = RtagId;END;/*-------------------------------------------------------------------------------------------------------*/-- DEVI-45275 This new function supports the ability to insert into the planned table, and existing-- version of a package as part of a release-to-release merge operation carried out within release manager.-- DEVI-49594 This function has subsequently been changed to allow a merge operation to cancel its-- opposite operation, if the opposite already exists in the planned table. This supports user activity-- via the Release Manager merge manager displayPROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR ) ISReleaseLocation VARCHAR2(4000);entryExists NUMBER;existingOperation CHAR;BEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/-- Determine if the specified PV_ID already exists in the planned table....SELECT COUNT (pl.pv_id) INTO entryExistsFROM PLANNED plWHERE pl.pv_id = newPvIdAND pl.rtag_id = RtagIdAND pl.view_id = ViewId;-- If the specified PV_ID already exists in the planned table....IF entryExists = 1 THEN-- Get the operation for the existing entrySELECT pl.operation INTO existingOperationFROM PLANNED plWHERE pl.pv_id = newPvIdAND pl.rtag_id = RtagIdAND pl.view_id = ViewId;-- Is the specified merge operation the opposite of the existing entry?-- If it is not, then there is nothing to do, otherwise...-- NOTE: A = Add, S = SubtractIF (mergeOperation = 'S' AND existingOperation = 'A')OR (mergeOperation = 'A' AND existingOperation = 'S') THEN-- It is the opposite, so effectively it cancels the existing entry-- Remove the entry from the planned tableDELETEFROM PLANNED plWHERE pl.pv_id = newPvIdAND pl.rtag_id = RtagIdAND pl.view_id = ViewId;-- Log actionSELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = RtagId;Log_Action ( newPvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );END IF;ELSE-- Add to Planned tabledINSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )VALUES( RtagId, newPvId, ViewId, mergeOperation );-- Log ActionSELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocationFROM PROJECTS proj,RELEASE_TAGS rtWHERE rt.PROJ_ID = proj.PROJ_IDAND rt.RTAG_ID = RtagId;Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );END IF;END;/*-------------------------------------------------------------------------------------------------------*/END PK_PLANNED;/CREATE OR REPLACE PACKAGE BODY "PK_RMAPI"IS/*------------------------------|| Last Modified: Gordon Huddy|| Modified Date: 08/Aug/2008|| Body Version: 3.4------------------------------*//*-------------------------------------------------------------------------------------------------------*/FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)RETURN typecurISnpvid NUMBER := 0;RECORDS typecur;BEGINBEGIN-- Get PV_ID --SELECT pv.pv_idINTO npvidFROM PACKAGES pkg, package_versions pvWHERE pv.pkg_id = pkg.pkg_idAND pkg.pkg_name = pkgnameAND pv.pkg_version = pkgversion;EXCEPTIONWHEN NO_DATA_FOUNDTHENraise_application_error (-20000, 'Package Not Found!');--WHEN OTHERS THEN-- Consider logging the error and then re-raiseRAISE;END;-- Finally get package dependencies --OPEN RECORDS FORSELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_versionFROM package_dependencies dep, PACKAGES dpkg, package_versions dpvWHERE dep.pv_id = npvidAND dpv.pkg_id = dpkg.pkg_idAND dpv.pv_id = dep.dpv_id;RETURN RECORDS;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION wip_iteration_package (projname VARCHAR2,iterationname VARCHAR2,pkgname VARCHAR2)RETURN typecurISnrtagid NUMBER := 0;RECORDS typecur;BEGINBEGIN-- Get latest rtag_id --SELECT rt.rtag_idINTO nrtagidFROM projects proj, release_tags rtWHERE rt.proj_id = proj.proj_idAND UPPER (proj.proj_name) = UPPER (projname)AND UPPER (rt.rtag_name) = UPPER (iterationname);IF (nrtagid IS NULL)THENraise_application_error (-20000,'Work In Progress is Not Found!');END IF;EXCEPTIONWHEN NO_DATA_FOUNDTHENraise_application_error (-20000,'Work In Progress is Not Found!');RAISE;END;-- Finally get package dependencies --OPEN RECORDS FORSELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,pv.src_pathFROM PACKAGES pkg, package_versions pv, work_in_progress wipWHERE pv.pkg_id = pkg.pkg_idAND wip.pv_id = pv.pv_idAND wip.rtag_id = nrtagidAND 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 NUMBERISpkgid 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)THENraise_application_error (-20000, 'RtagId must be supplied.');END IF;IF (pkgname IS NULL)THENraise_application_error (-20000, 'PkgName must be supplied.');END IF;IF (newpkgversion IS NULL)THENraise_application_error (-20000, 'PkgVersion must be supplied.');END IF;IF (label IS NULL)THENraise_application_error (-20000, 'Label must be supplied.');END IF;IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)THENraise_application_error(-20000,'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).');END IF;IF (username IS NULL)THENraise_application_error (-20000, 'UserName must be supplied.');END IF;-- Get user_idBEGINSELECT usr.user_idINTO useridFROM users usrWHERE UPPER (usr.user_name) = UPPER (username)AND usr.is_disabled IS NULL;EXCEPTIONWHEN NO_DATA_FOUNDTHENraise_application_error (-20000,'UserName '|| username|| ' is not valid or disabled.');END;/*-------------------------------------------------------*/-- Create package if necessaryIF isrippled = 1THEN/* Ripple Build */BEGIN-- Make sure that package does not existSELECT pv.pv_idINTO pvidFROM package_versions pv, PACKAGES pkgWHERE pv.pkg_id = pkg.pkg_idAND pkg.pkg_name = pkgnameAND pv.pkg_version = newpkgversion;EXCEPTIONWHEN NO_DATA_FOUNDTHENpvid := 0;END;IF (pvid = 0)THEN-- Split current version in partssplit_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);BEGIN-- Find package to be replaced with thie ripple packageIF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')THENSELECT pv.pv_idINTO clonefrompvidFROM PACKAGES pkg, package_versions pv,release_content rcWHERE rc.pv_id = pv.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.rtag_id = rtagidAND pkg.pkg_name = pkgnameAND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');ELSESELECT pv.pv_idINTO clonefrompvidFROM PACKAGES pkg, package_versions pv,release_content rcWHERE rc.pv_id = pv.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.rtag_id = rtagidAND pkg.pkg_name = pkgnameAND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');END IF;EXCEPTIONWHEN NO_DATA_FOUNDTHENraise_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 packageseed_package_names_versions (pkgname,newpkgversion,userid,pvid,clonefrompvid);ELSE-- Create packageseed_package_names_versions2 (pkgname,newpkgversion,userid,pvid,clonefrompvid);END IF;-- Update Package reason for releaseUPDATE package_versions pvSET pv.comments = 'Rippled Build.',pv.build_type = 'Y'WHERE pv.pv_id = pvid;ELSE-- Package already exists, hence cannot be used for ripple buildRETURN return_package_already_exists;END IF;ELSE/* Auto build from Pending area */-- Find package in pending areaBEGINSELECT pv.pv_id, pv.dlockedINTO pvid, dlockedFROM planned pl, package_versions pv, PACKAGES pkgWHERE pl.pv_id = pv.pv_idAND pv.pkg_id = pkg.pkg_idAND pl.rtag_id = rtagidAND pkg.pkg_name = pkgnameAND pv.dlocked = 'A'AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');EXCEPTIONWHEN NO_DATA_FOUNDTHENpvid := 0;END;IF (pvid = 0)THEN-- Package does not exist in pending area, hence report itRETURN return_package_not_found;ELSIF (dlocked != 'A')THEN-- Package is not approved for autobuildRETURN return_not_approved;END IF;END IF;BEGIN-- Import Dependenciesimport_dependencies (pvid, dependenciesimportlist, userid);END;BEGIN-- Split current version in partssplit_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);-- Update Package DetailsUPDATE package_versions pvSET pv.pkg_version = newpkgversion,pv.v_ext = ssv_ext,pv.v_mm = ssv_mm,pv.v_nmm = ssv_nmm,pv.pkg_label = labelWHERE pv.pv_id = pvid;EXCEPTIONWHEN DUP_VAL_ON_INDEXTHEN-- Package already exists, hence cannot be used for ripple buildRETURN return_package_already_exists;END;-- Update the is_autobuildableUPDATE package_versionsSET is_autobuildable = 'Y'WHERE pv_id = pvid;-- Now release packagepk_environment.auto_make_release (pvid,rtagid,userid,vext,ssv_ext,clonefrompvid);--Now clean the PLANNED_VERSIONS tableSELECT pkg_idINTO pkgidFROM PACKAGESWHERE pkg_name = pkgname;DELETE FROM planned_versionsWHERE 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 curbuildtypeISSELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,dep.build_typeFROM package_dependencies dep, package_versions dpvWHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;recbuildtype curbuildtype%ROWTYPE;BEGINslist := dependenciesimportlist;-- Preformat StringIF NOT slist IS NULLTHENslist := REPLACE (slist, ' '); -- Remove spacesslist := REPLACE (slist, UTL_TCP.crlf);-- Remove new line and carriage-return charactersslist := REPLACE (slist, '''', '"'); -- Replace ' with "END IF;-- Get Current DependenciesOPEN curbuildtype;FETCH curbuildtypeINTO recbuildtype;WHILE curbuildtype%FOUNDLOOPcbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;FETCH curbuildtypeINTO recbuildtype;END LOOP;CLOSE curbuildtype;-- Separate dependencies with ; separatorcitemcollection := in_list_varchar2 (slist, ';');BEGIN-- Remove old dependenciesDELETE FROM package_dependencies depWHERE dep.pv_id = pvid;-- Loop through dependenciesFOR dependencyrow IN 1 .. citemcollection.COUNTLOOP-- Extract pkg_name and pkg_versionsdependency := 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 againstBEGINSELECT pv.pv_id, pv.pkg_id, pv.v_extINTO dpvid, pkgid, vextFROM package_versions pv, PACKAGES pkgWHERE pv.pkg_id = pkg.pkg_idAND pkg.pkg_name = pkgnameAND pv.pkg_version = pkgversion;EXCEPTIONWHEN NO_DATA_FOUNDTHENraise_application_error(-20000,'Dependency ['|| pkgname|| ' '|| pkgversion|| '] does not exist yet and cannot be used!');END;-- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)BEGINbuildtype := cbuildtypes (pkgid || seperator || vext);IF buildtype IS NULLTHEN-- Set build type to LinkPackageArchive by defaultbuildtype := 'L';END IF;EXCEPTIONWHEN NO_DATA_FOUNDTHENbuildtype := 'L';END;-- Insert Dependenciesupdate_package_dependency (pvid,pkgname,pkgversion,buildtype,userid,0);END LOOP;END;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)RETURN VARCHAR2ISpkgversion VARCHAR2 (4000);BEGINBEGINSELECT pv.pkg_versionINTO pkgversionFROM PACKAGES pkg, release_content rc, package_versions pvWHERE pv.pv_id = rc.pv_idAND pkg.pkg_id = pv.pkg_idAND pkg.pkg_name = pkgnameAND rc.rtag_id = rtagid;RETURN pkgversion;END;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)RETURN VARCHAR2ISpkgversion VARCHAR2 (4000);BEGINBEGINSELECT pv.pkg_versionINTO pkgversionFROM PACKAGES pkg, work_in_progress wip, package_versions pvWHERE pv.pv_id = wip.pv_idAND pkg.pkg_id = pv.pkg_idAND pkg.pkg_name = pkgnameAND wip.rtag_id = rtagid;IF pkgversion IS NULLTHENSELECT pv.pkg_versionINTO pkgversionFROM PACKAGES pkg, planned pl, package_versions pvWHERE pv.pv_id = pl.pv_idAND pkg.pkg_id = pv.pkg_idAND pkg.pkg_name = pkgnameAND pl.rtag_id = rtagid;END IF;RETURN pkgversion;END;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE update_dash_board (rtagid IN NUMBER)ISprojid NUMBER;projiddb NUMBER;total NUMBER;auto_total NUMBER;rtagiddb NUMBER;BEGINSELECT COUNT (*)INTO totalFROM release_content rc, package_versions pvWHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;SELECT COUNT (*)INTO auto_totalFROM release_content rc, package_versions pvWHERE pv.pv_id = rc.pv_idAND pv.is_autobuildable = 'Y'AND rc.rtag_id = rtagid;BEGINSELECT rtag_idINTO rtagiddbFROM dash_boardWHERE rtag_id = rtagid;SELECT proj_idINTO projiddbFROM dash_boardWHERE rtag_id = rtagid;EXCEPTIONWHEN NO_DATA_FOUNDTHENrtagiddb := '';END;IF rtagiddb IS NULLTHENSELECT proj_idINTO projidFROM release_tagsWHERE 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);ELSEUPDATE dash_boardSET last_build_time = ora_sysdatetime,automated_packages = auto_total,total_packages = totalWHERE 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 NUMBERISuserid NUMBER;outerrcode NUMBER;pkgid NUMBER;CURSOR dnr_duplicate_curISSELECT *FROM do_not_rippleWHERE pv_id = pvid AND rtag_id = rtagid;dnr_duplicate_rec dnr_duplicate_cur%ROWTYPE;BEGINouterrcode := -1; -- Set default return error code to ERROR state/*--------------- Business Rules Here -------------------*/IF (rtagid IS NULL)THENRETURN outerrcode;-- raise_application_error (-20000, 'RtagId must be supplied.');END IF;IF (pvid IS NULL)THENRETURN outerrcode;-- raise_application_error (-20000, 'PvId must be supplied.');END IF;IF (username IS NULL)THENRETURN outerrcode;-- raise_application_error (-20000, 'UserName must be supplied.');END IF;-- Get user_idBEGINSELECT usr.user_idINTO useridFROM users usrWHERE UPPER (usr.user_name) = UPPER (username)AND usr.is_disabled IS NULL;EXCEPTIONWHEN NO_DATA_FOUNDTHENRETURN outerrcode;-- raise_application_error (-20000,-- 'UserName '-- || username-- || ' is not valid or disabled.'-- );END;OPEN dnr_duplicate_cur;FETCH dnr_duplicate_curINTO dnr_duplicate_rec;IF dnr_duplicate_cur%FOUNDTHENouterrcode := 0;END IF;IF dnr_duplicate_cur%NOTFOUNDTHEN/* No duplicate recordset */unripple_package (pvid, rtagid, userid);outerrcode := 0; -- Set return to SUCCESSEND IF;CLOSE dnr_duplicate_cur;SELECT pkg_idINTO pkgidFROM package_versionsWHERE pv_id = pvid;DELETE FROM planned_versionsWHERE pkg_id = pkgid AND pkg_version = spkgversion;RETURN outerrcode;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION exclude_indirect_from_build (pvid IN NUMBER,spkgversion IN VARCHAR2,rtagid IN NUMBER,username IN VARCHAR2,rootpvid IN NUMBER,rootcause IN VARCHAR2,rootfile IN VARCHAR2)RETURN NUMBERISuserid NUMBER;outerrcode NUMBER;pkgid NUMBER;CURSOR dnr_duplicate_curISSELECT *FROM do_not_rippleWHERE pv_id = pvid AND rtag_id = rtagid;dnr_duplicate_rec dnr_duplicate_cur%ROWTYPE;BEGINouterrcode := -1; -- Set default return error code to ERROR state/*--------------- Business Rules Here -------------------*/IF (rtagid IS NULL)THENRETURN outerrcode;-- raise_application_error (-20000, 'RtagId must be supplied.');END IF;IF (pvid IS NULL)THENRETURN outerrcode;-- raise_application_error (-20000, 'PvId must be supplied.');END IF;IF (username IS NULL)THENRETURN outerrcode;-- raise_application_error (-20000, 'UserName must be supplied.');END IF;-- Get user_idBEGINSELECT usr.user_idINTO useridFROM users usrWHERE UPPER (usr.user_name) = UPPER (username)AND usr.is_disabled IS NULL;EXCEPTIONWHEN NO_DATA_FOUNDTHENRETURN outerrcode;-- raise_application_error (-20000,-- 'UserName '-- || username-- || ' is not valid or disabled.'-- );END;/* No duplicate recordset */unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);outerrcode := 0; -- Set return to SUCCESSSELECT pkg_idINTO pkgidFROM package_versionsWHERE pv_id = pvid;DELETE FROM planned_versionsWHERE pkg_id = pkgid AND pkg_version = spkgversion;RETURN outerrcode;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)ISBEGININSERT 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 NUMBERIScitemcollection relmgr_varchar2_tab_t := relmgr_varchar2_tab_t ();lv_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 */lv_branches NUMBER;lv_branchlist VARCHAR2(4000);lv_codefiles NUMBER;lv_ignoredfiles NUMBER;lv_directories NUMBER;lv_directorydepth NUMBER;lv_totalfiles NUMBER;lv_makefiles NUMBER;lv_blanklines NUMBER;lv_codelines NUMBER;lv_commentlines NUMBER;BEGIN/*--------------- Business Rules Here -------------------*/IF (rtagid IS NULL)THENRETURN return_insert_error;END IF;IF (pkgname IS NULL)THENRETURN return_insert_error;END IF;IF (metricstring IS NULL)THENRETURN return_insert_error;END IF;BEGINSELECT pv.pv_idINTO lv_pvidFROM package_versions pv, packages pkg, release_content rcWHERE pv.pkg_id = pkg.pkg_idAND rc.rtag_id = rtagidAND pv.pv_id = rc.pv_idAND pkg.pkg_name = pkgnameAND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');EXCEPTIONWHEN NO_DATA_FOUNDTHENlv_pvid := 0;END;citemcollection := in_list_varchar2 (metricstring, ';');FOR rownumber IN 1 .. citemcollection.COUNTLOOProwcontent := citemcollection(rownumber);metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');IF metricname = 'ccbranch.count' THEN lv_branches := metricvalue;ELSIF metricname = 'ccbranch.list' THEN lv_branchlist := metricvalue;ELSIF metricname = 'code.files' THEN lv_codefiles := metricvalue;ELSIF metricname = 'code.ignored' THEN lv_ignoredfiles := metricvalue;ELSIF metricname = 'count.dir' THEN lv_directories := metricvalue;ELSIF metricname = 'count.dirdepth' THEN lv_directorydepth := metricvalue;ELSIF metricname = 'count.file' THEN lv_totalfiles := metricvalue;ELSIF metricname = 'count.makefile' THEN lv_makefiles := metricvalue;ELSIF metricname = 'lines.blank' THEN lv_blanklines := metricvalue;ELSIF metricname = 'lines.code' THEN lv_codelines := metricvalue;ELSIF metricname = 'lines.comment' THEN lv_commentlines := metricvalue;END IF;END LOOP;IF (lv_pvid > 0)THEN-- Delete any existing entries for this package version to makes sure our data is untaintedDELETE FROM package_metrics pmWHERE pm.pv_id = lv_pvid;-- Insert the new data into the metrics tableINSERT 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 (lv_pvid, lv_branches, lv_branchlist, lv_codefiles, lv_ignoredfiles, lv_directories, lv_directorydepth,lv_totalfiles, lv_makefiles, lv_blanklines, lv_codelines, lv_commentlines, ora_sysdatetime);-- Now update the Release_Metrics Tableupdate_release_metrics(rtagid);RETURN return_insert_success;ELSERETURN return_insert_error;END IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE update_release_metrics (rtagid IN NUMBER)ISlv_totalpackages NUMBER;lv_autobuilt NUMBER;lv_linesofcode NUMBER;lv_unittested NUMBER;lv_autotested NUMBER;lv_numOfbranches NUMBER;lv_lastbuildtime DATE;BEGINIF (rtagid > 0)THEN-- Get the total number of packages in this release and the number of-- those that are autobuiltSELECT COUNT (DISTINCT rc.pv_id),COUNT (DISTINCT autobuilt_qry.pv_id)INTO lv_totalpackages, lv_autobuiltFROM release_content rc,package_versions pv,(SELECT rc.pv_idFROM release_content rc,package_versions pvWHERE pv.is_autobuildable = 'Y'AND pv.pv_id = rc.pv_idAND rc.rtag_id = rtagid) autobuilt_qryWHERE pv.pv_id = rc.pv_idAND rc.rtag_id = rtagidAND 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 codeSELECT MAX(pm.created_stamp),SUM(pm.code_lines)INTO lv_lastbuildtime, lv_linesofcodeFROM package_metrics pm, release_content rcWHERE pm.pv_id = rc.pv_idAND rc.rtag_id = rtagid;-- Get the number of packages with unit tests in this release and the-- number of those that are autotestedSELECT COUNT(DISTINCT ut.pv_id) INTO lv_unittestedFROM unit_tests ut,release_content rcWHERE ut.pv_id = rc.pv_idAND rc.rtag_id = rtagidAND ut.test_types_fk != 1;SELECT COUNT(DISTINCT ut.pv_id) INTO lv_autotestedFROM unit_tests ut,release_content rcWHERE ut.pv_id = rc.pv_idAND rc.rtag_id = rtagidAND ut.test_types_fk = 7;-- Count the number of unique branches in the packages in this release.-- SELECT COUNT(DISTINCT branch) INTO lv_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 rmSET rm.total_packages = lv_totalpackages,rm.autobuilt = lv_autobuilt,rm.lines_of_code = lv_linesofcode,rm.unit_tested = lv_unittested,rm.autotested = lv_autotested,-- rm.branches = lv_numOfbranches,rm.last_build_time = lv_lastbuildtimeWHERE rtag_id = rtagid;IF (SQL%ROWCOUNT = 0)THENINSERT INTO release_metrics(rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,autotested, last_build_time)VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,lv_autotested, lv_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, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,-- lv_autotested, lv_numOfbranches, lv_lastbuildtime-- );-- END IF;-- ELSE-- raise_application_error (-20000, 'RtagId must be supplied.');END IF;END;/*-------------------------------------------------------------------------------------------------------*/END pk_rmapi;/CREATE OR REPLACE PACKAGE BODY pk_environment_testIS/*------------------------------|| Last Modified: Rupesh Solanki|| Modified Date: 29/Jan/2007|| Body Version: 1.1------------------------------*//*-------------------------------------------------------------------------------------------------------*/FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)RETURN NUMBERISBEGIN/*|| 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 NUMBERISenvtab NUMBER := -1;CURSOR curareaISSELECT 2 AS envtabFROM release_content rcWHERE rc.rtag_id = rtagid AND rc.pv_id = pvidUNIONSELECT 0 AS envtabFROM work_in_progress wipWHERE wip.rtag_id = rtagid AND wip.pv_id = pvidUNIONSELECT 1 AS envtabFROM planned plWHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;recarea curarea%ROWTYPE;BEGINOPEN curarea;FETCH curareaINTO recarea;IF curarea%FOUNDTHENenvtab := recarea.envtab;END IF;CLOSE curarea;RETURN envtab;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)RETURN NUMBERISispatch package_versions.dlocked%TYPE;viewid NUMBER := -1;CURSOR curviewISSELECT rc.base_view_id AS view_idFROM release_content rcWHERE rc.rtag_id = rtagid AND rc.pv_id = pvidUNIONSELECT wip.view_id AS view_idFROM work_in_progress wipWHERE wip.rtag_id = rtagid AND wip.pv_id = pvidUNIONSELECT pl.view_id AS view_idFROM planned plWHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;recview curview%ROWTYPE;BEGIN-- Get dlock stateSELECT pv.is_patchINTO ispatchFROM package_versions pvWHERE pv.pv_id = pvid;-- Decide which view id should package go under.IF (ispatch != 'Y') OR (ispatch IS NULL)THEN-- Get VIEW ID of PackageOPEN curview;FETCH curviewINTO recview;IF curview%FOUNDTHENviewid := recview.view_id;ELSEraise_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_idINTO viewidFROM release_content rc, package_patches ppvWHERE rc.rtag_id = rtagidAND rc.pv_id = ppv.pv_idAND ppv.patch_id = pvid;END IF;RETURN viewid;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE add_package (pvid IN NUMBER,viewid IN NUMBER,rtagid IN NUMBER,userid IN NUMBER)ISdlocked package_versions.dlocked%TYPE;envtab NUMBER;BEGINIF can_edit_pkg_in_project (pvid, rtagid) = 1THEN-- Get dlock stateSELECT pv.dlockedINTO dlockedFROM package_versions pvWHERE pv.pv_id = pvid;-- Get which area should go underenvtab := select_environment_area (dlocked);-- Loglog_action (pvid, 'action', userid, 'Start of Package Add...');-- Remove PackageIF envtab = 0THEN-- WORK IN PROGRESS --pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);ELSIF envtab = 1THEN-- PENDING --pk_planned.add_package (pvid, viewid, rtagid, userid);ELSIF envtab = 2THEN-- RELEASED ---- NOTE: this package will be replaced with matching packagepk_release.add_package (pvid, viewid, rtagid, userid);-- Now do post Release Actionspk_release.run_post_actions (pvid, rtagid);END IF;-- Loglog_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)ISnidcollector 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)THENraise_application_error (-20000,'Please select at least one package.');END IF;/*-------------------------------------------------------*/nidcollector := in_list_number (pvidlist);FOR i IN 1 .. nidcollector.COUNTLOOPpvid := 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)ISdlocked 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 removedSELECT COUNT (pv.pv_id)INTO ROWCOUNTFROM package_versions pvWHERE pv.pv_id = oldpvid;/*-------------------------------------------------------*//* This procedure is usually used by "History" option in Release Manager */-- Get dlock stateSELECT pv.dlockedINTO dlockedFROM package_versions pvWHERE pv.pv_id = newpvid;-- Get VIEW_ID ---IF ROWCOUNT = 1THENviewid := get_view_location (oldpvid, rtagid);ELSE-- Set ViewID to defaultviewid := 7;END IF;-- Get which area should go underenvtab := select_environment_area (dlocked);-- Loglog_action (oldpvid, 'action', userid, 'Start of Package Replace...');-- Replace packageIF envtab = 0THEN-- WORK IN PROGRESS ---- Delete old packagepk_work_in_progress.remove_package (oldpvid, rtagid, userid);-- Add new packagepk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);ELSIF envtab = 1THEN-- PENDING ---- Delete old packagepk_planned.remove_package (oldpvid, rtagid, userid);-- Add new packagepk_planned.add_package (newpvid, viewid, rtagid, userid);ELSIF envtab = 2THEN-- RELEASED ---- Delete old packagepk_release.remove_package (oldpvid, rtagid, userid);-- Add new packagepk_release.add_package (newpvid, viewid, rtagid, userid);-- Now do post Release Actionspk_release.run_post_actions (newpvid, rtagid);END IF;-- Loglog_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 NUMBERISenvtab NUMBER;isused BOOLEAN;recordcount NUMBER;BEGIN/*--------------- Business Rules Here -------------------*//*-------------------------------------------------------*/-- Find location of packageenvtab := get_package_area (pvid, rtagid);-- Remove PackageIF envtab = 0THEN-- WORK IN PROGRESS ---- Delete packagepk_work_in_progress.remove_package (pvid, rtagid, userid);RETURN 0;ELSIF envtab = 1THEN-- PENDING ---- Delete packagepk_planned.remove_package (pvid, rtagid, userid);RETURN 0;ELSIF envtab = 2THEN-- RELEASED ---- Check if is used by other packagesisused := TRUE;IF forceremove = 'N'THENSELECT COUNT (pv.pv_id)INTO recordcountFROM (SELECT dpv.pkg_id, dpv.v_extFROM release_content rc,package_dependencies dep,package_versions dpvWHERE rc.rtag_id = rtagidAND rc.pv_id = dep.pv_idAND dep.dpv_id = dpv.pv_id) rdep,package_versions pvWHERE pv.pkg_id = rdep.pkg_idAND NVL (pv.v_ext, '|LINK_A_NULL|') =NVL (rdep.v_ext, '|LINK_A_NULL|')AND pv.pv_id = pvid;IF recordcount > 0THENRETURN 1; -- Return 1 as package being usedELSEisused := FALSE;END IF;END IF;IF forceremove = 'Y' OR NOT isusedTHEN-- Delete old packagepk_release.remove_package (pvid, rtagid, userid);-- Now do post Release Actionspk_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)ISBEGIN-- Get true record count because views can give false countSELECT COUNT (pl.pv_id)INTO ntruerecordcountFROM environment_view plWHERE pl.rtag_id = rtagid;IF viewtype = 1THEN/*--- GUEST VIEW ---*/OPEN recordset FORSELECT *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_descriptionFROM environment_view rel, views viWHERE rel.view_id = vi.view_idAND rtag_id = rtagidAND 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_descriptionFROM environment_view rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = vi.view_idAND rel.view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagid) ordORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);ELSIF viewtype = 2THEN/*--- PERSONAL VIEW ---*/OPEN recordset FORSELECT *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_descriptionFROM environment_view rel,view_settings vs,views viWHERE rel.view_id = vi.view_idAND vs.view_id = rel.view_idAND vs.user_id = useridAND rtag_id = rtagidAND 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_descriptionFROM environment_view rel,PACKAGES pkg,package_versions pv,views vi,view_settings vsWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = vi.view_idAND vs.view_id = vi.view_idAND vs.user_id = useridAND rel.view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagidUNION/* 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_descriptionFROM view_settings vs,view_def vd,views vi,environment_view rel,package_versions pvWHERE vs.view_id = vi.view_idAND rel.pv_id = pv.pv_idAND vd.pkg_id = pv.pkg_idAND vd.view_id = vi.view_idAND vi.base_view = 'N'AND rel.rtag_id = rtagidAND vs.user_id = useridAND 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_descriptionFROM users usr,view_settings vs,view_def vd,views vi,environment_view rel,PACKAGES pkg,package_versions pvWHERE vs.user_id = usr.user_idAND vs.view_id = vi.view_idAND vd.view_id = vi.view_idAND pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.rtag_id = rtagidAND vd.pkg_id = pkg.pkg_idAND 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) ordORDER 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)ISBEGIN-- Get true record count because views can give false countSELECT COUNT (rc.pv_id)INTO ntruerecordcountFROM release_content rcWHERE rc.rtag_id = rtagid;IF viewtype = 1THEN/*--- GUEST VIEW ---*/OPEN recordset FORSELECT *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_descriptionFROM release_content rel, views viWHERE rel.base_view_id = vi.view_idAND rtag_id = rtagidAND 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND 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) ordORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);ELSIF viewtype = 2THEN/*--- PERSONAL VIEW ---*/OPEN recordset FORSELECT *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_descriptionFROM release_content rel,view_settings vs,views viWHERE rel.base_view_id = vi.view_idAND vs.view_id = rel.base_view_idAND vs.user_id = useridAND rtag_id = rtagidAND 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views vi,view_settings vsWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND vs.view_id = vi.view_idAND vs.user_id = useridAND rel.base_view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagidUNION/* 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_descriptionFROM view_settings vs,view_def vd,views vi,release_content rel,package_versions pvWHERE vs.view_id = vi.view_idAND rel.pv_id = pv.pv_idAND vd.pkg_id = pv.pkg_idAND vd.view_id = vi.view_idAND vi.base_view = 'N'AND rel.rtag_id = rtagidAND vs.user_id = useridAND 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_descriptionFROM users usr,view_settings vs,view_def vd,views vi,release_content rel,PACKAGES pkg,package_versions pvWHERE vs.user_id = usr.user_idAND vs.view_id = vi.view_idAND vd.view_id = vi.view_idAND pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.rtag_id = rtagidAND vd.pkg_id = pkg.pkg_idAND 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) ordORDER 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)ISBEGIN-- Get true record count because views can give false countSELECT COUNT (wip.pv_id)INTO ntruerecordcountFROM work_in_progress wipWHERE wip.rtag_id = rtagid;IF viewtype = 1THEN/*--- GUEST VIEW ---*/OPEN recordset FORSELECT *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_descriptionFROM work_in_progress rel, views viWHERE rel.view_id = vi.view_idAND rtag_id = rtagidAND 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_descriptionFROM work_in_progress rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = vi.view_idAND rel.view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagid) ordORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);ELSIF viewtype = 2THEN/*--- PERSONAL VIEW ---*/OPEN recordset FORSELECT *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_descriptionFROM work_in_progress rel,view_settings vs,views viWHERE rel.view_id = vi.view_idAND vs.view_id = rel.view_idAND vs.user_id = useridAND rtag_id = rtagidAND 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_descriptionFROM work_in_progress rel,PACKAGES pkg,package_versions pv,views vi,view_settings vsWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = vi.view_idAND vs.view_id = vi.view_idAND vs.user_id = useridAND rel.view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagidUNION/* 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_descriptionFROM view_settings vs,view_def vd,views vi,work_in_progress rel,package_versions pvWHERE vs.view_id = vi.view_idAND rel.pv_id = pv.pv_idAND vd.pkg_id = pv.pkg_idAND vd.view_id = vi.view_idAND vi.base_view = 'N'AND rel.rtag_id = rtagidAND vs.user_id = useridAND 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_descriptionFROM users usr,view_settings vs,view_def vd,views vi,work_in_progress rel,PACKAGES pkg,package_versions pvWHERE vs.user_id = usr.user_idAND vs.view_id = vi.view_idAND vd.view_id = vi.view_idAND pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.rtag_id = rtagidAND vd.pkg_id = pkg.pkg_idAND 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) ordORDER 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)ISBEGIN-- Get true record count because views can give false countSELECT COUNT (pl.pv_id)INTO ntruerecordcountFROM planned plWHERE pl.rtag_id = rtagid;IF viewtype = 1THEN/*--- GUEST VIEW ---*/OPEN recordset FORSELECT *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_descriptionFROM planned rel, views viWHERE rel.view_id = vi.view_idAND rtag_id = rtagidAND 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_descriptionFROM planned rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = vi.view_idAND rel.view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagid) ordORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);ELSIF viewtype = 2THEN/*--- PERSONAL VIEW ---*/OPEN recordset FORSELECT *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_descriptionFROM planned rel, view_settings vs, views viWHERE rel.view_id = vi.view_idAND vs.view_id = rel.view_idAND vs.user_id = useridAND rtag_id = rtagidAND 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_descriptionFROM planned rel,PACKAGES pkg,package_versions pv,views vi,view_settings vsWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = vi.view_idAND vs.view_id = vi.view_idAND vs.user_id = useridAND rel.view_id IN (SELECT *FROM THE(SELECT CAST(in_list_number(sviewidshowlist) AS relmgr_number_tab_t)FROM DUAL))AND rtag_id = rtagidUNION/* 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_descriptionFROM view_settings vs,view_def vd,views vi,planned rel,package_versions pvWHERE vs.view_id = vi.view_idAND rel.pv_id = pv.pv_idAND vd.pkg_id = pv.pkg_idAND vd.view_id = vi.view_idAND vi.base_view = 'N'AND rel.rtag_id = rtagidAND vs.user_id = useridAND 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_descriptionFROM users usr,view_settings vs,view_def vd,views vi,planned rel,PACKAGES pkg,package_versions pvWHERE vs.user_id = usr.user_idAND vs.view_id = vi.view_idAND vd.view_id = vi.view_idAND pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.rtag_id = rtagidAND vd.pkg_id = pkg.pkg_idAND 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) ordORDER 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)ISisbaseview CHAR (1);BEGIN-- Check if the view is BASE VIEWSELECT vi.base_viewINTO isbaseviewFROM views viWHERE vi.view_id = viewid;IF (isbaseview = 'Y')THEN-- Get Base view contentOPEN recordset FORSELECT 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_typeFROM environment_view rel, PACKAGES pkg, package_versions pvWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.view_id = viewidAND rel.rtag_id = rtagidORDER BY UPPER (pkg.pkg_name);ELSE-- Get non base view contentOPEN recordset FORSELECT 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_typeFROM environment_view rel,PACKAGES pkg,package_versions pv,view_def vdWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.rtag_id = rtagidAND vd.view_id = viewidAND vd.pkg_id = pv.pkg_idORDER BY UPPER (pkg.pkg_name);END IF;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)RETURN NUMBERISenvtab NUMBER;returnvalue NUMBER;return_not_found NUMBER := -1;BEGINenvtab := get_package_area (pvid, rtagid);IF envtab = 0THEN-- WORK IN PROGRESS --returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);ELSIF envtab = 1THEN-- PENDING --returnvalue := pk_planned.get_package_view (pvid, rtagid);ELSIF envtab = 2THEN-- RELEASED --returnvalue := pk_release.get_package_view (pvid, rtagid);ELSE-- This may be a Patch not located anywhere but unlockedreturnvalue := return_not_found;END IF;RETURN returnvalue;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)ISviewid NUMBER;envtab NUMBER;ispatch CHAR (1) := NULL;buildtype CHAR (1) := NULL;lastversionid NUMBER;BEGIN-- Check if package is patchSELECT pv.is_patch, pv.build_type, pv.last_pv_idINTO ispatch, buildtype, lastversionidFROM package_versions pvWHERE pv.pv_id = pvid;-- Get ViewIdviewid := get_package_view (pvid, rtagid);-- Remove from current areaenvtab := 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 buildsIF (envtab < 0)THEN-- Not found in work-in-progress or pendingIF (ispatch IS NULL) AND (buildtype = 'M')THENraise_application_error (-20000,'This package cannot be released here.');END IF;END IF;-- Loglog_action (pvid, 'action', userid, 'Start of Make Package Release...');IF envtab = 0THEN-- WORK IN PROGRESS --pk_work_in_progress.remove_package (pvid, rtagid, userid);ELSIF envtab = 1THEN-- PENDING --pk_planned.remove_package (pvid, rtagid, userid);END IF;-- Change package statepk_package.change_state (pvid, 'Y', userid);-- Make sure it is valid BASE VIEWIF viewid < 1THENviewid := 7; -- This is default base viewEND IF;IF (ispatch IS NULL)THEN-- Add package to new areapk_release.add_package (pvid, viewid, rtagid, userid);END IF;-- Now do post Release Actionspk_release.run_post_actions (pvid, rtagid);-- Now delete old version from DO_NOT_RIPPLE Table if it ExistsDELETE FROM do_not_rippleWHERE rtag_id = rtagid AND pv_id = lastversionid;-- Now delete old version from ADVISORY_RIPPLES Table if it ExistsDELETE FROM advisory_rippleWHERE rtag_id = rtagid AND pv_id = lastversionid;-- Loglog_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)ISviewid NUMBER;envtab NUMBER;ispatch CHAR (1) := NULL;buildtype CHAR (1) := NULL;lastversionid NUMBER;BEGIN-- Check if package is patchSELECT pv.is_patch, pv.build_type, pv.last_pv_idINTO ispatch, buildtype, lastversionidFROM package_versions pvWHERE pv.pv_id = pvid;IF vext <> ssv_extTHEN-- Get ViewIdviewid := get_package_view (clonefrompvid, rtagid);-- Remove from current areaenvtab := pk_environment.get_package_area (clonefrompvid, rtagid);ELSE-- Get ViewIdviewid := get_package_view (pvid, rtagid);-- Remove from current areaenvtab := 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 buildsIF (envtab < 0)THEN-- Not found in work-in-progress or pendingIF (ispatch IS NULL) AND (buildtype = 'M')THENraise_application_error (-20000,'This package cannot be released here.');END IF;END IF;-- Loglog_action (pvid, 'action', userid, 'Start of Make Package Release...');IF vext <> ssv_extTHENIF envtab = 0THEN-- WORK IN PROGRESS --pk_work_in_progress.remove_package (clonefrompvid, rtagid,userid);ELSIF envtab = 1THEN-- PENDING --pk_planned.remove_package (clonefrompvid, rtagid, userid);ELSIF envtab = 2THEN-- RELEASED --pk_release.remove_package (clonefrompvid, rtagid, userid);END IF;ELSEIF envtab = 0THEN-- WORK IN PROGRESS --pk_work_in_progress.remove_package (pvid, rtagid, userid);ELSIF envtab = 1THEN-- PENDING --pk_planned.remove_package (pvid, rtagid, userid);END IF;END IF;-- Change package statepk_package.change_state (pvid, 'Y', userid);-- Make sure it is valid BASE VIEWIF viewid < 1THENviewid := 7; -- This is default base viewEND IF;IF (ispatch IS NULL)THEN-- Add package to new areapk_release.add_package (pvid, viewid, rtagid, userid);END IF;-- Now do post Release Actionspk_release.run_post_actions (pvid, rtagid);-- Now update the Dash_Board Tablepk_rmapi.update_dash_board (rtagid);-- Now delete old version from DO_NOT_RIPPLE Table if it ExistsDELETE FROM do_not_rippleWHERE rtag_id = rtagid AND pv_id = lastversionid;-- Now delete old version from ADVISORY_RIPPLES Table if it ExistsDELETE FROM advisory_rippleWHERE rtag_id = rtagid AND pv_id = lastversionid;-- Loglog_action (pvid, 'action', userid, 'End of Make Package Release...');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)ISviewid NUMBER;envtab NUMBER;BEGIN-- Get ViewId--ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );viewid := get_package_view (pvid, rtagid);-- Remove from current areaenvtab := pk_environment.get_package_area (pvid, rtagid);-- Loglog_action (pvid,'action',userid,'Start of Make Package UnRelease...');IF envtab = 2THEN-- RELEASE AREA --pk_release.remove_package (pvid, rtagid, userid);ELSIF envtab = 1THEN-- PENDING --pk_planned.remove_package (pvid, rtagid, userid);END IF;-- Change package statepk_package.change_state (pvid, 'N', userid);-- Make sure it is valid BASE VIEWIF viewid < 1THENviewid := 7; -- This is default base viewEND IF;-- Add package to new areapk_work_in_progress.add_package (pvid, viewid, rtagid, userid);-- Now do post Release Actionspk_release.run_post_actions (pvid, rtagid);-- Loglog_action (pvid, 'action', userid, 'End of Make Package UnRelease...');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)ISviewid NUMBER;ispatch CHAR (1) := NULL;buildtype CHAR (1) := NULL;BEGIN-- Check if package is patchSELECT pv.is_patch, pv.build_typeINTO ispatch, buildtypeFROM package_versions pvWHERE pv.pv_id = pvid;-- Get ViewIdviewid := get_package_view (pvid, rtagid);--ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );-- Loglog_action (pvid, 'action', userid, 'Start of Make Package Pending...');IF (ispatch IS NULL)THEN-- Remove from current areapk_work_in_progress.remove_package (pvid, rtagid, userid);-- Change package statepk_package.change_state (pvid, 'P', userid);-- Add package to new areapk_planned.add_package (pvid, viewid, rtagid, userid);END IF;-- Loglog_action (pvid, 'action', userid, 'End of Make Package Pending...');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)ISBEGIN-- Loglog_action (pvid,'action',userid,'Start of Package Pending Approval...');-- Change package statepk_package.change_state (pvid, 'A', userid);-- Loglog_action (pvid, 'action', userid,'End of Package Pending Approval...');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)ISviewid NUMBER;BEGIN-- Get ViewIdviewid := get_package_view (pvid, rtagid);-- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );-- Loglog_action (pvid, 'action', userid, 'Start of Reject Package...');-- Remove from current areapk_planned.remove_package (pvid, rtagid, userid);-- Change package statepk_package.change_state (pvid, 'R', userid);-- Add package to new areapk_work_in_progress.add_package (pvid, viewid, rtagid, userid);-- Loglog_action (pvid, 'action', userid, 'Start of Reject Package...');END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE change_package_view (pvid IN NUMBER,rtagid IN NUMBER,newviewid IN NUMBER)ISenvtab NUMBER;BEGINenvtab := pk_environment.get_package_area (pvid, rtagid);IF envtab = 0THEN-- WORK IN PROGRESS --pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);ELSIF envtab = 1THEN-- PENDING --pk_planned.change_package_view (pvid, rtagid, newviewid);ELSIF envtab = 2THEN-- 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)ISBEGINIF nsearcharea = 0THEN/* Search Work In Progress */OPEN recordset FORSELECT 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_emailFROM views vi,work_in_progress rc,PACKAGES pkg,package_versions pv,users usrWHERE rc.view_id = vi.view_idAND rc.pv_id = pv.pv_idAND pkg.pkg_id = pv.pkg_idAND pv.modifier_id = usr.user_idAND rc.rtag_id = nrtagidAND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)ORDER BY UPPER (pkg.pkg_name);ELSIF nsearcharea = 1THEN/* Search Pending */OPEN recordset FORSELECT 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_emailFROM views vi,planned rc,PACKAGES pkg,package_versions pv,users usrWHERE rc.view_id = vi.view_idAND rc.pv_id = pv.pv_idAND pkg.pkg_id = pv.pkg_idAND pv.modifier_id = usr.user_idAND rc.rtag_id = nrtagidAND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)ORDER BY UPPER (pkg.pkg_name);ELSIF nsearcharea = 2THEN/* Search Released */OPEN recordset FORSELECT 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_emailFROM views vi,release_content rc,PACKAGES pkg,package_versions pv,users usrWHERE rc.base_view_id = vi.view_idAND rc.pv_id = pv.pv_idAND pkg.pkg_id = pv.pkg_idAND pv.modifier_id = usr.user_idAND rc.rtag_id = nrtagidAND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)ORDER BY UPPER (pkg.pkg_name);ELSIF nsearcharea = 3THEN/* Search ALL */OPEN recordset FORSELECT 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_emailFROM views vi,environment_view rc,PACKAGES pkg,package_versions pv,users usrWHERE rc.view_id = vi.view_idAND rc.pv_id = pv.pv_idAND pkg.pkg_id = pv.pkg_idAND pv.modifier_id = usr.user_idAND rc.rtag_id = nrtagidAND 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)ISBEGINIF nsearcharea = 0THEN/* Search Work In Progress */OPEN recordset FORSELECT qry.*FROM (/* File search on Packages */SELECT art.file_name, art.file_path, pkg.pkg_name,pv.pv_id, pv.pkg_version, art.crc_cksumFROM work_in_progress rc,PACKAGES pkg,package_versions pv,release_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND 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_cksumFROM work_in_progress rc,PACKAGES pkg,package_versions pv,product_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND UPPER (art.file_name) LIKE UPPER (skeyword)) qryWHERE ROWNUM <= npagesizeORDER BY UPPER (qry.pkg_name);ELSIF nsearcharea = 1THEN/* Search Pending */OPEN recordset FORSELECT qry.*FROM (/* File search on Packages */SELECT art.file_name, art.file_path, pkg.pkg_name,pv.pv_id, pv.pkg_version, art.crc_cksumFROM planned rc,PACKAGES pkg,package_versions pv,release_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND 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_cksumFROM planned rc,PACKAGES pkg,package_versions pv,product_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND UPPER (art.file_name) LIKE UPPER (skeyword)) qryWHERE ROWNUM <= npagesizeORDER BY UPPER (qry.pkg_name);ELSIF nsearcharea = 2THEN/* Search Released */OPEN recordset FORSELECT 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_idFROM release_content rc,PACKAGES pkg,package_versions pv,release_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND 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_idFROM release_content rc,PACKAGES pkg,package_versions pv,product_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND 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_idFROM release_content rc,PACKAGES pkg,package_versions pv,release_components art,package_patches ppWHERE pv.pv_id = pp.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.rtag_id = nrtagidAND art.pv_id = pp.patch_idAND rc.pv_id = pp.pv_idAND UPPER (art.file_name) LIKE UPPER (skeyword)) qryWHERE ROWNUM <= npagesizeORDER BY UPPER (qry.pkg_name);ELSIF nsearcharea = 3THEN/* Search ALL */OPEN recordset FORSELECT 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_idFROM environment_view rc,PACKAGES pkg,package_versions pv,release_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND 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_idFROM environment_view rc,PACKAGES pkg,package_versions pv,product_components artWHERE rc.pv_id = art.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.pv_id = pv.pv_idAND rc.rtag_id = nrtagidAND 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_idFROM release_content rc,PACKAGES pkg,package_versions pv,release_components art,package_patches ppWHERE pv.pv_id = pp.pv_idAND pv.pkg_id = pkg.pkg_idAND rc.rtag_id = nrtagidAND art.pv_id = pp.patch_idAND rc.pv_id = pp.pv_idAND UPPER (art.file_name) LIKE UPPER (skeyword)) qryWHERE ROWNUM <= npagesizeORDER BY UPPER (qry.pkg_name);END IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE get_prodrelease_items (rtagid IN NUMBER,ntruerecordcount OUT NUMBER,recordset OUT typecur)ISBEGIN-- Get true record count n the number of integration productsSELECT COUNT (rc.pv_id)INTO ntruerecordcountFROM release_content rcWHERE rc.rtag_id = rtagid;OPEN recordset FORSELECT 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND pv.is_deployable = 'Y'AND rtag_id = rtagidAND pv.pv_id NOT IN (SELECT DISTINCT prod_idFROM deployment_manager.os_contents)AND rel.product_state IS NULLORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE get_integration_items (rtagid IN NUMBER,ntruerecordcount OUT NUMBER,recordset OUT typecur)ISBEGIN-- Get true record count n the number of integration productsSELECT COUNT (rc.pv_id)INTO ntruerecordcountFROM release_content rcWHERE rc.rtag_id = rtagid AND rc.product_state = 1;OPEN recordset FORSELECT 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND pv.is_deployable = 'Y'AND rtag_id = rtagidAND 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)ISBEGIN-- Get true record count n the number of test productsSELECT COUNT (rc.pv_id)INTO ntruerecordcountFROM release_content rcWHERE rc.rtag_id = rtagid AND rc.product_state = 2;OPEN recordset FORSELECT 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND pv.is_deployable = 'Y'AND rtag_id = rtagidAND rel.product_state = 2ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE get_deploy_items (rtagid IN NUMBER,ntruerecordcount OUT NUMBER,recordset OUT typecur)ISBEGIN-- Get true record count n the number of deploy productsSELECT COUNT (rc.pv_id)INTO ntruerecordcountFROM release_content rcWHERE rc.rtag_id = rtagid AND rc.product_state = 3;OPEN recordset FORSELECT 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND pv.is_deployable = 'Y'AND rtag_id = rtagidAND rel.product_state IN (3, 5)AND pv.pv_id NOT IN (SELECT DISTINCT prod_idFROM 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)ISBEGIN-- Get true record count n the number of reject productsSELECT COUNT (rc.pv_id)INTO ntruerecordcountFROM release_content rcWHERE rc.rtag_id = rtagid AND rc.product_state = 4;OPEN recordset FORSELECT 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_descriptionFROM release_content rel,PACKAGES pkg,package_versions pv,views viWHERE pv.pkg_id = pkg.pkg_idAND rel.pv_id = pv.pv_idAND rel.base_view_id = vi.view_idAND pv.is_deployable = 'Y'AND rtag_id = rtagidAND rel.product_state = 4ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);END;/*-------------------------------------------------------------------------------------------------------*/END pk_environment_test;/CREATE OR REPLACE PACKAGE BODY "PK_LICENCING" IS/*------------------------------|| Last Modified: G.Huddy|| Modified Date: 19/Aug/2008|| Body Version: 1.0------------------------------*/PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) ISBEGINIF IS_LICENCED(PvId, licenceId) = 0 THEN-- Add entry to licencing tableINSERT INTO licencing (pv_id, licence)VALUES (PvId, licenceId);-- log action-- TODOEND IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) ISBEGINIF NOT IS_LICENCED(PvId, licenceId) = 0 THEN-- Delete entry from licencing tableDELETE FROM licencingWHERE pv_id = PvIdAND licence = licenceId;-- log action-- TODOEND IF;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER ) ISCURSOR licencing_curISSELECT *FROM licencingWHERE pv_id = fromPvId;licencing_rec licencing_cur%ROWTYPE;BEGIN-- For each licence association that the Last PV_ID had, create a similar-- arrangement for the new PV_ID-- NOTE that any additional licencing associations the new PV_ID has that the old one-- does not have, are retained. The assumption is that the user has made those and so we do not-- have any right to destroy them without asking them.OPEN licencing_cur;FETCH licencing_curINTO licencing_rec;WHILE licencing_cur%FOUNDLOOPADD_LICENCE ( toPvId, licencing_rec.licence, UserId );FETCH licencing_curINTO licencing_rec;END LOOP;END;/*-------------------------------------------------------------------------------------------------------*/FUNCTION IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER ISfound NUMBER;BEGINSELECT COUNT(*) INTO foundFROM licencingWHERE pv_id = PvIdAND licence = LicenceId;RETURN found;END;/*-------------------------------------------------------------------------------------------------------*/PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER ) ISCURSOR licencing_curISSELECT *FROM licencingWHERE pv_id = PvId;licencing_rec licencing_cur%ROWTYPE;BEGIN-- For each licence association that the PV_ID had, remove itOPEN licencing_cur;FETCH licencing_curINTO licencing_rec;WHILE licencing_cur%FOUNDLOOPREMOVE_LICENCE ( PvId, licencing_rec.licence, UserId );FETCH licencing_curINTO licencing_rec;END LOOP;END;/*-------------------------------------------------------------------------------------------------------*/END PK_LICENCING;/