1 package body fnd_webfilepub as
2 /* $Header: AFCPWFPB.pls 120.5 2006/07/19 20:21:11 tkamiya ship $ */
3
4 g_nlslang varchar2(30) := '';
5 g_nlsterr varchar2(30) := '';
6
7
8 procedure get_nls_values( id IN varchar2)
9 is
10 begin
11 g_nlslang := '';
12 g_nlsterr := '';
13
14 select r.nls_language,
15 r.nls_territory
16 into g_nlslang, g_nlsterr
17 from fnd_concurrent_requests r,
18 fnd_file_temp t
19 where t.request_id = r.request_id
20 and t.file_id = id;
21
22 exception
23 when others then
24 null;
25
26 end get_nls_values;
27
28 procedure verify_id( id IN varchar2,
29 name IN OUT NOCOPY varchar2,
30 node IN OUT NOCOPY varchar2)
31 is
32 dummy4 fnd_file_temp.mime_type%TYPE;
33 dummy5 fnd_file_temp.transfer_mode%TYPE;
34 dummy6 fnd_file_temp.request_id%TYPE;
35 dummy7 fnd_file_temp.destination_file%TYPE;
36 dummy8 fnd_file_temp.destination_node%TYPE;
37 dummy9 fnd_file_temp.transfer_type%TYPE;
38 dummy10 varchar2(254);
39
40 begin
41
42 verify_id (id, name, node, dummy4,
43 dummy5, dummy6, dummy7,
44 dummy8, dummy9, dummy10);
45
46 end verify_id;
47
48 procedure verify_id( id IN varchar2,
49 name IN OUT NOCOPY varchar2,
50 node IN OUT NOCOPY varchar2,
51 type IN OUT NOCOPY varchar2,
52 x_mode IN OUT NOCOPY varchar2)
53 is
54 dummy6 fnd_file_temp.request_id%TYPE;
55 dummy7 fnd_file_temp.destination_file%TYPE;
56 dummy8 fnd_file_temp.destination_node%TYPE;
57 dummy9 fnd_file_temp.transfer_type%TYPE;
58 dummy10 varchar2(254);
59 begin
60
61 verify_id (id, name, node, type,
62 x_mode, dummy6, dummy7,
63 dummy8, dummy9, dummy10);
64
65 end verify_id;
66
67
68 procedure verify_id( id IN varchar2,
69 name IN OUT NOCOPY varchar2,
70 node IN OUT NOCOPY varchar2,
71 type IN OUT NOCOPY varchar2,
72 x_mode IN OUT NOCOPY varchar2,
73 req_id IN OUT NOCOPY varchar2)
74 is
75 dummy7 fnd_file_temp.destination_file%TYPE;
76 dummy8 fnd_file_temp.destination_node%TYPE;
77 dummy9 fnd_file_temp.transfer_type%TYPE;
78 dummy10 varchar2(254);
79
80 begin
81 verify_id (id, name, node, type,
82 x_mode, req_id, dummy7,
83 dummy8, dummy9, dummy10);
84
85 end verify_id;
86
87
88 procedure verify_id( id IN varchar2,
89 name IN OUT NOCOPY varchar2,
90 node IN OUT NOCOPY varchar2,
91 type IN OUT NOCOPY varchar2,
92 x_mode IN OUT NOCOPY varchar2,
93 req_id IN OUT NOCOPY varchar2,
94 dest_file IN OUT NOCOPY varchar2,
95 dest_node IN OUT NOCOPY varchar2,
96 tran_type IN OUT NOCOPY varchar2,
97 svc_prefix IN OUT NOCOPY varchar2)
98 is
99 begin
100 select filename, node_name, mime_type, transfer_mode, request_id,
101 destination_file, destination_node, NVL(transfer_type, 'R')
102 into name, node, type, x_mode, req_id, dest_file, dest_node, tran_type
103 from fnd_file_temp
104 where file_id = id AND
105 sysdate <= expires
106 for update;
107
108 delete from fnd_file_temp
109 where file_id = id OR
110 sysdate > expires;
111 commit;
112
113 svc_prefix := fnd_profile.value('FS_SVC_PREFIX');
114
115 if ( type = 'apps/bidi' ) then
116 get_nls_values(id);
117 end if;
118
119 exception
120 when NO_DATA_FOUND then
121 name := '';
122 node := '';
123 type := '';
124 x_mode := '';
125 req_id := -1;
126 dest_file := '';
127 dest_node := '';
128 tran_type := '';
129 svc_prefix := '';
130
131 end verify_id;
132
133 procedure char_mapping( charset IN OUT NOCOPY varchar2)
134 is
135 begin
136 select distinct tag
137 into charset
138 from fnd_lookup_values
139 where lookup_code = charset
140 and lookup_type = 'FND_ISO_CHARACTER_SET_MAP';
141 exception
142 when NO_DATA_FOUND then
143 charset := '';
144
145 end char_mapping;
146
147 procedure req_outfile_name( id IN varchar2,
148 outfile_name IN OUT NOCOPY varchar2)
149 is
150 temp_name varchar2(40);
151 file_type varchar2(10);
152 file_ext varchar2(10);
153 invalid_chr varchar2(40):=' !@#$%^&*()_+|~`\=-{}][:";<>.,?/''';
154 replace_chr varchar2(40):='_________________________________';
155 client_file_chrset varchar2(20);
156 database_chrset varchar2(20);
157
158 begin
159 client_file_chrset := upper(fnd_profile.value('FND_CLIENT_FILENAME_CHRSET'));
160 if (client_file_chrset IS NULL) then
161 --
162 -- bug4509818 - replace all non-numeric and non-alphabetic characters in
163 -- user_concurrent_program_name with _ before forming
164 -- temp file name
165 --
166 -- bug3436814 - allow NLS characters for filename and convert the characterset
167 -- for the filename so client OS can handle it....
168 -- Japanese version of Windows require filename to be in JA16SJIS codeset.
169 -- Peform cnversion only if profile option Concurrent: Client Filename
170 -- Characterset is set and characterset of data is not already in the
171 -- specified characterset.
172 --
173 -- Revert back to old functionality if the profile option value is NULL
174 --
175 -- moved illegal characterset conversion bug fix4509818 down a little
176 --
177 --
178 -- old functionality
179 -- profile option is NULL
180 -- filenames in English only
181 --
182 select substrb(p.user_concurrent_program_name,1,30) || '_' ||
183 to_char(r.Actual_Start_Date,'ddmmrr'),
184 DECODE(o.file_name, t.filename, o.file_type,
185 DECODE(r.outfile_name, t.filename,
186 NVL(r.output_file_type, 'TEXT'), 'TEXT'))
187 into temp_name, file_type
188 from fnd_concurrent_programs_vl p,
189 fnd_concurrent_requests r,
190 fnd_conc_req_outputs o,
191 fnd_file_temp t
192 where p.concurrent_program_id = r.concurrent_program_id
193 and p.application_id = r.program_application_id
194 and t.request_id = r.request_id
195 and r.request_id = o.concurrent_request_id(+)
196 and t.file_id = id;
197 else
198 --
199 -- new functionality
200 -- profile option is set to OS filename characterset
201 -- nls filename allowed
202 --
203 select substrb(p.user_concurrent_program_name,1,30) || '_' ||
204 to_char(r.Actual_Start_Date,'ddmmrr'),
205 DECODE(o.file_name, t.filename, o.file_type,
206 DECODE(r.outfile_name, t.filename,
207 NVL(r.output_file_type, 'TEXT'), 'TEXT'))
208 into temp_name, file_type
209 from fnd_concurrent_programs_tl p,
210 fnd_concurrent_requests r,
211 fnd_conc_req_outputs o,
212 fnd_file_temp t,
213 fnd_languages l
214 where p.concurrent_program_id = r.concurrent_program_id
215 and p.application_id = r.program_application_id
216 and t.request_id = r.request_id
217 and r.request_id = o.concurrent_request_id(+)
218 and t.file_id = id
219 and p.language = l.language_code
220 and r.nls_language = l.nls_language;
221
222 select value into database_chrset
223 from v$nls_parameters
224 where parameter = 'NLS_CHARACTERSET';
225
226 --
227 -- not necessary to do a code conversion if database is already in
228 -- the same characterset as specified in profile option
229 --
230 if (client_file_chrset <> database_chrset) then
231 temp_name := convert(temp_name, client_file_chrset, database_chrset);
232 end if;
233
234 end if;
235
236 --
237 -- remove characters that are illegal in filenames
238 --
239 temp_name := translate(temp_name, invalid_chr, replace_chr);
240
241 -- hardcoded values for file extentions needs to be removed in major
242 -- release.
243
244 if ( file_type in ('TEXT', 'ETEXT') ) then
245 file_ext := 'txt';
246 elsif ( file_type = 'HTML') then
247 file_ext := 'html';
248 elsif ( file_type = 'PDF' ) then
249 file_ext := 'pdf';
250 elsif ( file_type = 'PS' ) then
251 file_ext := 'ps';
252 elsif ( file_type = 'PCL' ) then
253 file_ext := 'pcl';
254 elsif ( file_type = 'XML' ) then
255 file_ext := 'xml';
256 elsif ( file_type = 'EXCEL' ) then
257 file_ext := 'xls';
258 elsif ( file_type = 'RTF' ) then
259 file_ext := 'rtf';
260
261 end if;
262
263 outfile_name := temp_name || '.' || file_ext;
264
265 exception
266 when others then
267 outfile_name := '';
268
269 end req_outfile_name;
270
271 procedure req_nls_values( nlslang IN OUT NOCOPY varchar2,
272 nlsterr IN OUT NOCOPY varchar2)
273 is
274 begin
275 nlslang := g_nlslang;
276 nlsterr := g_nlsterr;
277 end req_nls_values;
278
279
280 procedure check_id( id IN varchar2,
281 name IN OUT NOCOPY varchar2,
282 node IN OUT NOCOPY varchar2,
283 type IN OUT NOCOPY varchar2,
284 x_mode IN OUT NOCOPY varchar2,
285 req_id IN OUT NOCOPY varchar2,
286 dest_file IN OUT NOCOPY varchar2,
287 dest_node IN OUT NOCOPY varchar2,
288 tran_type IN OUT NOCOPY varchar2,
289 svc_prefix IN OUT NOCOPY varchar2,
290 ncenc IN OUT NOCOPY varchar2)
291 is
292 dummy varchar2(1);
293 begin
294 check_id(id, name, node, type, x_mode, req_id, dest_file,
295 dest_node, tran_type, svc_prefix, ncenc, dummy);
296
297 end check_id;
298
299
300
301 procedure check_id( id IN varchar2,
302 name IN OUT NOCOPY varchar2,
303 node IN OUT NOCOPY varchar2,
304 type IN OUT NOCOPY varchar2,
305 x_mode IN OUT NOCOPY varchar2,
306 req_id IN OUT NOCOPY varchar2,
307 dest_file IN OUT NOCOPY varchar2,
308 dest_node IN OUT NOCOPY varchar2,
309 tran_type IN OUT NOCOPY varchar2,
310 svc_prefix IN OUT NOCOPY varchar2,
311 ncenc IN OUT NOCOPY varchar2,
312 enable_log IN OUT NOCOPY varchar2)
313 is
314 begin
315 select filename, node_name, mime_type, transfer_mode, request_id,
316 destination_file, destination_node,
317 NVL(transfer_type, 'R'), NVL(native_client_encoding, 'UNDEF'),
318 NVL(enable_logging, 'N')
319 into name, node, type, x_mode, req_id,
320 dest_file, dest_node,
321 tran_type, ncenc, enable_log
322 from fnd_file_temp
323 where file_id = id and
324 sysdate <= expires
325 for update;
326
327 if ( type = 'apps/bidi' ) then
328 get_nls_values(id);
329 end if;
330
331 delete from fnd_file_temp
332 where sysdate > expires;
333 commit;
334
335 svc_prefix := fnd_profile.value('FS_SVC_PREFIX');
336
337 exception
338 when NO_DATA_FOUND then
339 name := '';
340 node := '';
341 type := '';
342 x_mode := '';
343 req_id := -1;
344 dest_file := '';
345 dest_node := '';
346 tran_type := '';
347 svc_prefix := '';
348 ncenc := '';
349 enable_log := 'N';
350
351 end check_id;
352
353 -- overloaded procedure for 11.0 compatibility
354 procedure check_id( id IN varchar2,
355 name IN OUT NOCOPY varchar2,
356 node IN OUT NOCOPY varchar2,
357 type IN OUT NOCOPY varchar2,
358 x_mode IN OUT NOCOPY varchar2,
359 req_id IN OUT NOCOPY varchar2)
360 is
361 dummy7 fnd_file_temp.destination_file%TYPE;
362 dummy8 fnd_file_temp.destination_node%TYPE;
363 dummy9 fnd_file_temp.transfer_type%TYPE;
364 dummy10 varchar2(254);
365 dummy11 fnd_file_temp.native_client_encoding%TYPE;
366 dummy12 varchar2(1);
367
368 begin
369
370 check_id(id, name, node, type, x_mode, req_id,
371 dummy7, dummy8, dummy9, dummy10, dummy11, dummy12);
372
373 end check_id;
374
375
376
377 procedure get_page_info( id IN varchar2,
378 name IN OUT NOCOPY varchar2,
379 pagenum IN OUT NOCOPY number,
380 pagesize IN OUT NOCOPY number)
381 is
382 begin
383 select filename, page_number, page_size
384 into name, pagenum, pagesize
385 from fnd_file_temp
386 where file_id = id
387 and sysdate <= expires
388 for update;
389
390 delete from fnd_file_temp
391 where file_id = id
392 or sysdate > expires;
393
394 commit;
395
396
397
398 exception
399 when NO_DATA_FOUND then
400 name := '';
401 pagenum := 0;
402 pagesize := 0;
403
404
405 end get_page_info;
406
407 end;