1 package body JTF_GRID_DATASOURCES_PKG AS
2 /* $Header: JTFGDPKB.pls 120.3 2006/09/20 08:03:45 snellepa ship $ */
3 procedure INSERT_ROW (
4 X_ROWID in out NOCOPY VARCHAR2,
5 X_GRID_DATASOURCE_NAME in VARCHAR2,
6 X_DB_VIEW_NAME in VARCHAR2,
7 X_APPLICATION_ID in NUMBER,
8 X_DEFAULT_ROW_HEIGHT in NUMBER,
9 X_MAX_QUERIED_ROWS in NUMBER,
10 X_WHERE_CLAUSE in VARCHAR2,
11 X_ALT_COLOR_CODE in VARCHAR2,
12 X_ALT_COLOR_INTERVAL in NUMBER,
13 X_TITLE_TEXT in VARCHAR2,
14 X_CREATION_DATE in DATE,
15 X_CREATED_BY in NUMBER,
16 X_LAST_UPDATE_DATE in DATE,
17 X_LAST_UPDATED_BY in NUMBER,
18 X_LAST_UPDATE_LOGIN in NUMBER,
19 X_FETCH_SIZE in NUMBER
20 ) is
21 cursor C is select ROWID from JTF_GRID_DATASOURCES_B
22 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME
23 ;
24 begin
25 insert into JTF_GRID_DATASOURCES_B (
26 GRID_DATASOURCE_NAME,
27 DB_VIEW_NAME,
28 APPLICATION_ID,
29 DEFAULT_ROW_HEIGHT,
30 MAX_QUERIED_ROWS,
31 WHERE_CLAUSE,
32 ALT_COLOR_CODE,
33 ALT_COLOR_INTERVAL,
34 CREATION_DATE,
35 CREATED_BY,
36 LAST_UPDATE_DATE,
37 LAST_UPDATED_BY,
38 LAST_UPDATE_LOGIN,
39 FETCH_SIZE
40 ) values (
41 X_GRID_DATASOURCE_NAME,
42 X_DB_VIEW_NAME,
43 X_APPLICATION_ID,
44 X_DEFAULT_ROW_HEIGHT,
45 X_MAX_QUERIED_ROWS,
46 X_WHERE_CLAUSE,
47 X_ALT_COLOR_CODE,
48 X_ALT_COLOR_INTERVAL,
49 X_CREATION_DATE,
50 X_CREATED_BY,
51 X_LAST_UPDATE_DATE,
52 X_LAST_UPDATED_BY,
53 X_LAST_UPDATE_LOGIN,
54 X_FETCH_SIZE
55 );
56
57 insert into JTF_GRID_DATASOURCES_TL (
58 GRID_DATASOURCE_NAME,
59 TITLE_TEXT,
60 CREATED_BY,
61 CREATION_DATE,
62 LAST_UPDATED_BY,
63 LAST_UPDATE_DATE,
64 LAST_UPDATE_LOGIN,
65 LANGUAGE,
66 SOURCE_LANG
67 ) select
68 X_GRID_DATASOURCE_NAME,
69 X_TITLE_TEXT,
70 X_CREATED_BY,
71 X_CREATION_DATE,
72 X_LAST_UPDATED_BY,
73 X_LAST_UPDATE_DATE,
74 X_LAST_UPDATE_LOGIN,
75 L.LANGUAGE_CODE,
76 userenv('LANG')
77 from FND_LANGUAGES L
78 where L.INSTALLED_FLAG in ('I', 'B')
79 and not exists
80 (select NULL
81 from JTF_GRID_DATASOURCES_TL T
82 where T.GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME
83 and T.LANGUAGE = L.LANGUAGE_CODE);
84
85 open c;
86 fetch c into X_ROWID;
87 if (c%notfound) then
88 close c;
89 raise no_data_found;
90 end if;
91 close c;
92
93 end INSERT_ROW;
94
95 procedure LOCK_ROW (
96 X_GRID_DATASOURCE_NAME in VARCHAR2,
97 X_DB_VIEW_NAME in VARCHAR2,
98 X_APPLICATION_ID in NUMBER,
99 X_DEFAULT_ROW_HEIGHT in NUMBER,
100 X_MAX_QUERIED_ROWS in NUMBER,
101 X_WHERE_CLAUSE in VARCHAR2,
102 X_ALT_COLOR_CODE in VARCHAR2,
103 X_ALT_COLOR_INTERVAL in NUMBER,
104 X_TITLE_TEXT in VARCHAR2,
105 X_FETCH_SIZE in NUMBER
106 ) is
107 cursor c is select
108 DB_VIEW_NAME,
109 APPLICATION_ID,
110 DEFAULT_ROW_HEIGHT,
111 MAX_QUERIED_ROWS,
112 WHERE_CLAUSE,
113 ALT_COLOR_CODE,
114 ALT_COLOR_INTERVAL,
115 FETCH_SIZE
116 from JTF_GRID_DATASOURCES_B
117 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME
118 for update of GRID_DATASOURCE_NAME nowait;
119 recinfo c%rowtype;
120
121 cursor c1 is select
122 TITLE_TEXT,
123 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
124 from JTF_GRID_DATASOURCES_TL
125 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME
126 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
127 for update of GRID_DATASOURCE_NAME nowait;
128 begin
129 open c;
130 fetch c into recinfo;
131 if (c%notfound) then
132 close c;
133 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
134 app_exception.raise_exception;
135 end if;
136 close c;
137 if ( (recinfo.DB_VIEW_NAME = X_DB_VIEW_NAME)
138 AND (recinfo.APPLICATION_ID = X_APPLICATION_ID)
139 AND (recinfo.DEFAULT_ROW_HEIGHT = X_DEFAULT_ROW_HEIGHT)
140 AND ((recinfo.MAX_QUERIED_ROWS = X_MAX_QUERIED_ROWS)
141 OR ((recinfo.MAX_QUERIED_ROWS is null) AND (X_MAX_QUERIED_ROWS is null)))
142 AND ((recinfo.WHERE_CLAUSE = X_WHERE_CLAUSE)
143 OR ((recinfo.WHERE_CLAUSE is null) AND (X_WHERE_CLAUSE is null)))
144 AND ((recinfo.ALT_COLOR_CODE = X_ALT_COLOR_CODE)
145 OR ((recinfo.ALT_COLOR_CODE is null) AND (X_ALT_COLOR_CODE is null)))
146 AND ((recinfo.ALT_COLOR_INTERVAL = X_ALT_COLOR_INTERVAL)
147 OR ((recinfo.ALT_COLOR_INTERVAL is null) AND (X_ALT_COLOR_INTERVAL is null)))
148 AND ((recinfo.FETCH_SIZE = X_FETCH_SIZE)
149 OR ((recinfo.FETCH_SIZE is null) AND (X_FETCH_SIZE is null)))
150 ) then
151 null;
152 else
153 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
154 app_exception.raise_exception;
155 end if;
156
157 for tlinfo in c1 loop
158 if (tlinfo.BASELANG = 'Y') then
159 if ( (tlinfo.TITLE_TEXT = X_TITLE_TEXT)
160 ) then
161 null;
162 else
163 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
164 app_exception.raise_exception;
165 end if;
166 end if;
167 end loop;
168 return;
169 end LOCK_ROW;
170
171 procedure UPDATE_ROW (
172 X_GRID_DATASOURCE_NAME in VARCHAR2,
173 X_DB_VIEW_NAME in VARCHAR2,
174 X_APPLICATION_ID in NUMBER,
175 X_DEFAULT_ROW_HEIGHT in NUMBER,
176 X_MAX_QUERIED_ROWS in NUMBER,
177 X_WHERE_CLAUSE in VARCHAR2,
178 X_ALT_COLOR_CODE in VARCHAR2,
179 X_ALT_COLOR_INTERVAL in NUMBER,
180 X_TITLE_TEXT in VARCHAR2,
181 X_LAST_UPDATE_DATE in DATE,
182 X_LAST_UPDATED_BY in NUMBER,
183 X_LAST_UPDATE_LOGIN in NUMBER,
184 X_FETCH_SIZE in NUMBER
185 ) is
186 begin
187 update JTF_GRID_DATASOURCES_B set
188 DB_VIEW_NAME = X_DB_VIEW_NAME,
189 APPLICATION_ID = X_APPLICATION_ID,
190 DEFAULT_ROW_HEIGHT = X_DEFAULT_ROW_HEIGHT,
191 MAX_QUERIED_ROWS = X_MAX_QUERIED_ROWS,
192 WHERE_CLAUSE = X_WHERE_CLAUSE,
193 ALT_COLOR_CODE = X_ALT_COLOR_CODE,
194 ALT_COLOR_INTERVAL = X_ALT_COLOR_INTERVAL,
195 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
196 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
197 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
198 FETCH_SIZE = X_FETCH_SIZE
199 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME;
200 if (sql%notfound) then
201 raise no_data_found;
202 end if;
203 update JTF_GRID_DATASOURCES_TL set
204 TITLE_TEXT = X_TITLE_TEXT,
205 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
206 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
207 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
208 SOURCE_LANG = userenv('LANG')
209 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME
210 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
211
212 if (sql%notfound) then
213 raise no_data_found;
214 end if;
215 end UPDATE_ROW;
216
217
218 /** this procedure is for INTERNAL USE only.
219
220 This procedure delete the metadata definition without deleting the customization data
221
222 This procedure should be invoked only from the LOAD_ROW procedure which will re-load the metadata
223 definition.
224 */
225
226 procedure DELETE_ROW_PRESERVE_CUSTOM(
227 X_GRID_DATASOURCE_NAME in VARCHAR2
228 ) is
229 cursor sort_cols(x_grid_datasource_name in varchar2) is
230 select 'X'
231 from jtf_grid_sort_cols
232 where grid_datasource_name = x_grid_datasource_name;
233
234 begin
235 -- cascade delete to all related tables except customization tables
236
237 for i in sort_cols(x_grid_datasource_name) loop
238 delete from JTF_GRID_SORT_COLS
239 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME;
240 end loop;
241
242 delete from JTF_GRID_DATASOURCES_TL
243 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME;
244
245 delete from JTF_GRID_DATASOURCES_B
246 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME;
247
248 delete from JTF_GRID_COLS_TL
249 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME ;
250
251 delete from JTF_GRID_COLS_B
252 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME ;
253
254 if (sql%notfound) then
255 null; --the metadata is being uploaded for the first time
256 end if;
257 end DELETE_ROW_PRESERVE_CUSTOM;
258
259 procedure DELETE_ROW (
260 X_GRID_DATASOURCE_NAME in VARCHAR2
261 ) is
262 l_custom_grid_id jtf_custom_grids.custom_grid_id%TYPE;
263
264 cursor custom_grid(x_grid_datasource_name in varchar2) is
265 select custom_grid_id
266 from jtf_custom_grids
267 where grid_datasource_name = x_grid_datasource_name;
268
269 cursor sort_cols(x_grid_datasource_name in varchar2) is
270 select 'X'
271 from jtf_grid_sort_cols
272 where grid_datasource_name = x_grid_datasource_name;
273
274 begin
275 -- cascade delete to all related tables except JTF_GRID_COLS
276
277 open custom_grid(x_grid_datasource_name);
278 fetch custom_grid into l_custom_grid_id;
279 while custom_grid%FOUND loop
280 delete from JTF_CUSTOM_BIND_VALUES
281 where CUSTOM_GRID_ID = l_custom_grid_id;
282 fetch custom_grid into l_custom_grid_id;
283 end loop;
284 close custom_grid;
285
286 delete from JTF_DEF_CUSTOM_GRIDS
287 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME;
288
289 delete from JTF_CUSTOM_GRIDS
290 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME;
291
292 for i in sort_cols(x_grid_datasource_name) loop
293 delete from JTF_GRID_SORT_COLS
294 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME;
295 end loop;
296
297 delete from JTF_GRID_DATASOURCES_TL
298 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME;
299
300 delete from JTF_GRID_DATASOURCES_B
301 where GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME;
302
303 if (sql%notfound) then
304 raise no_data_found;
305 end if;
306 end DELETE_ROW;
307
308 procedure ADD_LANGUAGE
309 is
310 begin
311 delete from JTF_GRID_DATASOURCES_TL T
312 where not exists
313 (select NULL
314 from JTF_GRID_DATASOURCES_B B
315 where B.GRID_DATASOURCE_NAME = T.GRID_DATASOURCE_NAME
316 );
317
318 update JTF_GRID_DATASOURCES_TL T set (
319 TITLE_TEXT
320 ) = (select
321 B.TITLE_TEXT
322 from JTF_GRID_DATASOURCES_TL B
323 where B.GRID_DATASOURCE_NAME = T.GRID_DATASOURCE_NAME
324 and B.LANGUAGE = T.SOURCE_LANG)
325 where (
326 T.GRID_DATASOURCE_NAME,
327 T.LANGUAGE
328 ) in (select
329 SUBT.GRID_DATASOURCE_NAME,
330 SUBT.LANGUAGE
331 from JTF_GRID_DATASOURCES_TL SUBB, JTF_GRID_DATASOURCES_TL SUBT
332 where SUBB.GRID_DATASOURCE_NAME = SUBT.GRID_DATASOURCE_NAME
333 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
334 and (SUBB.TITLE_TEXT <> SUBT.TITLE_TEXT
335 ));
336
337 insert into JTF_GRID_DATASOURCES_TL (
338 GRID_DATASOURCE_NAME,
339 TITLE_TEXT,
340 CREATED_BY,
341 CREATION_DATE,
342 LAST_UPDATED_BY,
343 LAST_UPDATE_DATE,
344 LAST_UPDATE_LOGIN,
345 LANGUAGE,
346 SOURCE_LANG
347 ) select
348 B.GRID_DATASOURCE_NAME,
349 B.TITLE_TEXT,
350 B.CREATED_BY,
351 B.CREATION_DATE,
352 B.LAST_UPDATED_BY,
353 B.LAST_UPDATE_DATE,
354 B.LAST_UPDATE_LOGIN,
355 L.LANGUAGE_CODE,
356 B.SOURCE_LANG
357 from JTF_GRID_DATASOURCES_TL B, FND_LANGUAGES L
358 where L.INSTALLED_FLAG in ('I', 'B')
359 and B.LANGUAGE = userenv('LANG')
360 and not exists
361 (select NULL
362 from JTF_GRID_DATASOURCES_TL T
363 where T.GRID_DATASOURCE_NAME = B.GRID_DATASOURCE_NAME
364 and T.LANGUAGE = L.LANGUAGE_CODE);
365 end ADD_LANGUAGE;
366
367 procedure LOAD_ROW (
368 X_GRID_DATASOURCE_NAME in VARCHAR2,
369 X_DB_VIEW_NAME in VARCHAR2,
370 X_APPLICATION_SHORT_NAME in VARCHAR2,
371 X_DEFAULT_ROW_HEIGHT in NUMBER,
372 X_MAX_QUERIED_ROWS in NUMBER,
373 X_WHERE_CLAUSE in VARCHAR2,
374 X_ALT_COLOR_CODE in VARCHAR2,
375 X_ALT_COLOR_INTERVAL in NUMBER,
376 X_TITLE_TEXT in VARCHAR2,
377 X_OWNER in VARCHAR2,
378 X_FETCH_SIZE in NUMBER,
379 X_CUSTOM_MODE in VARCHAR2,
380 X_LAST_UPDATE_DATE in VARCHAR2
381 ) is
382 row_id varchar2(64);
383 owner_appid number;
384 f_luby number; -- entity owner in file
385 f_ludate date; -- entity update date in file
386 db_luby number; -- entity owner in db
387 db_ludate date; -- entity update date in db
388 begin
389
390 select APPLICATION_ID
391 into owner_appid
392 from FND_APPLICATION
393 where APPLICATION_SHORT_NAME = X_APPLICATION_SHORT_NAME;
394
395
396 -- Translate owner to file_last_updated_by
397 f_luby := fnd_load_util.owner_id(X_OWNER);
398
399 -- Translate char last_update_date to date
400 f_ludate := nvl(to_date(X_LAST_UPDATE_DATE, 'YYYY/MM/DD'), sysdate);
401
402
403 begin
404 select LAST_UPDATED_BY, LAST_UPDATE_DATE
405 into db_luby, db_ludate
406 from JTF_GRID_DATASOURCES_B
407 where GRID_DATASOURCE_NAME = x_grid_datasource_name;
408
409 -- Test for customization and version
410 if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
411 db_ludate, X_CUSTOM_MODE)) then
412
413 -- test if the metadata can be uploaded
414 -- if (test_for_upload(X_CUSTOM_MODE, user, X_GRID_DATASOURCE_NAME)) then
415
416
417 delete_row_preserve_custom(x_grid_datasource_name);
418
419 INSERT_ROW (X_ROWID => row_id
420 ,X_GRID_DATASOURCE_NAME => X_GRID_DATASOURCE_NAME
421 ,X_DB_VIEW_NAME => X_DB_VIEW_NAME
422 ,X_APPLICATION_ID => owner_appid
423 ,X_DEFAULT_ROW_HEIGHT => X_DEFAULT_ROW_HEIGHT
424 ,X_MAX_QUERIED_ROWS => X_MAX_QUERIED_ROWS
425 ,X_WHERE_CLAUSE => X_WHERE_CLAUSE
426 ,X_ALT_COLOR_CODE => X_ALT_COLOR_CODE
427 ,X_ALT_COLOR_INTERVAL => X_ALT_COLOR_INTERVAL
428 ,X_TITLE_TEXT => X_TITLE_TEXT
429 ,X_CREATION_DATE => f_ludate
430 ,X_CREATED_BY => f_luby
431 ,X_LAST_UPDATE_DATE => f_ludate
432 ,X_LAST_UPDATED_BY => f_luby
433 ,X_LAST_UPDATE_LOGIN => 0
434 ,X_FETCH_SIZE => X_FETCH_SIZE);
435 /*
436 UPDATE_ROW (X_GRID_DATASOURCE_NAME => X_GRID_DATASOURCE_NAME
437 ,X_DB_VIEW_NAME => X_DB_VIEW_NAME
438 ,X_APPLICATION_ID => owner_appid
439 ,X_DEFAULT_ROW_HEIGHT => X_DEFAULT_ROW_HEIGHT
440 ,X_MAX_QUERIED_ROWS => X_MAX_QUERIED_ROWS
441 ,X_WHERE_CLAUSE => X_WHERE_CLAUSE
442 ,X_ALT_COLOR_CODE => X_ALT_COLOR_CODE
443 ,X_ALT_COLOR_INTERVAL => X_ALT_COLOR_INTERVAL
444 ,X_TITLE_TEXT => X_TITLE_TEXT
445 ,X_LAST_UPDATE_DATE => f_ludate
446 ,X_LAST_UPDATED_BY => f_luby
447 ,X_LAST_UPDATE_LOGIN => 0
448 ,X_FETCH_SIZE => X_FETCH_SIZE);
449 */
450 end if;
451
452 exception
453 when no_data_found then
454 null;
455
456 INSERT_ROW (X_ROWID => row_id
457 ,X_GRID_DATASOURCE_NAME => X_GRID_DATASOURCE_NAME
458 ,X_DB_VIEW_NAME => X_DB_VIEW_NAME
459 ,X_APPLICATION_ID => owner_appid
460 ,X_DEFAULT_ROW_HEIGHT => X_DEFAULT_ROW_HEIGHT
461 ,X_MAX_QUERIED_ROWS => X_MAX_QUERIED_ROWS
462 ,X_WHERE_CLAUSE => X_WHERE_CLAUSE
463 ,X_ALT_COLOR_CODE => X_ALT_COLOR_CODE
464 ,X_ALT_COLOR_INTERVAL => X_ALT_COLOR_INTERVAL
465 ,X_TITLE_TEXT => X_TITLE_TEXT
466 ,X_CREATION_DATE => f_ludate
467 ,X_CREATED_BY => f_luby
468 ,X_LAST_UPDATE_DATE => f_ludate
469 ,X_LAST_UPDATED_BY => f_luby
470 ,X_LAST_UPDATE_LOGIN => 0
471 ,X_FETCH_SIZE => X_FETCH_SIZE);
472
473 -- end if;
474 end;
475 end LOAD_ROW;
476 procedure TRANSLATE_ROW (
477 X_GRID_DATASOURCE_NAME in VARCHAR2,
478 X_TITLE_TEXT in VARCHAR2,
479 X_OWNER in VARCHAR2,
480 X_CUSTOM_MODE in VARCHAR2,
481 X_LAST_UPDATE_DATE in VARCHAR2
482 ) is
483
484 f_luby number; -- entity owner in file
485 f_ludate date; -- entity update date in file
486 db_luby number; -- entity owner in db
490
487 db_ludate date; -- entity update date in db
488
489 begin
491 -- Translate owner to file_last_updated_by
492 f_luby := fnd_load_util.owner_id(X_OWNER);
493
494 -- Translate char last_update_date to date
495 f_ludate := nvl(to_date(X_LAST_UPDATE_DATE, 'YYYY/MM/DD'), sysdate);
496
497
498 select LAST_UPDATED_BY, LAST_UPDATE_DATE
499 into db_luby, db_ludate
500 from JTF_GRID_DATASOURCES_TL
501 where GRID_DATASOURCE_NAME = x_grid_datasource_name
502 and LANGUAGE = userenv('LANG');
503
504 -- Test for customization and version
505 if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
506 db_ludate, X_CUSTOM_MODE)) then
507 begin
508
509 update JTF_GRID_DATASOURCES_TL
510 set TITLE_TEXT = X_TITLE_TEXT
511 ,LAST_UPDATE_DATE = f_ludate
512 ,LAST_UPDATED_BY = f_luby
513 ,LAST_UPDATE_LOGIN = 0
514 ,SOURCE_LANG = userenv('LANG')
515 where userenv('LANG') in (LANGUAGE,SOURCE_LANG)
516 and GRID_DATASOURCE_NAME = X_GRID_DATASOURCE_NAME;
517
518 exception
519 when no_data_found then
520 -- Do not insert missing translations, skip this row
521 null;
522 end;
523 end if;
524 end TRANSLATE_ROW;
525 PROCEDURE CHECK_UNIQUE(X_ROWID in VARCHAR2, X_GRID_DATASOURCE_NAME in varchar2) is
526 DUMMY NUMBER;
527 BEGIN
528 SELECT COUNT(1)
529 INTO DUMMY
530 FROM jtf_grid_datasources_vl
531 WHERE grid_datasource_name = X_GRID_DATASOURCE_NAME
532 AND ((X_ROWID IS NULL) OR (ROWID <> X_ROWID));
533
534 IF (DUMMY >= 1) then
535 FND_MESSAGE.SET_NAME('JTF', 'JTF_GRID_UNIQUE_DATASOURCE');
536 FND_MESSAGE.SET_TOKEN('DATASOURCE', X_GRID_DATASOURCE_NAME);
537 APP_EXCEPTION.RAISE_EXCEPTION;
538 END IF;
539 END CHECK_UNIQUE;
540
541 --
542 -- TEST_FOR_UPLOAD
543 -- Test whether or not to over-write database row when uploading
544 -- data from FNDLOAD data file
545 -- RETURNS
546 -- TRUE if safe to over-write.
547
548 function test_for_upload(p_custom_mode IN VARCHAR2,
549 p_owner IN NUMBER,
550 p_datasource_name IN VARCHAR2) return boolean is
551 l_last_updated_by number;
552 begin
553 -- if custom_mode is force return TRUE
554 if p_custom_mode is not NULL and p_custom_mode = 'FORCE' then
555 return TRUE;
556 else
557 -- if the last_updated_by is not 'SEED' return false
558 select last_updated_by
559 into l_last_updated_by
560 from jtf_grid_datasources_b
561 where grid_datasource_name = p_datasource_name;
562
563 if l_last_updated_by <> p_owner then
564 return FALSE;
565 else
566 return TRUE;
567 /*
568 -- if customizations exist return FALSE
569 select 'x'
570 into l_custom_exists
571 from jtf_custom_grids
572 where grid_Datasource_name = p_datasource_name;
573
574 if l_custom_exists = 'x' then
575 return FALSE;
576 else
577 return TRUE;
578 end if;
579 */
580 end if;
581 end if;
582 exception
583 when no_data_found then
584 return TRUE;
585 end test_for_upload;
586
587 end JTF_GRID_DATASOURCES_PKG;