-------------------------------------------------------- -- Package: JR_WASTEBASKET -- Author: Will Stallard -- -- This package provides the PL/SQL Wastebasket API. -- -- Deletes from the repository should be made either -- by calling the appropriate method in this package, -- by deleting from the version resolved view directly -- or by calling the .DEL CDAPI method for the element type. -- -- Much of the constraint checking for delete opertations -- is performed by triggers on the version resolved view. ----------------------------------------------------------- prompt Package Header: jr_wastebasket create or replace package jr_wastebasket is --Package variable used by delete triggers to maintain workarea context saved_wa_context number; ------------------------------------------------------------ -- jr_wastebasket.DISABLE_REPOS_CONSTRAINTS -- Called by delete triggers - disable the repository -- constraints during the delete, and record the current -- setting, so it can be put back at the end of the delete ------------------------------------------------------------ procedure DISABLE_REPOS_CONSTRAINTS; ------------------------------------------------------------ -- jr_wastebasket.RESET_REPOS_CONSTRAINTS -- Called by delete triggers - reset the repository constraint -- setting, at the end of the delete ------------------------------------------------------------ procedure RESET_REPOS_CONSTRAINTS; ------------------------------------------------------------ -- jr_wastebasket.REPOS_CONSTRAINTS_ENABLED -- Called by delete triggers - returns the state of the -- repository constraint setting prior to the start of the -- delete operation. ------------------------------------------------------------ function REPOS_CONSTRAINTS_ENABLED return boolean; ------------------------------------------------------------ -- jr_wastebasket.DELETE() -- -- Performs delete operation on specified element. ------------------------------------------------------------ procedure delete(i_ivid in number ,el_type in varchar2 default NULL ,prod_code in varchar2 default NULL); ------------------------------------------------------------ -- jr_wastebasket.PURGE() -- -- Performs purge operation on specified element. ------------------------------------------------------------ procedure purge(i_ivid in number ,el_type in varchar2 default NULL ,prod_code in varchar2 default NULL); ------------------------------------------------------------ -- jr_wastebasket.FORCE_DELETE() -- -- Performs force delete operation on specified element. ------------------------------------------------------------ procedure force_delete(i_ivid in number ,el_type in varchar2 default NULL ,prod_code in varchar2 default NULL); ------------------------------------------------------------ -- jr_wastebasket.FORCE_PURGE() -- -- Performs force purge operation on specified element. ------------------------------------------------------------ procedure force_purge(i_ivid in number ,el_type in varchar2 default NULL ,prod_code in varchar2 default NULL); ------------------------------------------------------------ -- jr_wastebasket.PURGE_OBJECT() -- -- Purges all versions of an object from the repository. -- Operation will fail if any version is used in a workarea -- or configuration. ------------------------------------------------------------ procedure purge_object(i_irid in number); ------------------------------------------------------------ -- jr_wastebasket.PURGE_INSIGNIFICANT_VERSIONS() -- -- Purges all 'insignificant' object versions of an object. ------------------------------------------------------------ procedure purge_insignificant_versions(i_irid in number ,i_branch_id in number := NULL); ------------------------------------------------------------ -- jr_wastebasket.RESTORE() -- -- Restores object from the wastebasket of the current -- workarea. If no workarea context is set, restores -- object from null context wastebasket. ------------------------------------------------------------- procedure restore(i_ivid in number); ------------------------------------------------------------- -- jr_wastebasket.CLEAN_UP -- -- Empties the contents of the wastebasket (performs physical -- deletes) for the current workarea. If the current workarea -- is null, then the null_context wastebasket is emptied. -------------------------------------------------------------- procedure clean_up; ------------------------------------------------------------- -- jr_wastebasket.CLEAN_UP_ALL() -- -- Empties the contents of all wastebaskets ------------------------------------------------------------- procedure clean_up_all; ------------------------------------------------------------ -- jr_wastebasket.FORCE_FLAG -- jr_wastebasket.PURGE_FLAG -- jr_wastebasket.REMOVE_FM_FLAG -- -- Functions used by view delete triggers to determine -- if a purge or a force purge/force delete operation is -- begin performed, or whether we are removing membership -- from the current folder. ------------------------------------------------------------ function purge_flag return boolean; function force_flag return boolean; function remove_fm_flag return boolean; ------------------------------------------------------------ -- jr_wastebasket.SET_SECONDARY_DELETE -- jr_wastebasket.UNSET_SECONDARY_DELETE -- jr_wastebasket.SECONDARY_DELETE -- -- Methods used by view delete triggers to determine -- whether the delete being peformed is a secondary delete, -- arising because of rereferences made to the element being -- deleted. ------------------------------------------------------------ procedure set_secondary_delete; procedure unset_secondary_delete; function secondary_delete return boolean; ------------------------------------------------------------ -- jr_wastebasket.REMOVE() -- -- Helper method called by delete triggers. -- This performs the update on I$SDD_OBJECT_VERSIONS to -- place an object in the wastebasket, checks delete -- constraints, and updates version history. ------------------------------------------------------------ procedure remove(i_ivid in number); ---------------------------------- --Exceptions for package ---------------------------------- REMOVE_ERROR EXCEPTION; RESTORE_ERROR EXCEPTION; PURGE_ERROR EXCEPTION; DELETE_ERROR EXCEPTION; end; /