Blame | Last modification | View Log | RSS feed
CREATE PACKAGE BODY "RELEASE_MANAGER"."PK_WORK_IN_PROGRESS" IS/*------------------------------|| Last Modified: S.Vukovic|| Modified Date: 2/May/2005|| Body Version: 1.0------------------------------*//*-------------------------------------------------------------------------------------------------------*/PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) 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;/ALTER PACKAGE "RELEASE_MANAGER"."PK_WORK_IN_PROGRESS"COMPILE BODYPLSQL_OPTIMIZE_LEVEL= 2PLSQL_CODE_TYPE= INTERPRETEDPLSQL_DEBUG= FALSEREUSE SETTINGS TIMESTAMP '2007-08-23 16:23:51'/