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