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