[Home] [Help]
PACKAGE BODY: APPS.FND_OAM_DSCRAM_STATS_PKG
Source
1 PACKAGE BODY FND_OAM_DSCRAM_STATS_PKG as
2 /* $Header: AFOAMDSSTATB.pls 120.5 2006/06/07 17:56:52 ilawler noship $ */
3
4 ----------------------------------------
5 -- Private Body Constants
6 ----------------------------------------
7 PKG_NAME CONSTANT VARCHAR2(20) := 'DSCRAM_STATS_PKG.';
8
9 ----------------------------------------
10 -- Public/Private Procedures/Functions
11 ----------------------------------------
12
13 -- Private, does the grunt work for a create_entry call.
14 PROCEDURE INTERNAL_CREATE_ENTRY(p_run_stat_id IN NUMBER,
15 p_source_object_type IN VARCHAR2,
16 p_source_object_id IN NUMBER,
17 p_start_time IN DATE,
18 p_prestart_status IN VARCHAR2,
19 p_start_message IN VARCHAR2,
20 x_stat_id OUT NOCOPY NUMBER,
21 x_return_status OUT NOCOPY VARCHAR2,
22 x_return_msg OUT NOCOPY VARCHAR2)
23 IS
24 l_ctxt VARCHAR2(60) := PKG_NAME||'INTERNAL_CREATE_ENTRY';
25
26 l_stat_id NUMBER(15);
27 BEGIN
28 x_return_status := FND_API.G_RET_STS_ERROR;
29 x_return_msg := '';
30
31 --do the insert
32 INSERT
33 INTO fnd_oam_dscram_stats (STAT_ID,
34 RUN_STAT_ID,
35 SOURCE_OBJECT_TYPE,
36 SOURCE_OBJECT_ID,
37 OBJECT_START,
38 PRESTART_OBJECT_STATUS,
39 MESSAGE,
40 CREATED_BY,
41 CREATION_DATE,
42 LAST_UPDATED_BY,
43 LAST_UPDATE_DATE,
44 LAST_UPDATE_LOGIN)
45 VALUES (FND_OAM_DSCRAM_STATS_S.NEXTVAL,
46 p_run_stat_id,
47 p_source_object_type,
48 p_source_object_id,
49 p_start_time,
50 p_prestart_status,
51 p_start_message,
52 FND_GLOBAL.USER_ID,
53 SYSDATE,
54 FND_GLOBAL.USER_ID,
55 SYSDATE,
56 FND_GLOBAL.USER_ID)
57 RETURNING STAT_ID INTO l_stat_id;
58
59 x_stat_id := l_stat_id;
60
61 --success
62 x_return_status := FND_API.G_RET_STS_SUCCESS;
63 EXCEPTION
64 WHEN OTHERS THEN
65 x_return_msg := 'Unhandled Exception: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))';
66 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
67 --don't log it here, let the caller log it
68 END;
69
70 --Private, does the grunt work for completing a stats entry
71 PROCEDURE INTERNAL_COMPLETE_ENTRY(p_run_stat_id IN NUMBER,
72 p_source_object_type IN VARCHAR2,
73 p_source_object_id IN NUMBER,
74 p_end_time IN DATE,
75 p_postend_status IN VARCHAR2,
76 p_end_message IN VARCHAR2,
77 x_return_status OUT NOCOPY VARCHAR2,
78 x_return_msg OUT NOCOPY VARCHAR2)
79 IS
80 l_ctxt VARCHAR2(60) := PKG_NAME||'INTERNAL_COMPLETE_ENTRY';
81
82 l_stat_id NUMBER(15);
83 BEGIN
84 fnd_oam_debug.log(2, l_ctxt, 'ENTER');
85 x_return_status := FND_API.G_RET_STS_ERROR;
86 x_return_msg := '';
87
88 --do the update
89 UPDATE fnd_oam_dscram_stats
90 SET object_end = p_end_time,
91 postend_object_status = p_postend_status,
92 message = p_end_message,
93 last_updated_by = fnd_global.user_id,
94 last_update_login = fnd_global.user_id,
95 last_update_date = SYSDATE
96 WHERE run_stat_id = p_run_stat_id
97 AND source_object_type = p_source_object_type
98 AND source_object_id = p_source_object_id;
99
100 --make sure we completed a row
101 IF SQL%ROWCOUNT <> 1 THEN
102 x_return_msg := 'Stat Complete for Run Stat ID('||p_run_stat_id||'), source type ('||p_source_object_type||'), source id ('||p_source_object_id||') updated '||SQL%ROWCOUNT||' stat rows. Should be 1.';
103 fnd_oam_debug.log(6, l_ctxt, x_return_msg);
104 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
105 RETURN;
106 END IF;
107
108 --success
109 x_return_status := FND_API.G_RET_STS_SUCCESS;
110 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
111 EXCEPTION
112 WHEN OTHERS THEN
113 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
114 x_return_msg := 'Unhandled Exception: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))';
115 fnd_oam_debug.log(6, l_ctxt, x_return_msg);
116 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
117 END;
118
119 -- Public
120 PROCEDURE CREATE_ENTRY_FOR_RUN(p_run_id IN NUMBER,
121 p_start_time IN DATE,
122 p_prestart_status IN VARCHAR2,
123 p_start_message IN VARCHAR2,
124 x_run_stat_id OUT NOCOPY NUMBER,
125 x_return_status OUT NOCOPY VARCHAR2,
126 x_return_msg OUT NOCOPY VARCHAR2)
127 IS
128 l_ctxt VARCHAR2(60) := PKG_NAME||'CREATE_ENTRY_FOR_RUN';
129
130 l_run_stat_id NUMBER(15);
131 BEGIN
132 x_return_status := FND_API.G_RET_STS_ERROR;
133 x_return_msg := '';
134
135 --select the stat_id first so we can use it as the run_stat_id also
136 SELECT FND_OAM_DSCRAM_STATS_S.NEXTVAL
137 INTO l_run_stat_id
138 FROM DUAL;
139
140 --can't use INTERNAL_CREATE since we are creating the run_stat_id at the same time
141 INSERT
142 INTO fnd_oam_dscram_stats (STAT_ID,
143 RUN_STAT_ID,
144 SOURCE_OBJECT_TYPE,
145 SOURCE_OBJECT_ID,
146 OBJECT_START,
147 PRESTART_OBJECT_STATUS,
148 MESSAGE,
149 CREATED_BY,
150 CREATION_DATE,
151 LAST_UPDATED_BY,
152 LAST_UPDATE_DATE,
153 LAST_UPDATE_LOGIN)
154 VALUES (l_run_stat_id,
155 l_run_stat_id,
156 FND_OAM_DSCRAM_UTILS_PKG.G_TYPE_RUN,
157 p_run_id,
158 p_start_time,
159 p_prestart_status,
160 p_start_message,
161 FND_GLOBAL.USER_ID,
162 SYSDATE,
163 FND_GLOBAL.USER_ID,
164 SYSDATE,
165 FND_GLOBAL.USER_ID);
166
167 x_run_stat_id := l_run_stat_id;
168
169 --success
170 x_return_status := FND_API.G_RET_STS_SUCCESS;
171 EXCEPTION
172 WHEN OTHERS THEN
173 x_return_msg := 'Unhandled Exception: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))';
174 fnd_oam_debug.log(6, l_ctxt, x_return_msg);
175 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
176 END;
177
178 -- Public
179 PROCEDURE CREATE_ENTRY(p_run_stat_id IN NUMBER,
180 p_source_object_type IN VARCHAR2,
181 p_source_object_id IN NUMBER,
182 p_start_time IN DATE,
183 p_prestart_status IN VARCHAR2,
184 p_start_message IN VARCHAR2,
185 x_stat_id OUT NOCOPY NUMBER)
186 IS
187 l_ctxt VARCHAR2(60) := PKG_NAME||'CREATE_ENTRY';
188
189 l_return_status VARCHAR2(6);
190 l_return_msg VARCHAR2(4000);
191 BEGIN
192 INTERNAL_CREATE_ENTRY(p_run_stat_id => p_run_stat_id,
193 p_source_object_type => p_source_object_type,
194 p_source_object_id => p_source_object_id,
195 p_start_time => p_start_time,
196 p_prestart_status => p_prestart_status,
197 p_start_message => p_start_message,
198 x_stat_id => x_stat_id,
199 x_return_status => l_return_status,
200 x_return_msg => l_return_msg);
201 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
202 --just log the message
203 fnd_oam_debug.log(6, l_ctxt, l_return_msg);
204 END IF;
205 EXCEPTION
206 WHEN OTHERS THEN
207 fnd_oam_debug.log(6, l_ctxt, 'Unhandled Exception: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
208 END;
209
210 -- Public
211 PROCEDURE CREATE_ENTRY(p_source_object_type IN VARCHAR2,
212 p_source_object_id IN NUMBER,
213 p_start_time IN DATE,
214 p_prestart_status IN VARCHAR2,
215 p_start_message IN VARCHAR2,
216 x_stat_id OUT NOCOPY NUMBER)
217 IS
218 l_ctxt VARCHAR2(60) := PKG_NAME||'CREATE_ENTRY(no_run_id)';
219
220 BEGIN
221 fnd_oam_debug.log(2, l_ctxt, 'ENTER');
222
223 CREATE_ENTRY(p_run_stat_id => FND_OAM_DSCRAM_RUNS_PKG.GET_RUN_STAT_ID,
224 p_source_object_type => p_source_object_type,
225 p_source_object_id => p_source_object_id,
226 p_start_time => p_start_time,
227 p_prestart_status => p_prestart_status,
228 p_start_message => p_start_message,
229 x_stat_id => x_stat_id);
230
231 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
232 EXCEPTION
233 WHEN OTHERS THEN
234 fnd_oam_debug.log(6, l_ctxt, 'Unhandled Exception: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
235 END;
236
237 -- Public
238 PROCEDURE CREATE_ENTRY_AUTONOMOUSLY(p_source_object_type IN VARCHAR2,
239 p_source_object_id IN NUMBER,
240 p_start_time IN DATE,
241 p_prestart_status IN VARCHAR2,
242 p_start_message IN VARCHAR2,
243 p_dismiss_failure IN VARCHAR2,
244 x_stat_id OUT NOCOPY NUMBER)
245 IS
246 PRAGMA AUTONOMOUS_TRANSACTION;
247
248 l_ctxt VARCHAR2(60) := PKG_NAME||'CREATE_ENTRY_AUTONOMOUSLY';
249 l_return_status VARCHAR2(6);
250 l_return_msg VARCHAR2(4000);
251 BEGIN
252 fnd_oam_debug.log(2, l_ctxt, 'ENTER');
253
254 INTERNAL_CREATE_ENTRY(p_run_stat_id => FND_OAM_DSCRAM_RUNS_PKG.GET_RUN_STAT_ID,
255 p_source_object_type => p_source_object_type,
256 p_source_object_id => p_source_object_id,
257 p_start_time => p_start_time,
258 p_prestart_status => p_prestart_status,
259 p_start_message => p_start_message,
260 x_stat_id => x_stat_id,
261 x_return_status => l_return_status,
262 x_return_msg => l_return_msg);
263 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
264 IF NOT FND_OAM_DSCRAM_UTILS_PKG.FLAG_TO_BOOLEAN(p_dismiss_failure) THEN
265 fnd_oam_debug.log(6, l_ctxt, l_return_msg);
266 END IF;
267 ROLLBACK;
268 ELSE
269 COMMIT;
270 fnd_oam_debug.log(1, l_ctxt, 'Created stats row.');
271 END IF;
272
273 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
274 EXCEPTION
275 WHEN OTHERS THEN
276 fnd_oam_debug.log(6, l_ctxt, 'Unhandled Exception: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
277 fnd_oam_debug.log(2, l_ctxt, 'EXIT');
278 ROLLBACK;
279 END;
280
281 -- Public
282 PROCEDURE COMPLETE_ENTRY_FOR_RUN(p_run_id IN NUMBER,
283 p_end_time IN DATE,
284 p_postend_status IN VARCHAR2,
285 p_end_message IN VARCHAR2,
286 x_return_status OUT NOCOPY VARCHAR2,
287 x_return_msg OUT NOCOPY VARCHAR2)
288 IS
289 l_ctxt VARCHAR2(60) := PKG_NAME||'CREATE_ENTRY_FOR_RUN';
290
291 l_run_stat_id NUMBER(15);
292 BEGIN
293 x_return_status := FND_API.G_RET_STS_ERROR;
294 x_return_msg := '';
295
296 SELECT last_run_stat_id
297 INTO l_run_stat_id
298 FROM fnd_oam_dscram_runs_b
299 WHERE run_id = p_run_id;
300
301 INTERNAL_COMPLETE_ENTRY(p_run_stat_id => l_run_stat_id,
302 p_source_object_type => FND_OAM_DSCRAM_UTILS_PKG.G_TYPE_RUN,
303 p_source_object_id => p_run_id,
304 p_end_time => p_end_time,
305 p_postend_status => p_postend_status,
306 p_end_message => p_end_message,
307 x_return_status => x_return_status,
308 x_return_msg => x_return_msg);
309
310 --success
311 EXCEPTION
312 WHEN OTHERS THEN
313 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
314 x_return_msg := 'Unhandled Exception: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))';
315 fnd_oam_debug.log(6, l_ctxt, x_return_msg);
316 END;
317
318 -- Public
319 PROCEDURE COMPLETE_ENTRY(p_run_stat_id IN NUMBER,
320 p_source_object_type IN VARCHAR2,
321 p_source_object_id IN NUMBER,
322 p_end_time IN DATE,
323 p_postend_status IN VARCHAR2,
324 p_end_message IN VARCHAR2)
325 IS
326 l_ctxt VARCHAR2(60) := PKG_NAME||'COMPLETE_ENTRY';
327
328 l_return_status VARCHAR2(6);
329 l_return_msg VARCHAR2(2048);
330 BEGIN
331 --make sure it's a valid finishing state
332 IF NOT FND_OAM_DSCRAM_UTILS_PKG.STATUS_IS_FINAL(p_postend_status) THEN
333 fnd_oam_debug.log(6, l_ctxt, 'Skipping update because of non-final status '||p_postend_status||'. This should not happen.');
334 RETURN;
335 END IF;
336
337 INTERNAL_COMPLETE_ENTRY(p_run_stat_id => p_run_stat_id,
338 p_source_object_type => p_source_object_type,
339 p_source_object_id => p_source_object_id,
340 p_end_time => p_end_time,
341 p_postend_status => p_postend_status,
342 p_end_message => p_end_message,
343 x_return_status => l_return_status,
344 x_return_msg => l_return_msg);
345
346 EXCEPTION
347 WHEN OTHERS THEN
348 fnd_oam_debug.log(6, l_ctxt, 'Unhandled Exception: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
349 END;
350
351 -- Public
352 PROCEDURE COMPLETE_ENTRY(p_source_object_type IN VARCHAR2,
353 p_source_object_id IN NUMBER,
354 p_end_time IN DATE,
355 p_postend_status IN VARCHAR2,
356 p_end_message IN VARCHAR2)
357 IS
358 l_ctxt VARCHAR2(60) := PKG_NAME||'COMPLETE_ENTRY(no run_id)';
359
360 BEGIN
361 COMPLETE_ENTRY(p_run_stat_id => FND_OAM_DSCRAM_RUNS_PKG.GET_RUN_STAT_ID,
362 p_source_object_type => p_source_object_type,
363 p_source_object_id => p_source_object_id,
364 p_end_time => p_end_time,
365 p_postend_status => p_postend_status,
366 p_end_message => p_end_message);
367
368 EXCEPTION
369 WHEN OTHERS THEN
370 fnd_oam_debug.log(6, l_ctxt, 'Unhandled Exception: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
371 END;
372
373 -- Public
374 FUNCTION HAS_ENTRY(p_run_stat_id IN NUMBER,
375 p_source_object_type IN VARCHAR2,
376 p_source_object_id IN NUMBER)
377 RETURN BOOLEAN
378 IS
379 l_ctxt VARCHAR2(60) := PKG_NAME||'HAS_ENTRY(run_stat_id)';
380 l_stat_id NUMBER;
381 BEGIN
382 SELECT stat_id
383 INTO l_stat_id
384 FROM fnd_oam_dscram_stats
385 WHERE run_stat_id = p_run_stat_id
386 AND source_object_type = p_source_object_type
387 AND source_object_id = p_source_object_id;
388
389 --if no exception then yes.
390 RETURN TRUE;
391 EXCEPTION
392 WHEN NO_DATA_FOUND THEN
393 RETURN FALSE;
394 WHEN OTHERS THEN
395 fnd_oam_debug.log(6, l_ctxt, 'Unhandled Exception: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
396 RETURN FALSE;
397 END;
398
399 -- Public
400 FUNCTION HAS_ENTRY(p_source_object_type IN VARCHAR2,
401 p_source_object_id IN NUMBER)
402 RETURN BOOLEAN
403 IS
404 l_ctxt VARCHAR2(60) := PKG_NAME||'HAS_ENTRY';
405 BEGIN
406 RETURN HAS_ENTRY(p_run_stat_id => FND_OAM_DSCRAM_RUNS_PKG.GET_RUN_STAT_ID,
407 p_source_object_type => p_source_object_type,
408 p_source_object_id => p_source_object_id);
409 EXCEPTION
410 WHEN OTHERS THEN
411 fnd_oam_debug.log(6, l_ctxt, 'Unhandled Exception: (Code('||SQLCODE||'), Message("'||SQLERRM||'"))');
412 RETURN FALSE;
413 END;
414
415 END FND_OAM_DSCRAM_STATS_PKG;