DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_DPF_LOGICAL_PAGES_PKG

Source


1 package body JTF_DPF_LOGICAL_PAGES_PKG as
2 /* $Header: jtfdpflb.pls 120.2 2005/10/25 05:17:14 psanyal ship $ */
3     -- select instances of this rule, identified by appid and name
4   cursor get_logical_id(
5 	x_logical_page_name varchar2,
6 	x_application_id number) is select logical_page_id
7     from jtf_dpf_logical_pages_b
8     where application_id = x_application_id and
9       logical_page_name=x_logical_page_name;
10 
11 procedure INSERT_ROW (
12   X_ROWID IN OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
13   X_LOGICAL_PAGE_ID in NUMBER,
14   X_LOGICAL_PAGE_NAME in VARCHAR2,
15   X_LOGICAL_PAGE_TYPE in VARCHAR2,
16   X_APPLICATION_ID in NUMBER,
17   X_ENABLED_FLAG in VARCHAR2,
18   X_PAGE_CONTROLLER_CLASS in VARCHAR2,
19   X_PAGE_PERMISSION_NAME in VARCHAR2,
20   X_OBJECT_VERSION_NUMBER in NUMBER,
21   X_LOGICAL_PAGE_DESCRIPTION in VARCHAR2,
22   X_CREATION_DATE in DATE,
23   X_CREATED_BY in NUMBER,
24   X_LAST_UPDATE_DATE in DATE,
25   X_LAST_UPDATED_BY in NUMBER,
26   X_LAST_UPDATE_LOGIN in NUMBER
27 ) is
28   cursor C is select ROWID from JTF_DPF_LOGICAL_PAGES_B
29     where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID
30     ;
31 begin
32   insert into JTF_DPF_LOGICAL_PAGES_B (
33     LOGICAL_PAGE_ID,
34     LOGICAL_PAGE_NAME,
35     LOGICAL_PAGE_TYPE,
36     APPLICATION_ID,
37     ENABLED_FLAG,
38     PAGE_CONTROLLER_CLASS,
39     PAGE_PERMISSION_NAME,
40     OBJECT_VERSION_NUMBER,
41     CREATION_DATE,
42     CREATED_BY,
43     LAST_UPDATE_DATE,
44     LAST_UPDATED_BY,
45     LAST_UPDATE_LOGIN
46   ) values (
47     X_LOGICAL_PAGE_ID,
48     X_LOGICAL_PAGE_NAME,
49     X_LOGICAL_PAGE_TYPE,
50     X_APPLICATION_ID,
51     X_ENABLED_FLAG,
52     X_PAGE_CONTROLLER_CLASS,
53     X_PAGE_PERMISSION_NAME,
54     X_OBJECT_VERSION_NUMBER,
55     X_CREATION_DATE,
56     X_CREATED_BY,
57     X_LAST_UPDATE_DATE,
58     X_LAST_UPDATED_BY,
59     X_LAST_UPDATE_LOGIN
60   );
61 
62   insert into JTF_DPF_LOGICAL_PAGES_TL (
63     LOGICAL_PAGE_ID,
64     LOGICAL_PAGE_DESCRIPTION,
65     CREATED_BY,
66     LAST_UPDATE_DATE,
67     LAST_UPDATED_BY,
68     LAST_UPDATE_LOGIN,
69     LANGUAGE,
70     SOURCE_LANG
71   ) select
72     X_LOGICAL_PAGE_ID,
73     X_LOGICAL_PAGE_DESCRIPTION,
74     X_CREATED_BY,
75     X_LAST_UPDATE_DATE,
76     X_LAST_UPDATED_BY,
77     X_LAST_UPDATE_LOGIN,
78     L.LANGUAGE_CODE,
79     userenv('LANG')
80   from FND_LANGUAGES L
81   where L.INSTALLED_FLAG in ('I', 'B')
82   and not exists
83     (select NULL
84     from JTF_DPF_LOGICAL_PAGES_TL T
85     where T.LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID
86     and T.LANGUAGE = L.LANGUAGE_CODE);
87 
88   open c;
89   fetch c into X_ROWID;
90   if (c%notfound) then
91     close c;
92     raise no_data_found;
93   end if;
94   close c;
95 
96 end INSERT_ROW;
97 
98 procedure LOCK_ROW (
99   X_LOGICAL_PAGE_ID in NUMBER,
100   X_LOGICAL_PAGE_NAME in VARCHAR2,
101   X_LOGICAL_PAGE_TYPE in VARCHAR2,
102   X_APPLICATION_ID in NUMBER,
103   X_ENABLED_FLAG in VARCHAR2,
104   X_PAGE_CONTROLLER_CLASS in VARCHAR2,
105   X_PAGE_PERMISSION_NAME in VARCHAR2,
106   X_OBJECT_VERSION_NUMBER in NUMBER,
107   X_LOGICAL_PAGE_DESCRIPTION in VARCHAR2
108 ) is
109   cursor c is select
110       LOGICAL_PAGE_NAME,
111       LOGICAL_PAGE_TYPE,
112       APPLICATION_ID,
113       ENABLED_FLAG,
114       PAGE_CONTROLLER_CLASS,
115       PAGE_PERMISSION_NAME,
116       OBJECT_VERSION_NUMBER
117     from JTF_DPF_LOGICAL_PAGES_B
118     where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID
119     for update of LOGICAL_PAGE_ID nowait;
120   recinfo c%rowtype;
121 
122   cursor c1 is select
123       LOGICAL_PAGE_DESCRIPTION,
124       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
125     from JTF_DPF_LOGICAL_PAGES_TL
126     where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID
127     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
128     for update of LOGICAL_PAGE_ID nowait;
129 begin
130   open c;
131   fetch c into recinfo;
132   if (c%notfound) then
133     close c;
134     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
135     app_exception.raise_exception;
136   end if;
137   close c;
138   if (    (recinfo.LOGICAL_PAGE_NAME = X_LOGICAL_PAGE_NAME)
139       AND ((recinfo.LOGICAL_PAGE_TYPE = X_LOGICAL_PAGE_TYPE)
140            OR ((recinfo.LOGICAL_PAGE_TYPE is null) AND (X_LOGICAL_PAGE_TYPE is null)))
141       AND (recinfo.APPLICATION_ID = X_APPLICATION_ID)
142       AND (recinfo.ENABLED_FLAG = X_ENABLED_FLAG)
143       AND ((recinfo.PAGE_CONTROLLER_CLASS = X_PAGE_CONTROLLER_CLASS)
144            OR ((recinfo.PAGE_CONTROLLER_CLASS is null) AND (X_PAGE_CONTROLLER_CLASS is null)))
145       AND ((recinfo.PAGE_PERMISSION_NAME = X_PAGE_PERMISSION_NAME)
146            OR ((recinfo.PAGE_PERMISSION_NAME is null) AND (X_PAGE_PERMISSION_NAME is null)))
147       AND (recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
148   ) then
149     null;
150   else
151     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
152     app_exception.raise_exception;
153   end if;
154 
155   for tlinfo in c1 loop
156     if (tlinfo.BASELANG = 'Y') then
157       if (    ((tlinfo.LOGICAL_PAGE_DESCRIPTION = X_LOGICAL_PAGE_DESCRIPTION)
158                OR ((tlinfo.LOGICAL_PAGE_DESCRIPTION is null) AND (X_LOGICAL_PAGE_DESCRIPTION is null)))
159       ) then
160         null;
161       else
162         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
163         app_exception.raise_exception;
164       end if;
165     end if;
166   end loop;
167   return;
168 end LOCK_ROW;
169 
170 procedure UPDATE_ROW (
171   X_LOGICAL_PAGE_ID in NUMBER,
172   X_LOGICAL_PAGE_NAME in VARCHAR2,
173   X_LOGICAL_PAGE_TYPE in VARCHAR2,
174   X_APPLICATION_ID in NUMBER,
175   X_ENABLED_FLAG in VARCHAR2,
176   X_PAGE_CONTROLLER_CLASS in VARCHAR2,
177   X_PAGE_PERMISSION_NAME in VARCHAR2,
178   X_OBJECT_VERSION_NUMBER in NUMBER,
179   X_LOGICAL_PAGE_DESCRIPTION in VARCHAR2,
180   X_LAST_UPDATE_DATE in DATE,
181   X_LAST_UPDATED_BY in NUMBER,
182   X_LAST_UPDATE_LOGIN in NUMBER
183 ) is
184 begin
185   update JTF_DPF_LOGICAL_PAGES_B set
186     LOGICAL_PAGE_NAME = X_LOGICAL_PAGE_NAME,
187     LOGICAL_PAGE_TYPE = X_LOGICAL_PAGE_TYPE,
188     APPLICATION_ID = X_APPLICATION_ID,
189     ENABLED_FLAG = X_ENABLED_FLAG,
190     PAGE_CONTROLLER_CLASS = X_PAGE_CONTROLLER_CLASS,
191     PAGE_PERMISSION_NAME = X_PAGE_PERMISSION_NAME,
192     OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
193     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
194     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
195     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
196   where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID;
197 
198   if (sql%notfound) then
199     raise no_data_found;
200   end if;
201 
202   update JTF_DPF_LOGICAL_PAGES_TL set
203     LOGICAL_PAGE_DESCRIPTION = X_LOGICAL_PAGE_DESCRIPTION,
204     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
205     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
206     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
207     SOURCE_LANG = userenv('LANG')
208   where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID
209   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
210 
211   if (sql%notfound) then
212     raise no_data_found;
213   end if;
214 end UPDATE_ROW;
215 
216 procedure DELETE_ROW (
217   X_LOGICAL_PAGE_ID in NUMBER
218 ) is
219 begin
220   delete from JTF_DPF_LOGICAL_PAGES_TL
221   where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID;
222 
223   if (sql%notfound) then
224     raise no_data_found;
225   end if;
226 
227   delete from JTF_DPF_LOGICAL_PAGES_B
228   where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID;
229 
230   if (sql%notfound) then
231     raise no_data_found;
232   end if;
233 end DELETE_ROW;
234 
235 procedure ADD_LANGUAGE
236 is
237 begin
238   delete from JTF_DPF_LOGICAL_PAGES_TL T
239   where not exists
240     (select NULL
241     from JTF_DPF_LOGICAL_PAGES_B B
242     where B.LOGICAL_PAGE_ID = T.LOGICAL_PAGE_ID
243     );
244 
245   update JTF_DPF_LOGICAL_PAGES_TL T set (
246       LOGICAL_PAGE_DESCRIPTION
247     ) = (select
248       B.LOGICAL_PAGE_DESCRIPTION
249     from JTF_DPF_LOGICAL_PAGES_TL B
250     where B.LOGICAL_PAGE_ID = T.LOGICAL_PAGE_ID
251     and B.LANGUAGE = T.SOURCE_LANG)
252   where (
253       T.LOGICAL_PAGE_ID,
254       T.LANGUAGE
255   ) in (select
256       SUBT.LOGICAL_PAGE_ID,
257       SUBT.LANGUAGE
258     from JTF_DPF_LOGICAL_PAGES_TL SUBB, JTF_DPF_LOGICAL_PAGES_TL SUBT
259     where SUBB.LOGICAL_PAGE_ID = SUBT.LOGICAL_PAGE_ID
260     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
261     and (SUBB.LOGICAL_PAGE_DESCRIPTION <> SUBT.LOGICAL_PAGE_DESCRIPTION
262       or (SUBB.LOGICAL_PAGE_DESCRIPTION is null and SUBT.LOGICAL_PAGE_DESCRIPTION is not null)
263       or (SUBB.LOGICAL_PAGE_DESCRIPTION is not null and SUBT.LOGICAL_PAGE_DESCRIPTION is null)
264   ));
265 
266   insert into JTF_DPF_LOGICAL_PAGES_TL (
267     LOGICAL_PAGE_ID,
268     LOGICAL_PAGE_DESCRIPTION,
269     CREATED_BY,
270     LAST_UPDATE_DATE,
271     LAST_UPDATED_BY,
272     LAST_UPDATE_LOGIN,
273     LANGUAGE,
274     SOURCE_LANG
275   ) select
276     B.LOGICAL_PAGE_ID,
277     B.LOGICAL_PAGE_DESCRIPTION,
278     B.CREATED_BY,
279     B.LAST_UPDATE_DATE,
280     B.LAST_UPDATED_BY,
281     B.LAST_UPDATE_LOGIN,
282     L.LANGUAGE_CODE,
283     B.SOURCE_LANG
284   from JTF_DPF_LOGICAL_PAGES_TL B, FND_LANGUAGES L
285   where L.INSTALLED_FLAG in ('I', 'B')
286   and B.LANGUAGE = userenv('LANG')
287   and not exists
288     (select NULL
289     from JTF_DPF_LOGICAL_PAGES_TL T
290     where T.LOGICAL_PAGE_ID = B.LOGICAL_PAGE_ID
291     and T.LANGUAGE = L.LANGUAGE_CODE);
292 end ADD_LANGUAGE;
293 
294   procedure TRANSLATE_ROW (
295     X_LOGICAL_PAGE_NAME IN VARCHAR2,
296     X_APPLICATION_ID IN VARCHAR2,
297     X_LOGICAL_PAGE_DESCRIPTION IN VARCHAR2,
298     X_OWNER IN VARCHAR2
299   ) is
300     l_lid number;
301     l_user_id number;
302   begin
303     l_user_id := 0;
304     if x_owner = 'SEED' then l_user_id := 1; end if;
305 
306     l_lid := find(x_logical_page_name, x_application_id);
307     update jtf_dpf_logical_pages_tl set
308 	logical_page_description = x_logical_page_description,
309 	last_updated_by = l_user_id,
310 	last_update_date = sysdate,
311 	last_update_login = 0,
312 	source_lang = userenv('LANG')
313       where userenv('LANG') in (LANGUAGE, SOURCE_LANG) and
314         logical_page_id = l_lid;
315   end;
316 
317   procedure ceiling_lgcl_phy(
318     X_LOGICAL_PAGE_NAME VARCHAR2,
319     X_APPLICATION_ID VARCHAR2,
320     X_NUM_NON_DEF_RULES VARCHAR2,
321     X_OWNER VARCHAR2,
322     X_FORCE_UPDATE_FLAG VARCHAR2) is
323     l_do_it boolean := false;
324     l_logical_page_id number;
325     l_user number;
326     l_owner_of_l2p number;
327   begin
328     l_user := 0;
329     if x_owner = 'SEED' then l_user := 1; end if;
330 
331     -- figure which logical_id we're talking about
332     l_logical_page_id := find(x_logical_page_name, x_application_id);
333 
334     -- if we're forced to, then do it!
335     if x_force_update_flag = 'TRUE' then l_do_it := true; end if;
336 
337     -- if we haven't yet decided whether to do it, see whether we own the
338     -- default l2p row in lgcl_phy table
339     if not l_do_it then
340       begin
341         select last_updated_by into l_owner_of_l2p
342           from jtf_dpf_lgcl_phy_rules
343           where logical_page_id = l_logical_page_id and
344 	    default_page_flag = 'T';
345         if l_owner_of_l2p = l_user then l_do_it := true; end if;
346        exception when no_data_found then return;
347       end;
348     end if;
349 
350     -- if we've decided to do it,...
351     if l_do_it then
352       -- delete the rows, if any...
353       delete from jtf_dpf_lgcl_phy_rules
354         where logical_page_id = l_logical_page_id and
355 	  default_page_flag = 'F' and
356 	  rule_eval_sequence > x_num_non_def_rules;
357     end if;
358   end;
359 
360   procedure LOAD_ROW (
361     X_LOGICAL_PAGE_NAME in VARCHAR2,
362     X_APPLICATION_ID in VARCHAR2,
363     X_LOGICAL_PAGE_DESCRIPTION  in VARCHAR2,
364 --    X_NUM_NON_DEF_RULES IN VARCHAR2,
365     X_LOGICAL_PAGE_TYPE IN VARCHAR2,
366     X_ENABLED_FLAG IN VARCHAR2,
367     X_PAGE_CONTROLLER_CLASS IN VARCHAR2,
368     X_PAGE_PERMISSION_NAME IN VARCHAR2,
369     X_OWNER in VARCHAR2
370   ) is
371 
372     t_old_logical_id number;
373     t_new_logical_id number;
374     t_rowid rowid;
375     t_user number;
376   begin
377     t_user := 0;
378     if x_owner = 'SEED' then t_user := 1; end if;
379 
380     -- see whether a row with this appid and logical_page_name already exists
381     open get_logical_id(x_logical_page_name, x_application_id);
382     fetch get_logical_id into t_old_logical_id;
383 
384     -- if it's not already there
385     if get_logical_id%notfound then
386       close get_logical_id;
387 
388       -- get a new pseudo-sequence number
389       -- arsingh: prevent use of same id by different threads.
390       select JTF_DPF_LOGICAL_PAGES_S.nextval into t_new_logical_id from dual;
391       -- select max(logical_page_id) into t_new_logical_id
392       --   from jtf_dpf_logical_pages_b
393       --   where logical_page_id < 10000;
394       -- if t_new_logical_id is null then
395       --   t_new_logical_id := 1;
396       -- else
397       --   t_new_logical_id := t_new_logical_id+1;
398       -- end if;
399 
400       -- call _pkg.insert_row to handle _b and _tl tables
401       insert_row(
402 	X_ROWID				=> t_rowid,
403 	X_LOGICAL_PAGE_ID		=> t_new_logical_id,
404 	X_LOGICAL_PAGE_NAME		=> x_logical_page_name,
405 	X_LOGICAL_PAGE_TYPE		=> x_logical_page_type,
406 	X_APPLICATION_ID		=> x_application_id,
407 	X_ENABLED_FLAG			=> x_enabled_flag,
408 	X_PAGE_CONTROLLER_CLASS		=> x_page_controller_class,
409 	X_PAGE_PERMISSION_NAME		=> x_page_permission_name,
410 	X_OBJECT_VERSION_NUMBER		=> 1,
411 	X_LOGICAL_PAGE_DESCRIPTION	=> x_logical_page_description,
412 	X_CREATION_DATE			=> sysdate,
413 	X_CREATED_BY			=> t_user,
414 	X_LAST_UPDATE_DATE		=> sysdate,
415 	X_LAST_UPDATED_BY		=> t_user,
416 	X_LAST_UPDATE_LOGIN		=> 0
417       );
418     else
419       close get_logical_id;
420 
421       -- call _pkg.update_row to handle _b and _tl tables
422       update_row(
423 	X_LOGICAL_PAGE_ID		=> t_old_logical_id,
424 	X_LOGICAL_PAGE_NAME		=> x_logical_page_name,
425 	X_LOGICAL_PAGE_TYPE		=> x_logical_page_type,
426 	X_APPLICATION_ID		=> x_application_id,
427 	X_ENABLED_FLAG			=> x_enabled_flag,
428 	X_PAGE_CONTROLLER_CLASS		=> x_page_controller_class,
429 	X_PAGE_PERMISSION_NAME		=> x_page_permission_name,
430 	X_OBJECT_VERSION_NUMBER		=> 1,
431 	X_LOGICAL_PAGE_DESCRIPTION	=> x_logical_page_description,
432 	X_LAST_UPDATE_DATE		=> sysdate,
433 	X_LAST_UPDATED_BY		=> t_user,
434 	X_LAST_UPDATE_LOGIN		=> 0
435       );
436     end if;
437   end;
438 
439   function find(
440     x_logical_page_name varchar2,
441     x_application_id in varchar2
442   ) return number is
443     retval number := null;
444   begin
445     open get_logical_id(x_logical_page_name, x_application_id);
446     fetch get_logical_id into retval;
447     close get_logical_id;
448     return retval;
449   end;
450 
451   procedure ins_upd_or_ign_lgcl_phy_rules(
452     x_rule_eval_sequence		varchar2,
453     x_default_page_flag			varchar2,
454     x_logical_page_application_id	varchar2,
455     x_logical_page_name			varchar2,
456     x_physical_page_application_id	varchar2,
457     x_physical_page_name		varchar2,
458     x_rule_application_id		varchar2,
459     x_rule_name				varchar2,
460     x_owner				varchar2,
461     x_force_update_flag			varchar2) is
462     l_last_updated_by number;
463     l_logical_id number := null;
464     l_physical_id number := null;
465     l_rule_id number := null;
466     l_lpid number := null;
467     t_new_lpid number := null;
468     l_is_update varchar2(1);
469     l_user_id number;
470     l_owner_of_l2p number;
471     l_do_it boolean := false;
472     cursor another_default(p_logical_page_id number) is
473       select logical_physical_id
474 	from jtf_dpf_lgcl_phy_rules
475 	where logical_page_id=p_logical_page_id and
476 	  default_page_flag='T';
477     cursor another_non_default(p_logical_page_id number, p_seq number) is
478       select logical_physical_id
479 	from jtf_dpf_lgcl_phy_rules
480 	where logical_page_id=p_logical_page_id and
481 	  default_page_flag='F' and
482 	  rule_eval_sequence = p_seq;
483   begin
484     l_user_id := 0;
485     if x_owner = 'SEED' then l_user_id := 1; end if;
486 
487     -- get the logical_id that corresponds to this
488     l_logical_id := find(x_logical_page_name, x_logical_page_application_id);
489     l_rule_id := jtf_dpf_rules_pkg.find(x_rule_name, x_rule_application_id);
490     l_physical_id := jtf_dpf_physical_pages_pkg.find_oldest_prefer_owned_by(
491 	x_physical_page_name, x_physical_page_application_id, l_user_id);
492 
493     -- if we're forced to, then do it!
494     if x_force_update_flag = 'TRUE' then l_do_it := true; end if;
495 
496     -- if we haven't yet decided whether to do it, see whether we own the
497     -- default l2p row in lgcl_phy table
498     if not l_do_it then
499       begin
500         select last_updated_by into l_owner_of_l2p
501           from jtf_dpf_lgcl_phy_rules
502           where logical_page_id = l_logical_id and
503 	    default_page_flag = 'T';
504         if l_owner_of_l2p = l_user_id then l_do_it := true; end if;
505        exception when no_data_found then l_do_it := true;
506       end;
507     end if;
508 
509     -- if we've decided not to do it, then just return
510     if not l_do_it then return; end if;
511 
512     -- try to find a row which matches this one (to see whether we should
513     -- do an UPDATE rather than an INSERT). If there's such a row, then
514     -- l_lpid will be the LOGICAL_PHYSICAL_ID of that row, else it'll remain
515     -- null.
516     if 'T' = x_default_page_flag then
517       -- if there's already a default
518       open another_default(l_logical_id);
519       fetch another_default into l_lpid;
520       close another_default;
521     -- else handle non-default row
522     else
523       open another_non_default(l_logical_id, x_rule_eval_sequence);
524       fetch another_non_default into l_lpid;
525       close another_non_default;
526     end if;
527 
528     -- if there's no such row, then do an insert.
529 
530     if l_lpid is null then
531       -- get a new logical_physical_id (pseudo-sequence)
532       -- arsingh: prevent use of same id by different threads.
533       select JTF_DPF_LGCL_PHY_RULES_S.nextval into t_new_lpid from dual;
534       -- select max(logical_physical_id) into t_new_lpid
535       --   from jtf_dpf_lgcl_phy_rules where logical_physical_id < 10000;
536       -- if t_new_lpid is null then
537       --  t_new_lpid := 1;
538       -- else
539       --  t_new_lpid := t_new_lpid  + 1;
540       -- end if;
541       -- insert a new row
542 
543       insert into jtf_dpf_lgcl_phy_rules(
544 	logical_physical_id,
545 	logical_page_id,
546 	rule_eval_sequence,
547 	default_page_flag,
548 	physical_page_id,
549 	rule_id,
550 		object_version_number,
551 		created_by,
552 		creation_date,
553 		last_update_date,
554 		last_updated_by,
555 		last_update_login)
556       values (
557 	t_new_lpid,
558 	l_logical_id,
559 	x_rule_eval_sequence,
560 	x_default_page_flag,
561 	l_physical_id,
562 	l_rule_id,
563 	1,
564 	l_user_id,
565 	sysdate,
566 	sysdate,
567 	l_user_id,
568 	0);
569     else
570       -- if there is such as row, and we either own it, or FORCE_UPDATE_FLAG
571       -- is true, then update it. else do nothing
572       select last_updated_by into l_last_updated_by
573 	from jtf_dpf_lgcl_phy_rules
574         where logical_physical_id = l_lpid;
575       if l_last_updated_by = l_user_id or
576 	  x_force_update_flag = 'TRUE' then
577         update jtf_dpf_lgcl_phy_rules set
578 	  physical_page_id = l_physical_id,
579 	  rule_id = l_rule_id,
580 		object_version_number = object_version_number +1,
581 		last_update_date = sysdate,
582 		last_updated_by = l_user_id,
583 		last_update_login = 0
584         where logical_physical_id = l_lpid;
585       end if;
586     end if;
587   end;
588 
589 end JTF_DPF_LOGICAL_PAGES_PKG;