[Home] [Help]
PACKAGE BODY: APPS.HR_METALINK_INT
Source
1 package body hr_metalink_int as
2 /* $Header: hrmtlint.pkb 120.0 2005/05/31 01:28:06 appldev noship $ */
3
4
5 -- Logging code data
6 g_module CONSTANT VARCHAR2(80) :=
7 'per.pl_sql.hr_metalink_int';
8
9
10
11 FUNCTION get_redirect_url
12 (
13 p_note_id IN VARCHAR2
14 )
15 RETURN VARCHAR2 IS
16 --
17 l_APP_NAME varchar2(80);
18 l_APPTYPE varchar2(80);
19 l_APPURL varchar2(2000);
20 l_LOGOUT_URL varchar2(80);
21 l_USERFIELD varchar2(80);
22 l_PWDFIELD varchar2(80);
23 l_AUTHNEEDED varchar2(80);
24 l_APP_USER varchar2(80);
25 l_APP_PWD varchar2(80);
26 l_FNAME1 varchar2(80) := NULL;
27 l_FVAL1 varchar2(80) := NULL;
28 l_FNAME2 varchar2(80) := NULL;
29 l_FVAL2 varchar2(80) := NULL;
30 l_FNAME3 varchar2(80) := NULL;
31 l_FVAL3 varchar2(80) := NULL;
32 l_FNAME4 varchar2(80) := NULL;
33 l_FVAL4 varchar2(80) := NULL;
34 l_FNAME5 varchar2(80) := NULL;
35 l_FVAL5 varchar2(80) := NULL;
36 l_FNAME6 varchar2(80) := NULL;
37 l_FVAL6 varchar2(80) := NULL;
38 l_FNAME7 varchar2(80) := NULL;
39 l_FVAL7 varchar2(80) := NULL;
40 l_FNAME8 varchar2(80) := NULL;
41 l_FVAL8 varchar2(80) := NULL;
42 l_FNAME9 varchar2(80) := NULL;
43 l_FVAL9 varchar2(80) := NULL;
44 l_procedure VARCHAR2(31) := 'get_redirect_url';
45 l_url VARCHAR2(2000) :=
46 'http://metalink.oracle.com/' ||
47 'metalink/plsql/ml2_documents.showDocument' ||
48 '?p_database_id=NOT' ||
49 '&' || 'p_id=';
50 l_app_id varchar2(80) := NULL;
51 l_error varchar2(2000);
52 l_pos varchar2(30);
53
54 --
55 BEGIN
56 --
57
58 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
59 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_PROCEDURE,
60 MODULE => g_module || '.' || l_procedure,
61 MESSAGE => 'Entering ' || l_procedure);
62 END IF;
63 BEGIN
64 l_app_id := hr_external_application.get_app_id('MetaLink');
65
66 EXCEPTION
67 WHEN OTHERS THEN
68 IF( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
69 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_ERROR,
70 MODULE => g_module || '.' || l_procedure,
71 MESSAGE => 'Unable to determine SSO external ' ||
72 'application - ' || sqlerrm);
73 END IF;
74 END;
75
76 IF l_app_id IS NULL THEN
77 -- qqq
78 -- really should be a message
79 l_error := 'Unable to determine the external application details ' ||
80 'via SSO for Metalink.';
81 END IF;
82
83
84 IF l_error IS NULL THEN
85
86 BEGIN
87 l_pos := 'GET' || l_app_id;
88 -- get existing details
89 hr_sso_utl.PSTORE_GET_APP_INFO(
90 l_app_id,
91 l_APP_NAME,
92 l_APPTYPE,
93 l_APPURL,
94 l_LOGOUT_URL,
95 l_USERFIELD,
96 l_PWDFIELD,
97 l_AUTHNEEDED,
98 l_FNAME1, l_FVAL1,
99 l_FNAME2, l_FVAL2,
100 l_FNAME3, l_FVAL3,
101 l_FNAME4, l_FVAL4,
102 l_FNAME5, l_FVAL5,
103 l_FNAME6, l_FVAL6,
104 l_FNAME7, l_FVAL7,
105 l_FNAME8, l_FVAL8,
106 l_FNAME9, l_FVAL9);
107
108 -- work out new url
109 l_url := l_url || p_note_id;
110
111 -- update with new info, if required
112 l_pos := 'modify';
113 IF l_APPURL <> l_url THEN
114 hr_sso_utl.PSTORE_MODIFY_APP_INFO(
115 l_app_id,
116 l_APP_NAME,
117 l_APPTYPE,
118 l_url,
119 l_LOGOUT_URL,
120 l_USERFIELD,
121 l_PWDFIELD,
122 l_AUTHNEEDED,
123 l_FNAME1, l_FVAL1,
124 l_FNAME2, l_FVAL2,
125 l_FNAME3, l_FVAL3,
126 l_FNAME4, l_FVAL4,
127 l_FNAME5, l_FVAL5,
128 l_FNAME6, l_FVAL6,
129 l_FNAME7, l_FVAL7,
130 l_FNAME8, l_FVAL8,
131 l_FNAME9, l_FVAL9);
132 END IF;
133
134 EXCEPTION
135 WHEN OTHERS THEN
136 IF( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
137 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_ERROR,
138 MODULE => g_module || '.' || l_procedure,
139 MESSAGE => 'Unable to modify SSO external ' ||
140 'application - ' || sqlerrm);
141 END IF;
142 l_error := 'Unable to modify SSO external ' ||
143 'application - ' || l_pos || ' - ' || sqlerrm || '.';
144 END;
145
146 COMMIT;
147
148 -- build url
149 l_url :=
150 hr_sso_utl.get_sso_query_path('wwsso_app_admin.fapp_process_login')
151 || '?p_app_id=' || l_app_id;
152
153 END IF;
154
155 -- display errors
156 IF l_error IS NOT NULL THEN
157 l_url := 'ERROR: ' || l_error;
158 END IF;
159
160 IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
161 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_STATEMENT,
162 MODULE => g_module || '.' || l_procedure,
163 MESSAGE => 'url is ' || l_url);
164 END IF;
165
166 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
167 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_PROCEDURE,
168 MODULE => g_module || '.' || l_procedure,
169 MESSAGE => 'Exiting ' || l_procedure);
170 END IF;
171
172
173 RETURN(l_url);
174
175 EXCEPTION
176 WHEN OTHERS THEN
177 IF( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
178 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_ERROR,
179 MODULE => g_module || '.' || l_procedure,
180 MESSAGE => 'Error whilst determining redirection URL' ||
181 ' - ' || sqlerrm);
182 END IF;
183
184
185 --
186 END get_redirect_url;
187 --
188
189
190
191
192 FUNCTION get_url (p_note_id IN VARCHAR2)
193 RETURN VARCHAR2 IS
194 --
195 pragma autonomous_transaction;
196 --
197
198 l_procedure VARCHAR2(31) := 'get_url';
199 l_url VARCHAR2(2000);
200
201 --
202 BEGIN
203 --
204
205 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
206 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_PROCEDURE,
207 MODULE => g_module || '.' || l_procedure,
208 MESSAGE => 'Entering ' || l_procedure);
209 END IF;
210
211 IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
212 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_STATEMENT,
213 MODULE => g_module || '.' || l_procedure,
214 MESSAGE => 'p_note_id = ' || p_note_id);
215 END IF;
216
217
218 -- get redirection URL (or error text)
219 -- after adding 'set,,' to primary obj string
220 l_url := get_redirect_url(p_note_id);
221
222 IF SUBSTR(l_url,5) = 'ERROR' THEN
223 l_url := 'ERROR : APPS-47368 : ' || l_url ||
224 ' Examine FND logging information for more details.';
225 END IF;
226
227
228 IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
229 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_STATEMENT,
230 MODULE => g_module || '.' || l_procedure,
231 MESSAGE => 'URL is ' || l_url);
232 END IF;
233
234
235 IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
236 FND_LOG.STRING (LOG_LEVEL => FND_LOG.LEVEL_PROCEDURE,
237 MODULE => g_module || '.' || l_procedure,
238 MESSAGE => 'Exiting ' || l_procedure);
239 END IF;
240
241 COMMIT;
242
243 RETURN(l_url);
244
245 --
246 END get_url;
247 --
248
249
250
251 END hr_metalink_int;