[Home] [Help]
PACKAGE BODY: APPS.EGO_SCTX
Source
1 PACKAGE BODY EGO_SCTX AS
2 /* $Header: EGOSCTXB.pls 115.0 2002/12/19 08:28:09 wwahid noship $ */
3 /*---------------------------------------------------------------------------+
4 | This package contains public API for Security Context |
5 +---------------------------------------------------------------------------*/
6
7 g_user_id NUMBER :=-1;
8 g_party_org_id NUMBER :=-1;
9 g_party_person_id NUMBER :=-1;
10 g_object_name VARCHAR2(30):='';
11 g_object_key NUMBER :=-1;
12 G_LANGUAGE_NAME VARCHAR2(30):='LANGUAGE';
13 G_USER_ID_NAME VARCHAR2(30):='USER_ID';
14 G_PARTY_ORG_ID_NAME VARCHAR2(30):='PARTY_ORG_ID';
15 G_PARTY_PERSON_ID_NAME VARCHAR2(30):='PARTY_PERSON_ID';
16 TYPE VARCHAR_TBL_TYPE IS TABLE OF VARCHAR2(2000)
17 INDEX BY BINARY_INTEGER;
18
19
20
21 --Private. Parse the name value pair message
22 -- E.g. <Name1>Value1</Name1><Name2>Value1</Name2>
23 ----------------------------------------------------------------------
24 PROCEDURE Parse_Name_Value_Pairs_Msg
25 (
26 p_message IN VARCHAR2
27 ,x_name_tbl OUT NOCOPY VARCHAR_TBL_TYPE
28 ,x_value_tbl OUT NOCOPY VARCHAR_TBL_TYPE
29 )
30 IS
31
32
33 l_index NUMBER;
34 pos1 NUMBER;
35 pos2 NUMBER;
36 pos3 NUMBER;
37 l_message VARCHAR2(32767);
38
39 BEGIN
40 -- parse name-value pair
41
42 l_message:=p_message;
43 l_index:=0;
44 WHILE length(l_message)>0 LOOP
45 pos1:=instr(l_message,'<');
46 pos2:=instr(l_message,'>');
47 IF (pos1 >0) THEN
48 x_name_tbl(l_index):=substr(l_message, pos1+1, pos2-(pos1+1) );
49 pos3:=instr(l_message,'</') ;
50 x_value_tbl(l_index):=substr(l_message, pos2+1, pos3 - (pos2+1));
51 l_message := substr(l_message, pos2-pos1+pos3+2);
52 l_index:=l_index+1;
53 ELSE
54 EXIT;
55 END IF;
56 END LOOP;
57
58 END Parse_Name_Value_Pairs_Msg;
59 -----------------------------------------------------------
60
61 -- private: set fnd_global params
62 ----------------------------------------
63 PROCEDURE set_fnd_global_user_id
64 IS
65
66 BEGIN
67 FND_GLOBAL.APPS_INITIALIZE
68 ( user_id => g_user_id,
69 resp_id => FND_GLOBAL.RESP_ID,
70 resp_appl_id => FND_GLOBAL.resp_appl_id,
71 security_group_id => FND_GLOBAL.security_group_id
72 );
73 END set_fnd_global_user_id;
74 -------------------------------------
75
76
77 --1. Get User ID
78 ------------------------------------
79 FUNCTION get_user_id
80 RETURN NUMBER
81 IS
82
83 BEGIN
84 RETURN g_user_id;
85 END get_user_id;
86
87 --2. Get Party organization ID
88 ------------------------------------
89 FUNCTION get_party_org_id
90 RETURN NUMBER
91 IS
92
93 BEGIN
94 RETURN g_party_org_id;
95 END get_party_org_id;
96
97
98 --3. Get Party Person ID
99 ------------------------------------
100 FUNCTION get_party_person_id
101 RETURN NUMBER
102 IS
103
104 BEGIN
105 RETURN g_party_person_id;
106 END get_party_person_id;
107
108 --4. Set User ID
109 ------------------------------------
110 PROCEDURE set_user_id
111 (
112 p_user_id IN NUMBER
113 )
114 IS
115
116 BEGIN
117 g_user_id:=p_user_id;
118 --set_fnd_global_user_id();
119 END set_user_id;
120
121
122
123 --5. Set Party organization ID
124 ------------------------------------
125 PROCEDURE set_party_org_id
126 (
127 p_party_org_id IN NUMBER
128 )
129 IS
130
131 BEGIN
132 g_party_org_id:=p_party_org_id ;
133 END set_party_org_id;
134
135 --6. Set Party Person ID
139 p_party_person_id IN NUMBER
136 ------------------------------------
137 PROCEDURE set_party_person_id
138 (
140 )
141 IS
142
143 BEGIN
144 g_party_person_id:=p_party_person_id ;
145 --FND_GLOBAL.party_id:=p_party_person_id ;
146 END set_party_person_id;
147
148
149
150
151 --7. Set Context
152 ------------------------------------
153 PROCEDURE set_ctx
154 (
155 p_param_name IN VARCHAR2,
156 p_param_value IN NUMBER
157 )
158 IS
159
160 BEGIN
161 IF (p_param_name = 'PARTY_ORG_ID') THEN
162 g_party_org_id := p_param_value;
163 ELSIF (p_param_name = 'PARTY_PERSON_ID') THEN
164 g_party_person_id := p_param_value;
165 ELSIF (p_param_name = 'USER_ID') THEN
166 g_user_id := p_param_value;
167 --set_fnd_global_user_id();
168 ELSE
169 fnd_message.set_name('IPD','IPD_INVALID_PARAMETER');
170 fnd_msg_pub.ADD;
171 RAISE FND_API.G_EXC_ERROR;
172 END IF;
173 EXCEPTION
174 WHEN FND_API.G_EXC_ERROR THEN
175 null;
176
177 END set_ctx;
178
179 --8. Get Context
180 ------------------------------------
181 FUNCTION get_ctx
182 (
183 p_param_name IN VARCHAR2
184 ) RETURN NUMBER
185 IS
186 BEGIN
187 IF (p_param_name = 'PARTY_ORG_ID') THEN
188 RETURN g_party_org_id;
189 ELSIF (p_param_name = 'PARTY_PERSON_ID') THEN
190 RETURN g_party_person_id;
191 ELSIF (p_param_name = 'USER_ID') THEN
192 RETURN g_user_id;
193 ELSE
194 fnd_message.set_name('IPD','IPD_INVALID_PARAMETER');
195 fnd_msg_pub.ADD;
196 RAISE FND_API.G_EXC_ERROR;
197 END IF;
198 EXCEPTION
199 WHEN FND_API.G_EXC_ERROR THEN
200 null;
201
202 END get_ctx;
203
204
205 --9. Set Object Name
206 ------------------------------------
207 PROCEDURE set_object_name
208 (
209 p_object_name IN VARCHAR2
210 )
211 IS
212
213 BEGIN
214 g_object_name:=p_object_name ;
215 END set_object_name;
216
217
218 --10. Get Object Name
219 ------------------------------------
220 FUNCTION get_object_name
221 RETURN VARCHAR2
222 IS
223
224 BEGIN
225 RETURN g_object_name;
226 END get_object_name;
227
228
229
230 --11. Set Object Key
231 ------------------------------------
232 PROCEDURE set_object_key
233 (
234 p_object_key IN NUMBER
235 )
236 IS
237
238 BEGIN
239 g_object_key:=p_object_key ;
240 END set_object_key;
241 ------------------------------------
242
243 --12. Get Object Key
244 ------------------------------------
245 FUNCTION get_object_key
246 RETURN NUMBER
247 IS
248
249 BEGIN
250 RETURN g_object_key;
251 END get_object_key;
255 ------------------------------------
252 ------------------------------------
253
254 --13. Set Context params
256 PROCEDURE set_ctx
257 (
258 p_param_values IN VARCHAR2
259 )
260 IS
261
262 l_name_tbl VARCHAR_TBL_TYPE;
263 l_value_tbl VARCHAR_TBL_TYPE;
264 BEGIN
265
266 Parse_Name_Value_Pairs_Msg
267 ( p_message => p_param_values,
268 x_name_tbl => l_name_tbl,
269 x_value_tbl => l_value_tbl
270 );
271
272 IF ( l_name_tbl.count > 0) THEN
273 FOR i IN l_name_tbl.first .. l_name_tbl.last LOOP
274 IF( l_name_tbl(i) = G_USER_ID_NAME ) THEN
275 g_user_id := to_number(l_value_tbl(i));
276 ELSIF (l_name_tbl(i) =G_PARTY_PERSON_ID_NAME ) THEN
277 g_party_person_id := to_number(l_value_tbl(i));
278 ELSIF (l_name_tbl(i) =G_PARTY_ORG_ID_NAME ) THEN
279 g_party_org_id := to_number(l_value_tbl(i));
280 ELSIF (l_name_tbl(i) =G_LANGUAGE_NAME ) THEN
281 IF(userenv('LANG') <> l_value_tbl(i)) THEN
282 set_session_language(p_language=>l_value_tbl(i));
283 END IF;
284 ELSE
285 fnd_message.set_name('IPD','IPD_INVALID_PARAMETER');
286 fnd_msg_pub.ADD;
287 RAISE FND_API.G_EXC_ERROR;
288 END IF;
289 END LOOP;
290 END IF;
291 EXCEPTION
292 WHEN FND_API.G_EXC_ERROR THEN
293 null;
294
295 END set_ctx;
296 -----------------------------------------------
297
298
299
300
301 --14. Set Session Language
302 ------------------------------------
303 PROCEDURE set_session_language
304 (
305 p_language in varchar2
306 )
307 IS
308 l_dynamic_sql varchar2(200);
309 l_nls_lang varchar2(30);
310 CURSOR get_nls_language(cp_lang_code varchar2)
311 IS
312 SELECT nls_language
313 FROM fnd_languages
314 WHERE language_code=cp_lang_code;
315
316 BEGIN
317 IF(userenv('LANG') = p_language) THEN
318 RETURN;
319 END IF;
320 OPEN get_nls_language(cp_lang_code=>p_language);
321 FETCH get_nls_language INTO l_nls_lang;
322 CLOSE get_nls_language;
323 l_dynamic_sql:='alter session set NLS_LANGUAGE ='''||l_nls_lang||'''';
324 EXECUTE IMMEDIATE l_dynamic_sql;
325 END set_session_language;
326 ------------------------------------
327
328
329 END EGO_SCTX ;