rem rem $Header: L:\\\\model\\repman40\\api\\RCS\\CIUES.HPB 1.2 1998/12/30 15:02:06 loldham Exp $ rem Rem Copyright (c) 1994 by Oracle Corporation Rem NAME Rem ciue.hpb - Rem DESCRIPTION Rem Rem RETURNS Rem Rem NOTES Rem Rem MODIFIED (MM/DD/YY) Rem aheath 02/27/95 - Add call to validate the properties Rem jwetherb 10/22/94 - Creation REM *************************************************************************** REM Generic package body for EXTENTED STRUCTURE ELEMENT created on 22-OCT-94 REM *************************************************************************** CREATE OR REPLACE PACKAGE BODY cihues IS --======================== PRE-PROCESS (DEL,SEL) ============================-- PROCEDURE pre_process(operation varchar2,id number) IS short_name varchar2(6); BEGIN select str.element_type_name into short_name from sdd_ues str where str.irid = pre_process.id; cihues.pre_process(operation,id,short_name); END; --======================== PRE-PROCESS (INS,UPD) ============================-- PROCEDURE pre_process(operation varchar2,id number, pl in out NOCOPY cioextended_structure_element.data) IS short_name varchar2(6); nls_type_name varchar2(240); part_of_name varchar2(6); use_of_name varchar2(6); nls_part_of_name varchar2(240); nls_use_of_name varchar2(240); BEGIN if operation = 'INS' then select et.id into pl.v.types from rm_element_types et where et.short_name = pl.v.element_type_name; pl.i.types := true; end if; select uat.short_name, uat.nls_name, uat.part_of_short_name, uat.use_of_short_name, px.nls_name, ux.nls_name into short_name, nls_type_name, part_of_name, use_of_name, nls_part_of_name, nls_use_of_name from ciue_association_types uat, rm_element_type_extensions px, rm_element_type_extensions ux where uat.short_name = pl.v.element_type_name and px.for_type = uat.part_of_reference and ux.for_type = uat.use_of_reference; cihues.pre_process(operation,id,short_name,part_of_name,use_of_name, pl.v.part_of_reference, pl.v.use_of_reference, nls_type_name,nls_part_of_name,nls_use_of_name, pl.v.element_type_name,pl.i.element_type_name); pl.v.element_type_for := part_of_name; pl.i.element_type_for := true; -- Validate user-defined properties cieval.check_association(id,pl.v.types,(operation='UPD') ,pl.v.part_of_reference ,pl.v.use_of_reference ,pl.v.user_defined_property_0,pl.i.user_defined_property_0 ,pl.v.user_defined_property_1,pl.i.user_defined_property_1 ,pl.v.user_defined_property_2,pl.i.user_defined_property_2 ,pl.v.user_defined_property_3,pl.i.user_defined_property_3 ,pl.v.user_defined_property_4,pl.i.user_defined_property_4 ,pl.v.user_defined_property_5,pl.i.user_defined_property_5 ,pl.v.user_defined_property_6,pl.i.user_defined_property_6 ,pl.v.user_defined_property_7,pl.i.user_defined_property_7 ,pl.v.user_defined_property_8,pl.i.user_defined_property_8 ,pl.v.user_defined_property_9,pl.i.user_defined_property_9 ,pl.v.user_defined_property_10,pl.i.user_defined_property_10 ,pl.v.user_defined_property_11,pl.i.user_defined_property_11 ,pl.v.user_defined_property_12,pl.i.user_defined_property_12 ,pl.v.user_defined_property_13,pl.i.user_defined_property_13 ,pl.v.user_defined_property_14,pl.i.user_defined_property_14 ,pl.v.user_defined_property_15,pl.i.user_defined_property_15 ,pl.v.user_defined_property_16,pl.i.user_defined_property_16 ,pl.v.user_defined_property_17,pl.i.user_defined_property_17 ,pl.v.user_defined_property_18,pl.i.user_defined_property_18 ,pl.v.user_defined_property_19,pl.i.user_defined_property_19 ); END; --========================= POST PROCESS (DEL) ==============================-- PROCEDURE post_process(operation varchar2,id number) IS BEGIN null; END; --===================== POST-PROCESS (INS,UPD,SEL) ==========================-- PROCEDURE post_process(operation varchar2,id number, pl cioextended_structure_element.data) IS BEGIN null; END; --======================== PRE-PROCESS (INS,UPD) ============================-- PROCEDURE pre_process(operation varchar2,id number, str_type varchar2,part_type varchar2,use_type varchar2, part_ref number,use_ref number, str_name varchar2,part_name varchar2,use_name varchar2, element_type_name in out NOCOPY varchar2, element_type_name_indicator in out NOCOPY boolean) IS lpart_type varchar2(6); luse_type varchar2(6); lpart_occur varchar2(10); luse_occur varchar2(10); BEGIN -- Sort out subtypes of relation_definition, grant_option, database -- and constraints select nvl(max(cet.el_type_of), part_type), max(cet.added_type) into lpart_type, lpart_occur from ci_element_types cet where cet.short_name = part_type; select nvl(max(cet.el_type_of), use_type), max(cet.added_type) into luse_type, luse_occur from ci_element_types cet where cet.short_name = use_type; -- Perform INSERT-specific processing if operation = 'INS' then -- Check for existence of 'part of' and 'use of' elements if ciiutl.el_exists(part_ref, lpart_type, lpart_occur) = false then ciierr.fatal(3500, str_name, part_name, part_ref); end if; if ciiutl.el_exists(use_ref, luse_type, luse_occur) = false then ciierr.fatal(3500, str_name, use_name, use_ref); end if ; end if; -- Access rights for structure element derive from the 'part of' element -- Access rights checking performed by triggers in config 4.0.9 -- ciiacc.check_access_rights(part_ref, lpart_type, 'UPD', 'SHR'); -- Check that structure element with this 'part of' and 'use of' -- doesn't already exist on insert if operation = 'INS' then /* if ciiutl.str_exists(part_ref, use_ref, str_type) then ciierr.fatal(3501, str_name, id, ciiutl.identify(part_ref), ciiutl.identify(use_ref)); end if; */ -- Initialize unassigned properties with default values on INSERT element_type_name := str_type; element_type_name_indicator := true; end if; END; --======================== PRE-PROCESS (DEL,SEL) ============================-- PROCEDURE pre_process(operation varchar2,id number,str_type varchar2) IS BEGIN -- Access rights for structure element derive from the 'part of' element -- Access rights checking performed by triggers in config 4.0.9 -- if operation = 'DEL' then -- ciiacc.check_access_rights(id,str_type,'UPD','SE'); -- else -- ciiacc.check_access_rights(id,str_type,operation,'SE'); -- end if; null; END; --================================== END ====================================-- -- -- Package instantiation block -- BEGIN is_installed := true; END; /