DBA Data[Home] [Help]

PACKAGE BODY: APPS.XDP_ADAPTER

Source


1 PACKAGE BODY XDP_ADAPTER AS
2 /* $Header: XDPADBOB.pls 120.1 2005/06/08 23:39:05 appldev  $ */
3 
4 e_RequiredInputDataNotPassed  	EXCEPTION;
5 e_DisplayNameNotUnique  	EXCEPTION;
6 -- e_AsyncParamWrong 		EXCEPTION;
7 e_ImplParamWrong 		EXCEPTION;
8 e_ConnParamWrong		EXCEPTION;
9 e_InboundParamWrong		EXCEPTION;
10 
11 Procedure validate_operation(p_ChannelName in varchar2, p_Operation in varchar2,
12                         p_CPID OUT NOCOPY NUMBER,
13                         p_ProcessID OUT NOCOPY NUMBER,
14 	   	 	p_retcode OUT NOCOPY NUMBER,
15 		 	p_errbuf OUT NOCOPY VARCHAR2);
16 
17 -- TODO Detailed processing for e_RequiredInputDataNotPassed
18 
19 Procedure Create_Adapter(p_FeName in varchar2,
20 			   p_AdapterType in varchar2,
21 		    	   p_AdapterName in varchar2 default NULL,
22 			   p_AdapterDispName in varchar2,
23 			   p_ConcQID in number,
24 			   p_StartupMode in varchar2 default 'MANUAL',
25 			   p_UsageCode in varchar2 default 'NORMAL',
26 			   p_LogLevel in varchar2 default 'ERROR',
27 			   p_CODFlag in varchar2 default 'N',
28 			   p_MaxIdleTime in number default 0,
29 			   p_LogFileName in varchar2 default NULL,
30 			   p_SeqInFE in number default null,
31 			   p_CmdLineOpts in varchar2 default NULL,
32                            p_CmdLineArgs in varchar2 default NULL,
33 			   p_retcode OUT NOCOPY NUMBER,
34 			   p_errbuf OUT NOCOPY VARCHAR2
35 			)
36 is
37  l_ChannelName varchar2(40);
38  l_AdapterName varchar2(40);
39  l_ApplicationMode xdp_adapter_types_b.application_mode%TYPE;
40  l_AdapterClass xdp_adapter_types_b.adapter_class%TYPE;
41  l_ConnReqFlag xdp_adapter_types_b.connection_required_flag%TYPE;
42  l_InboundReqFlag xdp_adapter_types_b.inbound_required_flag%TYPE;
43  l_LogFileName xdp_adapter_reg.log_file_name%TYPE;
44  l_FeID number := -1;
45 
46  l_GenCountActive NUMBER := 0;
47  l_GenCountFuture NUMBER := 0;
48  l_StartStatus VARCHAR2(30) := pv_statusNotAvailable;
49 
50  lv_mode VARCHAR2(8);  -- maintenance mode profile
51 
52  e_NoGenericExists EXCEPTION;
53  e_AdapterConfigNA EXCEPTION;
54  l_count number := 0;
55 
56 begin
57 if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
58 	FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.CREATE_ADAPTER',
59 				'BEGIN:p_AdapterDispName: '||p_AdapterDispName);
60 end if;
61 	p_retcode := 0;
62 	p_errbuf := '';
63 
64 -- ********** Validate Order Type in High Availability Maintenance Mode
65 
66        FND_PROFILE.GET('APPS_MAINTENANCE_MODE', lv_mode);
67 
68        IF lv_mode = 'MAINT' THEN
69            raise e_AdapterConfigNA;
70        END IF;
71 -- **********
72 
73 
74         --
75         -- Validate mandatory parameters
76         --
77 	if p_FeName is null or
78 		p_AdapterType is null or
79 		p_AdapterDispName is null or
80 		p_ConcQID is null then
81                 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then
82 		    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
83 					'Required parameters are not passed');
84 		end if;
85  		raise e_RequiredInputDataNotPassed;
86 	end if;
87 
88         --
89         -- Validate unique display name
90         --
91 	select count(*) into l_count from xdp_adapter_reg
92 		where adapter_display_name = p_AdapterDispName;
93 	if l_count > 0 then
94  		raise e_DisplayNameNotUnique;
95 	end if;
96 
97 	l_FeID := XDP_ADAPTER_CORE_DB.Get_Fe_Id_For_Name (p_FeName);
98 
99         select application_mode, adapter_class, connection_required_flag, inbound_required_flag
100         into l_ApplicationMode, l_AdapterClass, l_ConnReqFlag, l_InboundReqFlag
101         from xdp_adapter_types_b
102         where adapter_type = p_AdapterType;
103 
104 	--
105 	-- Validate parameters for non-implemented adapters
106 	--
107 	if l_AdapterClass = 'NONE' then
108 		if (p_LogFileName is not null) or
109 		   (p_CmdLineOpts is not null) or
110                    (p_CmdLineArgs is not null) then
111  			raise e_ImplParamWrong;
112 		end if;
113 	end if;
114 
115 	--
116 	-- Validate parameters for inbound-only adapters
117 	--
118 	if (l_InboundReqFlag = 'Y' and l_ApplicationMode = 'NONE') then
119 
120 		-- Startup Mode is SOD
121 		if (p_StartupMode = 'START_ON_DEMAND') then
122 			raise e_InboundParamWrong;
123 		end if;
124 	end if;
125 
126 	--
127 	-- Validate connection parameters
128 	--
129 
130 	-- If no connection required
131 	if l_ConnReqFlag = 'N' then
132 		if (p_CODFlag = 'Y') then
133 			raise e_ConnParamWrong;
134 		end if;
135 	-- If connection required
136 	else
137 		-- If SOD and COD
138 		if (p_CODFlag = 'Y' and p_startupMode = 'START_ON_DEMAND') then
139 			raise e_ConnParamWrong;
140 		end if;
141 	end if;
142 
143         --
144         -- Validate software versions available
145         --
146 
147 	XDP_ADAPTER_CORE_DB.Are_Adapter_Generics_Available (
148 				p_fe_id => l_FeID,
149 				p_AdapterType => p_AdapterType,
150 				p_GenCountActive => l_GenCountActive,
151 				p_GenCountFuture => l_GenCountFuture);
152 
153 	if ((l_GenCountActive = 0) and (l_GenCountFuture = 0)) then
154  		raise e_NoGenericExists;
155 	else
156 	        --Set the adapter_status to pv_statusStopped or pv_statusNotAvailable
157 		if l_GenCountActive > 0 then
158 			l_StartStatus := pv_statusStopped;
159 		else
160 			l_StartStatus := pv_statusNotAvailable;
161 			if( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
162 			    FND_LOG.STRING (FND_LOG.LEVEL_EXCEPTION, 'XDP_ADAPTER.CREATE_ADAPTER',
163 					'Adapter is not available');
164 			end if;
165 		end if;
166 	end if;
167 
168 	XDP_ADAPTER_CORE_DB.CreateNewAdapterChannel(p_FeName, l_ChannelName);
169         if( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
170 	    FND_LOG.STRING (FND_LOG.LEVEL_EXCEPTION, 'XDP_ADAPTER.CREATE_ADAPTER',
171 					'Channel name is: '||l_ChannelName);
172         end if;
173 
174 	-- Fill in the Consumer Name
175         if l_ApplicationMode = 'QUEUE' then
176 		l_AdapterName := p_FeName;
177 	else
178 		l_AdapterName := l_ChannelName;
179 	end if;
180 
181         -- Append .log to the log file name if not present already
182         l_LogFileName := Add_Log_File_Extension(p_LogFileName);
183 
184 	XDP_ADAPTER_CORE_DB.LoadNewAdapter(	l_ChannelName,
185 		 			l_FeID,
186 		 			p_AdapterType,
187 		 			l_AdapterName,
188 		 			p_AdapterDispName,
189  					l_StartStatus,
190 					p_ConcQID,
191 		 			p_StartupMode,
192 		 			p_UsageCode,
193 		 			p_LogLevel,
194 		 			p_CODFlag,
195 		 			p_MaxIdleTime,
196 		 			l_LogFileName,
197 		 			p_SeqInFE,
198 		 			p_CmdLineOpts,
199                  			p_CmdLineArgs);
200 
201 exception
202 
203 when e_DisplayNameNotUnique then
204 	p_retCode := pv_retAdapterOtherError;
205 	FND_MESSAGE.CLEAR;
206 	fnd_message.set_name('FND','UNIQUE-DUPLICATE NAME');
207  	p_errbuf := FND_MESSAGE.GET;
208 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then
209    	   FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
210 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
211         end if;
212 when e_NoGenericExists then
213 	p_retCode := pv_retAdapterNoGenExists;
214 	FND_MESSAGE.CLEAR;
215 	fnd_message.set_name('XDP','XDP_ADAPTER_NO_SW_GEN_EXISTS');
216  	p_errbuf := FND_MESSAGE.GET;
217         if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then
218 	   FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
219 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
220         end if;
221 when e_AdapterConfigNA then
222         p_retCode := pv_retAdapterConfigNA;
223         FND_MESSAGE.CLEAR;
224         fnd_message.set_name('XDP','XDP_ADAPTER_NOT_CONFIGURABLE');
225         fnd_message.set_token('OPERATION', 'Create');
226         p_errbuf := FND_MESSAGE.GET;
227         if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then
228             FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
229                 'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
230         end if;
231 --when e_AsyncParamWrong then
232 --	p_retCode := pv_retAdapterAsyncParamWrong;
233 --        FND_MESSAGE.CLEAR;
234 --        fnd_message.set_name('XDP','XDP_ADAPTER_ASYNC_PARAM_WRONG');
235 --        p_errbuf := FND_MESSAGE.GET;
236 --        FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
237 --                'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
238 when e_InboundParamWrong then
239 	p_retCode := pv_retAdapterInboundParamWrong;
240         FND_MESSAGE.CLEAR;
241         fnd_message.set_name('XDP','XDP_ADAPTER_INBND_PARAM_WRONG');
242         p_errbuf := FND_MESSAGE.GET;
243 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then
244             FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
245                 'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
246         end if;
247 when e_ImplParamWrong then
248 	p_retCode := pv_retAdapterImplParamWrong;
249         FND_MESSAGE.CLEAR;
250         fnd_message.set_name('XDP','XDP_ADAPTER_IMPL_PARAM_WRONG');
251         p_errbuf := FND_MESSAGE.GET;
252 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then
253             FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
254                 'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
255         end if;
256 when e_ConnParamWrong then
257 	p_retCode := pv_retAdapterConnParamWrong;
258         FND_MESSAGE.CLEAR;
259         fnd_message.set_name('XDP','XDP_ADAPTER_CONN_PARAM_WRONG');
260         p_errbuf := FND_MESSAGE.GET;
261 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then
262             FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
263                 'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
264 	end if;
265 when others then
266 if SQLCODE <> 0 then
267  	p_retCode := SQLCODE;
268  	p_errbuf :=  SQLERRM;
269 else
270 	p_retCode := pv_retAdapterOtherError;
271  	p_errbuf := 'Other non-SQL error';
272 END IF;
273 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then
274     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
275 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
276 end if;
277 end Create_Adapter;
278 
279 -- ************* Added - sacsharm - START *****************************
280 
281 Procedure Update_Adapter(p_ChannelName in varchar2,
282 			    p_AdapterName in varchar2,
283 			    p_AdapterDispName in varchar2,
284 			    p_ConcQID in number,
285 			    p_StartupMode in varchar2 default 'MANUAL',
286 			    p_UsageCode in varchar2 default 'NORMAL',
287 			    p_LogLevel in varchar2 default 'ERROR',
288 			    p_CODFlag in varchar2 default 'N',
289 			    p_MaxIdleTime in number default 0,
290 			    p_LogFileName in varchar2 default NULL,
291 			    p_SeqInFE in number default null,
292 			    p_CmdLineOpts in varchar2 default NULL,
293                             p_CmdLineArgs in varchar2 default NULL,
294 			    p_retcode	OUT NOCOPY NUMBER,
295 			    p_errbuf	OUT NOCOPY VARCHAR2
296 			)
297 is
298  l_AdapterLocked varchar2(1) := 'N';
299  l_CurrentStatus varchar2(30);
300  l_ApplicationMode xdp_adapter_types_b.application_mode%TYPE;
301  l_AdapterClass xdp_adapter_types_b.adapter_class%TYPE;
302  l_ConnReqFlag xdp_adapter_types_b.connection_required_flag%TYPE;
303  l_InboundReqFlag xdp_adapter_types_b.inbound_required_flag%TYPE;
304  lv_mode VARCHAR2(8);  -- maintenance mode profile
305 
306  l_LogFileName xdp_adapter_reg.log_file_name%TYPE;
307 
308  e_AdapterConfigNA EXCEPTION;
309 
310  l_count number := 0;
311 
312 BEGIN
313 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
314 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.UPDATE_ADAPTER',
315 				'BEGIN:p_ChannelName: '||p_ChannelName);
316 	end if;
317 	p_retcode := 0;
318 	p_errbuf := '';
319 
320 -- ********** Validate Order Type in High Availability Maintenance Mode
321 
322        FND_PROFILE.GET('APPS_MAINTENANCE_MODE', lv_mode);
323 
324        IF lv_mode = 'MAINT' THEN
325            raise e_AdapterConfigNA;
326        END IF;
327 -- **********
328 
329 	if p_ChannelName is null then
330 	    if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
331 		FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.UPDATE_ADAPTER',
332 					'Required parameters are not passed');
333 	    end if;
334             raise e_RequiredInputDataNotPassed;
335 	end if;
336 
337 	if not XDP_ADAPTER_CORE.VerifyAdapterOperation(p_ChannelName,
338 					XDP_ADAPTER.pv_opUpdate,
339 					l_CurrentStatus) then
340 		raise e_InvalidAdapterState;
341 	end if;
342 
343         --TODO do we really need to take lock, state is already one of the STOPPED
344 	l_AdapterLocked := XDP_ADAPTER_CORE_DB.ObtainAdapterLock_Verify(p_ChannelName);
345 	if l_AdapterLocked = 'N' then
346 		raise e_UnabletoLockAdapter;
347 	end if;
348 
349         --
350         -- Validate unique display name
351         --
352 	select count(*) into l_count from xdp_adapter_reg
353 		where adapter_display_name = p_AdapterDispName and
354 		channel_name <> p_ChannelName;
355 	if l_count > 0 then
356  		raise e_DisplayNameNotUnique;
357 	end if;
358 
359         select xat.application_mode, xat.adapter_class, xat.connection_required_flag, xat.inbound_required_flag
360         into l_ApplicationMode, l_AdapterClass, l_ConnReqFlag, l_InboundReqFlag
361         from xdp_adapter_types_b xat, xdp_adapter_reg xar
362         where xat.adapter_type = xar.adapter_type
363           and xar.channel_name = p_ChannelName;
364 
365 	--
366 	-- Validate parameters for non-implemented adapters
367 	--
368 	if l_AdapterClass = 'NONE' then
369 		if (p_LogFileName is not null) or
370 		   (p_CmdLineOpts is not null) or
371                    (p_CmdLineArgs is not null) then
372  			raise e_ImplParamWrong;
373 		end if;
374 	end if;
375 
376 	--
377 	-- Validate parameters for inbound-only adapters
378 	--
379 	if (l_InboundReqFlag = 'Y' and l_ApplicationMode = 'NONE') then
380 
381 		-- Startup Mode is SOD
382 		if (p_StartupMode = 'START_ON_DEMAND') then
383 			raise e_InboundParamWrong;
384 		end if;
385 	end if;
386 
387 
388 	--
389 	-- Validate connection parameters
390 	--
391 
392 	-- If no connection required
393 	if l_ConnReqFlag = 'N' then
394 		if (p_CODFlag = 'Y') then
395 			raise e_ConnParamWrong;
396 		end if;
397 	-- If connection required
398 	else
399 		-- If SOD and COD
400 		if (p_CODFlag = 'Y' and p_startupMode = 'START_ON_DEMAND') then
401 			raise e_ConnParamWrong;
402 		end if;
403 	end if;
404 
405         -- Append .log to the log file name if not present already
406         l_LogFileName := Add_Log_File_Extension(p_LogFileName);
407 
408 
409 	XDP_ADAPTER_CORE_DB.UpdateAdapter(
410 				p_ChannelName => p_ChannelName,
411 				p_AdapterName => p_AdapterName,
412 				p_AdapterDispName => p_AdapterDispName,
413 				p_SvcInstId => p_ConcQID,
414 				p_StartupMode => p_StartupMode,
415 				p_UsageCode => p_UsageCode,
416 			    	p_LogLevel => p_LogLevel,
417 				p_CODFlag => p_CODFlag,
418 				p_MaxIdleTime => p_MaxIdleTime,
419 			    	p_LogFileName => l_LogFileName,
420 			    	p_SeqInFE => p_SeqInFE,
421 				p_CmdLineOpts => p_CmdLineOpts,
422 				p_CmdLineArgs => p_CmdLineArgs
423 				);
424 
425 	if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
426 	    if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
427 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.UPDATE_ADAPTER',
428 			'Could not release the lock, Channel name: '||p_ChannelName);
429 	    end if;
430  	end if;
431 
432 exception
433 when e_DisplayNameNotUnique then
434 if l_AdapterLocked = 'Y' then
435 	if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
436 	    if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
437 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.UPDATE_ADAPTER',
438 			'Could not release the lock, Channel name: '||p_ChannelName);
439 	    end if;
440  	end if;
441 end if;
442 	p_retCode := pv_retAdapterOtherError;
443 	FND_MESSAGE.CLEAR;
444 	fnd_message.set_name('FND','UNIQUE-DUPLICATE NAME');
445  	p_errbuf := FND_MESSAGE.GET;
446 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
447 	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.UPDATE_ADAPTER',
448 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
449         end if;
450 when e_InvalidAdapterState then
451 	p_retCode := pv_retAdapterInvalidState;
452 	FND_MESSAGE.CLEAR;
453 	fnd_message.set_name('XDP','XDP_INVALID_ADAPTER_STATE');
454  	p_errbuf := FND_MESSAGE.GET;
455 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
456 	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.UPDATE_ADAPTER',
457 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
458         end if;
459 when e_UnabletoLockAdapter then
460 	p_retCode := pv_retAdapterCannotLock;
461 	FND_MESSAGE.CLEAR;
462 	fnd_message.set_name('XDP','XDP_ADAPTER_UNLOCKABLE');
463  	p_errbuf := FND_MESSAGE.GET;
464 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
465 	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.UPDATE_ADAPTER',
466 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
467         end if;
468 when e_AdapterConfigNA then
469         p_retCode := pv_retAdapterConfigNA;
470         FND_MESSAGE.CLEAR;
471         fnd_message.set_name('XDP','XDP_ADAPTER_NOT_CONFIGURABLE');
472         fnd_message.set_token('OPERATION', 'Update');
473         p_errbuf := FND_MESSAGE.GET;
474 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
475             FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
476                 'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
477         end if;
478 when e_ImplParamWrong then
479 	p_retCode := pv_retAdapterImplParamWrong;
480         FND_MESSAGE.CLEAR;
481         fnd_message.set_name('XDP','XDP_ADAPTER_IMPL_PARAM_WRONG');
482         p_errbuf := FND_MESSAGE.GET;
483 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
484             FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
485                 'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
486 	end if;
487 when e_InboundParamWrong then
488 	p_retCode := pv_retAdapterInboundParamWrong;
489         FND_MESSAGE.CLEAR;
490         fnd_message.set_name('XDP','XDP_ADAPTER_INBND_PARAM_WRONG');
491         p_errbuf := FND_MESSAGE.GET;
492 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
493            FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
494                 'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
495 	end if;
496 when e_ConnParamWrong then
497 	p_retCode := pv_retAdapterConnParamWrong;
498         FND_MESSAGE.CLEAR;
499         fnd_message.set_name('XDP','XDP_ADAPTER_CONN_PARAM_WRONG');
500         p_errbuf := FND_MESSAGE.GET;
501 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
502             FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
503                 'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
504 	end if;
505 when others then
506 if l_AdapterLocked = 'Y' then
507 	if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
508 	    if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
509 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.UPDATE_ADAPTER',
510 			'Could not release the lock, Channel name: '||p_ChannelName);
511 	    end if;
512  	end if;
513 end if;
514 if SQLCODE <> 0 then
515  	p_retCode := SQLCODE;
516  	p_errbuf :=  SQLERRM;
517 else
518 	p_retCode := pv_retAdapterOtherError;
519  	p_errbuf := 'Other non-SQL error';
520 END IF;
521 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
522     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.UPDATE_ADAPTER',
523 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
524 end if;
525 END Update_Adapter;
526 
527 Procedure Delete_Adapter(p_ChannelName in varchar2,
528 		   	 p_retcode OUT NOCOPY NUMBER,
529 			 p_errbuf OUT NOCOPY VARCHAR2
530 			)
531 is
532 
533  l_AdapterLocked varchar2(1) := 'N';
534  l_CurrentStatus varchar2(30);
535 
536  lv_mode VARCHAR2(8);  -- maintenance mode profile
537 
538  e_AdapterConfigNA EXCEPTION;
539 
540 begin
541 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
542 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.DELETE_ADAPTER',
543 				'BEGIN:p_ChannelName: '||p_ChannelName);
544 	end if;
545 	p_retcode := 0;
546 	p_errbuf := '';
547 
548 -- ********** Validate Order Type in High Availability Maintenance Mode
549 
550        FND_PROFILE.GET('APPS_MAINTENANCE_MODE', lv_mode);
551 
552        IF lv_mode = 'MAINT' THEN
553            raise e_AdapterConfigNA;
554        END IF;
555 -- **********
556 
557 	if p_ChannelName is null then
558 	    if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
559 		FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.DELETE_ADAPTER',
560 					'Required parameters are not passed');
561             end if;
562  		raise e_RequiredInputDataNotPassed;
563 	end if;
564 
565 	if not XDP_ADAPTER_CORE.VerifyAdapterOperation(p_ChannelName,
566 					XDP_ADAPTER.pv_opDelete,
567 					l_CurrentStatus) then
568 		raise e_InvalidAdapterState;
569 	end if;
570 
571         --TODO do we really need to take lock, state is already one of the STOPPED
572 	l_AdapterLocked := XDP_ADAPTER_CORE_DB.ObtainAdapterLock_Verify(p_ChannelName);
573 	if l_AdapterLocked = 'N' then
574 		raise e_UnabletoLockAdapter;
575 	end if;
576 
577 	XDP_ADAPTER_CORE_DB.Delete_Adapter (p_channel_name => p_ChannelName);
578 
579 	if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N' then
580 	    if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
581 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.DELETE_ADAPTER',
582 			'Could not release the lock, Channel name: '||p_ChannelName);
583 	    end if;
584 	end if;
585 
586 exception
587 when e_InvalidAdapterState then
588 	p_retCode := pv_retAdapterInvalidState;
589 	FND_MESSAGE.CLEAR;
590 	fnd_message.set_name('XDP','XDP_INVALID_ADAPTER_STATE');
591  	p_errbuf := FND_MESSAGE.GET;
592 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
593 	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.DELETE_ADAPTER',
594 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
595 	end if;
596 when e_UnabletoLockAdapter then
597 	p_retCode := pv_retAdapterCannotLock;
598 	FND_MESSAGE.CLEAR;
599 	fnd_message.set_name('XDP','XDP_ADAPTER_UNLOCKABLE');
600  	p_errbuf := FND_MESSAGE.GET;
601 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
602     	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.DELETE_ADAPTER',
603 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
604 	end if;
605 when e_AdapterConfigNA then
606         p_retCode := pv_retAdapterConfigNA;
607         FND_MESSAGE.CLEAR;
608         fnd_message.set_name('XDP','XDP_ADAPTER_NOT_CONFIGURABLE');
609         fnd_message.set_token('OPERATION', 'Delete');
610         p_errbuf := FND_MESSAGE.GET;
611 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
612            FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADAPTER',
613                 'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
614 	end if;
615 when others then
616 if l_AdapterLocked  = 'Y' then
617 	if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
618 	   if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
619 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.DELETE_ADAPTER',
620 			'Could not release the lock, Channel name: '||p_ChannelName);
621 	   end if;
622  	end if;
623 end if;
624 if SQLCODE <> 0 then
625  	p_retCode := SQLCODE;
626  	p_errbuf :=  SQLERRM;
627 else
628 	p_retCode := pv_retAdapterOtherError;
629  	p_errbuf := 'Other non-SQL error';
630 END IF;
631 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 27 Apr 05
632     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.DELETE_ADAPTER',
633 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
634 end if;
635 end Delete_Adapter;
636 
637 Procedure Delete_All_For_FE (p_FeName in varchar2,
638 		   	 	  p_retcode OUT NOCOPY NUMBER,
639 			 	  p_errbuf OUT NOCOPY VARCHAR2)
640 is
641  l_FeID number := -1;
642  l_Flag boolean := FALSE;
643  e_FEAdapterRunning  EXCEPTION;
644 begin
645 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
646 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.DELETE_ALL_FOR_FE',
647 				'BEGIN:p_FeName: '||p_FeName);
648 	end if;
649 	p_retcode := 0;
650 	p_errbuf := '';
651 
652 	l_FeID := XDP_ADAPTER_CORE_DB.Get_Fe_Id_For_Name (p_FeName);
653 
654 	l_Flag := XDP_ADAPTER_CORE_DB.Is_FE_Adapter_Running (p_fe_id => l_FeID);
655 	if (l_Flag) then
656 	    if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
657 		FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.DELETE_ALL_FOR_FE',
658 				'Some adapters are running for the FE: '||p_FeName);
659 	    end if;
660             raise e_FEAdapterRunning;
661 	END IF;
662 
663 	XDP_ADAPTER_CORE_DB.Delete_Adapters_For_FE (p_fe_id => l_FeID);
664 
665 exception
666 
667 when e_FEAdapterRunning then
668 	p_retcode := pv_retFEAdapterRunning;
669  	FND_MESSAGE.CLEAR;
670 	fnd_message.set_name('XDP','XDP_FE_RUNNING');
671  	p_errbuf := FND_MESSAGE.GET;
672 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
673 	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.DELETE_ALL_FOR_FE',
674 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
675 	end if;
676 
677 when others then
678 if SQLCODE <> 0 then
679  	p_retCode := SQLCODE;
680  	p_errbuf :=  SQLERRM;
681 else
682 	p_retCode := pv_retAdapterOtherError;
683  	p_errbuf := 'Other non-SQL error';
684 END IF;
685 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then  --Fix Bug: 4256771, dputhiye, 28 Apr 05
686     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.DELETE_ALL_FOR_FE',
687 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
688 end if;
689 end Delete_All_For_FE;
690 
691 PROCEDURE Generic_Operation (p_ChannelName in varchar2,
692 				p_OperationName in varchar2,
693 				p_OperationParam in varchar2 default null,
694 				p_retcode	OUT NOCOPY NUMBER,
695 				p_errbuf	OUT NOCOPY VARCHAR2
696 				)
697 is
698  l_CPID number;
699  l_ProcessID number;
700  l_CmdString varchar2(2000);
701 begin
702 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
703 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.GENERIC_OPERATION',
704 				'BEGIN:p_ChannelName: '||p_ChannelName);
705 	end if;
706 	p_retcode := 0;
707 	p_errbuf := '';
708 
709         validate_operation(p_ChannelName => p_ChannelName,
710                              p_Operation => XDP_ADAPTER.pv_opGeneric,
711                              p_CPID => l_CPID,
712                              p_ProcessID => l_ProcessID,
713                              p_retcode => p_retcode,
714                              p_errbuf => p_errbuf);
715 
716         if p_retcode <> 0 then
717             return;
718         END IF;
719 
720 	if (XDP_ADAPTER_CORE_DB.Is_Adapter_Implemented (p_ChannelName)) then
721 
722                 l_CmdString := p_ChannelName || pv_SMParamDelimiter ||
723                                p_OperationName || pv_SMParamDelimiter ||
724                                p_OperationParam || pv_SMParamDelimiter;
725 
726 		XDP_CONTROLLER_CORE.GenericOperationAdapter(l_CPID, l_CmdString);
727 	end if;
728 
729 exception
730 
731 when others then
732 if SQLCODE <> 0 then
733  	p_retCode := SQLCODE;
734  	p_errbuf :=  SQLERRM;
735 else
736 	p_retCode := pv_retAdapterOtherError;
737  	p_errbuf := 'Other non-SQL error';
738 END IF;
739 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
740     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.GENERIC_OPERATION',
741 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
742 end if;
743 END Generic_Operation;
744 
745 -- ************* Added - sacsharm - END *****************************
746 
747 Procedure Create_Admin_Request (p_ChannelName in varchar2,
748 				 p_RequestType in varchar2,
749 				 p_RequestDate in date default sysdate,
750 				 p_RequestedBy in varchar2 default null,
751 				 p_Freq in number default null,
752 				 p_RequestID OUT NOCOPY number,
753 				 p_JobID OUT NOCOPY number,
754 				 p_retcode	OUT NOCOPY NUMBER,
755 				 p_errbuf	OUT NOCOPY VARCHAR2
756 				)
757 is
758  e_InvalidRequestDate  EXCEPTION;
759 
760 begin
761 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
762 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.CREATE_ADMIN_REQUEST',
763 				'BEGIN:p_ChannelName: '||p_ChannelName);
764 	end if;
765 	p_retcode := 0;
766 	p_errbuf := '';
767 
768 	if p_ChannelName is null then
769             if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
770 		FND_LOG.STRING (FND_LOG.LEVEL_ERROR,
771 					'XDP_ADAPTER.CREATE_ADMIN_REQUEST',
772 					'Required parameters are not passed');
773 	    end if;
774  	    raise e_RequiredInputDataNotPassed;
775 	end if;
776 
777 	if p_RequestDate < sysdate then
778 	    if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
779 		FND_LOG.STRING (FND_LOG.LEVEL_ERROR,
780 					'XDP_ADAPTER.CREATE_ADMIN_REQUEST',
781 					'Request date is less than the sysdate');
782 	    end if;
783             raise e_InvalidRequestDate;
784 	end if;
785 
786 	XDP_ADAPTER_CORE_DB.SubmitAdapterAdminReq(
787 			p_ChannelName => p_ChannelName,
788 			p_RequestType => p_RequestType,
789 			p_RequestDate => p_RequestDate,
790 			p_RequestedBy => p_RequestedBy,
791 			p_Freq => p_Freq,
792 			p_RequestID => p_RequestID,
793 			p_JobID => p_JobID);
794 
795 exception
796 when e_InvalidRequestDate then
797 	p_retcode := pv_retAdapterInvalidReqDate;
798  	FND_MESSAGE.CLEAR;
799 	fnd_message.set_name('XDP','XDP_SCHED_REQ_FUTURE');
800  	p_errbuf := FND_MESSAGE.GET;
801 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
802 	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADMIN_REQUEST',
803 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
804 	end if;
805 when others then
806 if SQLCODE <> 0 then
807  	p_retCode := SQLCODE;
808  	p_errbuf :=  SQLERRM;
809 else
810 	p_retCode := pv_retAdapterOtherError;
811  	p_errbuf := 'Other non-SQL error';
812 END IF;
813 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
814     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CREATE_ADMIN_REQUEST',
815 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
816 end if;
817 end Create_Admin_Request;
818 
819 Procedure Update_Admin_Request (p_RequestID in number,
820 				p_RequestDate in date default sysdate,
821 				p_RequestedBy in varchar2 default null,
822 				p_Freq in number default null,
823 				p_retcode	OUT NOCOPY NUMBER,
824 				p_errbuf	OUT NOCOPY VARCHAR2
825 				)
826 is
827 
828  e_InvalidRequestDate  EXCEPTION;
829 
830 begin
831 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
832 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.UPDATE_ADMIN_REQUEST',
833 				'BEGIN:p_RequestID: '||p_RequestID);
834 	end if;
835 	p_retcode := 0;
836 	p_errbuf := '';
837 
838 	if p_RequestID is null then
839 	    if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
840 		FND_LOG.STRING (FND_LOG.LEVEL_ERROR,
841 					'XDP_ADAPTER.UPDATE_ADMIN_REQUEST',
842 					'Required parameters are not passed');
843 	    end if;
844             raise e_RequiredInputDataNotPassed;
845 	end if;
846 
847 	if p_RequestDate < sysdate then
848 	    if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
849 		FND_LOG.STRING (FND_LOG.LEVEL_ERROR,
850 					'XDP_ADAPTER.CREATE_ADMIN_REQUEST',
851 					'Request date is less than the sysdate');
852 	    end if;
853  	    raise e_InvalidRequestDate;
854 	end if;
855 
856 	XDP_ADAPTER_CORE_DB.UpdateAdapterAdminReq(
857 		p_RequestID => Update_Admin_Request.p_RequestID,
858 		p_RequestDate => Update_Admin_Request.p_RequestDate,
859 		p_RequestedBy => Update_Admin_Request.p_RequestedBy,
860 		p_Freq => Update_Admin_Request.p_Freq);
861 
862 exception
863 when e_InvalidRequestDate then
864 	p_retcode := pv_retAdapterInvalidReqDate;
865  	FND_MESSAGE.CLEAR;
866 	fnd_message.set_name('XDP','XDP_SCHED_REQ_FUTURE');
867  	p_errbuf := FND_MESSAGE.GET;
868 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
869 	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.UPDATE_ADMIN_REQUEST',
870 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
871 	end if;
872 
873 when others then
874 if SQLCODE <> 0 then
875  	p_retCode := SQLCODE;
876  	p_errbuf :=  SQLERRM;
877 else
878 	p_retCode := pv_retAdapterOtherError;
879  	p_errbuf := 'Other non-SQL error';
880 END IF;
881 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
882     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.UPDATE_ADMIN_REQUEST',
883 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
884 end if;
885 end Update_Admin_Request;
886 
887 Procedure Delete_Admin_Request (p_RequestID in number,
888 		   	 	 p_retcode OUT NOCOPY NUMBER,
889 			 	 p_errbuf OUT NOCOPY VARCHAR2)
890 is
891  l_dummy varchar2(80);
892  l_dummynum number;
893  l_dummydate date;
894  l_jobID number;
895 begin
896 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
897 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.DELETE_ADMIN_REQUEST',
898 				'BEGIN:p_RequestID: '||p_RequestID);
899 	end if;
900 	p_retcode := 0;
901 	p_errbuf := '';
902 
903 	if p_RequestID is null then
904 	    if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
905 		FND_LOG.STRING (FND_LOG.LEVEL_ERROR,
906 					'XDP_ADAPTER.DELETE_ADMIN_REQUEST',
907 					'Required parameters are not passed');
908 	    end if;
909  	    raise e_RequiredInputDataNotPassed;
910 	end if;
911 
912 	XDP_ADAPTER_CORE_DB.RemoveAdapterAdminReq(
913 		p_RequestID => Delete_Admin_Request.p_RequestID);
914 
915 exception
916 when others then
917 if SQLCODE <> 0 then
918  	p_retCode := SQLCODE;
919  	p_errbuf :=  SQLERRM;
920 else
921 	p_retCode := pv_retAdapterOtherError;
922  	p_errbuf := 'Other non-SQL error';
923 END IF;
924 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
925     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.DELETE_ADMIN_REQUEST',
926 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
927 end if;
928 end Delete_Admin_Request;
929 
930 -- End of Adapter Admin Requests Procedures
931 
932 Procedure Start_Adapter(p_ChannelName in varchar2,
933 	   	 	p_retcode OUT NOCOPY NUMBER,
934 		 	p_errbuf OUT NOCOPY VARCHAR2)
935 is
936 
937  l_CmdOptions varchar2(2000);
938  l_CmdArgs varchar2(2000);
939  l_ApplChannelName varchar2(40);
940  l_ControlChannelName varchar2(40);
941  l_ApplMode varchar2(40);
942  l_FeName varchar2(40);
943  l_AdapterName varchar2(40);
944  l_AdapterClass varchar2(240);
945  l_InboundChannelName varchar2(80);
946  l_ControllerFlag varchar2(10);
947  l_ConcQID number;
948  l_CPID number;
949 
950  l_LogFileName varchar2(240);
951  l_AdapterLocked varchar2(1) := 'N';
952 
953  l_SMParamString varchar2(2000);
954  l_Flag boolean := FALSE;
955  l_FeID number := -1;
956  l_CurrentStatus varchar2(30);
957 
958  e_MaxAdaptersReached  EXCEPTION;
959 begin
960 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
961 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.START_ADAPTER',
962 				'BEGIN:p_ChannelName: '||p_ChannelName);
963 	end if;
964 	p_retcode := 0;
965 	p_errbuf := '';
966 
967 	if p_ChannelName is null then
968             if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
969 		FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.START_ADAPTER',
970 					'Required parameters are not passed');
971 	    end if;
972  	    raise e_RequiredInputDataNotPassed;
973 	end if;
974 
975 	if not XDP_ADAPTER_CORE.VerifyAdapterOperation(p_ChannelName,
976 					XDP_ADAPTER.pv_opStartup,
977 					l_CurrentStatus) then
978 		raise e_InvalidAdapterState;
979 	end if;
980 
981         --TODO do we really need to take lock, state is already one of the STOPPED
982 	l_AdapterLocked := XDP_ADAPTER_CORE_DB.ObtainAdapterLock_Verify(p_ChannelName);
983 	if l_AdapterLocked = 'N' then
984 		raise e_UnabletoLockAdapter;
985 	end if;
986 
987 	XDP_ADAPTER_CORE_DB.FetchAdapterStartupInfo(
988 				p_ChannelName,
989 				l_CmdOptions,
990 				l_CmdArgs,
991 				l_ControlChannelName,
992 				l_ApplChannelName,
993 				l_ApplMode,
994 				l_FeName,
995 				l_AdapterClass,
996 				l_AdapterName,
997 				l_ConcQID,
998 				l_InboundChannelName,
999 				l_LogFileName);
1000 
1001 	l_FeID := XDP_ADAPTER_CORE_DB.Get_Fe_Id_For_Name (l_FeName);
1002 
1003 	l_Flag := XDP_ADAPTER_CORE_DB.Is_Max_Connection_Reached (l_FeID);
1004 	if (l_Flag = FALSE) then
1005 		if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N' then
1006 		   if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1007 			FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.START_ADAPTER',
1008 				'Could not release the lock, Channel name: '||p_ChannelName);
1009 		   end if;
1010 		end if;
1011 
1012 	 	raise e_MaxAdaptersReached;
1013 	end if;
1014 
1015 	-- Construct the Adapter Launch string for the Controller
1016 	-- The command format is as follows
1017 -- jre <-D Options> <Log File Name> <Adapter Class Name> <Control Channel Name> <Arguments>
1018 -- The Arguements to the Adapter are as follows:
1019 -- <FE Name> <Adapter Name> <Control Channel Name> <Application Mode>
1020 -- <Application Channel Name> <Inbound Channel Name> <User-defined args>
1021 
1022 	l_SMParamString := 	l_CmdOptions || pv_SMParamDelimiter ||
1023 				l_LogFileName || pv_SMParamDelimiter ||
1024 				l_AdapterClass || pv_SMParamDelimiter ||
1025 				l_ControlChannelName || pv_SMParamDelimiter ||
1026 				l_FeName || pv_SMParamSpace ||
1027 				l_AdapterName || pv_SMParamSpace ||
1028 				l_ControlChannelName || pv_SMParamSpace ||
1029 				l_ApplMode || pv_SMParamSpace ||
1030 				l_ApplChannelName || pv_SMParamSpace ||
1031 				l_InboundChannelName || pv_SMParamSpace ||
1032 				l_CmdArgs || pv_SMParamDelimiter;
1033 
1034 	XDP_CONTROLLER_CORE.VerifyControllerStatus(l_ConcQID, l_CPID, l_ControllerFlag);
1035 	if l_ControllerFlag = 'N' then
1036 		if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N' then
1037 		   if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1038 			FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.START_ADAPTER',
1039 				'Could not release the lock, Channel name: '||p_ChannelName);
1040 		   end if;
1041 		end if;
1042 
1043 		raise e_ControllerNotRunning;
1044 	end if;
1045 
1046 	if (XDP_ADAPTER_CORE_DB.Is_Adapter_Implemented (p_ChannelName)) then
1047 
1048 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1049 			p_ChannelName => p_ChannelName,
1050 			p_Status => pv_statusStarting);
1051 
1052 		XDP_ADAPTER_CORE_PIPE.CleanupPipe(p_ChannelName => p_ChannelName);
1053 		XDP_CONTROLLER_CORE.LaunchAdapter(l_CPID, l_SMParamString);
1054 
1055 		--dbms_output.put_line(substr(l_SMParamString, 1,255));
1056 	else
1057 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1058 			p_ChannelName => p_ChannelName,
1059 			p_Status => pv_statusRunning);
1060 
1061 		XDPCORE_FA.HandOverChannel (ChannelName => p_ChannelName,
1062                            	    FeID => 0,
1063                            	    ChannelUsageCode => NULL,
1064                            	    Caller => 'ADMIN',
1065                            	    ErrCode => p_retcode,
1066                            	    ErrStr => p_errbuf);
1067 	end if;
1068 
1069 	if (XDP_ADAPTER.pv_callerContext = XDP_ADAPTER.pv_CallerContextUser) then
1070 
1071 		-- Reset start error count to 0 for Automatic adapters
1072 
1073 		if (XDP_ADAPTER_CORE_DB.Is_Adapter_Automatic(p_ChannelName)) then
1074 
1075 			XDP_ERRORS_PKG.UPDATE_ERROR_COUNT (
1076 				p_object_type => XDP_ADAPTER.pv_errorObjectTypeAdapter,
1077 				p_object_key => p_ChannelName);
1078 		END IF;
1079 	END IF;
1080 
1081 	if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N' then
1082 	    if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1083 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.START_ADAPTER',
1084 			'Could not release the lock, Channel name: '||p_ChannelName);
1085 	    end if;
1086 	end if;
1087 
1088 exception
1089 when e_MaxAdaptersReached then
1090 	p_retcode := pv_retAdapterMaxNumReached;
1091  	FND_MESSAGE.CLEAR;
1092 	fnd_message.set_name('XDP','XDP_MAX_NUM_CONN');
1093  	p_errbuf := FND_MESSAGE.GET;
1094 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1095    	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.START_ADAPTER',
1096 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1097         end if;
1098 when e_InvalidAdapterState then
1099 	p_retCode := pv_retAdapterInvalidState;
1100 	FND_MESSAGE.CLEAR;
1101 	fnd_message.set_name('XDP','XDP_INVALID_ADAPTER_STATE');
1102  	p_errbuf := FND_MESSAGE.GET;
1103 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1104    	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.START_ADAPTER',
1105 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1106 	end if;
1107 when e_UnabletoLockAdapter then
1108 	p_retCode := pv_retAdapterCannotLock;
1109 	FND_MESSAGE.CLEAR;
1110 	fnd_message.set_name('XDP','XDP_ADAPTER_UNLOCKABLE');
1111  	p_errbuf := FND_MESSAGE.GET;
1112 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1113 	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.START_ADAPTER',
1114 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1115 	end if;
1116 when e_ControllerNotRunning then
1117 	p_retCode := pv_retAdapterCtrlNotRunning;
1118 	FND_MESSAGE.CLEAR;
1119 	fnd_message.set_name('XDP','XDP_CONTROLLER_NOT_RUNNING');
1120  	p_errbuf := FND_MESSAGE.GET;
1121 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1122   	   FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.START_ADAPTER',
1123 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1124 	end if;
1125 when others then
1126 if l_AdapterLocked = 'Y' then
1127 	if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
1128 	   if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1129 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.START_ADAPTER',
1130 			'Could not release the lock, Channel name: '||p_ChannelName);
1131 	   end if;
1132  	end if;
1133 end if;
1134 if SQLCODE <> 0 then
1135  	p_retCode := SQLCODE;
1136  	p_errbuf :=  SQLERRM;
1137 else
1138 	p_retCode := pv_retAdapterOtherError;
1139  	p_errbuf := 'Other non-SQL error';
1140 END IF;
1141 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1142     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.START_ADAPTER',
1143 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1144 end if;
1145 End Start_Adapter;
1146 
1147 Procedure Stop_Adapter(p_ChannelName in varchar2,
1148 	   	 	p_retcode OUT NOCOPY NUMBER,
1149 		 	p_errbuf OUT NOCOPY VARCHAR2)
1150 is
1151  l_JobID number := 0;
1152  l_RequestID number := 0;
1153 
1154  l_CPID number;
1155  l_ProcessID number;
1156  l_CmdString varchar2(2000);
1157 begin
1158 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1159 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.STOP_ADAPTER',
1160 				'BEGIN:p_ChannelName: '||p_ChannelName);
1161 	end if;
1162 	p_retcode := 0;
1163 	p_errbuf := '';
1164 
1165         validate_operation(p_ChannelName => p_ChannelName,
1166                              p_Operation => XDP_ADAPTER.pv_opStop,
1167                              p_CPID => l_CPID,
1168                              p_ProcessID => l_ProcessID,
1169                              p_retcode => p_retcode,
1170                              p_errbuf => p_errbuf);
1171 
1172         if p_retcode = XDP_ADAPTER.pv_retAdapterCannotLock then
1173 
1174 		-- Stop operation is different, if we cannot lock
1175 		-- we submit adapter admin request
1176 
1177 		-- Submit a adapter admin request
1178 		-- Commit should be done by the Caller
1179 		l_JobID := XDP_ADAPTER_CORE_DB.DoesSystemReqAlreadyExist(
1180 				p_ChannelName => p_ChannelName,
1181                                 p_RequestType => XDP_ADAPTER.pv_opStop,
1182                                 p_RequestDate => sysdate);
1183                 if (l_JobID = 0) then
1184 			XDP_ADAPTER_CORE_DB.SubmitAdapterAdminReq (
1185 				p_ChannelName => p_ChannelName,
1186 				p_RequestType => XDP_ADAPTER.pv_opStop,
1187 				p_RequestedBy => XDP_ADAPTER.pv_adminReqBySystem,
1188 				p_RequestID => l_RequestID,
1189 				p_JobID => l_JobID);
1190 		end if;
1191 		raise e_UnabletoLockAdapter;
1192 
1193         elsif p_retcode <> 0 then
1194             return;
1195 	end if;
1196 
1197 	if (XDP_ADAPTER_CORE_DB.Is_Adapter_Implemented (p_ChannelName)) then
1198 
1199 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1200 			p_ChannelName => p_ChannelName,
1201 			p_Status => pv_statusStopping);
1202 
1203 		l_CmdString := p_ChannelName || pv_SMParamDelimiter;
1204 
1205 		if (XDP_ADAPTER_CORE_DB.Is_Adapter_Automatic(p_ChannelName)) then
1206 	  		if (XDP_ADAPTER.pv_callerContext = XDP_ADAPTER.pv_CallerContextUser) then
1207 				l_CmdString := l_CmdString ||
1208 						XDP_ADAPTER.pv_CallerContextUser ||
1209 						pv_SMParamDelimiter;
1210                         else
1211 				l_CmdString := l_CmdString ||
1212 						XDP_ADAPTER.pv_CallerContextAdmin ||
1213 						pv_SMParamDelimiter;
1214 			END IF;
1215                 END IF;
1216 
1217 		XDP_CONTROLLER_CORE.StopAdapter(l_CPID, l_CmdString);
1218 
1219 	else
1220 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1221 			p_ChannelName => p_ChannelName,
1222 			p_Status => pv_statusStopped);
1223 
1224 		-- Deactivate the automatic adapter in case user stops it.
1225   		if (XDP_ADAPTER.pv_callerContext = XDP_ADAPTER.pv_CallerContextUser) then
1226 
1227 			if (XDP_ADAPTER_CORE_DB.Is_Adapter_Automatic(p_ChannelName)) then
1228 
1229 				XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1230 					p_ChannelName => p_ChannelName,
1231 					p_Status => pv_statusDeactivated);
1232 			END IF;
1233 		END IF;
1234 
1235 	end if;
1236 
1237 	if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N' then
1238 	   if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1239 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.STOP_ADAPTER',
1240 			'Could not release the lock, Channel name: '||p_ChannelName);
1241 	   end if;
1242 	end if;
1243 
1244 exception
1245 
1246 when e_UnabletoLockAdapter then
1247         p_retCode := pv_retAdapterCannotLockReqSub;
1248         FND_MESSAGE.CLEAR;
1249         fnd_message.set_name('XDP','XDP_ADAPTER_UNLOCKABLE_REQ_SUB');
1250         fnd_message.set_token('JOB_ID', l_JobID);
1251         p_errbuf := FND_MESSAGE.GET;
1252 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1253             FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.STOP_ADAPTER',
1254                 'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1255 	end if;
1256 when others then
1257 if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
1258     if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1259 	FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.STOP_ADAPTER',
1260 		'Could not release the lock, Channel name: '||p_ChannelName);
1261     end if;
1262 end if;
1263 if SQLCODE <> 0 then
1264  	p_retCode := SQLCODE;
1265  	p_errbuf :=  SQLERRM;
1266 else
1267 	p_retCode := pv_retAdapterOtherError;
1268  	p_errbuf := 'Other non-SQL error';
1269 END IF;
1270 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1271     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.STOP_ADAPTER',
1272 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1273 end if;
1274 end Stop_Adapter;
1275 
1276 Procedure Suspend_Adapter(p_ChannelName in varchar2,
1277 	   	 	p_retcode OUT NOCOPY NUMBER,
1278 		 	p_errbuf OUT NOCOPY VARCHAR2)
1279 is
1280 
1281  l_CPID number;
1282  l_ProcessID number;
1283  l_CmdString varchar2(2000);
1284 begin
1285 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1286 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.SUSPEND_ADAPTER',
1287 				'BEGIN:p_ChannelName: '||p_ChannelName);
1288 	end if;
1289 	p_retcode := 0;
1290 	p_errbuf := '';
1291 
1292         validate_operation(p_ChannelName => p_ChannelName,
1293                              p_Operation => XDP_ADAPTER.pv_opSuspend,
1294                              p_CPID => l_CPID,
1295                              p_ProcessID => l_ProcessID,
1296                              p_retcode => p_retcode,
1297                              p_errbuf => p_errbuf);
1298 
1299         if p_retcode <> 0 then
1300             return;
1301         END IF;
1302 
1303 	if (XDP_ADAPTER_CORE_DB.Is_Adapter_Implemented (p_ChannelName)) then
1304 
1305 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1306 			p_ChannelName => p_ChannelName,
1307 			p_Status => pv_statusSuspending);
1308 
1309 		l_CmdString := p_ChannelName || pv_SMParamDelimiter;
1310 
1311 		XDP_CONTROLLER_CORE.SuspendAdapter(l_CPID, l_CmdString);
1312 
1313 	else
1314 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1315 			p_ChannelName => p_ChannelName,
1316 			p_Status => pv_statusSuspended);
1317 	end if;
1318 
1319 	if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N' then
1320 	    if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1321 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.SUSPEND_ADAPTER',
1322 			'Could not release the lock, Channel name: '||p_ChannelName);
1323 	   end if;
1324 	end if;
1325 
1326 exception
1327 
1328 when others then
1329 if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
1330     if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1331 	FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.SUSPEND_ADAPTER',
1332 		'Could not release the lock, Channel name: '||p_ChannelName);
1333     end if;
1334 end if;
1335 if SQLCODE <> 0 then
1336  	p_retCode := SQLCODE;
1337  	p_errbuf :=  SQLERRM;
1338 else
1339 	p_retCode := pv_retAdapterOtherError;
1340  	p_errbuf := 'Other non-SQL error';
1341 END IF;
1342 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1343     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.SUSPEND_ADAPTER',
1344 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1345 end if;
1346 end Suspend_Adapter;
1347 
1348 Procedure Resume_Adapter(p_ChannelName in varchar2,
1349 	   	 	p_retcode OUT NOCOPY NUMBER,
1350 		 	p_errbuf OUT NOCOPY VARCHAR2)
1351 is
1352 
1353  l_CPID number;
1354  l_ProcessID number;
1355  l_CmdString varchar2(2000);
1356 begin
1357 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1358 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.RESUME_ADAPTER',
1359 				'BEGIN:p_ChannelName: '||p_ChannelName);
1360 	end if;
1361 	p_retcode := 0;
1362 	p_errbuf := '';
1363 
1364         validate_operation(p_ChannelName => p_ChannelName,
1365                              p_Operation => XDP_ADAPTER.pv_opResume,
1366                              p_CPID => l_CPID,
1367                              p_ProcessID => l_ProcessID,
1368                              p_retcode => p_retcode,
1369                              p_errbuf => p_errbuf);
1370 
1371         if p_retcode <> 0 then
1372             return;
1373         END IF;
1374 
1375 	if (XDP_ADAPTER_CORE_DB.Is_Adapter_Implemented (p_ChannelName)) then
1376 
1377 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1378 			p_ChannelName => p_ChannelName,
1379 			p_Status => pv_statusResuming);
1380 
1381 		l_CmdString := p_ChannelName || pv_SMParamDelimiter;
1382 
1383 		XDP_CONTROLLER_CORE.ResumeAdapter(l_CPID, l_CmdString);
1384 
1385                 --HandOverChannel needs to be done by Controller
1386 
1387 	else
1388 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1389 			p_ChannelName => p_ChannelName,
1390 			p_Status => pv_statusRunning);
1391 
1392 		XDPCORE_FA.HandOverChannel (ChannelName => p_ChannelName,
1393                        	    FeID => 0,
1394                        	    ChannelUsageCode => NULL,
1395                        	    Caller => 'ADMIN',
1396                        	    ErrCode => p_retcode,
1397                        	    ErrStr => p_errbuf);
1398 	end if;
1399 
1400 	if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N' then
1401 	    if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1402 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.RESUME_ADAPTER',
1403 			'Could not release the lock, Channel name: '||p_ChannelName);
1404 	    end if;
1405 	end if;
1406 
1407 exception
1408 
1409 when others then
1410 if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
1411     if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1412 	FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.RESUME_ADAPTER',
1413 		'Could not release the lock, Channel name: '||p_ChannelName);
1414     end if;
1415 end if;
1416 if SQLCODE <> 0 then
1417  	p_retCode := SQLCODE;
1418  	p_errbuf :=  SQLERRM;
1419 else
1420 	p_retCode := pv_retAdapterOtherError;
1421  	p_errbuf := 'Other non-SQL error';
1422 END IF;
1423 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1424     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.RESUME_ADAPTER',
1425 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1426 end if;
1427 end Resume_Adapter;
1428 
1429 
1430 Procedure Connect_Adapter(p_ChannelName in varchar2,
1431 	   	 	p_retcode OUT NOCOPY NUMBER,
1432 		 	p_errbuf OUT NOCOPY VARCHAR2)
1433 is
1434  l_CPID number;
1435  l_ProcessID number;
1436  l_CmdString varchar2(2000);
1437 
1438 begin
1439 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1440 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.CONNECT_ADAPTER',
1441 				'BEGIN:p_ChannelName: '||p_ChannelName);
1442 	end if;
1443 	p_retcode := 0;
1444 	p_errbuf := '';
1445 
1446         validate_operation(p_ChannelName => p_ChannelName,
1447                              p_Operation => XDP_ADAPTER.pv_opConnect,
1448                              p_CPID => l_CPID,
1449                              p_ProcessID => l_ProcessID,
1450                              p_retcode => p_retcode,
1451                              p_errbuf => p_errbuf);
1452 
1453         if p_retcode <> 0 then
1454             return;
1455         END IF;
1456 
1457 	if (XDP_ADAPTER_CORE_DB.Is_Adapter_Implemented (p_ChannelName)) then
1458 
1459 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1460 			p_ChannelName => p_ChannelName,
1461 			p_Status => pv_statusConnecting);
1462 
1463 		l_CmdString := p_ChannelName || pv_SMParamDelimiter;
1464 
1465 		XDP_CONTROLLER_CORE.ConnectAdapter(l_CPID, l_CmdString);
1466 
1467                 --HandOverChannel needs to be done by Controller
1468 
1469 	else
1470 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1471 			p_ChannelName => p_ChannelName,
1472 			p_Status => pv_statusRunning);
1473 
1474 		XDPCORE_FA.HandOverChannel (ChannelName => p_ChannelName,
1475                        	    FeID => 0,
1476                        	    ChannelUsageCode => NULL,
1477                        	    Caller => 'ADMIN',
1478                        	    ErrCode => p_retcode,
1479                        	    ErrStr => p_errbuf);
1480 	end if;
1481 
1482 	if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N' then
1483 	    if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1484 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.CONNECT_ADAPTER',
1485 			'Could not release the lock, Channel name: '||p_ChannelName);
1486 	    end if;
1487 	end if;
1488 
1489 exception
1490 
1491 when others then
1492 if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
1493     if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1494 	FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.CONNECT_ADAPTER',
1495 		'Could not release the lock, Channel name: '||p_ChannelName);
1496     end if;
1497 end if;
1498 if SQLCODE <> 0 then
1499  	p_retCode := SQLCODE;
1500  	p_errbuf :=  SQLERRM;
1501 else
1502 	p_retCode := pv_retAdapterOtherError;
1503  	p_errbuf := 'Other non-SQL error';
1504 END IF;
1505 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1506     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.CONNECT_ADAPTER',
1507 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1508 end if;
1509 end Connect_Adapter;
1510 
1511 
1512 Procedure Disconnect_Adapter(p_ChannelName in varchar2,
1513 	   	 	p_retcode OUT NOCOPY NUMBER,
1514 		 	p_errbuf OUT NOCOPY VARCHAR2)
1515 is
1516  l_CPID number;
1517  l_ProcessID number;
1518  l_CmdString varchar2(2000);
1519 begin
1520 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1521 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.DISCONNECT_ADAPTER',
1522 				'BEGIN:p_ChannelName: '||p_ChannelName);
1523 	end if;
1524 	p_retcode := 0;
1525 	p_errbuf := '';
1526 
1527         validate_operation(p_ChannelName => p_ChannelName,
1528                              p_Operation => XDP_ADAPTER.pv_opDisconnect,
1529                              p_CPID => l_CPID,
1530                              p_ProcessID => l_ProcessID,
1531                              p_retcode => p_retcode,
1532                              p_errbuf => p_errbuf);
1533 
1534         if p_retcode <> 0 then
1535             return;
1536         END IF;
1537 
1538 	if (XDP_ADAPTER_CORE_DB.Is_Adapter_Implemented (p_ChannelName)) then
1539 
1540 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1541 			p_ChannelName => p_ChannelName,
1542 			p_Status => pv_statusDisconnecting);
1543 
1544 		l_CmdString := p_ChannelName || pv_SMParamDelimiter;
1545 
1546 		XDP_CONTROLLER_CORE.DisconnectAdapter(l_CPID, l_CmdString);
1547 
1548 	else
1549 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1550 			p_ChannelName => p_ChannelName,
1551 			p_Status => pv_statusDisconnected);
1552 	end if;
1553 
1554 	if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N' then
1555 	    if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1556 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.DISCONNECT_ADAPTER',
1557 			'Could not release the lock, Channel name: '||p_ChannelName);
1558 	    end if;
1559 	end if;
1560 
1561 exception
1562 
1563 when others then
1564 if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
1565     if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1566 	FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.DISCONNECT_ADAPTER',
1567 		'Could not release the lock, Channel name: '||p_ChannelName);
1568     end if;
1569 end if;
1570 if SQLCODE <> 0 then
1571  	p_retCode := SQLCODE;
1572  	p_errbuf :=  SQLERRM;
1573 else
1574 	p_retCode := pv_retAdapterOtherError;
1575  	p_errbuf := 'Other non-SQL error';
1576 END IF;
1577 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1578     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.DISCONNECT_ADAPTER',
1579 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1580 end if;
1581 end Disconnect_Adapter;
1582 
1583 
1584 Procedure Terminate_Adapter(p_ChannelName in varchar2,
1585 	   	 	p_retcode OUT NOCOPY NUMBER,
1586 		 	p_errbuf OUT NOCOPY VARCHAR2)
1587 is
1588 
1589  l_CPID number;
1590  l_CmdString varchar2(2000);
1591  l_ProcessID number;
1592 begin
1593 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1594 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.TERMINATE_ADAPTER',
1595 				'BEGIN:p_ChannelName: '||p_ChannelName);
1596 	end if;
1597 	p_retcode := 0;
1598 	p_errbuf := '';
1599 
1600         validate_operation(p_ChannelName => p_ChannelName,
1601                              p_Operation => XDP_ADAPTER.pv_opTerminate,
1602                              p_CPID => l_CPID,
1603                              p_ProcessID => l_ProcessID,
1604                              p_retcode => p_retcode,
1605                              p_errbuf => p_errbuf);
1606 
1607         if p_retcode <> 0 then
1608             return;
1609         END IF;
1610 
1611 	if (XDP_ADAPTER_CORE_DB.Is_Adapter_Implemented (p_ChannelName)) then
1612 
1613 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1614 				p_ChannelName => p_ChannelName,
1615 				p_Status => pv_statusTerminating);
1616 
1617 		l_CmdString := p_ChannelName || pv_SMParamDelimiter ||
1618 				l_ProcessID || pv_SMParamDelimiter;
1619 
1620 		XDP_CONTROLLER_CORE.TerminateAdapter(l_CPID, l_CmdString);
1621 	else
1622 		XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1623 			p_ChannelName => p_ChannelName,
1624 			p_Status => pv_statusTerminated,
1625 			p_ErrorMsg => 'XDP_ADAPTER_TERMINATED');
1626 	end if;
1627 
1628 	if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N' then
1629 	   if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1630 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.TERMINATE_ADAPTER',
1631 			'Could not release the lock, Channel name: '||p_ChannelName);
1632 	   end if;
1633 	end if;
1634 
1635 exception
1636 
1637 when others then
1638 if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
1639     if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1640 	FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.TERMINATE_ADAPTER',
1641 		'Could not release the lock, Channel name: '||p_ChannelName);
1642     end if;
1643 end if;
1644 if SQLCODE <> 0 then
1645  	p_retCode := SQLCODE;
1646  	p_errbuf :=  SQLERRM;
1647 else
1648 	p_retCode := pv_retAdapterOtherError;
1649  	p_errbuf := 'Other non-SQL error';
1650 END IF;
1651 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1652     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.TERMINATE_ADAPTER',
1653 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1654 end if;
1655 end Terminate_Adapter;
1656 
1657 -- Return the Exit code of the Adapter
1658 Function get_adapter_exit_code return varchar2
1659 is
1660 begin
1661  return pv_AdapterExitCode;
1662 end get_adapter_exit_code;
1663 
1664 
1665 /******** Commented out START - sacsharm - **************************
1666 
1667 --------------- Use XDPATYP?.pls instead ----------------------------
1668 Procedure CreateNewAdapterType( p_AdapterType in varchar2,
1669 				p_AdapterClass in varchar2,
1670 				p_ApplicationMode in varchar2,
1671 				p_InboundReqFlag in varchar2 default 'N',
1672 				p_SyncBufSize in number default 2000,
1673 				p_CmdLineOpts in varchar2 default NULL,
1674 				p_CmdLineArgs in varchar2 default NULL)
1675 is
1676 
1677 begin
1678 
1679  XDP_ADAPTER_CORE_DB.LoadNewAdapterType(p_AdapterType,
1680 	 				p_AdapterClass,
1681 					p_ApplicationMode,
1682 					p_InboundReqFlag,
1683 					p_SyncBufSize,
1684 					p_CmdLineOpts,
1685 					p_CmdLineArgs);
1686 
1687 end CreateNewAdapterType;
1688 
1689 
1690 
1691 ********* Commented out START - sacsharm - *************************/
1692 
1693 FUNCTION  Is_Adapter_Configured(
1694           p_fe_id      IN NUMBER
1695           ) RETURN BOOLEAN
1696 IS
1697    lv_result BOOLEAN := FALSE ;
1698    lv_id NUMBER;
1699 
1700    CURSOR c1 IS
1701     SELECT 'x' FROM
1702           xdp_fes,
1703           xdp_adapter_reg
1704     WHERE xdp_fes.fe_id = p_fe_id
1705     AND   xdp_fes.fe_id = xdp_adapter_reg.fe_id;
1706 
1707 BEGIN
1708    lv_result:=FALSE;
1709 
1710     FOR c1_rec IN c1
1711         LOOP
1712            lv_result:=TRUE;
1713         END LOOP;
1714 
1715     RETURN  lv_result;
1716 
1717     EXCEPTION
1718         WHEN NO_DATA_FOUND THEN
1719          lv_result:= FALSE;
1720          RETURN  lv_result;
1721 END Is_Adapter_Configured;
1722 
1723 
1724 FUNCTION Get_Adapter_Log_File_URL(p_channel_name in VARCHAR2,
1725                                   p_gwyuid in VARCHAR2,
1726                                   p_two_task in VARCHAR2) return VARCHAR2
1727 
1728 AS
1729   l_log_file_name    xdp_adapter_reg_v.log_file_name%TYPE;
1730   l_target_node      xdp_adapter_reg_v.target_node%TYPE;
1731   l_file_id          fnd_file_temp.file_id%TYPE;
1732   l_url              VARCHAR2(2000);
1733 
1734 BEGIN
1735 
1736   SELECT log_file_name, target_node
1737   INTO l_log_file_name, l_target_node
1738   FROM xdp_adapter_reg_v
1739   WHERE channel_name = p_channel_name;
1740 
1741   -- Comment back in the below two lines when FND provides the API
1742   l_file_id := Fnd_Webfile.create_id(l_log_file_name, l_target_node);
1743   l_url := Fnd_Webfile.get_url(Fnd_Webfile.generic_log, l_file_id, p_gwyuid, p_two_task, 10);
1744 
1745   return l_url;
1746 END Get_Adapter_Log_File_URL;
1747 
1748 FUNCTION Add_Log_File_Extension(p_file_name in VARCHAR2) return VARCHAR2
1749 
1750 AS
1751   l_result 	VARCHAR2(200) 	:= p_file_name;
1752   name_length 	NUMBER		:= LENGTH(p_file_name);
1753   ext_length    NUMBER 		:= LENGTH(pv_logFileExtension);
1754 
1755 BEGIN
1756 
1757   -- Add '.log' as a suffix if it's not present already
1758   IF (INSTR(p_file_name, pv_logFileExtension, name_length - ext_length) = 0)
1759   THEN
1760 	l_result := p_file_name || pv_logFileExtension;
1761   END IF;
1762 
1763   return l_result;
1764 
1765 END Add_Log_File_Extension;
1766 
1767 
1768 Procedure Verify_Adapter (p_ChannelName in varchar2,
1769 	   	 	p_retcode OUT NOCOPY NUMBER,
1770 		 	p_errbuf OUT NOCOPY VARCHAR2)
1771 is
1772 
1773  l_FeID number;
1774  l_ProcessID number;
1775  l_ConcQID number;
1776 
1777  l_AdapterLocked varchar2(1) := 'N';
1778  l_AdapterLocked1 varchar2(1) := 'N';
1779  l_CurrentStatus varchar2(30);
1780 
1781 begin
1782 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1783 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.VERIFY_ADAPTER',
1784 				'BEGIN:p_ChannelName: '||p_ChannelName);
1785 	end if;
1786 	p_retcode := 0;
1787 	p_errbuf := '';
1788 
1789 	if p_ChannelName is null then
1790 	    if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1791 		FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VERIFY_ADAPTER',
1792 					'Required parameters are not passed');
1793 	    end if;
1794             raise e_RequiredInputDataNotPassed;
1795 	end if;
1796 
1797 	if not XDP_ADAPTER_CORE.VerifyAdapterOperation(p_ChannelName,
1798 				XDP_ADAPTER.pv_opVerify,
1799 				l_CurrentStatus) then
1800 		raise e_InvalidAdapterState;
1801 	end if;
1802 
1803 	--Hold session lock only for state change operations - bug3300862
1804 	--l_AdapterLocked := XDP_ADAPTER_CORE_DB.ObtainAdapterLock_Verify(p_ChannelName);
1805 	--if l_AdapterLocked = 'N' then
1806 	--	raise e_UnabletoLockAdapter;
1807 	--end if;
1808 
1809 	if (XDP_ADAPTER_CORE_DB.Is_Adapter_Implemented (p_ChannelName)) then
1810 
1811 		l_AdapterLocked1 := XDP_ADAPTER_CORE_DB.ObtainAdapterLock_Verify('SESSION_'||p_ChannelName);
1812 
1813 		if l_AdapterLocked1 = 'Y' then
1814 
1815 			-- Adapter NOT running, release the SESSION lock
1816 
1817 			--dbms_output.put_line('Got SESSION lock for: ' || p_ChannelName);
1818 			--dbms_output.put_line('Adapter NOT RUNNING');
1819 
1820 			if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock('SESSION_'||p_ChannelName) = 'N' then
1821 			   if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1822 				FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.VERIFY_ADAPTER',
1823 					'Could not release SESSION lock, Channel name: '||p_ChannelName);
1824 			   end if;
1825 			end if;
1826 
1827 			XDP_ADAPTER_CORE_DB.FetchAdapterInfo(
1828 				p_ChannelName => p_ChannelName,
1829 				p_FEID => l_FeID,
1830 	  			p_ProcessID => l_ProcessID,
1831 	  			p_ConcQID => l_ConcQID);
1832 
1833 			XDP_ADAPTER_CORE_DB.Update_Adapter_Status(
1834 					p_ChannelName,
1835 					pv_statusStoppedError,
1836 					'XDP_ADAPTER_ABNORMAL_EXIT',
1837 					'PROCESS_ID='||l_ProcessID||'#XDP#');
1838 
1839 			raise e_OperationFailure;
1840 		else
1841 			--dbms_output.put_line('Did not get SESSION lock for: ' || p_ChannelName);
1842 			--dbms_output.put_line('Adapter RUNNING');
1843 
1844 			-- Could not get lock, Adapter running, update last_verified_date
1845 			XDP_ADAPTER_CORE_DB.UpdateAdapter (
1846 					p_ChannelName => p_ChannelName,
1847 					p_LastVerified => sysdate);
1848 		end if;
1849 	else
1850 		-- Adapter not implemented, so Adapter is 'running', update last_verified_date
1851 		XDP_ADAPTER_CORE_DB.UpdateAdapter (
1852 				p_ChannelName => p_ChannelName,
1853 				p_LastVerified => sysdate);
1854 	end if;
1855 
1856 exception
1857 
1858 when e_InvalidAdapterState then
1859 	p_retCode := pv_retAdapterInvalidState;
1860 	FND_MESSAGE.CLEAR;
1861 	fnd_message.set_name('XDP','XDP_INVALID_ADAPTER_STATE');
1862  	p_errbuf := FND_MESSAGE.GET;
1863 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1864   	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VERIFY_ADAPTER',
1865 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1866 	end if;
1867 
1868 when e_OperationFailure then
1869 	p_retCode := pv_retAdapterAbnormalExit;
1870 	FND_MESSAGE.CLEAR;
1871 	fnd_message.set_name('XDP','XDP_ADAPTER_ABNORMAL_EXIT');
1872 	fnd_message.set_token('PROCESS_ID' , l_ProcessID);
1873  	p_errbuf := FND_MESSAGE.GET;
1874 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1875 	   FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VERIFY_ADAPTER',
1876 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1877 	end if;
1878 when others then
1879 if l_AdapterLocked1 = 'Y' then
1880 	if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock('SESSION_'||p_ChannelName) = 'N' then
1881 	    if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1882 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.VERIFY_ADAPTER',
1883 			'Could not release SESSION lock, Channel name: '||p_ChannelName);
1884 	    end if;
1885 	end if;
1886 end if;
1887 
1888 if SQLCODE <> 0 then
1889  	p_retCode := SQLCODE;
1890  	p_errbuf :=  SQLERRM;
1891 else
1892 	p_retCode := pv_retAdapterOtherError;
1893  	p_errbuf := 'Other non-SQL error';
1894 END IF;
1895 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1896     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VERIFY_ADAPTER',
1897 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
1898 end if;
1899 end Verify_Adapter;
1900 
1901 PROCEDURE  Verify_Running_Adapters (p_controller_instance_id IN NUMBER,
1902 				x_adapter_info OUT NOCOPY VARCHAR2,
1903 	   	 		p_retcode OUT NOCOPY NUMBER,
1904 			 	p_errbuf OUT NOCOPY VARCHAR2)
1905 is
1906 
1907 BEGIN
1908 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1909 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.VERIFY_RUNNING_ADAPTERS', 'BEGIN:');
1910 	end if;
1911 
1912 	x_adapter_info := 'NONE';
1913 	p_retcode := 0;
1914 
1915 	for v_AdapterPID in XDP_ADAPTER_CORE_DB.G_Get_Running_Adapters
1916 					(p_controller_instance_id) loop
1917 
1918 		if (v_AdapterPID.is_implemented = 'Y') then
1919 
1920 			if (((v_AdapterPID.process_id > 0) AND
1921 				(v_AdapterPID.adapter_status <> XDP_ADAPTER.pv_statusStarting))
1922 			OR
1923 			((v_AdapterPID.adapter_status = XDP_ADAPTER.pv_statusStarting) AND
1924 				((v_AdapterPID.STATUS_ACTIVE_TIME + (5/(60*24))) < SYSDATE))) then
1925 				-- To take care of STARTING adapters, check after 5 minutes
1926 				-- if they are still in STARTING state
1927 
1928 				XDP_ADAPTER.Verify_Adapter (
1929 					p_ChannelName 	=> v_AdapterPID.channel_name,
1930 			   	 	p_retcode 	=> p_retcode,
1931 				 	p_errbuf 	=> p_errbuf);
1932 
1933 				if ((p_retcode <> 0) and
1934 					(p_retcode <> XDP_ADAPTER.pv_retAdapterAbnormalExit) and
1935 					(p_retcode <> XDP_ADAPTER.pv_retAdapterInvalidState)) then
1936 						-- pv_retAdapterInvalidState means Adapter is
1937 						-- already Stopped (with error), terminated or
1938 						-- Not available
1939 						-- OK case for this
1940 
1941 					-- There are only 2 possibilities now, "CannotLock"
1942 					-- or some "when others" error
1943 					if( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1944 					    FND_LOG.STRING (FND_LOG.LEVEL_EXCEPTION,
1945 						'XDP_ADAPTER.VERIFY_RUNNING_ADAPTERS',
1946 						'XDP_ADAPTER.Verify_Adapter errored ChannelName: '||
1947 						v_AdapterPID.channel_name||', Errorcode: '||
1948 						p_retcode||', ErrorDesc: '||
1949 						p_errbuf);
1950 					end if;
1951 
1952 					if (p_retcode = XDP_ADAPTER.pv_retAdapterCannotLock) then
1953 
1954 						if x_adapter_info = 'NONE' then
1955 							-- First time
1956 							x_adapter_info := v_AdapterPID.channel_name||
1957 								XDP_ADAPTER.pv_SMParamDelimiter||
1958 								v_AdapterPID.process_id||
1959 								XDP_ADAPTER.pv_SMParamDelimiter;
1960 						else
1961 							x_adapter_info := x_adapter_info||
1962 								v_AdapterPID.channel_name||
1963 								XDP_ADAPTER.pv_SMParamDelimiter||
1964 								v_AdapterPID.process_id||
1965 								XDP_ADAPTER.pv_SMParamDelimiter;
1966 						end if;
1967 					else
1968 						-- Some "when others" error
1969 						raise e_OperationFailure;
1970 					END IF;
1971 				END IF;
1972 
1973 				commit;
1974 
1975 			else
1976 				if( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1977 				FND_LOG.STRING (FND_LOG.LEVEL_EXCEPTION,
1978 					'XDP_ADAPTER.VERIFY_RUNNING_ADAPTERS',
1979 					'Adapter verification ignored ChannelName: '||
1980 					v_AdapterPID.channel_name||', process id: '||
1981 					v_AdapterPID.process_id||', AdapterStatus: '||
1982 					v_AdapterPID.adapter_status);
1983 				end if;
1984 			end if;
1985 
1986 		end if;
1987 	end loop;
1988 
1989 	p_retcode := 0;
1990 	if( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
1991 	    FND_LOG.STRING (FND_LOG.LEVEL_EXCEPTION, 'XDP_ADAPTER.VERIFY_RUNNING_ADAPTERS',
1992 			'Adapters still required to be verified: '||x_adapter_info);
1993 	end if;
1994 exception
1995 when e_OperationFailure then
1996 x_adapter_info := 'NONE';
1997 -- p_retcode and p_errbuf are already set
1998 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
1999      FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VERIFY_RUNNING_ADAPTERS',
2000 	'Verify_Adapter returned Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
2001 end if;
2002 when others then
2003 x_adapter_info := 'NONE';
2004 if SQLCODE <> 0 then
2005  	p_retCode := SQLCODE;
2006  	p_errbuf :=  SQLERRM;
2007 else
2008 	p_retCode := pv_retAdapterOtherError;
2009  	p_errbuf := 'Other non-SQL error';
2010 END IF;
2011 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2012     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VERIFY_RUNNING_ADAPTERS',
2013 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
2014 end if;
2015 end Verify_Running_Adapters;
2016 
2017 
2018 Procedure Verify_All_Adapters ( p_retcode	OUT NOCOPY NUMBER,
2019 				p_errbuf	OUT NOCOPY VARCHAR2
2020 				)
2021 IS
2022 
2023 l_CustomParamList 	varchar2(4000);
2024 
2025 BEGIN
2026 	p_retcode := 0;
2027 
2028 	for v_GetSvcID in XDP_ADAPTER_CORE_DB.G_Get_Controller_Instances loop
2029 
2030 		l_CustomParamList := 'NONE';
2031 
2032 		XDP_ADAPTER.Verify_Running_Adapters (
2033 					p_controller_instance_id => v_GetSvcID.service_instance_id,
2034 					x_adapter_info => l_CustomParamList,
2035 					p_retcode => p_retcode,
2036 					p_errbuf => p_errbuf);
2037 
2038 		-- We donot care for Adapters that could not be verified i.e. locked for
2039 		-- verification
2040 
2041 		if (p_retcode <> 0) then
2042 			raise e_OperationFailure;
2043 		end if;
2044 
2045 	end loop;
2046 
2047 exception
2048 when e_OperationFailure then
2049 -- p_retcode and p_errbuf are already set
2050 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2051     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VERIFY_ALL_ADAPTERS',
2052 	'Verify_Running_Adapters returned Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
2053 end if;
2054 when others then
2055 if SQLCODE <> 0 then
2056  	p_retCode := SQLCODE;
2057  	p_errbuf :=  SQLERRM;
2058 else
2059 	p_retCode := pv_retAdapterOtherError;
2060  	p_errbuf := 'Other non-SQL error';
2061 END IF;
2062 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2063     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VERIFY_ALL_ADAPTERS',
2064 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
2065 end if;
2066 END Verify_All_Adapters;
2067 
2068 Procedure Verify_Adapters (p_FilterType IN varchar2,
2069 				p_FilterKey 	IN VARCHAR2,
2070 				p_retcode	OUT NOCOPY NUMBER,
2071 				p_errbuf	OUT NOCOPY VARCHAR2
2072 				)
2073 IS
2074 
2075 TYPE t_FlexibleRef IS REF CURSOR;
2076 cv_Channelname	t_FlexibleRef;
2077 sql_stmt 	VARCHAR2(4000);
2078 
2079 l_ChannelName		XDP_ADAPTER_REG.CHANNEL_NAME%TYPE;
2080 l_ProcessID 		XDP_ADAPTER_REG.PROCESS_ID%TYPE;
2081 l_AdapterStatus 	XDP_ADAPTER_REG.ADAPTER_STATUS%TYPE;
2082 l_StatusActiveTime	XDP_ADAPTER_REG.STATUS_ACTIVE_TIME%TYPE;
2083 
2084 BEGIN
2085 	p_retcode := 0;
2086 
2087 	if p_FilterKey is null or p_FilterType is null then
2088 		Verify_All_Adapters ( p_retcode	=> p_retcode,
2089 				p_errbuf => p_errbuf);
2090 	else
2091 
2092 		sql_stmt := 'select CHANNEL_NAME, PROCESS_ID, ADAPTER_STATUS, STATUS_ACTIVE_TIME from XDP_ADAPTER_REG_V a, XDP_ADAPTER_TYPES_B b where ADAPTER_STATUS not in ';
2093 		sql_stmt := sql_stmt||'('''||XDP_ADAPTER.pv_statusStopped||''','''||XDP_ADAPTER.pv_statusStoppedError||''','''||XDP_ADAPTER.pv_statusTerminated||''','''||XDP_ADAPTER.pv_statusNotAvailable||''',''';
2094 		sql_stmt := sql_stmt||XDP_ADAPTER.pv_statusDeactivated||''','''||XDP_ADAPTER.pv_statusDeactivatedSystem||''')';
2095 		sql_stmt := sql_stmt||' and a.adapter_type = b.adapter_type and b.adapter_class <> ''NONE'' and UPPER('||p_FilterType||') like UPPER('''||p_FilterKey||''')';
2096 
2097 		--XDP_UTILITIES.DISPLAY('sql_stmt:'||sql_stmt||':');
2098 
2099 		OPEN cv_ChannelName FOR sql_stmt ;
2100 		LOOP
2101 		FETCH cv_ChannelName INTO l_ChannelName, l_ProcessID, l_AdapterStatus, l_StatusActiveTime;
2102 			EXIT WHEN cv_ChannelName%NOTFOUND;
2103 
2104 			if (((l_ProcessID > 0) AND
2105 					(l_AdapterStatus <> XDP_ADAPTER.pv_statusStarting))
2106 				OR
2107 			((l_AdapterStatus = XDP_ADAPTER.pv_statusStarting) AND
2108 				((l_StatusActiveTime + (5/(60*24))) < SYSDATE))) then
2109 
2110 				XDP_ADAPTER.Verify_Adapter (
2111 					p_ChannelName 	=> l_ChannelName,
2112 			   	 	p_retcode 	=> p_retcode,
2113 				 	p_errbuf 	=> p_errbuf);
2114 
2115 				if ((p_retcode <> 0) and
2116 					(p_retcode <> XDP_ADAPTER.pv_retAdapterInvalidState) and
2117 					(p_retcode <> XDP_ADAPTER.pv_retAdapterAbnormalExit) and
2118 					(p_retcode <> XDP_ADAPTER.pv_retAdapterCannotLock)) then
2119 						raise e_OperationFailure;
2120 				END IF;
2121 			END IF;
2122 
2123 			commit;
2124 
2125 		END LOOP;
2126 
2127 		CLOSE cv_ChannelName;
2128 
2129 	END IF;
2130 
2131 	p_retcode := 0;
2132 
2133 exception
2134 
2135 when e_OperationFailure then
2136 if cv_ChannelName%ISOPEN then
2137 	CLOSE cv_ChannelName;
2138 END IF;
2139 -- p_retcode and p_errbuf are already set
2140 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2141     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VERIFY_ADAPTERS',
2142 	'Verify_Adapter returned Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
2143 end if;
2144 when others then
2145 if cv_ChannelName%ISOPEN then
2146 	CLOSE cv_ChannelName;
2147 END IF;
2148 -- p_retcode and p_errbuf are already set
2149 if SQLCODE <> 0 then
2150  	p_retCode := SQLCODE;
2151  	p_errbuf :=  SQLERRM;
2152 else
2153 	p_retCode := pv_retAdapterOtherError;
2154  	p_errbuf := 'Other non-SQL error';
2155 END IF;
2156 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2157     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VERIFY_ADAPTERS',
2158 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
2159 end if;
2160 END Verify_Adapters;
2161 
2162 -- This procedure is called by Controller to reset status of automatic adpaters
2163 -- having status pv_statusDeactivatedSystem to pv_statusStopped
2164 -- So it is an automatic adapter and status is DEACTIVATED_SYSTEM is assumed
2165 -- and not checked.
2166 
2167 Procedure Reset_SysDeactivated_Adapter (p_ChannelName in varchar2,
2168 				p_ResetStatusFlag in boolean default true)
2169 IS
2170 
2171  l_AdapterLocked varchar2(1) := 'N';
2172 
2173 BEGIN
2174 	l_AdapterLocked := XDP_ADAPTER_CORE_DB.ObtainAdapterLock_Verify(p_ChannelName);
2175 	if l_AdapterLocked = 'N' then
2176 		return;
2177 	else
2178 		if (p_ResetStatusFlag) then
2179 			XDP_ADAPTER_CORE_DB.UpdateAdapter(
2180 				p_ChannelName => p_ChannelName,
2181 				p_Status => pv_statusStopped);
2182 		END IF;
2183 
2184 		-- Reset start error count to 0
2185 
2186 		XDP_ERRORS_PKG.UPDATE_ERROR_COUNT (
2187 			p_object_type => XDP_ADAPTER.pv_errorObjectTypeAdapter,
2188 			p_object_key => p_ChannelName);
2189 
2190 		if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
2191 		   if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
2192 			FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.RESET_SYSDEACTIVATED_ADAPTER',
2193 				'Could not release the lock, Channel name: '||p_ChannelName);
2194 		   end if;
2195 	 	end if;
2196 	end if;
2197 
2198 exception
2199 
2200 when others then
2201 
2202 if l_AdapterLocked = 'Y' then
2203 	if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
2204 	   if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
2205 		FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.RESET_SYSDEACTIVATED_ADAPTER',
2206 			'Could not release the lock, Channel name: '||p_ChannelName);
2207 	   end if;
2208  	end if;
2209 end if;
2210 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2211     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.RESET_SYSDEACTIVATED_ADAPTER',
2212 	'Unhandled error, SQLCODE: '||SQLCODE);
2213 end if;
2214 END Reset_SysDeactivated_Adapter;
2215 
2216 PROCEDURE  Reset_SysDeactivated_Adapters (p_controller_instance_id IN NUMBER)
2217 is
2218 BEGIN
2219 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
2220 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.RESET_SYSDEACTIVATED_ADAPTERS', 'BEGIN:');
2221 	end if;
2222 
2223 	for v_SysDeactivatedAdapter in XDP_ADAPTER_CORE_DB.G_Get_SysDeactivated_Adapters
2224 					(p_controller_instance_id) loop
2225 
2226 		if (v_SysDeactivatedAdapter.adapter_status = XDP_ADAPTER.pv_statusDeactivatedSystem) then
2227 
2228 			XDP_ADAPTER.Reset_SysDeactivated_Adapter (
2229 				p_ChannelName => v_SysDeactivatedAdapter.channel_name);
2230 		else
2231 			XDP_ADAPTER.Reset_SysDeactivated_Adapter (
2232 				p_ChannelName => v_SysDeactivatedAdapter.channel_name,
2233 				p_ResetStatusFlag => false);
2234 		END IF;
2235 
2236 		commit;
2237 
2238 	end loop;
2239 
2240 exception
2241 
2242 when others then
2243 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2244     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.RESET_SYSDEACTIVATED_ADAPTERS',
2245 	'Unhandled error, SQLCODE: '||SQLCODE);
2246 end if;
2247 end RESET_SYSDEACTIVATED_ADAPTERS;
2248 
2249 Procedure validate_operation(p_ChannelName in varchar2, p_Operation in varchar2,
2250                         p_CPID OUT NOCOPY NUMBER,
2251                         p_ProcessID OUT NOCOPY NUMBER,
2252 	   	 	p_retcode OUT NOCOPY NUMBER,
2253 		 	p_errbuf OUT NOCOPY VARCHAR2)
2254 is
2255  l_CurrentStatus varchar2(30);
2256 
2257  l_FeID number;
2258  l_ConcQID number;
2259  l_Flag varchar2(10);
2260 begin
2261 	if( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
2262 	    FND_LOG.STRING (FND_LOG.LEVEL_PROCEDURE, 'XDP_ADAPTER.VALIDATE_OPERATION',
2263 				'BEGIN:p_ChannelName: '||p_ChannelName);
2264 	end if;
2265 	p_retcode := 0;
2266 	p_errbuf := '';
2267 
2268 	if p_ChannelName is null then
2269 	    if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2270 		FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VALIDATE_OPERATION',
2271 					'Required parameters are not passed');
2272 	   end if;
2273  	   raise e_RequiredInputDataNotPassed;
2274 	end if;
2275 
2276         --Verify adapter state for operation only if operation is not Terminate
2277         if (p_Operation <> XDP_ADAPTER.pv_opTerminate) then
2278             if not XDP_ADAPTER_CORE.VerifyAdapterOperation(p_ChannelName, p_Operation,
2279                                                            l_CurrentStatus) then
2280                     raise e_InvalidAdapterState;
2281             end if;
2282 	END IF;
2283 
2284         --Hold session lock only for state change operations - bug3300862
2285         if (p_Operation <> XDP_ADAPTER.pv_opGeneric) then
2286             if (XDP_ADAPTER_CORE_DB.ObtainAdapterLock_Verify(p_ChannelName) = 'N') then
2287                 raise e_UnabletoLockAdapter;
2288             end if;
2289         END IF;
2290 
2291         -- Though Controller is only needed for implemented adapter types but to give consistent
2292         -- response for non-implemented adapter types we should always check if Controller
2293         -- is up.
2294 	if (XDP_ADAPTER_CORE_DB.Is_Adapter_Implemented (p_ChannelName)) then
2295 
2296                 -- We need to retrieve process id, Verify_Adapter could set it to -1
2297                 XDP_ADAPTER_CORE_DB.FetchAdapterInfo(
2298 			p_ChannelName => p_ChannelName,
2299 			p_FEID => l_FeID,
2300 			p_ProcessID => p_ProcessID,
2301 			p_ConcQID => l_ConcQID);
2302 
2303         	--Verify adapter state for operation only if operation is not Start
2304 		if (p_Operation <> XDP_ADAPTER.pv_opStartup) then
2305                     -- Cannot use Verify_Adapter API as call to update row has to be autonomous
2306                     if not XDP_ADAPTER_CORE_DB.Verify_Adapter (p_ChannelName) then
2307                         if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N' then
2308 			    if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
2309                                 FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.VALIDATE_OPERATION',
2310                                     'Could not release the lock, Channel name: '||p_ChannelName);
2311 		            end if;
2312                         end if;
2313 
2314                         raise e_OperationFailure;
2315                     END IF;
2316                 END IF;
2317 
2318                 XDP_CONTROLLER_CORE.VerifyControllerStatus(l_ConcQID, p_CPID, l_Flag);
2319                 if l_Flag = 'N' then
2320                     if XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N' then
2321 		        if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
2322                             FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.VALIDATE_OPERATION',
2323                             'Could not release the lock, Channel name: '||p_ChannelName);
2324 			end if;
2325                     end if;
2326 
2327                     raise e_ControllerNotRunning;
2328                 end if;
2329 
2330 	end if;
2331 
2332 exception
2333 when e_OperationFailure then
2334 	FND_MESSAGE.CLEAR;
2335 	p_retCode := pv_retAdapterCommFailed;
2336 	-- p_retCode := pv_retAdapterAbnormalExit;
2337 	fnd_message.set_name('XDP','XDP_ADAPTER_ABNORMAL_EXIT');
2338 	fnd_message.set_token('PROCESS_ID' , p_ProcessID);
2339 
2340 	p_errbuf := FND_MESSAGE.GET;
2341 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2342 	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VALIDATE_OPERATION',
2343 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
2344 	end if;
2345 
2346 when e_InvalidAdapterState then
2347 	p_retCode := pv_retAdapterInvalidState;
2348 	FND_MESSAGE.CLEAR;
2349 	fnd_message.set_name('XDP','XDP_INVALID_ADAPTER_STATE');
2350  	p_errbuf := FND_MESSAGE.GET;
2351 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2352 	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VALIDATE_OPERATION',
2353 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
2354 	end if;
2355 when e_UnabletoLockAdapter then
2356 	p_retCode := pv_retAdapterCannotLock;
2357 	FND_MESSAGE.CLEAR;
2358 	fnd_message.set_name('XDP','XDP_ADAPTER_UNLOCKABLE');
2359  	p_errbuf := FND_MESSAGE.GET;
2360 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2361 	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VALIDATE_OPERATION',
2362 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
2363 	end if;
2364 when e_ControllerNotRunning then
2365 	p_retCode := pv_retAdapterCtrlNotRunning;
2366 	FND_MESSAGE.CLEAR;
2367 	fnd_message.set_name('XDP','XDP_CONTROLLER_NOT_RUNNING');
2368  	p_errbuf := FND_MESSAGE.GET;
2369 	if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2370 	    FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VALIDATE_OPERATION',
2371 		'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
2372 	end if;
2373 when others then
2374 if (XDP_ADAPTER_CORE_DB.ReleaseAdapterLock(p_ChannelName) = 'N') then
2375     if( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then --Fix Bug: 4256771, dputhiye, 28 Apr 05
2376 	FND_LOG.STRING (FND_LOG.LEVEL_UNEXPECTED, 'XDP_ADAPTER.VALIDATE_OPERATION',
2377 		'Could not release the lock, Channel name: '||p_ChannelName);
2378     end if;
2379 end if;
2380 if SQLCODE <> 0 then
2381  	p_retCode := SQLCODE;
2382  	p_errbuf :=  SQLERRM;
2383 else
2384 	p_retCode := pv_retAdapterOtherError;
2385  	p_errbuf := 'Other non-SQL error';
2386 END IF;
2387 if( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) then     --Fix Bug: 4256771, dputhiye, 28 Apr 05
2388     FND_LOG.STRING (FND_LOG.LEVEL_ERROR, 'XDP_ADAPTER.VALIDATE_OPERATION',
2389 	'Error code: '||p_retCode||' ,Error desc: '||p_errbuf);
2390 end if;
2391 end validate_operation;
2392 
2393 END XDP_ADAPTER;