DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_GRID_DATASOURCES_PKG

Source


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;