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