[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;