[Home] [Help]
PACKAGE BODY: APPS.FND_OAM_DSCFG_API_PKG
Source
1 PACKAGE BODY FND_OAM_DSCFG_API_PKG as
2 /* $Header: AFOAMDSCAPIB.pls 120.4 2006/01/17 11:31 ilawler noship $ */
3
4 ----------------------------------------
5 -- Private Body Constants
6 ----------------------------------------
7 PKG_NAME CONSTANT VARCHAR2(20) := 'DSCFG_API_PKG.';
8
9 -- Profile option names controlling whether the product is enabled and whether the instance is in a state where
10 -- scrambling operations are allowed.
11 B_DSCRAM_ENABLED_PROFILE_NAME CONSTANT VARCHAR2(30) := 'OAM_DSCRAM_ENABLED';
12 B_DSCRAM_ALLOWED_PROFILE_NAME CONSTANT VARCHAR2(30) := 'OAM_DSCRAM_ALLOWED';
13
14 B_PROFILE_ENABLED_VALUE CONSTANT VARCHAR2(30) := 'YES';
15
16 -- Since this is an API package, this should be pretty much stateless.
17
18 ----------------------------------------
19 -- Public/Private Procedures/Functions
20 ----------------------------------------
21
22 FUNCTION ARE_CONFIG_CHANGES_ALLOWED
23 RETURN BOOLEAN
24 IS
25 l_ctxt VARCHAR2(60) := PKG_NAME||'ARE_CONFIG_CHANGES_ALLOWED';
26
27 l_prof_value VARCHAR2(20) := NULL;
28 BEGIN
29 fnd_oam_debug.log(2, l_ctxt, 'ENTER');
30 -- check that data scrambling is enabled first
31 FND_PROFILE.GET(B_DSCRAM_ENABLED_PROFILE_NAME,
32 l_prof_value);
33 IF l_prof_value IS NULL OR UPPER(l_prof_value) <> B_PROFILE_ENABLED_VALUE THEN
34 RAISE PROGRAM_ERROR;
35 END IF;
36
37 -- now check that data scrambling operations are allowed
38 l_prof_value := NULL;
39 FND_PROFILE.GET(B_DSCRAM_ALLOWED_PROFILE_NAME,
40 l_prof_value);
41 IF l_prof_value IS NULL OR UPPER(l_prof_value) <> B_PROFILE_ENABLED_VALUE THEN
42 RAISE PROGRAM_ERROR;
43 END IF;
44
45 -- success
46 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
47 RETURN TRUE;
48 EXCEPTION
49 WHEN PROGRAM_ERROR THEN
50 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
51 RETURN FALSE;
52 WHEN OTHERS THEN
53 fnd_oam_debug.log(6, l_ctxt, 'Unexpected Error: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
54 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
55 --don't push the exception
56 RETURN FALSE;
57 END;
58
59 -- Public
60 -- Convenience wrapper.
61 FUNCTION GET_CURRENT_PROC_ID
62 RETURN NUMBER
63 IS
64 BEGIN
65 RETURN FND_OAM_DSCFG_PROCS_PKG.GET_CURRENT_ID;
66 END;
67
68 -- Public
69 -- Convenience wrapper.
70 FUNCTION IS_CONFIG_INSTANCE_INITIALIZED
71 RETURN BOOLEAN
72 IS
73 BEGIN
74 RETURN FND_OAM_DSCFG_INSTANCES_PKG.IS_INITIALIZED;
75 END;
76
77 -- Public
78 -- Convenience wrapper.
79 FUNCTION GET_CURRENT_CONFIG_INSTANCE_ID
80 RETURN NUMBER
81 IS
82 BEGIN
83 RETURN FND_OAM_DSCFG_INSTANCES_PKG.GET_CURRENT_ID;
84 END;
85
86 -- Public
87 -- Convenience wrapper.
88 FUNCTION GET_CURRENT_POLICYSET_ID
89 RETURN NUMBER
90 IS
91 BEGIN
92 RETURN FND_OAM_DSCFG_INSTANCES_PKG.GET_CURRENT_POLICYSET_ID;
93 END;
94
95 -- Public
96 PROCEDURE GET_CURRENT_TARGET_TABLE_LIST(x_table_owners OUT NOCOPY DBMS_SQL.VARCHAR2_TABLE,
97 x_table_names OUT NOCOPY DBMS_SQL.VARCHAR2_TABLE)
98 IS
99 l_ctxt VARCHAR2(60) := PKG_NAME||'ADD_DML_UPDATE_SEGMENT';
100
101 BEGIN
102 fnd_oam_debug.log(2, l_ctxt, 'ENTER');
103
104 -- make sure we have the state we need
105 IF NOT FND_OAM_DSCFG_INSTANCES_PKG.IS_INITIALIZED THEN
106 RAISE NO_DATA_FOUND;
107 END IF;
108
109 -- FIXME: the object_id subselect is ugly and will be repeated in the compiler. Options include moving
110 -- the sub-select into a view. Real fix is support for using PL/SQL tables in a SQL 'IN'.
111
112 -- select out all distinct table_owner/table_name combinations for compilable objects
113 SELECT DISTINCT p1.canonical_value, p2.canonical_value
114 BULK COLLECT INTO x_table_owners, x_table_names
115 FROM (SELECT object_id
116 FROM fnd_oam_dscfg_objects
117 WHERE config_instance_id = FND_OAM_DSCFG_INSTANCES_PKG.GET_CURRENT_ID
118 AND object_type in (G_OTYPE_DML_UPDATE_SEGMENT,
119 G_OTYPE_DML_DELETE_STMT,
120 G_OTYPE_DML_TRUNCATE_STMT,
121 G_OTYPE_PLSQL_TEXT)) o,
122 fnd_oam_dscfg_properties p1,
123 fnd_oam_dscfg_properties p2
124 WHERE p1.parent_type = G_TYPE_OBJECT
125 AND p1.parent_id = o.object_id
126 AND p1.property_name = G_PROP_TABLE_OWNER
127 AND p2.parent_type = G_TYPE_OBJECT
128 AND p2.parent_id = o.object_id
129 AND p2.property_name = G_PROP_TABLE_NAME;
130
131 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
132 EXCEPTION
133 WHEN NO_DATA_FOUND THEN
134 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
135 RAISE;
136 WHEN OTHERS THEN
137 fnd_oam_debug.log(6, l_ctxt, 'Unexpected Error: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
138 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
139 RAISE;
140 END;
141
142 -- Public
143 PROCEDURE ADD_DML_UPDATE_SEGMENT(p_table_owner IN VARCHAR2,
144 p_table_name IN VARCHAR2,
145 p_column_name IN VARCHAR2,
146 p_new_column_value IN VARCHAR2,
147 p_where_clause IN VARCHAR2,
148 p_weight_modifier IN NUMBER,
149 p_source_type IN VARCHAR2,
150 p_source_id IN NUMBER,
151 x_object_id OUT NOCOPY NUMBER)
152 IS
153 l_ctxt VARCHAR2(60) := PKG_NAME||'ADD_DML_UPDATE_SEGMENT';
154
155 l_object_id NUMBER;
156 l_prop_id NUMBER;
157
158 k NUMBER;
159 BEGIN
160 fnd_oam_debug.log(2, l_ctxt, 'ENTER');
161
162 -- go ahead and create the object, if there's no config instance it'll throw an exception
163 FND_OAM_DSCFG_OBJECTS_PKG.ADD_OBJECT(p_object_type => G_OTYPE_DML_UPDATE_SEGMENT,
164 p_source_type => p_source_type,
165 p_source_id => p_source_id,
166 x_object_id => l_object_id);
167
168 --now create properties for the arguments
169 --table owner
170 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
171 p_parent_id => l_object_id,
172 p_property_name => G_PROP_TABLE_OWNER,
173 p_varchar2_value => p_table_owner,
174 x_property_id => l_prop_id);
175 --table name
176 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
177 p_parent_id => l_object_id,
178 p_property_name => G_PROP_TABLE_NAME,
179 p_varchar2_value => p_table_name,
180 x_property_id => l_prop_id);
181 --column name
182 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
183 p_parent_id => l_object_id,
184 p_property_name => G_PROP_COLUMN_NAME,
185 p_varchar2_value => p_column_name,
186 x_property_id => l_prop_id);
187 --new column value
188 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
189 p_parent_id => l_object_id,
190 p_property_name => G_PROP_NEW_COLUMN_VALUE,
191 p_varchar2_value => p_new_column_value,
192 x_property_id => l_prop_id);
193 --where clause, only if non-null
194 IF p_where_clause IS NOT NULL THEN
195 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
196 p_parent_id => l_object_id,
197 p_property_name => G_PROP_WHERE_CLAUSE,
198 p_varchar2_value => p_where_clause,
199 x_property_id => l_prop_id);
200 END IF;
201
202 --weight_modifier, only if non-null
203 IF p_weight_modifier IS NOT NULL THEN
204 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
205 p_parent_id => l_object_id,
206 p_property_name => G_PROP_WEIGHT_MODIFIER,
207 p_varchar2_value => p_weight_modifier,
208 x_property_id => l_prop_id);
209 END IF;
210 x_object_id := l_object_id;
211 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
212 EXCEPTION
213 WHEN NO_DATA_FOUND THEN
214 --occurs when create object or prop couldn't find needed state
215 x_object_id := NULL;
216 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
217 RAISE;
218 WHEN OTHERS THEN
219 x_object_id := NULL;
220 fnd_oam_debug.log(6, l_ctxt, 'Unexpected Error: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
221 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
222 RAISE;
223 END;
224
225 -- Public
226 PROCEDURE ADD_DML_DELETE_STMT(p_table_owner IN VARCHAR2,
227 p_table_name IN VARCHAR2,
228 p_where_clause IN VARCHAR2,
229 p_weight IN NUMBER,
230 p_source_type IN VARCHAR2,
231 p_source_id IN NUMBER,
232 x_object_id OUT NOCOPY NUMBER)
233 IS
234 l_ctxt VARCHAR2(60) := PKG_NAME||'ADD_DML_DELETE_STMT';
235
236 l_object_id NUMBER;
237 l_prop_id NUMBER;
238
239 BEGIN
240 fnd_oam_debug.log(2, l_ctxt, 'ENTER');
241
242 -- go ahead and create the object, if there's no config instance it'll throw an exception
243 FND_OAM_DSCFG_OBJECTS_PKG.ADD_OBJECT(p_object_type => G_OTYPE_DML_DELETE_STMT,
244 p_source_type => p_source_type,
245 p_source_id => p_source_id,
246 x_object_id => l_object_id);
247 fnd_oam_debug.log(1, l_ctxt, 'Object Created: '||l_object_id);
248
249 --now create properties for the arguments
250 --table owner
251 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
252 p_parent_id => l_object_id,
253 p_property_name => G_PROP_TABLE_OWNER,
254 p_varchar2_value => p_table_owner,
255 x_property_id => l_prop_id);
256 --table name
257 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
258 p_parent_id => l_object_id,
259 p_property_name => G_PROP_TABLE_NAME,
260 p_varchar2_value => p_table_name,
261 x_property_id => l_prop_id);
262 --where clause, only if non-null
263 IF p_where_clause IS NOT NULL THEN
264 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
265 p_parent_id => l_object_id,
266 p_property_name => G_PROP_WHERE_CLAUSE,
267 p_varchar2_value => p_where_clause,
268 x_property_id => l_prop_id);
269 END IF;
270
271 IF p_weight IS NOT NULL THEN
272 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
273 p_parent_id => l_object_id,
274 p_property_name => G_PROP_WEIGHT,
275 p_number_value => p_weight,
276 x_property_id => l_prop_id);
277 END IF;
278
279 x_object_id := l_object_id;
280 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
281 EXCEPTION
282 WHEN NO_DATA_FOUND THEN
283 --occurs when create object or prop couldn't find needed state
284 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
285 RAISE;
286 WHEN OTHERS THEN
287 fnd_oam_debug.log(6, l_ctxt, 'Unexpected Error: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
288 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
289 RAISE;
290 END;
291
292 -- Public
293 PROCEDURE ADD_DML_TRUNCATE_STMT(p_table_owner IN VARCHAR2,
294 p_table_name IN VARCHAR2,
295 p_weight IN NUMBER,
296 p_source_type IN VARCHAR2,
297 p_source_id IN NUMBER,
298 x_object_id OUT NOCOPY NUMBER)
299 IS
300 l_ctxt VARCHAR2(60) := PKG_NAME||'ADD_DML_TRUNCATE_STMT';
301
302 l_object_id NUMBER;
303 l_prop_id NUMBER;
304
305 k NUMBER;
306 BEGIN
307 fnd_oam_debug.log(2, l_ctxt, 'ENTER');
308
309 -- go ahead and create the object, if there's no config instance it'll throw an exception
310 FND_OAM_DSCFG_OBJECTS_PKG.ADD_OBJECT(p_object_type => G_OTYPE_DML_TRUNCATE_STMT,
311 p_source_type => p_source_type,
312 p_source_id => p_source_id,
313 x_object_id => l_object_id);
314
315 --now create properties for the arguments
316 --table owner
317 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
318 p_parent_id => l_object_id,
319 p_property_name => G_PROP_TABLE_OWNER,
320 p_varchar2_value => p_table_owner,
321 x_property_id => l_prop_id);
322 --table name
323 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
324 p_parent_id => l_object_id,
325 p_property_name => G_PROP_TABLE_NAME,
326 p_varchar2_value => p_table_name,
327 x_property_id => l_prop_id);
328
329 IF p_weight IS NOT NULL THEN
330 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
331 p_parent_id => l_object_id,
332 p_property_name => G_PROP_WEIGHT,
333 p_number_value => p_weight,
334 x_property_id => l_prop_id);
335 END IF;
336
337 x_object_id := l_object_id;
338 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
339 EXCEPTION
340 WHEN NO_DATA_FOUND THEN
341 --occurs when create object or prop couldn't find needed state
342 x_object_id := NULL;
343 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
344 RAISE;
345 WHEN OTHERS THEN
346 x_object_id := NULL;
347 fnd_oam_debug.log(6, l_ctxt, 'Unexpected Error: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
348 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
349 RAISE;
350 END;
351
352 -- Public
353 PROCEDURE ADD_PLSQL_TEXT(p_plsql_text IN VARCHAR2,
354 p_table_owner IN VARCHAR2,
355 p_table_name IN VARCHAR2,
356 p_primary_domain IN VARCHAR2,
357 p_weight IN NUMBER,
358 p_source_type IN VARCHAR2,
359 p_source_id IN NUMBER,
360 x_object_id OUT NOCOPY NUMBER)
361 IS
362 l_ctxt VARCHAR2(60) := PKG_NAME||'ADD_PLSQL_TEXT';
363
364 l_object_id NUMBER;
365 l_prop_id NUMBER;
366
367 k NUMBER;
368 BEGIN
369 fnd_oam_debug.log(2, l_ctxt, 'ENTER');
370
371 -- go ahead and create the object, if there's no config instance it'll throw an exception
372 FND_OAM_DSCFG_OBJECTS_PKG.ADD_OBJECT(p_object_type => G_OTYPE_PLSQL_TEXT,
373 p_source_type => p_source_type,
374 p_source_id => p_source_id,
375 x_object_id => l_object_id);
376
377 --now create properties for the arguments
378 --plsql_text
379 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
380 p_parent_id => l_object_id,
381 p_property_name => G_PROP_PLSQL_TEXT,
382 p_varchar2_value => p_plsql_text,
383 x_property_id => l_prop_id);
384
385 -- optional table_owner for table-bound pl/sqls
386 IF p_table_owner IS NOT NULL THEN
387 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
388 p_parent_id => l_object_id,
389 p_property_name => G_PROP_TABLE_OWNER,
390 p_varchar2_value => p_table_owner,
391 x_property_id => l_prop_id);
392 END IF;
393
394 -- optional table_name for table-bound pl/sqls
395 IF p_table_name IS NOT NULL THEN
396 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
397 p_parent_id => l_object_id,
398 p_property_name => G_PROP_TABLE_NAME,
399 p_varchar2_value => p_table_name,
400 x_property_id => l_prop_id);
401 END IF;
402
403 -- optional primary_domain
404 IF p_primary_domain IS NOT NULL THEN
405 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
406 p_parent_id => l_object_id,
407 p_property_name => G_PROP_PRIMARY_DOMAIN,
408 p_varchar2_value => p_primary_domain,
409 x_property_id => l_prop_id);
410 END IF;
411
412 IF p_weight IS NOT NULL THEN
413 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
414 p_parent_id => l_object_id,
415 p_property_name => G_PROP_WEIGHT,
416 p_number_value => p_weight,
417 x_property_id => l_prop_id);
418 END IF;
419
420 x_object_id := l_object_id;
421 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
422 EXCEPTION
423 WHEN NO_DATA_FOUND THEN
424 --occurs when create object or prop couldn't find needed state
425 x_object_id := NULL;
426 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
427 RAISE;
428 WHEN OTHERS THEN
429 x_object_id := NULL;
430 fnd_oam_debug.log(6, l_ctxt, 'Unexpected Error: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
431 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
432 RAISE;
433 END;
434
435 -- Public
436 PROCEDURE ADD_RUN_OBJECT(p_run_mode IN VARCHAR2 DEFAULT NULL,
437 p_valid_check_interval IN NUMBER DEFAULT NULL,
438 p_num_bundles IN NUMBER DEFAULT NULL,
439 p_weight IN NUMBER DEFAULT NULL,
440 x_object_id OUT NOCOPY NUMBER)
441 IS
442 l_ctxt VARCHAR2(60) := PKG_NAME||'ADD_RUN_OBJECT';
443
444 l_object_id NUMBER;
445 l_prop_id NUMBER;
446
447 k NUMBER;
448 BEGIN
449 fnd_oam_debug.log(2, l_ctxt, 'ENTER');
450
451 -- go ahead and create the object, if there's no config instance it'll throw an exception
452 FND_OAM_DSCFG_OBJECTS_PKG.ADD_OBJECT(p_object_type => G_OTYPE_RUN,
453 x_object_id => l_object_id);
454
455 --now create properties for the arguments
456
457 IF p_run_mode IS NOT NULL THEN
458 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
459 p_parent_id => l_object_id,
460 p_property_name => G_PROP_RUN_MODE,
461 p_varchar2_value => p_run_mode,
462 x_property_id => l_prop_id);
463 END IF;
464
465 IF p_valid_check_interval IS NOT NULL THEN
466 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
467 p_parent_id => l_object_id,
468 p_property_name => G_PROP_VALID_CHECK_INTERVAL,
469 p_number_value => p_valid_check_interval,
470 x_property_id => l_prop_id);
471 END IF;
472
473 IF p_num_bundles IS NOT NULL THEN
474 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
475 p_parent_id => l_object_id,
476 p_property_name => G_PROP_NUM_BUNDLES,
477 p_number_value => p_num_bundles,
478 x_property_id => l_prop_id);
479 END IF;
480
481 IF p_weight IS NOT NULL THEN
482 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
483 p_parent_id => l_object_id,
484 p_property_name => G_PROP_WEIGHT,
485 p_number_value => p_weight,
486 x_property_id => l_prop_id);
487 END IF;
488
489 x_object_id := l_object_id;
490 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
491 EXCEPTION
492 WHEN NO_DATA_FOUND THEN
493 --occurs when create object or prop couldn't find needed state
494 x_object_id := NULL;
495 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
496 RAISE;
497 WHEN OTHERS THEN
498 x_object_id := NULL;
499 fnd_oam_debug.log(6, l_ctxt, 'Unexpected Error: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
500 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
501 RAISE;
502 END;
503
504 -- Public
505 PROCEDURE ADD_BUNDLE_OBJECT(p_target_hostname IN VARCHAR2 DEFAULT NULL,
506 p_workers_allowed IN NUMBER DEFAULT NULL,
507 p_batch_size IN NUMBER DEFAULT NULL,
508 p_min_parallel_unit_weight IN NUMBER DEFAULT NULL,
509 p_weight IN NUMBER DEFAULT NULL,
510 x_object_id OUT NOCOPY NUMBER)
511 IS
512 l_ctxt VARCHAR2(60) := PKG_NAME||'ADD_BUNDLE_OBJECT';
513
514 l_object_id NUMBER;
515 l_prop_id NUMBER;
516
517 k NUMBER;
518 BEGIN
519 fnd_oam_debug.log(2, l_ctxt, 'ENTER');
520
521 -- go ahead and create the object, if there's no config instance it'll throw an exception
522 FND_OAM_DSCFG_OBJECTS_PKG.ADD_OBJECT(p_object_type => G_OTYPE_BUNDLE,
523 x_object_id => l_object_id);
524
525 --now create properties for the arguments
526
527 IF p_target_hostname IS NOT NULL THEN
528 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
529 p_parent_id => l_object_id,
530 p_property_name => G_PROP_TARGET_HOSTNAME,
531 p_varchar2_value => p_target_hostname,
532 x_property_id => l_prop_id);
533 END IF;
534
535 IF p_workers_allowed IS NOT NULL THEN
536 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
537 p_parent_id => l_object_id,
538 p_property_name => G_PROP_WORKERS_ALLOWED,
539 p_number_value => p_workers_allowed,
540 x_property_id => l_prop_id);
541 END IF;
542
543 IF p_batch_size IS NOT NULL THEN
544 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
545 p_parent_id => l_object_id,
546 p_property_name => G_PROP_BATCH_SIZE,
547 p_number_value => p_batch_size,
548 x_property_id => l_prop_id);
549 END IF;
550
551 IF p_min_parallel_unit_weight IS NOT NULL THEN
552 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
553 p_parent_id => l_object_id,
554 p_property_name => G_PROP_MIN_PARALLEL_WEIGHT,
555 p_number_value => p_min_parallel_unit_weight,
556 x_property_id => l_prop_id);
557 END IF;
558
559 IF p_weight IS NOT NULL THEN
560 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
561 p_parent_id => l_object_id,
562 p_property_name => G_PROP_WEIGHT,
563 p_number_value => p_weight,
564 x_property_id => l_prop_id);
565 END IF;
566
567 x_object_id := l_object_id;
568 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
569 EXCEPTION
570 WHEN NO_DATA_FOUND THEN
571 --occurs when create object or prop couldn't find needed state
572 x_object_id := NULL;
573 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
574 RAISE;
575 WHEN OTHERS THEN
576 x_object_id := NULL;
577 fnd_oam_debug.log(6, l_ctxt, 'Unexpected Error: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
578 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
579 RAISE;
580 END;
581
582 -- Public
583 PROCEDURE ADD_ERRORED_OBJECT(p_object_type IN VARCHAR2,
584 p_message IN VARCHAR2,
585 p_source_type IN VARCHAR2,
586 p_source_id IN NUMBER,
587 x_object_id OUT NOCOPY NUMBER)
588 IS
589 l_ctxt VARCHAR2(60) := PKG_NAME||'ADD_ERRORED_OBJECT';
590
591 l_object_id NUMBER;
592 l_prop_id NUMBER;
593
594 k NUMBER;
595 BEGIN
596 fnd_oam_debug.log(2, l_ctxt, 'ENTER');
597
598 -- go ahead and create the object, if there's no config instance it'll throw an exception
599 FND_OAM_DSCFG_OBJECTS_PKG.ADD_OBJECT(p_object_type => p_object_type,
600 p_source_type => p_source_type,
601 p_source_id => p_source_id,
602 p_errors_found_flag => FND_API.G_TRUE,
603 p_message => p_message,
604 x_object_id => l_object_id);
605
606 x_object_id := l_object_id;
607 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
608 EXCEPTION
609 WHEN NO_DATA_FOUND THEN
610 --occurs when create object or prop couldn't find needed state
611 x_object_id := NULL;
612 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
613 RAISE;
614 WHEN OTHERS THEN
615 x_object_id := NULL;
616 fnd_oam_debug.log(6, l_ctxt, 'Unexpected Error: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
617 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
618 RAISE;
619 END;
620
621 -- Public
622 PROCEDURE GET_NEXT_PROC(p_stage IN VARCHAR2,
623 x_proc_id OUT NOCOPY NUMBER,
624 x_proc_type OUT NOCOPY VARCHAR2,
625 x_error_is_fatal OUT NOCOPY VARCHAR2,
626 x_location OUT NOCOPY VARCHAR2,
627 x_executable OUT NOCOPY VARCHAR2)
628 IS
629 BEGIN
630 FND_OAM_DSCFG_PROCS_PKG.GET_NEXT_PROC(p_stage => p_stage,
631 x_proc_id => x_proc_id,
632 x_proc_type => x_proc_type,
633 x_error_is_fatal => x_error_is_fatal,
634 x_location => x_location,
635 x_executable => x_executable);
636 END;
637
638 -- Public
639 PROCEDURE ADD_CONFIG_INSTANCE(p_target_dbname IN VARCHAR2,
640 p_config_instance_type IN VARCHAR2,
641 p_name IN VARCHAR2,
642 p_description IN VARCHAR2,
643 p_language IN VARCHAR2,
644 p_source_dbname IN VARCHAR2,
645 p_clone_key IN VARCHAR2,
646 p_policyset_id IN NUMBER,
647 x_config_instance_id OUT NOCOPY NUMBER)
648 IS
649 BEGIN
650 FND_OAM_DSCFG_INSTANCES_PKG.ADD_CONFIG_INSTANCE(p_target_dbname => p_target_dbname,
651 p_config_instance_type => p_config_instance_type,
652 p_name => p_name,
653 p_description => p_description,
654 p_language => p_language,
655 p_source_dbname => p_source_dbname,
656 p_clone_key => p_clone_key,
657 p_policyset_id => p_policyset_id,
658 x_config_instance_id => x_config_instance_id);
659 END;
660
661 -- Public
662 PROCEDURE SET_CURRENT_CONFIG_INSTANCE(p_config_instance_id IN NUMBER)
663 IS
664 BEGIN
665 FND_OAM_DSCFG_INSTANCES_PKG.SET_CURRENT_CONFIG_INSTANCE(p_config_instance_id => p_config_instance_id);
666 END;
667
668 -- Public
669 PROCEDURE ADD_OBJECT(p_object_type IN VARCHAR2,
670 p_parent_object_id IN NUMBER,
671 p_source_type IN VARCHAR2,
672 p_source_id IN NUMBER,
673 p_errors_found_flag IN VARCHAR2,
674 p_message IN VARCHAR2,
675 x_object_id OUT NOCOPY NUMBER)
676 IS
677 BEGIN
678 FND_OAM_DSCFG_OBJECTS_PKG.ADD_OBJECT(p_object_type => p_object_type,
679 p_parent_object_id => p_parent_object_id,
680 p_source_type => p_source_type,
681 p_source_id => p_source_id,
682 p_errors_found_flag => p_errors_found_flag,
683 p_message => p_message,
684 x_object_id => x_object_id);
685 END;
686
687 -- Public
688 PROCEDURE GET_OBJECTS_FOR_TYPE(p_object_type IN VARCHAR2,
689 x_object_ids OUT NOCOPY DBMS_SQL.NUMBER_TABLE)
690 IS
691 BEGIN
692 FND_OAM_DSCFG_OBJECTS_PKG.GET_OBJECTS_FOR_TYPE(p_object_type => p_object_type,
693 x_object_ids => x_object_ids);
694 END;
695
696 -- Public
697 PROCEDURE GET_OBJECTS_FOR_TYPE(p_object_type IN VARCHAR2,
698 p_errors_found_flag IN VARCHAR2,
699 x_object_ids OUT NOCOPY DBMS_SQL.NUMBER_TABLE)
700 IS
701 BEGIN
702 FND_OAM_DSCFG_OBJECTS_PKG.GET_OBJECTS_FOR_TYPE(p_object_type => p_object_type,
703 p_errors_found_flag => p_errors_found_flag,
704 x_object_ids => x_object_ids);
705 END;
706
707 -- Public
708 PROCEDURE ADD_PROPERTY(p_parent_type IN VARCHAR2,
709 p_parent_id IN NUMBER,
710 p_property_name IN VARCHAR2,
711 p_datatype IN VARCHAR2,
712 p_canonical_value IN VARCHAR2,
713 x_property_id OUT NOCOPY NUMBER)
714 IS
715 BEGIN
716 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => p_parent_type,
717 p_parent_id => p_parent_id,
718 p_property_name => p_property_name,
719 p_datatype => p_datatype,
720 p_canonical_value => p_canonical_value,
721 x_property_id => x_property_id);
722 END;
723
724 -- Public
725 PROCEDURE ADD_OBJECT_PROPERTY(p_object_id IN NUMBER,
726 p_property_name IN VARCHAR2,
727 p_varchar2_value IN VARCHAR2,
728 x_property_id OUT NOCOPY NUMBER)
729 IS
730 BEGIN
731 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
732 p_parent_id => p_object_id,
733 p_property_name => p_property_name,
734 p_varchar2_value => p_varchar2_value,
735 x_property_id => x_property_id);
736 END;
737
738 -- Public
739 PROCEDURE ADD_OBJECT_PROPERTY(p_object_id IN NUMBER,
740 p_property_name IN VARCHAR2,
741 p_number_value IN NUMBER,
742 x_property_id OUT NOCOPY NUMBER)
743 IS
744 BEGIN
745 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
746 p_parent_id => p_object_id,
747 p_property_name => p_property_name,
748 p_number_value => p_number_value,
749 x_property_id => x_property_id);
750 END;
751
752 -- Public
753 PROCEDURE ADD_OBJECT_PROPERTY(p_object_id IN NUMBER,
754 p_property_name IN VARCHAR2,
755 p_date_value IN DATE,
756 x_property_id OUT NOCOPY NUMBER)
757 IS
758 BEGIN
759 FND_OAM_DSCFG_PROPERTIES_PKG.ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
760 p_parent_id => p_object_id,
761 p_property_name => p_property_name,
762 p_date_value => p_date_value,
763 x_property_id => x_property_id);
764 END;
765
766 -- Public
767 PROCEDURE GET_PROPERTY_CANONICAL_VALUE(p_parent_type IN VARCHAR2,
768 p_parent_id IN NUMBER,
769 p_property_name IN VARCHAR2,
770 x_canonical_value OUT NOCOPY VARCHAR2)
771 IS
772 BEGIN
773 FND_OAM_DSCFG_PROPERTIES_PKG.GET_PROPERTY_CANONICAL_VALUE(p_parent_type => p_parent_type,
774 p_parent_id => p_parent_id,
775 p_property_name => p_property_name,
776 x_canonical_value => x_canonical_value);
777 END;
778
779 -- Public
780 PROCEDURE GET_OBJECT_PROPERTY_VALUE(p_object_id IN NUMBER,
781 p_property_name IN VARCHAR2,
782 x_varchar2_value OUT NOCOPY VARCHAR2)
783 IS
784 BEGIN
785 FND_OAM_DSCFG_PROPERTIES_PKG.GET_PROPERTY_VALUE(p_parent_type => G_TYPE_OBJECT,
786 p_parent_id => p_object_id,
787 p_property_name => p_property_name,
788 x_varchar2_value => x_varchar2_value);
789 END;
790
791 -- Public
792 PROCEDURE GET_OBJECT_PROPERTY_VALUE(p_object_id IN NUMBER,
793 p_property_name IN VARCHAR2,
794 x_number_value OUT NOCOPY NUMBER)
795 IS
796 BEGIN
797 FND_OAM_DSCFG_PROPERTIES_PKG.GET_PROPERTY_VALUE(p_parent_type => G_TYPE_OBJECT,
798 p_parent_id => p_object_id,
799 p_property_name => p_property_name,
800 x_number_value => x_number_value);
801 END;
802
803 -- Public
804 PROCEDURE GET_OBJECT_PROPERTY_VALUE(p_object_id IN NUMBER,
805 p_property_name IN VARCHAR2,
806 x_date_value OUT NOCOPY DATE)
807 IS
808 BEGIN
809 FND_OAM_DSCFG_PROPERTIES_PKG.GET_PROPERTY_VALUE(p_parent_type => G_TYPE_OBJECT,
810 p_parent_id => p_object_id,
811 p_property_name => p_property_name,
812 x_date_value => x_date_value);
813 END;
814
815 -- Public
816 PROCEDURE SET_OR_ADD_PROPERTY(p_parent_type IN VARCHAR2,
817 p_parent_id IN NUMBER,
818 p_property_name IN VARCHAR2,
819 p_datatype IN VARCHAR2,
820 p_canonical_value IN VARCHAR2,
821 x_property_id OUT NOCOPY NUMBER)
822 IS
823 BEGIN
824 FND_OAM_DSCFG_PROPERTIES_PKG.SET_OR_ADD_PROPERTY(p_parent_type => p_parent_type,
825 p_parent_id => p_parent_id,
826 p_property_name => p_property_name,
827 p_datatype => p_datatype,
828 p_canonical_value => p_canonical_value,
829 x_property_id => x_property_id);
830 END;
831
832
833 -- Public
834 PROCEDURE SET_OR_ADD_OBJECT_PROPERTY(p_object_id IN NUMBER,
835 p_property_name IN VARCHAR2,
836 p_varchar2_value IN VARCHAR2,
837 x_property_id OUT NOCOPY NUMBER)
838 IS
839 BEGIN
840 FND_OAM_DSCFG_PROPERTIES_PKG.SET_OR_ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
841 p_parent_id => p_object_id,
842 p_property_name => p_property_name,
843 p_varchar2_value => p_varchar2_value,
844 x_property_id => x_property_id);
845 END;
846
847
848 -- Public
849 PROCEDURE SET_OR_ADD_OBJECT_PROPERTY(p_object_id IN NUMBER,
850 p_property_name IN VARCHAR2,
851 p_number_value IN NUMBER,
852 x_property_id OUT NOCOPY NUMBER)
853 IS
854 BEGIN
855 FND_OAM_DSCFG_PROPERTIES_PKG.SET_OR_ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
856 p_parent_id => p_object_id,
857 p_property_name => p_property_name,
858 p_number_value => p_number_value,
859 x_property_id => x_property_id);
860 END;
861
862
863 -- Public
864 PROCEDURE SET_OR_ADD_OBJECT_PROPERTY(p_object_id IN NUMBER,
865 p_property_name IN VARCHAR2,
866 p_date_value IN DATE,
867 x_property_id OUT NOCOPY NUMBER)
868 IS
869 BEGIN
870 FND_OAM_DSCFG_PROPERTIES_PKG.SET_OR_ADD_PROPERTY(p_parent_type => G_TYPE_OBJECT,
871 p_parent_id => p_object_id,
872 p_property_name => p_property_name,
873 p_date_value => p_date_value,
874 x_property_id => x_property_id);
875 END;
876
877
878
879 END FND_OAM_DSCFG_API_PKG;