DBA Data[Home] [Help]

PACKAGE BODY: APPS.IES_META_DATA_INSERTER

Source


1 PACKAGE BODY IES_META_DATA_INSERTER AS
2      /* $Header: iesmdinb.pls 115.3 2003/06/06 20:16:30 prkotha noship $ */
3 
4 
5     -- **********************************************************************
6     --  API name    : insertObjPropertyValues
7     --  Type        : Private
8     --  Function    : This procedure inserts the property values of the object
9     --                into  ies_meta_object_propvals table.
10     -- **********************************************************************
11 
12     PROCEDURE insertObjPropertyValues(propval_tab IN propval_table, objId IN NUMBER) IS
13        propValId number;
14 
15        objPropValId number;
16        sqlstmt   varchar2(2000);
17        seqval number;
18     BEGIN
19        for i in 0..propval_tab.last loop
20           propValId := propval_tab(i);
21 
22           execute immediate 'select ies_meta_object_propvals_s.nextval from dual' into seqval;
23           sqlStmt :=
24           'INSERT INTO ies_meta_object_propvals
25           (objpropval_id,
26            object_id,
27            propval_id,
28            created_by) VALUES
29            (:seq,
30             :objId,
31             :propValId,
32             :agent)';
33 
34           execute immediate sqlStmt using  seqval, objId, propValId, 1;
35        end loop;
36     END insertObjPropertyValues;
37 
38     -- **********************************************************************
39     --  API name    : insertPropertyValues
40     --  Type        : Private
41     --  Function    : This procedure inserts the properties into
42     --                ies_meta_property_values table.  The inserted propval_ids
43     --                are stored in a pl/sql table and all the propval_ids are
44     --                later inserted into ies_meta_object_propvals table
45     -- **********************************************************************
46 
47 
48     PROCEDURE insertPropertyValues(element IN xmldom.DOMElement, objId IN NUMBER) IS
49        type  props_type IS REF CURSOR;
50        props props_type;
51 
52        val       VARCHAR2(256);
53        propId    NUMBER;
54        propName  VARCHAR2(256);
55        lookupId  NUMBER;
56 
57        propval_tab propval_table;
58        propvalue_id number;
59        counter   NUMBER := 0;
60        sqlStmt   varchar2(2000);
61     BEGIN
62 
63        OPEN props FOR
64         'SELECT b.name, a.property_id
65 	   FROM ies_meta_obj_type_properties a,
66 	        ies_meta_properties b
67 	  WHERE a.property_id = b.property_id
68 	    AND a.objtype_id IN ( SELECT type_id
69 	                            FROM ies_meta_object_types
70 	 	        CONNECT BY PRIOR parent_id = type_id
71 	  		      START WITH type_name = :typeName)' USING xmldom.getAttribute(element, 'CLASS');
72 
73           LOOP
74 	     FETCH props INTO propName, propId;
75 	     EXIT WHEN props%NOTFOUND;
76 
77              val := IES_META_DATA_UTIL.getProperty(element, propName);
78 
79              lookupId := IES_META_DATA_UTIL.getLookupId(propId, val);
80              execute immediate 'select ies_meta_property_values_s.nextval from dual' into propValue_id ;
81 
82              if (lookupId = -1) then
83                 sqlStmt := 'INSERT INTO ies_meta_property_values (propval_id,
84                                                      property_id,
85                                                      string_val,
86                                                      created_by)
87                                              VALUES (:id,
88                                                      :property_id,
89                                                      :val,
90                                                      1 )';
91 
92                 execute immediate sqlStmt using propvalue_id, propId, val;
93                 propval_tab(counter) := propvalue_id;
94              else
95                 sqlStmt := 'INSERT INTO ies_meta_property_values (propval_id,
96 	                                            property_id,
97 	                                            lookup_id,
98 	                                            created_by)
99 	                                     VALUES (:id,
100 	                                             :property_id,
101 	                                             :lookupId,
102 	                                             1 )';
103 
104               execute immediate sqlStmt using propvalue_id, propId, lookupId;
105               propval_tab(counter) := propvalue_id;
106            end if;
107            counter := counter + 1;
108        end loop;
109        insertObjPropertyValues(propval_tab, objId);
110     END insertPropertyValues;
111 
112 
113     -- **********************************************************************
114     --  API name    : insertMetaObject
115     --  Type        : Public
116     --  Function    : This Function inserts meta object and returns the new
117     --                object_id for the inserted object.
118     -- **********************************************************************
119 
120     FUNCTION insertMetaObject(element IN xmldom.DOMElement) return NUMBER IS
121        objId        NUMBER := -1;
122        x_name       VARCHAR2(256);
123        x_uid        VARCHAR2(256);
124        objTypeId    NUMBER;
125 
126        sqlStmt      varchar2(2000);
127     BEGIN
128        x_name   :=  IES_META_DATA_UTIL.getProperty(element, 'name');
129        if (x_name is null) then
130            x_name := 'nullname';
131        end if;
132 
133        x_uid    :=  IES_META_DATA_UTIL.getProperty(element, 'UID');
134        objtypeId := IES_META_DATA_UTIL.getObjectTypeId(xmldom.getAttribute(element, 'CLASS'));
135 
136        sqlStmt := 'INSERT INTO ies_meta_objects (object_id,
137                                      name,
138                                      object_uid,
139                                      type_id,
140                                      created_by)
141                              VALUES (:id,
142                                      :a_name,
143                                      :a_uid,
144                                      :objTypeId,
145                                      1)';
146 
147        execute immediate 'select ies_meta_objects_s.nextval from dual'  into objId ;
148 
149        EXECUTE IMMEDIATE sqlStmt USING objId, x_name, x_uid, objTypeId;
150 
151        insertPropertyValues(element, objId);
152        return objId;
153     END insertMetaObject;
154 
155 
156 
157 END IES_META_DATA_INSERTER;