Index: openacs-4/packages/acs-kernel/sql/oracle/acs-object-util-remove.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/oracle/acs-object-util-remove.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-kernel/sql/oracle/acs-object-util-remove.sql 30 Jul 2001 03:17:35 -0000 1.1 @@ -0,0 +1,9 @@ +-- +-- packages/site-wide-search/sql/acs-object-util-remove.sql +-- +-- @author khy@arsdigita.com +-- @creation-date 2000-11-24 +-- @cvs-id $Id: acs-object-util-remove.sql,v 1.1 2001/07/30 03:17:35 danw Exp $ +-- + +drop package acs_object_util Index: openacs-4/packages/acs-kernel/sql/oracle/acs-object-util.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/oracle/acs-object-util.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/acs-kernel/sql/oracle/acs-object-util.sql 30 Jul 2001 03:17:35 -0000 1.1 @@ -0,0 +1,133 @@ +-- +-- packages/site-wide-search/sql/acs-object-util.sql +-- +-- @author khy@arsdigita.com +-- @creation-date 2000-11-24 +-- @cvs-id $Id: acs-object-util.sql,v 1.1 2001/07/30 03:17:35 danw Exp $ +-- + +create or replace package acs_object_util +as + function object_type_exist_p ( + object_type in acs_object_types.object_type%TYPE + ) return char; + + function get_object_type ( + object_id in acs_objects.object_id%TYPE + ) return acs_object_types.object_type%TYPE; + + function type_ancestor_type_p ( + object_type1 in acs_object_types.object_type%TYPE, + object_type2 in acs_object_types.object_type%TYPE + ) return char; + + function object_ancestor_type_p ( + object_id in acs_objects.object_id%TYPE, + object_type in acs_object_types.object_type%TYPE + ) return char; + + function object_type_p ( + object_id in acs_objects.object_id%TYPE, + object_type in acs_object_types.object_type%TYPE + ) return char; +end acs_object_util; +/ + +create or replace package body acs_object_util +as + function object_type_exist_p ( + object_type in acs_object_types.object_type%TYPE + ) return char + is + v_exist_p char(1) := 't'; + begin + select decode(count(*),1,'t','f') into v_exist_p + from acs_object_types + where object_type = acs_object_util.object_type_exist_p.object_type; + + return v_exist_p; + end object_type_exist_p; + + function get_object_type ( + object_id in acs_objects.object_id%TYPE + ) return acs_object_types.object_type%TYPE + is + v_object_type acs_object_types.object_type%TYPE; + begin + + + select object_type into v_object_type + from acs_objects + where object_id = acs_object_util.get_object_type.object_id; + + return v_object_type; + exception + when no_data_found then + raise_application_error(-20003,'Invalid Object id '||to_char(object_id)); + end get_object_type; + + function type_ancestor_type_p ( + object_type1 in acs_object_types.object_type%TYPE, + object_type2 in acs_object_types.object_type%TYPE + ) return char + is + v_exist_p char(1) := 'f'; + v_count integer := 0; + begin + v_exist_p := acs_object_util.object_type_exist_p(object_type1); + if v_exist_p = 'f' THEN + raise_application_error(-20002, 'Object type '|| object_type1 || ' does not exist'); + end if; + + v_exist_p := acs_object_util.object_type_exist_p(object_type2); + if v_exist_p = 'f' THEN + raise_application_error(-20002, 'Object type '|| object_type2 || ' does not exist'); + end if; + + select count(*) into v_count + from dual + where acs_object_util.type_ancestor_type_p.object_type2 in ( + select object_type + from acs_object_types + start with object_type = acs_object_util.type_ancestor_type_p.object_type1 + connect by prior supertype = object_type); + + select decode(v_count,1,'t','f') into v_exist_p from dual; + + return v_exist_p; + end type_ancestor_type_p; + + function object_ancestor_type_p ( + object_id in acs_objects.object_id%TYPE, + object_type in acs_object_types.object_type%TYPE + ) return char + is + v_exist_p char(1) := 'f'; + v_object_type acs_object_types.object_type%TYPE; + begin + + v_object_type := acs_object_util.get_object_type (object_id); + + v_exist_p := acs_object_util.type_ancestor_type_p (v_object_type, object_type); + return v_exist_p; + end object_ancestor_type_p; + + function object_type_p ( + object_id in acs_objects.object_id%TYPE, + object_type in acs_object_types.object_type%TYPE + ) return char + is + v_exist_p char(1) := 'f'; + begin + v_exist_p := object_ancestor_type_p(object_id, object_type); + return v_exist_p; + end object_type_p; +end acs_object_util; +/ + + + + + + +