DBA Data[Home] [Help]

PACKAGE BODY: APPS.FND_WEBFILEPUB

Source


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;