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