1 PACKAGE BODY AMS_DM_TARGET_PVT as
2 /* $Header: amsvdtgb.pls 120.0 2005/05/31 19:31:20 appldev noship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 -- AMS_DM_TARGET_PVT
7 -- Purpose
8 --
9 -- History
10 -- 10-Apr-2002 nyostos Created.
11 -- 30-Jan-2003 nyostos Changed target name uniqueness code.
12 -- 12-Feb-2004 rosharma Bug # 3436093.
13 --
14 -- NOTE
15 --
16 -- End of Comments
17 -- ===============================================================
18
19
20 G_PKG_NAME CONSTANT VARCHAR2(30) := 'AMS_DM_TARGET_PVT';
21 G_FILE_NAME CONSTANT VARCHAR2(12) := 'amsvdtgb.pls';
22
23 G_USER_ID NUMBER := FND_GLOBAL.USER_ID;
24 G_LOGIN_ID NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
25
26
27 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
28 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
29 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
30
31 PROCEDURE Complete_dm_target_Rec (
32 p_dm_target_rec IN dm_target_rec_type,
33 x_complete_rec OUT NOCOPY dm_target_rec_type
34 );
35
36
37 -- Hint: Primary key needs to be returned.
38 PROCEDURE Create_Dmtarget(
39 p_api_version_number IN NUMBER,
40 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
41 p_commit IN VARCHAR2 := FND_API.G_FALSE,
42 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
43
44 x_return_status OUT NOCOPY VARCHAR2,
45 x_msg_count OUT NOCOPY NUMBER,
46 x_msg_data OUT NOCOPY VARCHAR2,
47
48 p_dm_target_rec IN dm_target_rec_type := g_miss_dm_target_rec,
49 x_target_id OUT NOCOPY NUMBER
50 )
51
52 IS
53 L_API_NAME CONSTANT VARCHAR2(30) := 'Create_Dmtarget';
54 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
55 l_return_status_full VARCHAR2(1);
56 l_object_version_number NUMBER := 1;
57 l_org_id NUMBER := FND_API.G_MISS_NUM;
58 l_TARGET_ID NUMBER;
59 l_dummy NUMBER;
60 l_dm_target_rec AMS_DM_TARGET_PVT.dm_target_rec_type := p_dm_target_rec;
61
62 CURSOR c_id IS
63 SELECT AMS_DM_TARGETS_B_s.NEXTVAL
64 FROM dual;
65
66 CURSOR c_id_exists (l_id IN NUMBER) IS
67 SELECT 1
68 FROM AMS_DM_TARGETS_VL
69 WHERE TARGET_ID = l_id;
70
71 BEGIN
72 -- Standard Start of API savepoint
73 SAVEPOINT CREATE_Dmtarget_PVT;
74
75 -- Standard call to check for call compatibility.
76 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
77 p_api_version_number,
78 l_api_name,
79 G_PKG_NAME)
80 THEN
81 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
82 END IF;
83
84 -- Initialize message list if p_init_msg_list is set to TRUE.
85 IF FND_API.to_Boolean( p_init_msg_list )
86 THEN
87 FND_MSG_PUB.initialize;
88 END IF;
89
90 -- Debug Message
91 IF (AMS_DEBUG_HIGH_ON) THEN
92
93 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
94 END IF;
95
96
97 -- Initialize API return status to SUCCESS
98 x_return_status := FND_API.G_RET_STS_SUCCESS;
99
100 -- Local variable initialization
101
102 IF l_dm_target_rec.TARGET_ID IS NULL OR l_dm_target_rec.TARGET_ID = FND_API.g_miss_num THEN
103 LOOP
104 l_dummy := NULL;
105 OPEN c_id;
106 FETCH c_id INTO l_dm_target_rec.TARGET_ID;
107 CLOSE c_id;
108
109 OPEN c_id_exists(l_dm_target_rec.TARGET_ID);
110 FETCH c_id_exists INTO l_dummy;
111 CLOSE c_id_exists;
112
113 EXIT WHEN l_dummy IS NULL;
114 END LOOP;
115 END IF;
116
117 IF (AMS_DEBUG_HIGH_ON) THEN
118
119
120
121 AMS_UTILITY_PVT.debug_message( l_api_name || ' New Target ID to Insert = ' || l_dm_target_rec.TARGET_ID );
122
123 END IF;
124
125 -- =========================================================================
126 -- Validate Environment
127 -- =========================================================================
128
129 IF FND_GLOBAL.User_Id IS NULL THEN
130 AMS_Utility_PVT.Error_Message(p_message_name => 'USER_PROFILE_MISSING');
131 RAISE FND_API.G_EXC_ERROR;
132 END IF;
133
134 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
135 THEN
136 -- Invoke validation procedures
137 Validate_dmtarget(
138 p_api_version_number => 1.0,
139 p_init_msg_list => FND_API.G_FALSE,
140 p_validation_level => p_validation_level,
141 p_validation_mode => JTF_PLSQL_API.g_create,
142 p_dm_target_rec => l_dm_target_rec,
143 x_return_status => x_return_status,
144 x_msg_count => x_msg_count,
145 x_msg_data => x_msg_data);
146 END IF;
147
148 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
149 RAISE FND_API.G_EXC_ERROR;
150 END IF;
151
152
153 -- Debug Message
154 IF (AMS_DEBUG_HIGH_ON) THEN
155
156 AMS_UTILITY_PVT.debug_message( 'Private API: Calling create table handler');
157 END IF;
158
159 -- Invoke table handler(AMS_DM_TARGETS_B_PKG.Insert_Row)
160 AMS_DM_TARGETS_B_PKG.Insert_Row(
161 px_target_id => l_dm_target_rec.target_id,
162 p_last_update_date => SYSDATE,
163 p_last_updated_by => G_USER_ID,
164 p_creation_date => SYSDATE,
165 p_created_by => G_USER_ID,
166 p_last_update_login => G_LOGIN_ID,
167 px_object_version_number => l_object_version_number,
168 p_active_flag => l_dm_target_rec.active_flag,
169 p_model_type => l_dm_target_rec.model_type,
170 p_data_source_id => l_dm_target_rec.data_source_id,
171 p_source_field_id => l_dm_target_rec.source_field_id,
172 p_target_name => l_dm_target_rec.target_name,
173 p_description => l_dm_target_rec.description,
174 p_target_source_id => l_dm_target_rec.target_source_id
175 );
176
177 x_target_id := l_dm_target_rec.target_id;
178
179 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
180 RAISE FND_API.G_EXC_ERROR;
181 END IF;
182
183 /* obsoleted rosharma 11.5.10 for Audience data source uptake
184 -- After successfully inserting the Target, enable the data source
185 -- associated with it if the target is active
186 IF l_dm_target_rec.active_flag = 'Y' THEN
187 update ams_list_src_types
188 set enabled_flag = 'Y'
189 where list_source_type_id = l_dm_target_rec.data_source_id;
190 END IF;
191 */
192
193 --
194 -- End of API body
195 --
196
197 -- Standard check for p_commit
198 IF FND_API.to_Boolean( p_commit ) THEN
199 COMMIT WORK;
200 END IF;
201
202
203 -- Debug Message
204 IF (AMS_DEBUG_HIGH_ON) THEN
205
206 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
207 END IF;
208
209 -- Standard call to get message count and if count is 1, get message info.
210 FND_MSG_PUB.Count_And_Get
211 (p_count => x_msg_count,
212 p_data => x_msg_data
213 );
214 EXCEPTION
215
216 WHEN AMS_Utility_PVT.resource_locked THEN
217 x_return_status := FND_API.g_ret_sts_error;
218 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
219
220 WHEN FND_API.G_EXC_ERROR THEN
221 ROLLBACK TO CREATE_Dmtarget_PVT;
222 x_return_status := FND_API.G_RET_STS_ERROR;
223 -- Standard call to get message count and if count=1, get the message
224 FND_MSG_PUB.Count_And_Get (
225 p_encoded => FND_API.G_FALSE,
226 p_count => x_msg_count,
227 p_data => x_msg_data
228 );
229
230 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
231 ROLLBACK TO CREATE_Dmtarget_PVT;
232 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
233 -- Standard call to get message count and if count=1, get the message
234 FND_MSG_PUB.Count_And_Get (
235 p_encoded => FND_API.G_FALSE,
236 p_count => x_msg_count,
237 p_data => x_msg_data
238 );
239
240 WHEN OTHERS THEN
241 ROLLBACK TO CREATE_Dmtarget_PVT;
242 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
243 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
244 THEN
245 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
246 END IF;
247 -- Standard call to get message count and if count=1, get the message
248 FND_MSG_PUB.Count_And_Get (
249 p_encoded => FND_API.G_FALSE,
250 p_count => x_msg_count,
251 p_data => x_msg_data
252 );
253 End Create_Dmtarget;
254
255
256 PROCEDURE Update_Dmtarget(
257 p_api_version_number IN NUMBER,
258 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
259 p_commit IN VARCHAR2 := FND_API.G_FALSE,
260 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
261
262 x_return_status OUT NOCOPY VARCHAR2,
263 x_msg_count OUT NOCOPY NUMBER,
264 x_msg_data OUT NOCOPY VARCHAR2,
265
266 p_dm_target_rec IN dm_target_rec_type,
267 x_object_version_number OUT NOCOPY NUMBER
268 )
269
270 IS
271 CURSOR c_get_dmtarget(p_target_id IN NUMBER) IS
272 SELECT *
273 FROM AMS_DM_TARGETS_VL
274 WHERE target_id = p_target_id;
275
276 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Dmtarget';
277 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
278
279 -- Local Variables
280 l_object_version_number NUMBER;
281 l_TARGET_ID NUMBER;
282 l_ref_dm_target_rec c_get_Dmtarget%ROWTYPE ;
283 l_tar_dm_target_rec AMS_DM_TARGET_PVT.dm_target_rec_type := P_dm_target_rec;
284 l_rowid ROWID;
285
286
287 BEGIN
288 -- Standard Start of API savepoint
289 SAVEPOINT UPDATE_Dmtarget_PVT;
290
291 -- Standard call to check for call compatibility.
292 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
293 p_api_version_number,
294 l_api_name,
295 G_PKG_NAME)
296 THEN
297 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
298 END IF;
299
300 -- Initialize message list if p_init_msg_list is set to TRUE.
301 IF FND_API.to_Boolean( p_init_msg_list )
302 THEN
303 FND_MSG_PUB.initialize;
304 END IF;
305
306 -- Debug Message
307 IF (AMS_DEBUG_HIGH_ON) THEN
308
309 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
310 END IF;
311
312
313 -- Initialize API return status to SUCCESS
314 x_return_status := FND_API.G_RET_STS_SUCCESS;
315
316 -- Complete missing entries in the record before updating
317 Complete_dm_target_Rec(
318 p_dm_target_rec => p_dm_target_rec,
319 x_complete_rec => l_tar_dm_target_rec
320 );
321
322 -- Debug Message
323 IF (AMS_DEBUG_HIGH_ON) THEN
324
325 AMS_UTILITY_PVT.debug_message('Private API: - Open Target Reference Cursor');
326 END IF;
327
328 -- get the reference target, which contains
329 -- data before the update operation.
330 OPEN c_get_Dmtarget( l_tar_dm_target_rec.target_id);
331 FETCH c_get_Dmtarget INTO l_ref_dm_target_rec ;
332
333 IF ( c_get_Dmtarget%NOTFOUND) THEN
334 AMS_Utility_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET', p_token_name => 'INFO', p_token_value => 'Dmtarget') ;
335 RAISE FND_API.G_EXC_ERROR;
336 END IF;
337
338 -- Debug Message
339 IF (AMS_DEBUG_HIGH_ON) THEN
340
341 AMS_UTILITY_PVT.debug_message('Private API: - Close Target Reference Cursor');
342 END IF;
343 CLOSE c_get_Dmtarget;
344
345 IF (l_tar_dm_target_rec.object_version_number is NULL or
346 l_tar_dm_target_rec.object_version_number = FND_API.G_MISS_NUM ) Then
347 AMS_Utility_PVT.Error_Message(p_message_name => 'API_VERSION_MISSING', p_token_name => 'COLUMN', p_token_value => 'Last_Update_Date') ;
348 raise FND_API.G_EXC_ERROR;
349 End if;
350
351 -- Check Whether record has been changed by someone else
352 IF (l_tar_dm_target_rec.object_version_number <> l_ref_dm_target_rec.object_version_number) Then
353 AMS_Utility_PVT.Error_Message(p_message_name => 'API_RECORD_CHANGED', p_token_name => 'INFO', p_token_value => 'Dmtarget') ;
354 raise FND_API.G_EXC_ERROR;
355 End if;
356
357 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
358 THEN
359
360 -- Invoke validation procedures
361 Validate_dmtarget(
362 p_api_version_number => 1.0,
363 p_init_msg_list => FND_API.G_FALSE,
364 p_validation_level => p_validation_level,
365 p_validation_mode => JTF_PLSQL_API.g_update,
366 p_dm_target_rec => l_tar_dm_target_rec,
367 x_return_status => x_return_status,
368 x_msg_count => x_msg_count,
369 x_msg_data => x_msg_data);
370 END IF;
371
372 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
373 RAISE FND_API.G_EXC_ERROR;
374 END IF;
375
376
377 -- Debug Message
378 IF (AMS_DEBUG_HIGH_ON) THEN
379
380 AMS_UTILITY_PVT.debug_message('Private API: Calling update table handler');
381 END IF;
382 IF (AMS_DEBUG_HIGH_ON) THEN
383
384 AMS_UTILITY_PVT.debug_message('Updating .........');
385 END IF;
386 IF (AMS_DEBUG_HIGH_ON) THEN
387
388 AMS_UTILITY_PVT.debug_message('p_target_id = ' || p_dm_target_rec.target_id);
389 END IF;
390 IF (AMS_DEBUG_HIGH_ON) THEN
391
392 AMS_UTILITY_PVT.debug_message('p_last_update_date = ' || SYSDATE);
393 END IF;
394 IF (AMS_DEBUG_HIGH_ON) THEN
395
396 AMS_UTILITY_PVT.debug_message('p_last_updated_by = ' || G_USER_ID);
397 END IF;
398 IF (AMS_DEBUG_HIGH_ON) THEN
399
400 AMS_UTILITY_PVT.debug_message('p_creation_date = ' || SYSDATE);
401 END IF;
402 IF (AMS_DEBUG_HIGH_ON) THEN
403
404 AMS_UTILITY_PVT.debug_message('p_created_by = ' || G_USER_ID);
405 END IF;
406 IF (AMS_DEBUG_HIGH_ON) THEN
407
408 AMS_UTILITY_PVT.debug_message('p_last_update_login = ' || G_LOGIN_ID);
409 END IF;
410 IF (AMS_DEBUG_HIGH_ON) THEN
411
412 AMS_UTILITY_PVT.debug_message('p_object_version_number = ' || l_tar_dm_target_rec.object_version_number);
413 END IF;
414 IF (AMS_DEBUG_HIGH_ON) THEN
415
416 AMS_UTILITY_PVT.debug_message('p_active_flag = ' || l_tar_dm_target_rec.active_flag);
417 END IF;
418 IF (AMS_DEBUG_HIGH_ON) THEN
419
420 AMS_UTILITY_PVT.debug_message('p_model_type = ' || l_tar_dm_target_rec.model_type);
421 END IF;
422 IF (AMS_DEBUG_HIGH_ON) THEN
423
424 AMS_UTILITY_PVT.debug_message('p_data_source_id = ' || l_tar_dm_target_rec.data_source_id);
425 END IF;
426 IF (AMS_DEBUG_HIGH_ON) THEN
427
428 AMS_UTILITY_PVT.debug_message('p_source_field_id = ' || l_tar_dm_target_rec.source_field_id);
429 END IF;
430 IF (AMS_DEBUG_HIGH_ON) THEN
431
432 AMS_UTILITY_PVT.debug_message('p_target_name = ' || l_tar_dm_target_rec.target_name);
433 END IF;
434 IF (AMS_DEBUG_HIGH_ON) THEN
435
436 AMS_UTILITY_PVT.debug_message('p_description = ' || l_tar_dm_target_rec.description);
437 END IF;
438
439 BEGIN
440 -- Invoke table handler(AMS_DM_TARGETS_B_PKG.Update_Row)
441 AMS_DM_TARGETS_B_PKG.Update_Row(
442 p_target_id => l_tar_dm_target_rec.target_id,
443 p_last_update_date => SYSDATE,
444 p_last_updated_by => G_USER_ID,
445 p_creation_date => SYSDATE,
446 p_created_by => G_USER_ID,
447 p_last_update_login => G_LOGIN_ID,
448 p_object_version_number => l_tar_dm_target_rec.object_version_number,
449 p_active_flag => l_tar_dm_target_rec.active_flag,
450 p_model_type => l_tar_dm_target_rec.model_type,
451 p_data_source_id => l_tar_dm_target_rec.data_source_id,
452 p_source_field_id => l_tar_dm_target_rec.source_field_id,
453 p_target_name => l_tar_dm_target_rec.target_name,
454 p_description => l_tar_dm_target_rec.description,
455 p_target_source_id => l_tar_dm_target_rec.target_source_id
456 );
457
458 EXCEPTION
459 WHEN NO_DATA_FOUND THEN
460 AMS_Utility_PVT.error_message ('AMS_API_RECORD_NOT_FOUND');
461 RAISE FND_API.G_EXC_ERROR;
462 END;
463
464 x_object_version_number := l_tar_dm_target_rec.object_version_number + 1;
465
466 --
467 -- End of API body.
468 --
469
470 -- Standard check for p_commit
471 IF FND_API.to_Boolean( p_commit )
472 THEN
473 COMMIT WORK;
474 END IF;
475
476
477 -- Debug Message
478 IF (AMS_DEBUG_HIGH_ON) THEN
479
480 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
481 END IF;
482
483 -- Standard call to get message count and if count is 1, get message info.
484 FND_MSG_PUB.Count_And_Get
485 (p_count => x_msg_count,
486 p_data => x_msg_data
487 );
488 EXCEPTION
489
490 WHEN AMS_Utility_PVT.resource_locked THEN
491 x_return_status := FND_API.g_ret_sts_error;
492 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
493
494 WHEN FND_API.G_EXC_ERROR THEN
495 ROLLBACK TO UPDATE_Dmtarget_PVT;
496 x_return_status := FND_API.G_RET_STS_ERROR;
497 -- Standard call to get message count and if count=1, get the message
498 FND_MSG_PUB.Count_And_Get (
499 p_encoded => FND_API.G_FALSE,
500 p_count => x_msg_count,
501 p_data => x_msg_data
502 );
503
504 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
505 ROLLBACK TO UPDATE_Dmtarget_PVT;
506 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
507 -- Standard call to get message count and if count=1, get the message
508 FND_MSG_PUB.Count_And_Get (
509 p_encoded => FND_API.G_FALSE,
510 p_count => x_msg_count,
511 p_data => x_msg_data
512 );
513
514 WHEN OTHERS THEN
515 ROLLBACK TO UPDATE_Dmtarget_PVT;
516 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
517 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
518 THEN
519 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
520 END IF;
521 -- Standard call to get message count and if count=1, get the message
522 FND_MSG_PUB.Count_And_Get (
523 p_encoded => FND_API.G_FALSE,
524 p_count => x_msg_count,
525 p_data => x_msg_data
526 );
527 End Update_Dmtarget;
528
529
530 PROCEDURE Delete_Dmtarget(
531 p_api_version_number IN NUMBER,
532 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
533 p_commit IN VARCHAR2 := FND_API.G_FALSE,
534 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
535 x_return_status OUT NOCOPY VARCHAR2,
536 x_msg_count OUT NOCOPY NUMBER,
537 x_msg_data OUT NOCOPY VARCHAR2,
538 p_target_id IN NUMBER,
539 p_object_version_number IN NUMBER
540 )
541
542 IS
543 L_API_NAME CONSTANT VARCHAR2(30) := 'Delete_Dmtarget';
544 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
545 l_object_version_number NUMBER;
546 l_no_of_models NUMBER;
547 l_no_of_active_targets NUMBER;
548 l_datasource_id NUMBER;
549
550 -- Cursor to check if target is used in any models
551 CURSOR c_target_used (l_id IN NUMBER) IS
552 SELECT count(*)
553 FROM AMS_DM_MODELS_VL
554 WHERE TARGET_ID = l_id;
555
556 -- Cursor to get the data source id for the target
557 CURSOR c_datasource_id (l_tgtId IN NUMBER) IS
558 SELECT data_source_id
559 FROM ams_dm_targets_vl
560 WHERE target_id = l_tgtId;
561
562 -- Cursor to count the active targets defined for a data source
563 CURSOR c_target_count (l_dsId IN NUMBER) IS
564 SELECT count(*)
565 FROM AMS_DM_TARGETS_VL
566 WHERE DATA_SOURCE_ID = l_dsId
567 AND ACTIVE_FLAG = 'Y';
568
569
570
571 BEGIN
572 -- Standard Start of API savepoint
573 SAVEPOINT DELETE_Dmtarget_PVT;
574
575 -- Standard call to check for call compatibility.
576 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
577 p_api_version_number,
578 l_api_name,
579 G_PKG_NAME)
580 THEN
581 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
582 END IF;
583
584 -- Initialize message list if p_init_msg_list is set to TRUE.
585 IF FND_API.to_Boolean( p_init_msg_list )
586 THEN
587 FND_MSG_PUB.initialize;
588 END IF;
589
590 -- Debug Message
591 IF (AMS_DEBUG_HIGH_ON) THEN
592
593 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
594 END IF;
595
596
597 -- Initialize API return status to SUCCESS
598 x_return_status := FND_API.G_RET_STS_SUCCESS;
599
600 -- Validate that the Target is not used by any model
601 OPEN c_target_used(p_target_id);
602 FETCH c_target_used INTO l_no_of_models;
603 CLOSE c_target_used;
604 IF l_no_of_models > 0 THEN
605 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_DM_TARGET_USED');
606 x_return_status := FND_API.g_ret_sts_error;
607 RAISE FND_API.G_EXC_ERROR;
608 END IF;
609
610 -- First Delete Target Values associated with this target (if any)
611 IF (AMS_DEBUG_HIGH_ON) THEN
612
613 AMS_UTILITY_PVT.debug_message( 'Private API: Going to Delete Target Values Associated with this Target ');
614 END IF;
615
616 AMS_Dm_Target_Value_PVT.Delete_TgtValues_For_Target ( p_TARGET_ID );
617
618 IF (AMS_DEBUG_HIGH_ON) THEN
619
620
621
622 AMS_UTILITY_PVT.debug_message( 'Private API: After Deleting Target Values Associated with this Target ');
623
624 END IF;
625
626 -- added rosharma for audience DS uptake
627 -- Delete Child Data Sources associated with this target (if any)
628 IF (AMS_DEBUG_HIGH_ON) THEN
629
630 AMS_UTILITY_PVT.debug_message( 'Private API: Going to Delete Child Data Sources Associated with this Target ');
631 END IF;
632
633 AMS_Dm_Target_Sources_PVT.delete_tgtsources_for_target ( p_TARGET_ID );
634
635 IF (AMS_DEBUG_HIGH_ON) THEN
636
637
638
639 AMS_UTILITY_PVT.debug_message( 'Private API: After Deleting Child Data Sources Associated with this Target ');
640
641 END IF;
642
643 /* obsoleted rosharma 11.5.10 for Audience data source uptake
644 -- Get the data source id for this target record before deleting it
645 OPEN c_datasource_id(p_TARGET_ID);
646 FETCH c_datasource_id INTO l_datasource_id;
647 CLOSE c_datasource_id;
648 */
649
650
651 --
652 -- Api body
653 --
654 -- Debug Message
655 IF (AMS_DEBUG_HIGH_ON) THEN
656
657 AMS_UTILITY_PVT.debug_message( 'Private API: Calling delete table handler');
658 END IF;
659
660 -- Invoke table handler(AMS_DM_TARGETS_B_PKG.Delete_Row)
661 AMS_DM_TARGETS_B_PKG.Delete_Row(
662 p_TARGET_ID => p_TARGET_ID);
663
664 /* obsoleted rosharma 11.5.10 for Audience data source uptake
665 -- After successfully deleteing the target, check if there are no more
666 -- active targets for the associated datasource. If none exist, then disable the datasource.
667 OPEN c_target_count(l_datasource_id);
668 FETCH c_target_count INTO l_no_of_active_targets;
669 CLOSE c_target_count;
670
671 IF l_no_of_active_targets = 0 THEN
672 update ams_list_src_types
673 set enabled_flag = 'N'
674 where list_source_type_id = l_datasource_id;
675 END IF;
676 */
677
678 --
679 -- End of API body
680 --
681
682 -- Standard check for p_commit
683 IF FND_API.to_Boolean( p_commit )
684 THEN
685 COMMIT WORK;
686 END IF;
687
688
689 -- Debug Message
690 IF (AMS_DEBUG_HIGH_ON) THEN
691
692 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
693 END IF;
694
695 -- Standard call to get message count and if count is 1, get message info.
696 FND_MSG_PUB.Count_And_Get
697 (p_count => x_msg_count,
698 p_data => x_msg_data
699 );
700 EXCEPTION
701
702 WHEN AMS_Utility_PVT.resource_locked THEN
703 x_return_status := FND_API.g_ret_sts_error;
704 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
705
706 WHEN FND_API.G_EXC_ERROR THEN
707 ROLLBACK TO DELETE_Dmtarget_PVT;
708 x_return_status := FND_API.G_RET_STS_ERROR;
709 -- Standard call to get message count and if count=1, get the message
710 FND_MSG_PUB.Count_And_Get (
711 p_encoded => FND_API.G_FALSE,
712 p_count => x_msg_count,
713 p_data => x_msg_data
714 );
715
716 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
717 ROLLBACK TO DELETE_Dmtarget_PVT;
718 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
719 -- Standard call to get message count and if count=1, get the message
720 FND_MSG_PUB.Count_And_Get (
721 p_encoded => FND_API.G_FALSE,
722 p_count => x_msg_count,
723 p_data => x_msg_data
724 );
725
726 WHEN OTHERS THEN
727 ROLLBACK TO DELETE_Dmtarget_PVT;
728 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
729 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
730 THEN
731 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
732 END IF;
733 -- Standard call to get message count and if count=1, get the message
734 FND_MSG_PUB.Count_And_Get (
735 p_encoded => FND_API.G_FALSE,
736 p_count => x_msg_count,
737 p_data => x_msg_data
738 );
739 End Delete_Dmtarget;
740
741
742
743 -- Hint: Primary key needs to be returned.
744 PROCEDURE Lock_Dmtarget(
745 p_api_version_number IN NUMBER,
746 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
747
748 x_return_status OUT NOCOPY VARCHAR2,
749 x_msg_count OUT NOCOPY NUMBER,
750 x_msg_data OUT NOCOPY VARCHAR2,
751
752 p_target_id IN NUMBER,
753 p_object_version IN NUMBER
754 )
755
756 IS
757 L_API_NAME CONSTANT VARCHAR2(30) := 'Lock_Dmtarget';
758 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
759 L_FULL_NAME CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
760 l_TARGET_ID NUMBER;
761
762 CURSOR c_Dmtarget IS
763 SELECT TARGET_ID
764 FROM AMS_DM_TARGETS_B
765 WHERE TARGET_ID = p_TARGET_ID
766 AND object_version_number = p_object_version
767 FOR UPDATE NOWAIT;
768
769 BEGIN
770
771 -- Debug Message
772 IF (AMS_DEBUG_HIGH_ON) THEN
773
774 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
775 END IF;
776
777 -- Initialize message list if p_init_msg_list is set to TRUE.
778 IF FND_API.to_Boolean( p_init_msg_list )
779 THEN
780 FND_MSG_PUB.initialize;
781 END IF;
782
783 -- Standard call to check for call compatibility.
784 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
785 p_api_version_number,
786 l_api_name,
787 G_PKG_NAME)
788 THEN
789 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
790 END IF;
791
792
793 -- Initialize API return status to SUCCESS
794 x_return_status := FND_API.G_RET_STS_SUCCESS;
795
796
797 ------------------------ lock -------------------------
798
799 IF (AMS_DEBUG_HIGH_ON) THEN
800
801
802
803 AMS_Utility_PVT.debug_message(l_full_name||': start');
804
805 END IF;
806 OPEN c_Dmtarget;
807
808 FETCH c_Dmtarget INTO l_TARGET_ID;
809
810 IF (c_Dmtarget%NOTFOUND) THEN
811 CLOSE c_Dmtarget;
812 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
813 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
814 FND_MSG_PUB.add;
815 END IF;
816 RAISE FND_API.g_exc_error;
817 END IF;
818
819 CLOSE c_Dmtarget;
820
821 -------------------- finish --------------------------
822 FND_MSG_PUB.count_and_get(
823 p_encoded => FND_API.g_false,
824 p_count => x_msg_count,
825 p_data => x_msg_data);
826 IF (AMS_DEBUG_HIGH_ON) THEN
827
828 AMS_Utility_PVT.debug_message(l_full_name ||': end');
829 END IF;
830 EXCEPTION
831
832 WHEN AMS_Utility_PVT.resource_locked THEN
833 x_return_status := FND_API.g_ret_sts_error;
834 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
835
836 WHEN FND_API.G_EXC_ERROR THEN
837 ROLLBACK TO LOCK_Dmtarget_PVT;
838 x_return_status := FND_API.G_RET_STS_ERROR;
839 -- Standard call to get message count and if count=1, get the message
840 FND_MSG_PUB.Count_And_Get (
841 p_encoded => FND_API.G_FALSE,
842 p_count => x_msg_count,
843 p_data => x_msg_data
844 );
845
846 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
847 ROLLBACK TO LOCK_Dmtarget_PVT;
848 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
849 -- Standard call to get message count and if count=1, get the message
850 FND_MSG_PUB.Count_And_Get (
851 p_encoded => FND_API.G_FALSE,
852 p_count => x_msg_count,
853 p_data => x_msg_data
854 );
855
856 WHEN OTHERS THEN
857 ROLLBACK TO LOCK_Dmtarget_PVT;
858 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
859 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
860 THEN
861 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
862 END IF;
863 -- Standard call to get message count and if count=1, get the message
864 FND_MSG_PUB.Count_And_Get (
865 p_encoded => FND_API.G_FALSE,
866 p_count => x_msg_count,
867 p_data => x_msg_data
868 );
869 End Lock_Dmtarget;
870
871
872 PROCEDURE check_dm_target_uk_items(
873 p_dm_target_rec IN dm_target_rec_type,
874 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
875 x_return_status OUT NOCOPY VARCHAR2)
876 IS
877 l_valid_flag VARCHAR2(1);
878 l_number NUMBER;
879
880 CURSOR c_target_name
881 IS SELECT 1 from dual
882 WHERE EXISTS ( SELECT * from ams_dm_targets_vl
883 WHERE UPPER(target_name) = UPPER(p_dm_target_rec.target_name)) ;
884 CURSOR c_target_name_updt
885 IS SELECT 1 from dual
886 WHERE EXISTS ( SELECT * from ams_dm_targets_vl
887 WHERE UPPER(target_name) = UPPER(p_dm_target_rec.target_name)
888 AND target_id <> p_dm_target_rec.target_id );
889
890 l_dummy NUMBER ;
891
892 /* commented rosharma. not needed anymore for 11.5.10 and hence
893 CURSOR c_unique_values (l_dsId IN NUMBER, l_sfId IN NUMBER, l_modelType IN VARCHAR2, l_targetId IN NUMBER) IS
894 SELECT count(*)
895 FROM AMS_DM_TARGETS_VL
896 WHERE DATA_SOURCE_ID = l_dsId
897 AND SOURCE_FIELD_ID = l_sfId
898 AND MODEL_TYPE = l_modelType
899 AND TARGET_ID <> l_targetId;
900 */
901
902 BEGIN
903 IF (AMS_DEBUG_HIGH_ON) THEN
904
905 AMS_UTILITY_PVT.debug_message('Private API:check_dm_target_uk_items');
906 END IF;
907 x_return_status := FND_API.g_ret_sts_success;
908
909 --Validate unique target_id
910 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
911 l_valid_flag := AMS_Utility_PVT.check_uniqueness(
912 'AMS_DM_TARGETS_B',
913 'TARGET_ID = ''' || p_dm_target_rec.TARGET_ID ||''''
914 );
915 ELSE
916 l_valid_flag := AMS_Utility_PVT.check_uniqueness(
917 'AMS_DM_TARGETS_B',
918 'TARGET_ID = ''' || p_dm_target_rec.TARGET_ID ||
919 ''' AND TARGET_ID <> ' || p_dm_target_rec.TARGET_ID
920 );
921 END IF;
922
923 IF l_valid_flag = FND_API.g_false THEN
924 AMS_Utility_PVT.Error_Message('AMS_API_DUPLICATE_ID', 'ID_FIELD','TARGET_ID');
925 x_return_status := FND_API.g_ret_sts_error;
926 RETURN;
927 END IF;
928
929 --Validate unique target_name
930 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
931 OPEN c_target_name ;
932 FETCH c_target_name INTO l_dummy;
933 CLOSE c_target_name ;
934 ELSE
935 OPEN c_target_name_updt ;
936 FETCH c_target_name_updt INTO l_dummy;
937 CLOSE c_target_name_updt ;
938 END IF;
939
940 IF l_dummy IS NOT NULL THEN
941 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_DM_DUP_TARGET_NAME');
942 x_return_status := FND_API.g_ret_sts_error;
943 RETURN;
944 END IF;
945
946 /* commented rosharma. not needed anymore for 11.5.10 and hence
947 --Validate unique model_type + data_source_id + source_field_id combination
948 OPEN c_unique_values(p_dm_target_rec.data_source_id, p_dm_target_rec.source_field_id,
949 p_dm_target_rec.model_type, p_dm_target_rec.target_id);
950 FETCH c_unique_values INTO l_number;
951 CLOSE c_unique_values;
952 IF (AMS_DEBUG_HIGH_ON) THEN
953
954 AMS_UTILITY_PVT.debug_message('l_number ' || l_number);
955 END IF;
956 IF l_number > 0 THEN
957 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_DM_DUP_MODEL_TARGET');
958 x_return_status := FND_API.g_ret_sts_error;
959 RETURN;
960 END IF;
961 */
962
963
964
965 END check_dm_target_uk_items;
966
967 PROCEDURE check_dm_target_req_items(
968 p_dm_target_rec IN dm_target_rec_type,
969 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
970 x_return_status OUT NOCOPY VARCHAR2
971 )
972 IS
973 BEGIN
974 x_return_status := FND_API.g_ret_sts_success;
975
976 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
977
978 IF (AMS_DEBUG_HIGH_ON) THEN
979
980
981
982 ams_utility_pvt.debug_message('Private API:check_dm_target_req_items for CREATE');
983
984 END IF;
985
986 IF p_dm_target_rec.target_id = FND_API.g_miss_num OR p_dm_target_rec.target_id IS NULL THEN
987 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','TARGET_ID');
988 x_return_status := FND_API.g_ret_sts_error;
989 END IF;
990 IF p_dm_target_rec.active_flag = FND_API.g_miss_char OR p_dm_target_rec.active_flag IS NULL THEN
991 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','ACTIVE_FLAG');
992 x_return_status := FND_API.g_ret_sts_error;
993 END IF;
994 IF p_dm_target_rec.model_type = FND_API.g_miss_char OR p_dm_target_rec.model_type IS NULL THEN
995 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','MODEL_TYPE');
996 x_return_status := FND_API.g_ret_sts_error;
997 END IF;
998 IF p_dm_target_rec.data_source_id = FND_API.g_miss_num OR p_dm_target_rec.data_source_id IS NULL THEN
999 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','DATA_SOURCE_ID');
1000 x_return_status := FND_API.g_ret_sts_error;
1001 END IF;
1002 IF p_dm_target_rec.source_field_id = FND_API.g_miss_num OR p_dm_target_rec.source_field_id IS NULL THEN
1003 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','SOURCE_FIELD_ID');
1004 x_return_status := FND_API.g_ret_sts_error;
1005 END IF;
1006 -- added rosharma for audience DS uptake
1007 IF p_dm_target_rec.target_source_id = FND_API.g_miss_num OR p_dm_target_rec.target_source_id IS NULL THEN
1008 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','TARGET_SOURCE_ID');
1009 x_return_status := FND_API.g_ret_sts_error;
1010 END IF;
1011 ELSE
1012 IF (AMS_DEBUG_HIGH_ON) THEN
1013
1014 ams_utility_pvt.debug_message('Private API:check_dm_target_req_items for UPDATE');
1015 END IF;
1016
1017 IF p_dm_target_rec.target_id IS NULL THEN
1018 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','TARGET_ID');
1019 x_return_status := FND_API.g_ret_sts_error;
1020 END IF;
1021 IF p_dm_target_rec.last_update_date IS NULL THEN
1022 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','LAST_UPDATE_DATE');
1023 x_return_status := FND_API.g_ret_sts_error;
1024 END IF;
1025 IF p_dm_target_rec.last_updated_by IS NULL THEN
1026 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','LAST_UPDATED_BY');
1027 x_return_status := FND_API.g_ret_sts_error;
1028 END IF;
1029 IF p_dm_target_rec.creation_date IS NULL THEN
1030 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','CREATION_DATE');
1031 x_return_status := FND_API.g_ret_sts_error;
1032 END IF;
1033 IF p_dm_target_rec.created_by IS NULL THEN
1034 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','CREATED_BY');
1035 x_return_status := FND_API.g_ret_sts_error;
1036 END IF;
1037 IF p_dm_target_rec.active_flag IS NULL THEN
1038 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','ACTIVE_FLAG');
1039 x_return_status := FND_API.g_ret_sts_error;
1040 END IF;
1041 IF p_dm_target_rec.model_type IS NULL THEN
1042 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','MODEL_TYPE');
1043 x_return_status := FND_API.g_ret_sts_error;
1044 END IF;
1045 IF p_dm_target_rec.data_source_id IS NULL THEN
1046 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','DATA_SOURCE_ID');
1047 x_return_status := FND_API.g_ret_sts_error;
1048 END IF;
1049 IF p_dm_target_rec.source_field_id IS NULL THEN
1050 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','SOURCE_FIELD_ID');
1051 x_return_status := FND_API.g_ret_sts_error;
1052 END IF;
1053 IF (p_dm_target_rec.object_version_number IS NULL OR p_dm_target_rec.object_version_number = FND_API.G_MISS_NUM) THEN
1054 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','OBJECT_VERSION_NUMBER');
1055 x_return_status := FND_API.g_ret_sts_error;
1056 END IF;
1057 -- added rosharma for audience DS uptake
1058 IF p_dm_target_rec.target_source_id = FND_API.g_miss_num OR p_dm_target_rec.target_source_id IS NULL THEN
1059 AMS_Utility_PVT.Error_Message('AMS_API_MISSING_FIELD', 'MISS_FIELD','TARGET_SOURCE_ID');
1060 x_return_status := FND_API.g_ret_sts_error;
1061 END IF;
1062 END IF;
1063
1064 END check_dm_target_req_items;
1065
1066 PROCEDURE check_dm_target_FK_items(
1067 p_dm_target_rec IN dm_target_rec_type,
1068 x_return_status OUT NOCOPY VARCHAR2
1069 )
1070 IS
1071 BEGIN
1072 IF (AMS_DEBUG_HIGH_ON) THEN
1073
1074 AMS_UTILITY_PVT.debug_message('Private API:check_dm_target_FK_items');
1075 END IF;
1076 x_return_status := FND_API.g_ret_sts_success;
1077
1078 --------------------data_source_id---------------------------
1079 IF p_dm_target_rec.data_source_id <> FND_API.g_miss_num THEN
1080 IF AMS_Utility_PVT.check_fk_exists(
1081 'ams_list_src_types',
1082 'list_source_type_id',
1083 p_dm_target_rec.data_source_id
1084 ) = FND_API.g_false
1085 THEN
1086 AMS_Utility_PVT.error_message ('AMS_API_INVALID_FK', 'COLUMN_NAME', 'DATA_SOURCE_ID');
1087 x_return_status := FND_API.g_ret_sts_error;
1088 END IF;
1089 END IF;
1090
1091
1092 --------------------source_field_id---------------------------
1093 IF p_dm_target_rec.source_field_id <> FND_API.g_miss_num THEN
1094 IF AMS_Utility_PVT.check_fk_exists(
1095 'ams_list_src_fields',
1096 'list_source_field_id',
1097 p_dm_target_rec.source_field_id
1098 ) = FND_API.g_false
1099 THEN
1100 AMS_Utility_PVT.error_message ('AMS_API_INVALID_FK', 'COLUMN_NAME', 'SOURCE_FIELD_ID');
1101 x_return_status := FND_API.g_ret_sts_error;
1102 END IF;
1103 END IF;
1104
1105
1106 -- added rosharma for audience DS uptake
1107 --------------------target_source_id---------------------------
1108 IF p_dm_target_rec.target_source_id <> FND_API.g_miss_num THEN
1109 IF AMS_Utility_PVT.check_fk_exists(
1110 'ams_list_src_types',
1111 'list_source_type_id',
1112 p_dm_target_rec.target_source_id
1113 ) = FND_API.g_false
1114 THEN
1115 AMS_Utility_PVT.error_message ('AMS_API_INVALID_FK', 'COLUMN_NAME', 'TARGET_SOURCE_ID');
1116 x_return_status := FND_API.g_ret_sts_error;
1117 END IF;
1118 END IF;
1119 END check_dm_target_FK_items;
1120
1121 PROCEDURE check_dm_target_Lookup_items(
1122 p_dm_target_rec IN dm_target_rec_type,
1123 x_return_status OUT NOCOPY VARCHAR2
1124 )
1125 IS
1126 BEGIN
1127 IF (AMS_DEBUG_HIGH_ON) THEN
1128
1129 AMS_UTILITY_PVT.debug_message('Private API:check_dm_target_Lookup_items');
1130 END IF;
1131 x_return_status := FND_API.g_ret_sts_success;
1132
1133 ----------------------- model_type ------------------------
1134 IF p_dm_target_rec.model_type <> FND_API.g_miss_char THEN
1135 IF AMS_Utility_PVT.check_lookup_exists(
1136 p_lookup_type => 'AMS_DM_MODEL_TYPE',
1137 p_lookup_code => p_dm_target_rec.model_type
1138 ) = FND_API.g_false
1139 THEN
1140 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1141 THEN
1142 FND_MESSAGE.set_name('AMS', 'AMS_API_INVALID_LOOKUP');
1143 FND_MESSAGE.set_token ('LOOKUP_CODE', p_dm_target_rec.model_type);
1144 FND_MESSAGE.set_token ('COLUMN_NAME', 'MODEL_TYPE');
1145 FND_MSG_PUB.add;
1146 END IF;
1147
1148 x_return_status := FND_API.g_ret_sts_error;
1149 END IF;
1150 END IF;
1151
1152 END check_dm_target_Lookup_items;
1153
1154 PROCEDURE Check_dm_target_Items (
1155 P_dm_target_rec IN dm_target_rec_type,
1156 p_validation_mode IN VARCHAR2,
1157 x_return_status OUT NOCOPY VARCHAR2
1158 )
1159 IS
1160 BEGIN
1161
1162
1163 -- Check Items Uniqueness API calls
1164 check_dm_target_uk_items(
1165 p_dm_target_rec => p_dm_target_rec,
1166 p_validation_mode => p_validation_mode,
1167 x_return_status => x_return_status);
1168 IF x_return_status <> FND_API.g_ret_sts_success THEN
1169 RETURN;
1170 END IF;
1171
1172 -- Check Items Required/NOT NULL API calls
1173 check_dm_target_req_items(
1174 p_dm_target_rec => p_dm_target_rec,
1175 p_validation_mode => p_validation_mode,
1176 x_return_status => x_return_status);
1177 IF x_return_status <> FND_API.g_ret_sts_success THEN
1178 RETURN;
1179 END IF;
1180
1181 -- Check Items Foreign Keys API calls
1182 check_dm_target_FK_items(
1183 p_dm_target_rec => p_dm_target_rec,
1184 x_return_status => x_return_status);
1185 IF x_return_status <> FND_API.g_ret_sts_success THEN
1186 RETURN;
1187 END IF;
1188
1189 -- Check Items Lookups
1190 check_dm_target_Lookup_items(
1191 p_dm_target_rec => p_dm_target_rec,
1192 x_return_status => x_return_status);
1193 IF x_return_status <> FND_API.g_ret_sts_success THEN
1194 RETURN;
1195 END IF;
1196
1197 END Check_dm_target_Items;
1198
1199
1200
1201 PROCEDURE Complete_dm_target_Rec (
1202 p_dm_target_rec IN dm_target_rec_type,
1203 x_complete_rec OUT NOCOPY dm_target_rec_type)
1204 IS
1205 l_return_status VARCHAR2(1);
1206
1207 CURSOR c_complete IS
1208 SELECT *
1209 FROM ams_dm_targets_vl
1210 WHERE target_id = p_dm_target_rec.target_id;
1211 l_dm_target_rec c_complete%ROWTYPE;
1212
1213 BEGIN
1214 -- Debug Message
1215 IF (AMS_DEBUG_HIGH_ON) THEN
1216
1217 AMS_UTILITY_PVT.debug_message('Private API: Complete_dm_target_Rec start');
1218 END IF;
1219
1220 x_complete_rec := p_dm_target_rec;
1221
1222 OPEN c_complete;
1223 FETCH c_complete INTO l_dm_target_rec;
1224 CLOSE c_complete;
1225
1226 -- target_id
1227 IF p_dm_target_rec.target_id = FND_API.g_miss_num THEN
1228 x_complete_rec.target_id := l_dm_target_rec.target_id;
1229 END IF;
1230
1231 -- last_update_date
1232 IF p_dm_target_rec.last_update_date = FND_API.g_miss_date THEN
1233 x_complete_rec.last_update_date := l_dm_target_rec.last_update_date;
1234 END IF;
1235
1236 -- last_updated_by
1237 IF p_dm_target_rec.last_updated_by = FND_API.g_miss_num THEN
1238 x_complete_rec.last_updated_by := l_dm_target_rec.last_updated_by;
1239 END IF;
1240
1241 -- creation_date
1242 IF p_dm_target_rec.creation_date = FND_API.g_miss_date THEN
1243 x_complete_rec.creation_date := l_dm_target_rec.creation_date;
1244 END IF;
1245
1246 -- created_by
1247 IF p_dm_target_rec.created_by = FND_API.g_miss_num THEN
1248 x_complete_rec.created_by := l_dm_target_rec.created_by;
1249 END IF;
1250
1251 -- last_update_login
1252 IF p_dm_target_rec.last_update_login = FND_API.g_miss_num THEN
1253 x_complete_rec.last_update_login := l_dm_target_rec.last_update_login;
1254 END IF;
1255
1256 -- object_version_number
1257 IF p_dm_target_rec.object_version_number = FND_API.g_miss_num THEN
1258 x_complete_rec.object_version_number := l_dm_target_rec.object_version_number;
1259 END IF;
1260
1261 -- active_flag
1262 IF p_dm_target_rec.active_flag = FND_API.g_miss_char THEN
1263 x_complete_rec.active_flag := l_dm_target_rec.active_flag;
1264 END IF;
1265
1266 -- model_type
1267 IF p_dm_target_rec.model_type = FND_API.g_miss_char THEN
1268 x_complete_rec.model_type := l_dm_target_rec.model_type;
1269 END IF;
1270
1271 -- data_source_id
1272 IF p_dm_target_rec.data_source_id = FND_API.g_miss_num THEN
1273 x_complete_rec.data_source_id := l_dm_target_rec.data_source_id;
1274 END IF;
1275
1276 -- source_field_id
1277 IF p_dm_target_rec.source_field_id = FND_API.g_miss_num THEN
1278 x_complete_rec.source_field_id := l_dm_target_rec.source_field_id;
1279 END IF;
1280
1281 -- target_source_id
1282 IF p_dm_target_rec.target_source_id = FND_API.g_miss_num THEN
1283 x_complete_rec.target_source_id := l_dm_target_rec.target_source_id;
1284 END IF;
1285
1286 -- Note: Developers need to modify the procedure
1287 -- to handle any business specific requirements.
1288
1289 -- Debug Message
1290 IF (AMS_DEBUG_HIGH_ON) THEN
1291
1292 AMS_UTILITY_PVT.debug_message('Private API: Complete_dm_target_Rec end');
1293 END IF;
1294
1295 END Complete_dm_target_Rec;
1296
1297 PROCEDURE Validate_dmtarget(
1298 p_api_version_number IN NUMBER,
1299 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1300 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1301 p_dm_target_rec IN dm_target_rec_type,
1302 p_validation_mode IN VARCHAR2,
1303 x_return_status OUT NOCOPY VARCHAR2,
1304 x_msg_count OUT NOCOPY NUMBER,
1305 x_msg_data OUT NOCOPY VARCHAR2
1306 )
1307 IS
1308 L_API_NAME CONSTANT VARCHAR2(30) := 'Validate_Dmtarget';
1309 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
1310 l_object_version_number NUMBER;
1311 l_dm_target_rec AMS_DM_TARGET_PVT.dm_target_rec_type;
1312
1313 BEGIN
1314 -- Standard Start of API savepoint
1315 SAVEPOINT VALIDATE_Dmtarget_;
1316
1317 -- Debug Message
1318 IF (AMS_DEBUG_HIGH_ON) THEN
1319
1320 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1321 END IF;
1322
1323
1324 -- Standard call to check for call compatibility.
1325 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1326 p_api_version_number,
1327 l_api_name,
1328 G_PKG_NAME)
1329 THEN
1330 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1331 END IF;
1332
1333 -- Initialize message list if p_init_msg_list is set to TRUE.
1334 IF FND_API.to_Boolean( p_init_msg_list )
1335 THEN
1336 FND_MSG_PUB.initialize;
1337 END IF;
1338
1339 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1340 Check_dm_target_Items(
1341 p_dm_target_rec => p_dm_target_rec,
1342 p_validation_mode => p_validation_mode,
1343 x_return_status => x_return_status
1344 );
1345
1346 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1347 RAISE FND_API.G_EXC_ERROR;
1348 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1349 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1350 END IF;
1351 END IF;
1352
1353 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1354 Validate_dm_target_Rec(
1355 p_api_version_number => 1.0,
1356 p_init_msg_list => FND_API.G_FALSE,
1357 x_return_status => x_return_status,
1358 x_msg_count => x_msg_count,
1359 x_msg_data => x_msg_data,
1360 p_dm_target_rec => l_dm_target_rec);
1361
1362 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1363 RAISE FND_API.G_EXC_ERROR;
1364 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1365 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1366 END IF;
1367 END IF;
1368
1369
1370 -- Initialize API return status to SUCCESS
1371 x_return_status := FND_API.G_RET_STS_SUCCESS;
1372
1373
1374 -- Debug Message
1375 IF (AMS_DEBUG_HIGH_ON) THEN
1376
1377 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
1378 END IF;
1379
1380 -- Standard call to get message count and if count is 1, get message info.
1381 FND_MSG_PUB.Count_And_Get
1382 (p_count => x_msg_count,
1383 p_data => x_msg_data
1384 );
1385 EXCEPTION
1386
1387 WHEN AMS_Utility_PVT.resource_locked THEN
1388 x_return_status := FND_API.g_ret_sts_error;
1389 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
1390
1391 WHEN FND_API.G_EXC_ERROR THEN
1392 ROLLBACK TO VALIDATE_Dmtarget_;
1393 x_return_status := FND_API.G_RET_STS_ERROR;
1394 -- Standard call to get message count and if count=1, get the message
1395 FND_MSG_PUB.Count_And_Get (
1396 p_encoded => FND_API.G_FALSE,
1397 p_count => x_msg_count,
1398 p_data => x_msg_data
1399 );
1400
1401 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1402 ROLLBACK TO VALIDATE_Dmtarget_;
1403 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1404 -- Standard call to get message count and if count=1, get the message
1405 FND_MSG_PUB.Count_And_Get (
1406 p_encoded => FND_API.G_FALSE,
1407 p_count => x_msg_count,
1408 p_data => x_msg_data
1409 );
1410
1411 WHEN OTHERS THEN
1412 ROLLBACK TO VALIDATE_Dmtarget_;
1413 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1414 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1415 THEN
1416 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1417 END IF;
1418 -- Standard call to get message count and if count=1, get the message
1419 FND_MSG_PUB.Count_And_Get (
1420 p_encoded => FND_API.G_FALSE,
1421 p_count => x_msg_count,
1422 p_data => x_msg_data
1423 );
1424 End Validate_Dmtarget;
1425
1426
1427 PROCEDURE Validate_dm_target_rec(
1428 p_api_version_number IN NUMBER,
1429 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1430 x_return_status OUT NOCOPY VARCHAR2,
1431 x_msg_count OUT NOCOPY NUMBER,
1432 x_msg_data OUT NOCOPY VARCHAR2,
1433 p_dm_target_rec IN dm_target_rec_type
1434 )
1435 IS
1436 BEGIN
1437 -- Debug Message
1438 IF (AMS_DEBUG_HIGH_ON) THEN
1439
1440 AMS_UTILITY_PVT.debug_message('Private API: Validate_dm_target_rec');
1441 END IF;
1442
1443 -- Initialize message list if p_init_msg_list is set to TRUE.
1444 IF FND_API.to_Boolean( p_init_msg_list )
1445 THEN
1446 FND_MSG_PUB.initialize;
1447 END IF;
1448
1449 -- Initialize API return status to SUCCESS
1450 x_return_status := FND_API.G_RET_STS_SUCCESS;
1451
1452 -- Hint: Validate data
1453 -- If data not valid
1454 -- THEN
1455 -- x_return_status := FND_API.G_RET_STS_ERROR;
1456
1457 -- Standard call to get message count and if count is 1, get message info.
1458 FND_MSG_PUB.Count_And_Get
1459 (p_count => x_msg_count,
1460 p_data => x_msg_data
1461 );
1462 END Validate_dm_target_Rec;
1463
1464 --
1465 -- Purpose
1466 -- Validate access privileges of the selected
1467 -- target. Access privileges can include team
1468 -- based access.
1469 --
1470 PROCEDURE check_access (
1471 p_dm_target_rec IN dm_target_rec_type,
1472 p_validation_mode IN VARCHAR2,
1473 x_return_status OUT NOCOPY VARCHAR2
1474 );
1475
1476 --
1477 -- History
1478 PROCEDURE check_access (
1479 p_dm_target_rec IN dm_target_rec_type,
1480 p_validation_mode IN VARCHAR2,
1481 x_return_status OUT NOCOPY VARCHAR2
1482 )
1483 IS
1484 L_TARGET_QUALIFIER CONSTANT VARCHAR2(30) := 'TARGET';
1485 L_ACCESS_TYPE_USER CONSTANT VARCHAR2(30) := 'USER';
1486
1487 -- user id of the currently logged in user.
1488 l_owner_user_id NUMBER := AMS_Utility_PVT.get_resource_id (FND_GLOBAL.user_id);
1489 BEGIN
1490 -- Initialize API return status to SUCCESS
1491 x_return_status := FND_API.G_RET_STS_SUCCESS;
1492
1493 IF (AMS_DEBUG_HIGH_ON) THEN
1494
1495
1496
1497 ams_utility_pvt.debug_message ('qualifier: ' || l_target_qualifier || ' id: ' || p_dm_target_rec.target_id || ' resource: ' || l_owner_user_id);
1498
1499 END IF;
1500 -- validate access privileges
1501 IF AMS_Access_PVT.check_update_access (
1502 p_object_id => p_dm_target_rec.target_id,
1503 p_object_type => L_TARGET_QUALIFIER,
1504 p_user_or_role_id => l_owner_user_id,
1505 p_user_or_role_type => L_ACCESS_TYPE_USER) = 'N' THEN
1506 AMS_Utility_PVT.error_message ('AMS_TARGET_NO_UPDATE_ACCESS');
1507 x_return_status := FND_API.G_RET_STS_ERROR;
1508 END IF;
1509 END check_access;
1510
1511 -- ==============================================================================
1512 -- Start of Comments
1513 -- ==============================================================================
1514 -- API Name
1515 -- Handle_Data_Source_Disabling
1516 -- Type
1517 -- Private
1518 -- Pre-Req
1519 --
1520 -- Parameters
1521 --
1522 -- IN
1523 -- p_data_source_id IN NUMBER
1524 --
1525 -- Version : Current version 1.0
1526 --
1527 -- History
1528 --
1529 -- NOTE
1530 --
1531 -- End of Comments
1532 -- ==============================================================================
1533
1534 PROCEDURE Handle_Data_Source_Disabling(
1535 p_data_source_id IN NUMBER
1536 )
1537
1538 IS
1539 L_API_NAME CONSTANT VARCHAR2(30) := 'Handle_Data_Source_Disabling';
1540 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
1541
1542 l_user_status_id NUMBER;
1543 l_status_code VARCHAR2(30);
1544
1545 CURSOR c_user_status_id (p_status_type IN VARCHAR2, p_status_code IN VARCHAR2) IS
1546 SELECT user_status_id
1547 FROM ams_user_statuses_b
1548 WHERE system_status_type = p_status_type
1549 AND system_status_code = p_status_code
1550 AND default_flag = 'Y'
1551 AND enabled_flag = 'Y'
1552 ;
1553
1554 CURSOR c_pass_status_code (p_user_status_id IN NUMBER) IS
1555 SELECT system_status_code
1556 FROM ams_user_statuses_vl
1557 WHERE user_status_id = p_user_status_id;
1558
1559 BEGIN
1560 UPDATE ams_dm_targets_b
1561 SET active_flag = 'N',
1562 last_update_date = SYSDATE,
1563 last_updated_by = FND_GLOBAL.user_id
1564 WHERE (data_source_id = p_data_source_id OR target_source_id = p_data_source_id)
1565 AND active_flag = 'Y'
1566 ;
1567
1568 OPEN c_user_status_id('AMS_DM_MODEL_STATUS' , 'INVALID');
1569 FETCH c_user_status_id INTO l_user_status_id;
1570 CLOSE c_user_status_id;
1571
1572 OPEN c_pass_status_code (l_user_status_id);
1573 FETCH c_pass_status_code INTO l_status_code;
1574 CLOSE c_pass_status_code;
1575
1576 UPDATE ams_dm_models_all_b a
1577 SET a.status_code = l_status_code,
1578 a.user_status_id = l_user_status_id,
1579 a.last_update_date = SYSDATE,
1580 a.last_updated_by = FND_GLOBAL.user_id,
1581 a.status_date = SYSDATE
1582 WHERE a.status_code = 'AVAILABLE'
1583 AND (EXISTS
1584 (SELECT 1
1585 from ams_dm_targets_b b
1586 where b.target_id=a.target_id
1587 and b.data_source_id=p_data_source_id)
1588 OR EXISTS
1589 (SELECT 1
1590 from ams_dm_target_sources c
1591 where c.target_id=a.target_id
1592 and c.data_source_id=p_data_source_id));
1593
1594 End Handle_Data_Source_Disabling;
1595
1596 -- ==============================================================================
1597 -- Start of Comments
1598 -- ==============================================================================
1599 -- API Name
1600 -- Handle_Data_Source_Enabling
1601 -- Type
1602 -- Private
1603 -- Pre-Req
1604 --
1605 -- Parameters
1606 --
1607 -- IN
1608 -- p_data_source_id IN NUMBER
1609 --
1610 -- Version : Current version 1.0
1611 --
1612 -- History
1613 --
1614 -- NOTE
1615 --
1616 -- End of Comments
1617 -- ==============================================================================
1618
1619 PROCEDURE Handle_Data_Source_Enabling(
1620 p_data_source_id IN NUMBER
1621 )
1622
1623 IS
1624 L_API_NAME CONSTANT VARCHAR2(30) := 'Handle_Data_Source_Enabling';
1625 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
1626
1627 BEGIN
1628 UPDATE ams_dm_targets_b a
1629 SET a.active_flag = 'Y',
1630 a.last_update_date = SYSDATE,
1631 a.last_updated_by = FND_GLOBAL.user_id
1632 WHERE (a.data_source_id = p_data_source_id OR a.target_source_id = p_data_source_id)
1633 AND EXISTS (SELECT 1 FROM ams_list_src_types b WHERE b.list_source_type_id = a.data_source_id AND b.enabled_flag = 'Y')
1634 AND EXISTS (SELECT 1 FROM ams_list_src_types c WHERE c.list_source_type_id = a.target_source_id AND c.enabled_flag = 'Y')
1635 AND (EXISTS (SELECT 1 FROM ams_list_src_type_assocs d WHERE d.MASTER_SOURCE_TYPE_ID = a.data_source_id AND d.SUB_SOURCE_TYPE_ID = a.target_source_id AND d.enabled_flag = 'Y')
1636 OR a.data_source_id = a.target_source_id)
1637 AND EXISTS (SELECT 1 FROM ams_dm_target_values_b e where e.target_id = a.target_id)
1638 AND a.active_flag = 'N'
1639 ;
1640 End Handle_Data_Source_Enabling;
1641
1642 -- ==============================================================================
1643 -- Start of Comments
1644 -- ==============================================================================
1645 -- API Name
1646 -- Handle_DS_Assoc_Enabling
1647 -- Type
1648 -- Private
1649 -- Pre-Req
1650 --
1651 -- Parameters
1652 --
1653 -- IN
1654 -- p_master_source_id IN NUMBER
1655 -- p_sub_source_id IN NUMBER
1656 --
1657 -- Version : Current version 1.0
1658 --
1659 -- History
1660 --
1661 -- NOTE
1662 --
1663 -- End of Comments
1664 -- ==============================================================================
1665
1666 PROCEDURE Handle_DS_Assoc_Enabling(
1667 p_master_source_id IN NUMBER,
1668 p_sub_source_id IN NUMBER
1669 )
1670 IS
1671 L_API_NAME CONSTANT VARCHAR2(30) := 'Handle_DS_Assoc_Enabling';
1672 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
1673
1674 BEGIN
1675 UPDATE ams_dm_targets_b a
1676 SET a.active_flag = 'Y',
1677 a.last_update_date = SYSDATE,
1678 a.last_updated_by = FND_GLOBAL.user_id
1679 WHERE (a.data_source_id = p_master_source_id AND a.target_source_id = p_sub_source_id)
1680 AND EXISTS (SELECT 1 FROM ams_list_src_types b WHERE b.list_source_type_id = a.data_source_id AND b.enabled_flag = 'Y')
1681 AND EXISTS (SELECT 1 FROM ams_list_src_types c WHERE c.list_source_type_id = a.target_source_id AND c.enabled_flag = 'Y')
1682 AND EXISTS (SELECT 1 FROM ams_list_src_type_assocs d WHERE d.MASTER_SOURCE_TYPE_ID = a.data_source_id AND d.SUB_SOURCE_TYPE_ID = a.target_source_id AND d.enabled_flag = 'Y')
1683 AND EXISTS (SELECT 1 FROM ams_dm_target_values_b e where e.target_id = a.target_id)
1684 AND a.active_flag = 'N'
1685 ;
1686 End Handle_DS_Assoc_Enabling;
1687
1688 -- ==============================================================================
1689 -- Start of Comments
1690 -- ==============================================================================
1691 -- API Name
1692 -- Handle_DS_Assoc_Disabling
1693 -- Type
1694 -- Private
1695 -- Pre-Req
1696 --
1697 -- Parameters
1698 --
1699 -- IN
1700 -- p_master_source_id IN NUMBER
1701 -- p_sub_source_id IN NUMBER
1702 --
1703 -- Version : Current version 1.0
1704 --
1705 -- History
1706 --
1707 -- NOTE
1708 --
1709 -- End of Comments
1710 -- ==============================================================================
1711
1712 PROCEDURE Handle_DS_Assoc_Disabling(
1713 p_master_source_id IN NUMBER,
1714 p_sub_source_id IN NUMBER
1715 )
1716 IS
1717 L_API_NAME CONSTANT VARCHAR2(30) := 'Handle_DS_Assoc_Disabling';
1718 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
1719
1720 l_user_status_id NUMBER;
1721 l_status_code VARCHAR2(30);
1722
1723 CURSOR c_user_status_id (p_status_type IN VARCHAR2, p_status_code IN VARCHAR2) IS
1724 SELECT user_status_id
1725 FROM ams_user_statuses_b
1726 WHERE system_status_type = p_status_type
1727 AND system_status_code = p_status_code
1728 AND default_flag = 'Y'
1729 AND enabled_flag = 'Y'
1730 ;
1731
1732 CURSOR c_pass_status_code (p_user_status_id IN NUMBER) IS
1733 SELECT system_status_code
1734 FROM ams_user_statuses_vl
1735 WHERE user_status_id = p_user_status_id;
1736
1737 BEGIN
1738 UPDATE ams_dm_targets_b
1739 SET active_flag = 'N',
1740 last_update_date = SYSDATE,
1741 last_updated_by = FND_GLOBAL.user_id
1742 WHERE (data_source_id = p_master_source_id AND target_source_id = p_sub_source_id)
1743 AND active_flag = 'Y'
1744 ;
1745
1746 OPEN c_user_status_id('AMS_DM_MODEL_STATUS' , 'INVALID');
1747 FETCH c_user_status_id INTO l_user_status_id;
1748 CLOSE c_user_status_id;
1749
1750 OPEN c_pass_status_code (l_user_status_id);
1751 FETCH c_pass_status_code INTO l_status_code;
1752 CLOSE c_pass_status_code;
1753
1754 UPDATE ams_dm_models_all_b a
1755 SET a.status_code = l_status_code,
1756 a.user_status_id = l_user_status_id,
1757 a.last_update_date = SYSDATE,
1758 a.last_updated_by = FND_GLOBAL.user_id,
1759 a.status_date = SYSDATE
1760 WHERE a.status_code = 'AVAILABLE'
1761 AND (EXISTS
1762 (SELECT 1
1763 from ams_dm_targets_b b
1764 where b.target_id=a.target_id
1765 and b.data_source_id=p_master_source_id)
1766 OR EXISTS
1767 (SELECT 1
1768 from ams_dm_target_sources c
1769 where c.target_id=a.target_id
1770 and c.data_source_id=p_sub_source_id));
1771
1772 DELETE FROM ams_dm_target_sources
1773 WHERE target_id IN (SELECT target_id FROM ams_dm_targets_b WHERE data_source_id = p_master_source_id AND target_source_id <> p_sub_source_id)
1774 AND data_source_id = p_sub_source_id
1775 ;
1776
1777 End Handle_DS_Assoc_Disabling;
1778
1779 PROCEDURE is_target_enabled(
1780 p_target_id IN NUMBER,
1781 x_is_enabled OUT NOCOPY BOOLEAN
1782 )
1783 IS
1784 L_API_NAME CONSTANT VARCHAR2(30) := 'is_target_enabled';
1785
1786 l_target_status VARCHAR2(1);
1787
1788 CURSOR c_target_status(p_tgt_id IN NUMBER) IS
1789 SELECT active_flag from ams_dm_targets_b where target_id = p_tgt_id;
1790
1791 BEGIN
1792 x_is_enabled := FALSE;
1793
1794 OPEN c_target_status(p_target_id);
1795 FETCH c_target_status INTO l_target_status;
1796 CLOSE c_target_status;
1797
1798 IF l_target_status = 'Y' THEN
1799 x_is_enabled := TRUE;
1800 END IF;
1801 END is_target_enabled;
1802
1803 -- ==============================================================================
1804 -- Start of Comments
1805 -- ==============================================================================
1806 -- API Name
1807 -- in_list
1808 -- Type
1809 -- Public
1810 -- Pre-Req
1811 --
1812 -- Parameters
1813 --
1814 -- IN
1815 -- p_string IN VARCHAR2 Required
1816 --
1817 -- OUT
1818 -- None
1819 --
1820 -- Version : Current version 1.0
1821 -- History
1822 -- 11-May-2005 srivikri Created. Fix for bug 4360174
1823 --
1824 -- This function is used for binding a list of numbers in an IN clause.
1825 -- The parameter p_string contains a list of numbers separated by "," (comma)
1826 -- The function parses the list of numbers and returns a PL/SQL table of
1827 -- data type NUMBER.
1828 -- This function is used in java/mining/DataSourceFieldsLOV.java
1829 --
1830 -- End of Comments
1831 -- ==============================================================================
1832 --
1833 FUNCTION in_list ( p_string IN VARCHAR2 ) RETURN JTF_NUMBER_TABLE
1834 IS
1835 l_table JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
1836 l_string LONG DEFAULT p_string || ',';
1837 l_num NUMBER;
1838 BEGIN
1839
1840 LOOP
1841 EXIT WHEN l_string IS NULL;
1842 l_table.extend;
1843 l_num := instr( l_string, ',' );
1844 l_table( l_table.count ) := substr( l_string, 1, l_num-1 );
1845 l_string := substr( l_string, l_num+1 );
1846 END LOOP;
1847 RETURN l_table;
1848 END in_list;
1849
1850 END AMS_DM_TARGET_PVT;