[Home] [Help]
PACKAGE BODY: APPS.IMC_OBJECT_METADATA_PUB
Source
1 PACKAGE BODY IMC_OBJECT_METADATA_PUB AS
2 /* $Header: imcomdb.pls 115.4 2002/11/12 21:53:08 tsli noship $ */
3
4 /*=======================================================================*/
5
6 FUNCTION Object_Metadata_Exists (
7 p_object_type IN IMC_OBJECT_METADATA.object_type%TYPE
8 ) RETURN VARCHAR2 AS
9
10 l_dummy NUMBER;
11
12 BEGIN
13
14 /* Required Param Validation */
15 IF p_object_type IS NULL THEN
16 /* object type is invalid */
17 FND_MESSAGE.SET_NAME('IMC', g_invalid_object_type);
18 FND_MSG_PUB.ADD;
19 RAISE FND_API.G_EXC_ERROR;
20 END IF;
21
22 SELECT 1
23 INTO l_dummy
24 FROM IMC_OBJECT_METADATA
25 WHERE OBJECT_TYPE = p_object_type
26 AND ROWNUM = 1;
27
28 RETURN 'Y';
29
30 EXCEPTION
31 WHEN NO_DATA_FOUND THEN
32 RETURN 'N';
33
34 WHEN FND_API.G_EXC_ERROR THEN
35 RETURN FND_API.G_RET_STS_ERROR;
36
37 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
38 RETURN FND_API.G_RET_STS_UNEXP_ERROR;
39
40 WHEN OTHERS THEN
41 FND_MESSAGE.SET_NAME('IMC', g_metadata_api_others_ex);
42 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
43 FND_MSG_PUB.ADD;
44 RETURN FND_API.G_RET_STS_UNEXP_ERROR;
45
46 END Object_Metadata_Exists;
47
48 /*=======================================================================*/
49
50 PROCEDURE Update_Record (
51 p_object_type IN IMC_OBJECT_METADATA.object_type%TYPE,
52 p_description IN IMC_OBJECT_METADATA.description%TYPE,
53 p_function_name IN IMC_OBJECT_METADATA.function_name%TYPE,
54 p_parameter_name IN IMC_OBJECT_METADATA.parameter_name%TYPE,
55 p_enabled IN IMC_OBJECT_METADATA.enabled%TYPE,
56 p_application_id IN IMC_OBJECT_METADATA.application_id%TYPE,
57 p_additional_value1 IN IMC_OBJECT_METADATA.additional_value1%TYPE,
58 p_additional_value2 IN IMC_OBJECT_METADATA.additional_value2%TYPE,
59 p_additional_value3 IN IMC_OBJECT_METADATA.additional_value3%TYPE,
60 p_additional_value4 IN IMC_OBJECT_METADATA.additional_value4%TYPE,
61 p_additional_value5 IN IMC_OBJECT_METADATA.additional_value5%TYPE,
62 p_created_by IN IMC_OBJECT_METADATA.created_by%TYPE,
63 p_creation_date IN IMC_OBJECT_METADATA.creation_date%TYPE,
64 p_last_updated_by IN IMC_OBJECT_METADATA.last_updated_by%TYPE,
65 p_last_update_date IN IMC_OBJECT_METADATA.last_update_date%TYPE,
66 p_last_update_login IN IMC_OBJECT_METADATA.last_update_login%TYPE
67 ) AS
68
69 BEGIN
70
71 UPDATE IMC_OBJECT_METADATA SET
72 DESCRIPTION = p_description,
73 FUNCTION_NAME = p_function_name,
74 PARAMETER_NAME = p_parameter_name,
75 ENABLED = p_enabled,
76 APPLICATION_ID = DECODE(p_application_id, FND_API.G_MISS_NUM, NULL, p_application_id),
77 ADDITIONAL_VALUE1 = DECODE(p_additional_value1, FND_API.G_MISS_CHAR, NULL, p_additional_value1),
78 ADDITIONAL_VALUE2 = DECODE(p_additional_value2, FND_API.G_MISS_CHAR, NULL, p_additional_value2),
79 ADDITIONAL_VALUE3 = DECODE(p_additional_value3, FND_API.G_MISS_CHAR, NULL, p_additional_value3),
80 ADDITIONAL_VALUE4 = DECODE(p_additional_value4, FND_API.G_MISS_CHAR, NULL, p_additional_value4),
81 ADDITIONAL_VALUE5 = DECODE(p_additional_value5, FND_API.G_MISS_CHAR, NULL, p_additional_value5),
82 CREATED_BY = p_created_by,
83 CREATION_DATE = p_creation_date,
84 LAST_UPDATED_BY = p_last_updated_by,
85 LAST_UPDATE_DATE = p_last_update_date,
86 LAST_UPDATE_LOGIN = p_last_update_login
87 WHERE OBJECT_TYPE = p_object_type;
88
89 IF SQL%NOTFOUND THEN
90 RAISE NO_DATA_FOUND;
91 END IF;
92
93 COMMIT;
94
95 END Update_Record;
96
97 /*=======================================================================*/
98
99 PROCEDURE Insert_Record (
100 p_metadata_id IN IMC_OBJECT_METADATA.metadata_id%TYPE,
101 p_object_type IN IMC_OBJECT_METADATA.object_type%TYPE,
102 p_description IN IMC_OBJECT_METADATA.description%TYPE,
103 p_function_name IN IMC_OBJECT_METADATA.function_name%TYPE,
104 p_parameter_name IN IMC_OBJECT_METADATA.parameter_name%TYPE,
105 p_enabled IN IMC_OBJECT_METADATA.enabled%TYPE,
106 p_application_id IN IMC_OBJECT_METADATA.application_id%TYPE,
107 p_additional_value1 IN IMC_OBJECT_METADATA.additional_value1%TYPE,
108 p_additional_value2 IN IMC_OBJECT_METADATA.additional_value2%TYPE,
109 p_additional_value3 IN IMC_OBJECT_METADATA.additional_value3%TYPE,
110 p_additional_value4 IN IMC_OBJECT_METADATA.additional_value4%TYPE,
111 p_additional_value5 IN IMC_OBJECT_METADATA.additional_value5%TYPE,
112 p_created_by IN IMC_OBJECT_METADATA.created_by%TYPE,
113 p_creation_date IN IMC_OBJECT_METADATA.creation_date%TYPE,
114 p_last_updated_by IN IMC_OBJECT_METADATA.last_updated_by%TYPE,
115 p_last_update_date IN IMC_OBJECT_METADATA.last_update_date%TYPE,
116 p_last_update_login IN IMC_OBJECT_METADATA.last_update_login%TYPE
117 ) AS
118
119 BEGIN
120
121 INSERT INTO IMC_OBJECT_METADATA (
122 METADATA_ID,
123 OBJECT_TYPE,
124 DESCRIPTION,
125 FUNCTION_NAME,
126 PARAMETER_NAME,
127 ENABLED,
128 APPLICATION_ID,
129 ADDITIONAL_VALUE1,
130 ADDITIONAL_VALUE2,
131 ADDITIONAL_VALUE3,
132 ADDITIONAL_VALUE4,
133 ADDITIONAL_VALUE5,
134 CREATED_BY,
135 CREATION_DATE,
136 LAST_UPDATED_BY,
137 LAST_UPDATE_DATE,
138 LAST_UPDATE_LOGIN
139 ) VALUES (
140 p_metadata_id,
141 p_object_type,
142 p_description,
143 p_function_name,
144 p_parameter_name,
145 p_enabled,
146 DECODE(p_application_id, FND_API.G_MISS_NUM, NULL, p_application_id),
147 DECODE(p_additional_value1, FND_API.G_MISS_CHAR, NULL, p_additional_value1),
148 DECODE(p_additional_value2, FND_API.G_MISS_CHAR, NULL, p_additional_value2),
149 DECODE(p_additional_value3, FND_API.G_MISS_CHAR, NULL, p_additional_value3),
150 DECODE(p_additional_value4, FND_API.G_MISS_CHAR, NULL, p_additional_value4),
151 DECODE(p_additional_value5, FND_API.G_MISS_CHAR, NULL, p_additional_value5),
152 p_created_by,
153 p_creation_date,
154 p_last_updated_by,
155 p_last_update_date,
156 p_last_update_login
157 );
158
159 COMMIT;
160
161 END Insert_Record;
162
163 /*=======================================================================*/
164
165 PROCEDURE Add_Object_Metadata (
166 p_object_type IN IMC_OBJECT_METADATA.object_type%TYPE,
167 p_description IN IMC_OBJECT_METADATA.description%TYPE,
168 p_function_name IN IMC_OBJECT_METADATA.function_name%TYPE,
169 p_parameter_name IN IMC_OBJECT_METADATA.parameter_name%TYPE,
170 p_enabled IN IMC_OBJECT_METADATA.enabled%TYPE,
171 p_application_id IN IMC_OBJECT_METADATA.application_id%TYPE,
172 p_additional_value1 IN IMC_OBJECT_METADATA.additional_value1%TYPE,
173 p_additional_value2 IN IMC_OBJECT_METADATA.additional_value2%TYPE,
174 p_additional_value3 IN IMC_OBJECT_METADATA.additional_value3%TYPE,
175 p_additional_value4 IN IMC_OBJECT_METADATA.additional_value4%TYPE,
176 p_additional_value5 IN IMC_OBJECT_METADATA.additional_value5%TYPE,
177 x_return_status OUT NOCOPY VARCHAR2,
178 x_msg_count OUT NOCOPY VARCHAR2,
179 x_msg_data OUT NOCOPY VARCHAR2
180 ) AS
181
182 l_metadata_id IMC_OBJECT_METADATA.metadata_id%TYPE;
183 l_last_update_login IMC_OBJECT_METADATA.last_update_login%TYPE;
184
185 BEGIN
186
187 /* init last_update_login */
188 IF (FND_GLOBAL.conc_login_id = -1) OR (FND_GLOBAL.conc_login_id IS NULL) THEN
189 l_last_update_login := FND_GLOBAL.login_id;
190 ELSE
191 l_last_update_login := FND_GLOBAL.conc_login_id;
192 END IF;
193
194 IF Object_Metadata_Exists(p_object_type) = 'Y' THEN
195 Update_Record (
196 p_object_type,
197 p_description,
198 p_function_name,
199 p_parameter_name,
200 nvl(p_enabled, 'Y'),
201 p_application_id,
202 p_additional_value1,
203 p_additional_value2,
204 p_additional_value3,
205 p_additional_value4,
206 p_additional_value5,
207 nvl(FND_GLOBAL.user_id, -1), /* Created by */
208 SYSDATE, /* Creation date */
209 nvl(FND_GLOBAL.user_id, -1), /* Last updated by */
210 SYSDATE, /* Last update date */
211 l_last_update_login /* Last update login */
212 );
213 ELSE
214 /* init metadata id */
215 SELECT IMC_OBJECT_METADATA_S.NEXTVAL INTO l_metadata_id FROM DUAL;
216
217 Insert_Record (
218 l_metadata_id,
219 p_object_type,
220 p_description,
221 p_function_name,
222 p_parameter_name,
223 nvl(p_enabled, 'Y'),
224 p_application_id,
225 p_additional_value1,
226 p_additional_value2,
227 p_additional_value3,
228 p_additional_value4,
229 p_additional_value5,
230 nvl(FND_GLOBAL.user_id, -1), /* Created by */
231 SYSDATE, /* Creation date */
232 nvl(FND_GLOBAL.user_id, -1), /* Last updated by */
233 SYSDATE, /* Last update date */
234 l_last_update_login /* Last update login */
235 );
236 END IF;
237
238 x_return_status := FND_API.G_RET_STS_SUCCESS;
239
240 EXCEPTION
241 WHEN FND_API.G_EXC_ERROR THEN
242 x_return_status := FND_API.G_RET_STS_ERROR;
243 FND_MSG_PUB.Count_And_Get (
244 p_encoded => FND_API.G_FALSE,
245 p_count => x_msg_count,
246 p_data => x_msg_data
247 );
248 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
249 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
250 FND_MSG_PUB.Count_And_Get (
251 p_encoded => FND_API.G_FALSE,
252 p_count => x_msg_count,
253 p_data => x_msg_data
254 );
255 WHEN OTHERS THEN
256 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
257 FND_MSG_PUB.Count_And_Get (
258 p_encoded => FND_API.G_FALSE,
259 p_count => x_msg_count,
260 p_data => x_msg_data
261 );
262
263 END Add_Object_Metadata;
264
265 /*=======================================================================*/
266
267 PROCEDURE Remove_Object_Metadata (
268 p_object_type IN IMC_OBJECT_METADATA.object_type%TYPE,
269 x_return_status OUT NOCOPY VARCHAR2,
270 x_msg_count OUT NOCOPY VARCHAR2,
271 x_msg_data OUT NOCOPY VARCHAR2
272 ) AS
273
274 BEGIN
275
276 DELETE FROM IMC_OBJECT_METADATA
277 WHERE OBJECT_TYPE = p_object_type;
278
279 IF SQL%NOTFOUND THEN
280 RAISE NO_DATA_FOUND;
281 END IF;
282
283 x_return_status := FND_API.G_RET_STS_SUCCESS;
284
285 EXCEPTION
286 WHEN NO_DATA_FOUND THEN
287 x_return_status := FND_API.G_RET_STS_SUCCESS;
288 FND_MESSAGE.SET_NAME('IMC', g_no_metadata_for_obj_type);
289 FND_MSG_PUB.ADD;
290 FND_MSG_PUB.Count_And_Get (
291 p_encoded => FND_API.G_FALSE,
292 p_count => x_msg_count,
293 p_data => x_msg_data
294 );
295 WHEN OTHERS THEN
296 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
297 FND_MSG_PUB.Count_And_Get (
298 p_encoded => FND_API.G_FALSE,
299 p_count => x_msg_count,
300 p_data => x_msg_data
301 );
302
303 END Remove_Object_Metadata;
304
305 /*=======================================================================*/
306
307 PROCEDURE Get_Object_Metadata (
308 p_object_type IN IMC_OBJECT_METADATA.object_type%TYPE,
309 x_metadata_info OUT NOCOPY ref_cursor_obj_metadata,
310 x_return_status OUT NOCOPY VARCHAR2,
311 x_msg_count OUT NOCOPY VARCHAR2,
312 x_msg_data OUT NOCOPY VARCHAR2
313 ) AS
314
315 l_query VARCHAR2(1000);
316
317 BEGIN
318
319 l_query := 'SELECT object_type, description, function_name, parameter_name, enabled, application_id, additional_value1, additional_value2, additional_value3, additional_value4, additional_value5 ';
320 l_query := l_query || 'FROM IMC_OBJECT_METADATA ';
321
322 IF p_object_type IS NOT NULL THEN
323 l_query := l_query || 'WHERE OBJECT_TYPE = ''' || p_object_type || '''';
324 ELSE
325 l_query := l_query || 'ORDER BY OBJECT_TYPE';
326 END IF;
327
328 OPEN x_metadata_info FOR l_query;
329
330 IF x_metadata_info%NOTFOUND THEN
331 RAISE NO_DATA_FOUND;
332 END IF;
333
334 x_return_status := FND_API.G_RET_STS_SUCCESS;
335
336 EXCEPTION
337 WHEN NO_DATA_FOUND THEN
338 x_return_status := FND_API.G_RET_STS_ERROR;
339 FND_MESSAGE.SET_NAME('IMC', g_no_metadata_for_obj_type);
340 FND_MSG_PUB.ADD;
341 FND_MSG_PUB.Count_And_Get (
342 p_encoded => FND_API.G_FALSE,
343 p_count => x_msg_count,
344 p_data => x_msg_data
345 );
346 WHEN FND_API.G_EXC_ERROR THEN
347 x_return_status := FND_API.G_RET_STS_ERROR;
348 FND_MSG_PUB.Count_And_Get (
349 p_encoded => FND_API.G_FALSE,
350 p_count => x_msg_count,
351 p_data => x_msg_data
352 );
353 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
354 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
355 FND_MSG_PUB.Count_And_Get (
356 p_encoded => FND_API.G_FALSE,
357 p_count => x_msg_count,
358 p_data => x_msg_data
359 );
360 WHEN OTHERS THEN
361 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
362 FND_MSG_PUB.Count_And_Get (
363 p_encoded => FND_API.G_FALSE,
364 p_count => x_msg_count,
365 p_data => x_msg_data
366 );
367
368 END Get_Object_Metadata;
369
370 /*=======================================================================*/
371
372 FUNCTION Get_Function_Name (
373 p_object_type IN IMC_OBJECT_METADATA.object_type%TYPE
374 ) RETURN IMC_OBJECT_METADATA.function_name%TYPE AS
375
376 l_return_val IMC_OBJECT_METADATA.function_name%TYPE;
377
378 BEGIN
379
380 IF p_object_type IS NULL THEN
381 RETURN NULL;
382 ELSE
383 SELECT function_name
384 INTO l_return_val
385 FROM IMC_OBJECT_METADATA
386 WHERE OBJECT_TYPE = p_object_type
387 AND ROWNUM = 1;
388 END IF;
389
390 RETURN l_return_val;
391
392 EXCEPTION
393 WHEN NO_DATA_FOUND THEN
394 RETURN NULL;
395
396 END Get_Function_Name;
397
398 /*=======================================================================*/
399
400 FUNCTION Get_Parameter_Name (
401 p_object_type IN IMC_OBJECT_METADATA.object_type%TYPE
402 ) RETURN IMC_OBJECT_METADATA.parameter_name%TYPE AS
403
404 l_return_val IMC_OBJECT_METADATA.parameter_name%TYPE;
405
406 BEGIN
407
408 IF p_object_type IS NULL THEN
409 RETURN NULL;
410 ELSE
411 SELECT parameter_name
412 INTO l_return_val
413 FROM IMC_OBJECT_METADATA
414 WHERE OBJECT_TYPE = p_object_type
415 AND ROWNUM = 1;
416 END IF;
417
418 RETURN l_return_val;
419
420 EXCEPTION
421 WHEN NO_DATA_FOUND THEN
422 RETURN NULL;
423
424 END Get_Parameter_Name;
425
426 /*=======================================================================*/
427
428 FUNCTION Get_Additional_Value (
429 p_object_type IN IMC_OBJECT_METADATA.object_type%TYPE,
430 p_index IN NUMBER
431 ) RETURN VARCHAR2 AS
432
433 l_return_val VARCHAR2(150); /* Type of all additional value columns */
434 l_cursorId INTEGER;
435 l_column_name VARCHAR2(30);
436 l_query VARCHAR2(1000);
437 l_dummy INTEGER;
438
439 BEGIN
440
441 IF p_object_type IS NULL THEN
442 RETURN NULL;
443 ELSE
444 -- TO-DO: Execute query, return column value.
445 l_cursorId := DBMS_SQL.OPEN_CURSOR;
446 l_column_name := 'ADDITIONAL_VALUE' || p_index;
447 l_query := 'SELECT ' || l_column_name || ' ' ||
448 'FROM IMC_OBJECT_METADATA ' ||
449 'WHERE OBJECT_TYPE = ''' || p_object_type || ''' ' ||
450 'AND ROWNUM = 1';
451 DBMS_SQL.PARSE(l_cursorId, l_query, DBMS_SQL.V7);
452 DBMS_SQL.DEFINE_COLUMN(l_cursorId, 1, l_return_val, 150);
453
454 l_dummy := DBMS_SQL.EXECUTE(l_cursorId);
455
456 LOOP
457 IF DBMS_SQL.FETCH_ROWS(l_cursorId) = 0 THEN
458 RAISE NO_DATA_FOUND;
459 ELSE
460 DBMS_SQL.COLUMN_VALUE(l_cursorId, 1, l_return_val);
461 DBMS_SQL.CLOSE_CURSOR(l_cursorId);
462 RETURN l_return_val;
463 END IF;
464 END LOOP;
465
466 END IF;
467
468 RETURN l_return_val;
469
470 EXCEPTION
471 WHEN NO_DATA_FOUND THEN
472 DBMS_SQL.CLOSE_CURSOR(l_cursorId);
473 RETURN NULL;
474 WHEN OTHERS THEN
475 DBMS_SQL.CLOSE_CURSOR(l_cursorId);
476 RETURN NULL;
477
478 END Get_Additional_Value;
479
480 /*=======================================================================*/
481
482 FUNCTION Get_File_Name (
483 p_object_type IN IMC_OBJECT_METADATA.object_type%TYPE
484 ) RETURN VARCHAR2 AS
485
486 l_function_name IMC_OBJECT_METADATA.function_name%TYPE;
487 l_return_val VARCHAR2(30);
488
489 BEGIN
490
491 IF p_object_type IS NULL THEN
492 RETURN NULL;
493 ELSE
494 SELECT FUNCTION_NAME
495 INTO l_function_name
496 FROM IMC_OBJECT_METADATA
497 WHERE OBJECT_TYPE = p_object_type
498 AND ROWNUM = 1;
499 END IF;
500
501 SELECT WEB_HTML_CALL
502 INTO l_return_val
503 FROM FND_FORM_FUNCTIONS
504 WHERE FUNCTION_NAME = l_function_name;
505
506 RETURN l_return_val;
507
508 EXCEPTION
509 WHEN NO_DATA_FOUND THEN
510 RETURN NULL;
511
512 END Get_File_Name;
513
514 END IMC_OBJECT_METADATA_PUB;