DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_DEBUG_UTIL

Source


1 PACKAGE BODY QP_DEBUG_UTIL AS
2 /* $Header: QPXDUTLB.pls 120.0.12010000.1 2008/10/16 11:42:37 jputta noship $ */
3 
4 g_PkgStack t_CallStack;
5 
6 g_VersionStack t_CallStack;
7 
8 g_Level		NUMBER;
9 
10 g_indent  VARCHAR2(500);
11 g_curr_parent NUMBER := 0;
12 g_granularity_level NUMBER := 0;
13 
14 
15 PROCEDURE write_output(x_Line IN VARCHAR2)
16 IS
17   l_debug_msg	VARCHAR2(2000);
18   v_MesgSize    NUMBER;
19   v_Mesg        VARCHAR2(32767);
20 BEGIN
21   v_MesgSize := LENGTHB(x_Line);
22 
23   IF v_MesgSize > 500 THEN
24     v_Mesg := x_Line;
25     WHILE v_MesgSize > 500 loop
26       l_debug_msg := SUBSTRB(v_Mesg,1,500);
27       IF g_qp_Debug NOT IN ('P','S','M') THEN
28       l_debug_msg := TRIM(l_debug_msg);
29       ELSE
30       v_Mesg := g_indent || SUBSTRB(v_Mesg,501);
31       v_MesgSize := LENGTHB(v_Mesg);
32       END IF;
33       oe_debug_pub.add(l_debug_msg,1);
34     END LOOP;
35     IF v_MesgSize BETWEEN 1 AND  500 THEN
36     IF g_qp_Debug NOT IN ('P','S','M') THEN
37       v_Mesg := TRIM(v_Mesg);
38     END IF;
39       oe_debug_pub.add(v_Mesg,1);
40     END IF;
41   ELSE
42 
43     l_debug_msg := x_line;
44     IF g_qp_Debug NOT IN ('P','S','M') THEN
45       l_debug_msg := TRIM(l_debug_msg);
46     END IF;
47     oe_debug_pub.add(l_debug_msg,1);
48   END IF;
49 
50 EXCEPTION
51   WHEN OTHERS THEN
52   write_output('write_output-MSG-'||SQLERRM);
53         g_qp_Debug := 'X';
54 END write_output;
55 
56 PROCEDURE  tstart(x_Marker IN VARCHAR2,
57                   x_Desc IN VARCHAR2 := NULL,
58                   x_Accumalation IN BOOLEAN := true,
59                   x_PutLine IN BOOLEAN := false)
60 IS
61   v_Position    NUMBER := 0;
62 BEGIN
63 
64   G_qp_debug := FND_PROFILE.VALUE('QP_DEBUG');
65   G_DEBUG := OE_DEBUG_PUB.G_DEBUG;
66   G_Debug_Level :=  FND_PROFILE.VALUE('ONT_DEBUG_LEVEL');
67 
68   IF ISQPDebugON AND G_QP_debug = 'M' THEN
69 
70    IF x_Accumalation THEN
71      FOR v_Count IN 1..g_TimeStack.COUNT LOOP
72        IF g_TimeStack(v_Count).Marker = x_Marker
73           AND g_TimeStack(v_Count).ParentId = g_curr_parent
74        THEN
75          v_Position := v_Count;
76         EXIT;
77        END IF;
78      END LOOP;
79    END IF;
80 
81    IF v_Position = 0
82       --OR g_TimeStack(v_Position).ParentId <> g_curr_parent
83       OR g_TimeStack(v_Position).Deleted
84    THEN
85       v_Position := g_TimeStack.COUNT + 1;
86       g_TimeStack(v_Position).Marker := x_Marker;
87       g_TimeStack(v_Position).Description := x_Desc;
88       g_TimeStack(v_Position).TotalTime := 0;
89       g_TimeStack(v_Position).CallCount := 0;
90       g_TimeStack(v_Position).ParentId := g_curr_parent;
91       g_TimeStack(v_Position).Deleted := false;
92 
93       g_curr_parent := v_Position;
94 
95     END IF;
96     g_TimeStack(v_Position).Time := dbms_utility.get_time;
97     g_TimeStack(v_Position).CallCount := g_TimeStack(v_Position).CallCount + 1;
98     g_TimeStack(v_Position).IsRunning := true;
99     g_TimeStack(v_Position).putLine := x_PutLine;
100 
101   END IF;
102 
103 EXCEPTION
104   WHEN OTHERS THEN
105 write_output('tstart-MSG-'||SQLERRM);
106         g_qp_Debug := 'X';
107 
108 END tstart;
109 
110 PROCEDURE  tstop(x_Marker IN VARCHAR2)
111 IS
112 v_position NUMBER := 0;
113 running BOOLEAN;
114 BEGIN
115 
116   IF ISQPDebugON AND G_QP_debug = 'M' THEN
117     FOR v_Count IN 1..g_TimeStack.COUNT LOOP
118       IF g_TimeStack(v_Count).Marker = x_Marker THEN
119        IF g_TimeStack(v_Count).IsRunning THEN
120           v_position := v_Count;
121           g_TimeStack(v_Count).TotalTime := g_TimeStack(v_Count).TotalTime +
122                                           ((( dbms_utility.get_time -
123                                           g_TimeStack(v_Count).Time)*10));
124           g_TimeStack(v_Count).IsRunning := false;
125           g_curr_parent := g_TimeStack(v_Count).ParentId;
126 
127           IF g_curr_parent <> 0
128              AND NOT g_TimeStack(g_curr_parent).IsRunning
129           THEN
130               write_output('ERROR ** Wrongly stopped marker '||x_Marker
131                  || '. Its parent marker '|| g_TimeStack(g_curr_parent).Marker
132                  ||' is already stopped.');
133           END IF;
134 
135           running := true;
136           EXIT;
137          ELSE
138            running := false;
139 	   --write_output('ERROR ** Failed to stop marker '||g_TimeStack(v_Count).Marker || '. Not in running status.');
140          END IF;
141          --EXIT;
142       END IF;
143     END LOOP;
144 
145     IF NOT running THEN
146        write_output('ERROR ** Failed to stop marker '||x_Marker || '. Not in running status.');
147     END IF;
148 
149   END IF;
150 
151 EXCEPTION
152   WHEN OTHERS THEN
153   write_output('tstop-MSG-'||SQLERRM);
154         g_qp_Debug := 'X';
155 END tstop;
156 
157 
158 PROCEDURE  tdump
159 IS
160 tempParentId NUMBER := 0;
161 msg VARCHAR2(2000);
162 BEGIN
163    IF ISQPDebugON AND G_QP_debug = 'M' THEN
164 
165     IF g_curr_parent <> 0 and g_TimeStack(g_curr_parent).IsRunning THEN
166        write_output(' **** Error : Forcefully stopping marker '
167           ||g_TimeStack(g_curr_parent).Marker
168           ||' : It may have wrong values.');
169        tstop(g_TimeStack(g_curr_parent).Marker);
170     END IF;
171 
172     IF g_granularity_level = 0 THEN
173        write_output(' ');
174        write_output(' **** Dumping Time Log Information Started  ****');
175        write_output(' ');
176     END IF;
177 
178     --FOR v_Count IN 1..g_TimeStack.COUNT LOOP
179       IF g_curr_parent <> 0 THEN
180         IF NOT g_TimeStack(g_curr_parent).Deleted THEN
181 
182         IF g_TimeStack(g_curr_parent).Description IS NULL
183         THEN
184            msg := g_TimeStack(g_curr_parent).Marker;
185         ELSE
186            msg := g_TimeStack(g_curr_parent).Description;
187         END IF;
188 
189           IF g_TimeStack(g_curr_parent).putLine THEN
190             write_output(' ');
191           END IF;
192 
193           msg := msg || ' : ' ||
194                    g_TimeStack(g_curr_parent).CallCount||' calls : '||
195                    g_TimeStack(g_curr_parent).TotalTime||' ms';
196 
197           write_output(LPAD(msg,LENGTH(msg)+2*g_granularity_level,' '));
198         END IF;
199       END IF;
200    --END LOOP;
201 
202      IF g_curr_parent = 0 OR NOT g_TimeStack(g_curr_parent).Deleted THEN
203       FOR v_Count IN 1..g_TimeStack.COUNT LOOP
204 
205         IF  g_TimeStack(v_count).ParentId = g_curr_parent
206           AND NOT g_TimeStack(v_count).Deleted
207         THEN
208           tempParentId := g_curr_parent;
209           g_curr_parent := v_count;
210           g_granularity_level := g_granularity_level + 1;
211           tdump;
212           g_granularity_level := g_granularity_level - 1;
213           g_curr_parent := tempParentId;
214         END IF;
215       END LOOP;
216      END IF;
217 
218      IF g_curr_parent <> 0 THEN
219       tempParentId := g_TimeStack(g_curr_parent).ParentId;
220       g_TimeStack(g_curr_parent).Deleted := true;
221       g_curr_parent := tempParentId;
222      END IF;
223 
224      IF g_granularity_level = 0 THEN
225        write_output(' ');
226        write_output(' **** Dumping Time Log Information Ended  ****');
227        write_output(' ');
228      END IF;
229   END IF;
230 EXCEPTION
231   WHEN OTHERS THEN
232   write_output('tdump-MSG-'||SQLERRM);
233         g_qp_Debug := 'X';
234 END tdump;
235 
236 
237 PROCEDURE tflush
238 IS
239 BEGIN
240     g_TimeStack.DELETE;
241 END tflush;
242 
243 
244 Function ISQPDebugOn
245 Return Boolean IS
246 BEGIN
247 
248   if G_DEBUG = FND_API.G_TRUE AND G_DEBUG_LEVEL = 1 AND G_qp_debug IN ('P','S','M') then
249      RETURN(TRUE);
250   else
251      RETURN(FALSE);
252   end if;
253 End ISQPDebugOn;
254 
255 END QP_DEBUG_UTIL;