Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

CREATE PROCEDURE "RELEASE_MANAGER"."BASIC_CLONE" ( nFROMpv_id IN NUMBER,
                                                                                  nTOpv_id IN NUMBER,
                                          nRtag_id IN NUMBER,
                                          nUser_id IN NUMBER,
                                          nTOpkg_id IN NUMBER DEFAULT NULL,
                                          enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS
/* ---------------------------------------------------------------------------
    Version: 3.5
   --------------------------------------------------------------------------- */

   FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;

BEGIN

------------------------------------- Clone Dependencies ---------------------------------------------------
        IF NOT nRtag_id IS NULL
    THEN
                -- Auto Update Dependencies --
                INSERT INTO PACKAGE_DEPENDENCIES
                    SELECT nTOpv_id AS pv_id,
                           DECODE(nUser_id,
                                  frc.modifier_id,
                                  frc.pv_id,
                                  DECODE(frc.dlocked,
                                         'Y',
                                         frc.pv_id,
                                         dep.dpv_id)
                                  ) AS dpv_id,
                           nTOpkg_id AS pkg_id,
                           dep.dpkg_id,
                           dep.build_type,
                                   dep.display_order
                      FROM PACKAGE_DEPENDENCIES dep,
                           PACKAGE_VERSIONS pv,
                           (
                           /* Full Release Contents used for reference*/
                           SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked
                           FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv
                           WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id
                           ) frc
                     WHERE dep.pv_id = nFROMpv_id
                       AND dep.dpv_id = pv.pv_id
                       AND pv.pkg_id = frc.pkg_id(+)
                       AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);

        ELSE
                -- Clone Dependencies --
                INSERT INTO PACKAGE_DEPENDENCIES
                    SELECT nTOpv_id         AS pv_id,
                           dep.dpv_id,
                           nTOpkg_id        AS pkg_id,
                           dep.dpkg_id,
                           dep.build_type,
                                   dep.display_order
                      FROM PACKAGE_DEPENDENCIES dep
                     WHERE dep.pv_id = nFROMpv_id;

        END IF;

----------------------------------------- Clone Issues -------------------------------------------------------
        IF enumISSUES_STATE_IMPORTED IS NULL
        THEN
        /* All Issues */
            INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
                 SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
                   FROM CQ_ISSUES
              WHERE pv_id = nFROMpv_id;
        ELSE
        /* Outstanding Issues Only */
            INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
                SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
                  FROM CQ_ISSUES
             WHERE pv_id = nFROMpv_id
               AND iss_state = enumISSUES_STATE_IMPORTED;
        END IF;


------------------------------------ Clone Runtime Dependencies -----------------------------------------------
        INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user)
            SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user
            FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id;


--------------------------------------- Clone Additional Notes ------------------------------------------------
        INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER )
         SELECT an.NOTE_ID,
                nTOpv_id AS PV_ID,
                an.NOTE_TITLE,
                an.NOTE_BODY,
                an.MOD_DATE,
                an.MOD_USER
           FROM ADDITIONAL_NOTES an
          WHERE an.PV_ID = nFROMpv_id;


-------------------------------------------- Clone Unit Tests -------------------------------------------------
        -- Clone only Automatic unit tests --
        INSERT INTO UNIT_TESTS (
                                                        TEST_ID,
                                                        PV_ID,
                                                        TEST_TYPES_FK,
                                                        TEST_SUMMARY,
                                                        COMPLETION_DATE,
                                                        COMPLETED_BY,
                                                        RESULTS_URL,
                                                        RESULTS_ATTACHMENT_NAME,
                                                        NUMOF_TEST
                                                        )
         SELECT ut.TEST_ID,
                nTOpv_id AS PV_ID,
                ut.TEST_TYPES_FK,
                ut.TEST_SUMMARY,
                Ora_Sysdate AS COMPLETION_DATE,
                nUser_id AS COMPLETED_BY,
                ut.RESULTS_URL,
                                ut.RESULTS_ATTACHMENT_NAME,
                                ut.NUMOF_TEST
           FROM UNIT_TESTS ut
          WHERE ut.PV_ID = nFROMpv_id
            AND ut.TEST_TYPES_FK IN ( 5, 7 );
                        
        -- Clone only Interactive Unit Tests --
        INSERT INTO UNIT_TESTS (
                                                    TEST_ID, 
                                                        PV_ID,
                                                        TEST_TYPES_FK,
                                                        TEST_SUMMARY
                                                        )
                SELECT ut.TEST_ID, 
                           nTOpv_id AS PV_ID,
                           ut.TEST_TYPES_FK,
                           ut.TEST_SUMMARY
                  FROM UNIT_TESTS ut
                 WHERE ut.PV_ID = nFROMpv_id
                   AND ut.TEST_TYPES_FK IN (6);
                                                                                                                                        

-------------------------------------------- Clone Package Documents ------------------------------------------
        INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST )
         SELECT nTOpv_id AS PV_ID,
                                pd.test_id,
                                pd.doc_num,
                                pd.doc_id,
                pd.IS_LATEST
           FROM PACKAGE_DOCUMENTS pd
          WHERE pd.PV_ID = nFROMpv_id;

-------------------------------------------- Clone Build Environments -----------------------------------------
    INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE )
        SELECT nTOpv_id AS PV_ID,
                   pkgbe.BE_ID,
                   pkgbe.BUILD_TYPE
          FROM PACKAGE_BUILD_ENV pkgbe
         WHERE pkgbe.PV_ID = nFROMpv_id;
---------------------------------------------Clone Package Build Info------------------------------------------
    INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID)
        SELECT nTOpv_id AS PV_ID, 
                   pkgbinfo.BM_ID,
                   pkgbinfo.BSA_ID
          FROM PACKAGE_BUILD_INFO pkgbinfo
         WHERE pkgbinfo.PV_ID = nFROMpv_id;
---------------------------------------------Clone Package Version Processes-----------------------------------
    INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID )
        SELECT nTOpv_id AS PV_ID,
                   pp.PROC_ID
          FROM PACKAGE_PROCESSES pp
          WHERE pp.PV_ID = nFROMpv_id;             
---------------------------------------------------------------------------------------------------------------

        /* LOG ACTION */
    SELECT pv.PKG_VERSION INTO FromVersion
      FROM PACKAGE_VERSIONS pv
     WHERE pv.PV_ID = nFROMpv_id;

    Log_Action ( nTOpv_id, 'clone_from', nUser_id,
                         'Details cloned from: '|| FromVersion );

---------------------------------------------------------------------------------------------------------------

END Basic_Clone;
/