DBA Data[Home] [Help]

PACKAGE BODY: APPS.HRKPI

Source


1 package body hrkpi as
2 /* $Header: hrkpi01.pkb 115.10 2002/12/03 13:22:50 apholt noship $ */
3 
4 
5 procedure generic_error(routine in varchar2,
6                         errcode in number,
7                         errmsg in varchar2) is
8 l_msg varchar2(2000);
9 begin
10     fnd_message.set_name('FND', 'SQL_PLSQL_ERROR');
11     fnd_message.set_token('ROUTINE', routine);
12     fnd_message.set_token('ERRNO', errcode);
13     fnd_message.set_token('REASON', errmsg);
14     fnd_message.raise_error;
15 end;
16 
17   function request_pvt (context in varchar2, cookie in out nocopy varchar2)
18      return varchar2 as language java name
19   'oracle.apps.per.proxy.client.forms.Client.callServer(java.lang.String, java.lang.String[]) return String' ;
20 
21   --
22   -- We make request() an autonmous tranaction so that it can be called
23   -- from sql. In particular in the getadapters() routine
24   --
25   function request (context in varchar2, cookie in out nocopy varchar2)
26   return varchar2 is
27   pragma autonomous_transaction ;
28   l_dbc varchar2(100);
29   l_ctx varchar2(100);
30 begin
31    -- find the dbc filename
32    select fnd_web_config.database_id
33    into l_dbc
34    from dual;
35 
36    l_ctx := context || ':-:' || l_dbc;
37    hr_utility.trace('--> ' || l_ctx);
38 
39    return(request_pvt(l_ctx, cookie));
40   end ;
41 
42   procedure parseResponse_pvt (response  in     varchar2,
43                                cmd       in out nocopy varchar2,
44                                action    in out nocopy varchar2)
45     as language java name
46       'oracle.apps.per.proxy.client.forms.FormsMessage.parseResponse(java.lang.String, java.lang.String[],java.lang.String[])' ;
47 
48   procedure parseResponse (response  in     varchar2,
49                            cmd       in out nocopy varchar2,
50                            action    in out nocopy varchar2) is
51   begin
52 
53        parseResponse_pvt(response,cmd,action);
54 
55    exception when others
56    then
57         generic_error(routine=>'HRKPI' ,
58                       errcode=>null,
59                       errmsg=> sqlerrm ) ;
60   end parseResponse;
61 
62 
63   --
64   -- For M1 return a list of numbers
65   --
66 
67 
68   function getadapters return hr_nvpair_tab_t is
69 
70      l_response varchar2(2000);
71      l_cmd      varchar2(255);
72      l_action   varchar2(2000);
73      l_entry    number := 1;
74      l_position_l number := 1;
75      l_position_m number;
76      l_position_r number;
77      l_cmdsep   varchar2(10) := ':';
78      l_cmdsep_len number;
79      l_name     varchar2(40);
80      l_value    varchar2(240);
81      l_done     boolean := false;
82      l_retval   hr_nvpair_tab_t := hr_nvpair_tab_t();
83      l_store    hr_nvpair_t;
84      l_cookie   varchar2(100) := '';
85      e_fatal_error exception;
86 
87   begin
88 
89      -- get list of adapters
90      -- use a null cookie
91      l_response := request('GETADAPTERS',l_cookie);
92      --l_response := 'SETADAPTERS:1:ONE:2:TWO:3:THREE';
93 
94      -- parse response
95      parseResponse(l_response,
96                    l_cmd,
97                    l_action);
98 
99      if l_cmd='CLIENTERROR' then
100        raise e_fatal_error;
101      end if;
102 
103 
104      -- build up hr_nvpair_tab_t table
105      l_cmdsep_len := length(l_cmdsep);
106 
107      while (not l_done) loop
108 
109        -- find name / value
110        l_position_m := instr(l_action, l_cmdsep, l_position_l);
111        l_position_r := instr(l_action, l_cmdsep, l_position_l, 2);
112        if l_position_r = 0 then
113          l_position_r := length(l_action) + l_cmdsep_len;
114          l_done := true;
115        end if;
116 
117        -- store values into table
118        l_name  := substr(l_action, l_position_l,
119                          l_position_m - l_position_l);
120 
121        l_value := substr(l_action, l_position_m + l_cmdsep_len,
122                          l_position_r - l_position_m - l_cmdsep_len);
123 
124        l_store := hr_nvpair_t(l_name, l_value);
125 
126        l_retval.EXTEND;
127        l_retval(l_entry) := l_store;
128 
129        l_position_l := l_position_r + l_cmdsep_len;
130        l_entry := l_entry + 1;
131 
132      end loop;
133 
134 
135      return(l_retval);
136 
137      exception
138        when e_fatal_error then
139          generic_error(routine => 'hrkpi.getadapters',
140                        errcode =>  null,
141                        errmsg  =>  l_action);
142 
143 
144   end getadapters;
145 
146   --
147   -- For M1 return a list of numbers
148   --
149   function getevents return hr_extlib_evt_tab_t is
150   retval hr_extlib_evt_tab_t ;
151   begin
152 
153      retval := hr_extlib_evt_tab_t( hr_extlib_evt_t('1','1','2'),
154                                     hr_extlib_evt_t('2','2','3'),
155                                     hr_extlib_evt_t('3','3','4') ) ;
156      return(retval);
157 
158   end getevents;
159 
160 
161   --
162   -- Test routine
163   --
164   --   This starts dialog from Forms assuming current form
165   --   is PAYUSETW
166   --
167   procedure test is
168 
169   cmd      varchar2(50) ;
170   action   varchar2(50) ;
171   l_numext number ;
172 
173   procedure send(p_request in varchar2) is
174   l_cookie   varchar2(100) := '' ;
175   l_response varchar2(1000) ;
176   l_promptrx constant varchar2(40) := '<<<' ;
177   l_prompttx constant varchar2(40) := '>>>' ;
178   begin
179      l_response := request(p_request,l_cookie);
180      hr_utility.trace('SENT');
181      hr_utility.trace(l_prompttx||p_request);
182      hr_utility.trace('RECEIVED');
183      hr_utility.trace(l_promptrx||l_response);
184   end send;
185 
186   begin
187 
188      dbms_java.set_output(100000);
189      hr_utility.set_trace_options('TRACE_DEST:DBMS_OUTPUT');
190      hr_utility.trace_on;
191 
192      -- comment out before checking in unless we can assume fnd.b
193      -- is always installed
194 /*
195      fnd_aolj_util.getclassversionfromdb(
196                'oracle.apps.per.proxy.client.forms.Client');
197      fnd_aolj_util.getclassversionfromdb(
198                'oracle.apps.per.proxy.client.forms.FormsMessage');
199      fnd_aolj_util.getclassversionfromdb(
200                'oracle.apps.per.proxy.client.forms.UrlThread');
201      fnd_aolj_util.getclassversionfromdb(
202                'oracle.apps.per.proxy.client.forms.TimerThread');
203 
204 */
205 
206      send('INIT:DEV');
207      send('SETPRF:APPLWRK:/home/smcmilla/public_html/class2/');
208      send('SETCTXDEV:SYSTEM.CURRENT_FORM:PAYUSEET');
209      send('SETCTX:$PROFILES$:HR_KPI_USE_FIELD_CONTEXT:Y');
210      -- send('SETCTX:CTL.CONTEXT:STATE');
211 
212 --      send('GETADAPTERS');
213 
214   end ;
215 
216 
217   -- qqq Move to java side ??
218   procedure save_user_preference ( p_name  in varchar2,
219                                    p_value in varchar2 ) is
220   pragma autonomous_transaction;
221   begin
222 
223     if fnd_profile.save_user(p_name,p_value)
224     then
225        commit;
226     else
227        -- qqq should raise an error ?
228        null;
229     end if;
230 
231   end ;
232 
233 end hrkpi;