Blame | Last modification | View Log | RSS feed
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_ENVIRONMENT_TEST"IS/*------------------------------|| Last Modified: Rupesh Solanki|| Modified Date: 29/Jan/2007|| Body Version: 1.1------------------------------*//*-------------------------------------------------------------------------------------------------------*/FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)RETURN 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);ELSIFenvtab = 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);-- Removefrom 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) ASpatch_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;/ALTER PACKAGE "RELEASE_MANAGER"."PK_ENVIRONMENT_TEST"COMPILE BODYPLSQL_OPTIMIZE_LEVEL= 2PLSQL_CODE_TYPE= INTERPRETEDPLSQL_DEBUG= FALSEREUSE SETTINGS TIMESTAMP '2008-05-26 11:58:44'/