DBA Data[Home] [Help]

PACKAGE BODY: APPS.XDP_PROC_BODY_PKG

Source


1 PACKAGE BODY XDP_PROC_BODY_PKG AS
2 /* $Header: XDPPBDYB.pls 120.2 2005/07/15 01:52:00 appldev ship $ */
3 procedure INSERT_ROW (
4   X_ROWID in OUT NOCOPY VARCHAR2,
5   X_PROC_NAME in VARCHAR2,
6   X_PROC_SPEC in VARCHAR2,
7   X_PROC_BODY in VARCHAR2,
8   X_PROC_TYPE in VARCHAR2,
9   X_DISPLAY_NAME in VARCHAR2,
10   X_DESCRIPTION in VARCHAR2,
11   X_CREATION_DATE in DATE,
12   X_CREATED_BY in NUMBER,
13   X_LAST_UPDATE_DATE in DATE,
14   X_LAST_UPDATED_BY in NUMBER,
15   X_LAST_UPDATE_LOGIN in NUMBER,
16   X_PROTECTED_FLAG in VARCHAR2 := 'N'
17 ) is
18   cursor C is select ROWID from XDP_PROC_BODY
19     where PROC_NAME = X_PROC_NAME
20     ;
21         lv_lob_i          CLOB;
22 begin
23 -- Bug Fix 1489219.
24 -- Removed references to CLOB
25 
26    insert into XDP_PROC_BODY (
27                    proc_name,
28                    proc_type,
29                    protected_flag,
30                    proc_spec,
31                    proc_body,
32                    creation_date,
33                    created_by,
34                    last_update_date,
35                    last_updated_by,
36                    last_update_login )
37             values
38                    (X_PROC_NAME,
39                     X_PROC_TYPE,
40                     X_PROTECTED_FLAG,
41                     X_PROC_SPEC,
42                     empty_clob(),
43                     sysdate,
44                     X_CREATED_BY,
45                     sysdate,
46                     X_LAST_UPDATED_BY,
47                     0)
48     returning proc_body into lv_lob_i;
49 
50     dbms_lob.write(lv_lob_i, length(X_PROC_BODY), 1, X_PROC_BODY);
51 
52       insert into XDP_PROC_BODY_TL (
53                    proc_name,
54                    display_name,
55                    description,
56                    created_by,
57                    creation_date,
58                    last_updated_by,
59                    last_update_date,
60                    last_update_login,
61                    language,
62                    source_lang
63                ) select
64                    X_PROC_NAME,
65                    X_DISPLAY_NAME,
66                    X_DESCRIPTION,
67                    X_CREATED_BY,
68                    sysdate,
69                    X_LAST_UPDATED_BY,
70                    sysdate,
71                    0,
72                    L.LANGUAGE_CODE,
73                    userenv('LANG')
74                 from FND_LANGUAGES L
75                where L.INSTALLED_FLAG in ('I', 'B')
76                  and not exists
77                     (select NULL
78                        from XDP_PROC_BODY_TL T
79                       where T.PROC_NAME = X_PROC_NAME
80                         and T.LANGUAGE = L.LANGUAGE_CODE);
81 
82   open c;
83   fetch c into X_ROWID;
84   if (c%notfound) then
85     close c;
86     raise no_data_found;
87   end if;
88   close c;
89 end INSERT_ROW;
90 
91 procedure LOCK_ROW (
92   X_PROC_NAME in VARCHAR2,
93   X_PROC_SPEC in VARCHAR2,
94   X_PROC_BODY in CLOB,
95   X_PROC_TYPE in VARCHAR2,
96   X_DISPLAY_NAME in VARCHAR2,
97   X_DESCRIPTION in VARCHAR2,
98   X_PROTECTED_FLAG in VARCHAR2 := 'N'
99 ) is
100   cursor c is select
101       PROC_BODY,
102       PROC_SPEC,
103       PROC_TYPE,
104       PROTECTED_FLAG
105     from XDP_PROC_BODY
106     where PROC_NAME = X_PROC_NAME
107     for update of PROC_NAME nowait;
108   recinfo c%rowtype;
109 
110   cursor c1 is select
111       DISPLAY_NAME,
112       DESCRIPTION,
113       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
114     from XDP_PROC_BODY_TL
115     where PROC_NAME = X_PROC_NAME
116     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
117     for update of PROC_NAME nowait;
118 begin
119   open c;
120   fetch c into recinfo;
121   if (c%notfound) then
122     close c;
123     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
124     app_exception.raise_exception;
125   end if;
126   close c;
127   if (    (DBMS_LOB.COMPARE (recinfo.PROC_BODY, X_PROC_BODY, DBMS_LOB.GETLENGTH(X_PROC_BODY), 1, 1) = 0)
128       AND (recinfo.PROC_TYPE = X_PROC_TYPE)
129       AND (recinfo.PROC_SPEC = X_PROC_SPEC)
130       AND (recinfo.PROTECTED_FLAG = X_PROTECTED_FLAG)
131   ) then
132     null;
133   else
134     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
135     app_exception.raise_exception;
136   end if;
137 
138   for tlinfo in c1 loop
139     if (tlinfo.BASELANG = 'Y') then
140       if (    (tlinfo.DISPLAY_NAME = X_DISPLAY_NAME)
141           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
142                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
143       ) then
144         null;
145       else
146         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
147         app_exception.raise_exception;
148       end if;
149     end if;
150   end loop;
151   return;
152 end LOCK_ROW;
153 
154 procedure UPDATE_ROW (
155   X_PROC_NAME in VARCHAR2,
156   X_PROC_SPEC in VARCHAR2,
157   X_PROC_BODY in VARCHAR2,
158   X_PROC_TYPE in VARCHAR2,
159   X_DISPLAY_NAME in VARCHAR2,
160   X_DESCRIPTION in VARCHAR2,
161   X_LAST_UPDATE_DATE in DATE,
162   X_LAST_UPDATED_BY in NUMBER,
163   X_LAST_UPDATE_LOGIN in NUMBER,
164   X_PROTECTED_FLAG in VARCHAR2 := 'N'
165 ) is
166         lv_lob_u          CLOB;
167 begin
168 
169 -- Bug Fix 1489219.
170 -- Removed references to CLOB
171 
172           update XDP_PROC_BODY
173             set
174               proc_spec = X_PROC_SPEC,
175               proc_body = empty_clob(),
176               proc_type = X_PROC_TYPE,
177               protected_flag = X_PROTECTED_FLAG,
178               last_updated_by = X_LAST_UPDATED_BY,
179               last_update_date = sysdate,
180               last_update_login = 0
181            where
182               proc_name = X_PROC_NAME
183               returning proc_body into lv_lob_u;
184 
185               if sql%notfound then
186                 raise NO_DATA_FOUND;
187               end if;
188 
189               DBMS_LOB.WRITE(lv_lob_u,length(X_PROC_BODY),1,X_PROC_BODY);
190 
191 
192            update XDP_PROC_BODY_TL
193              set
194               display_name = X_DISPLAY_NAME,
195               description = X_DESCRIPTION,
196               last_updated_by = X_LAST_UPDATED_BY,
197               last_update_date = sysdate,
198               last_update_login = 0,
199               source_lang = userenv('LANG')
200            where proc_name = X_PROC_NAME
201              and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
202 
203              if sql%notfound then
204                 raise NO_DATA_FOUND;
205               end if;
206 
207 end UPDATE_ROW;
208 
209 procedure DELETE_ROW (
210   X_PROC_NAME in VARCHAR2
211 ) is
212 begin
213   delete from XDP_PROC_BODY_TL
214   where PROC_NAME = X_PROC_NAME;
215 
216   if (sql%notfound) then
217     raise no_data_found;
218   end if;
219 
220   delete from XDP_PROC_BODY
221   where PROC_NAME = X_PROC_NAME;
222 
223   if (sql%notfound) then
224     raise no_data_found;
225   end if;
226 end DELETE_ROW;
227 
228 procedure ADD_LANGUAGE
229 is
230 begin
231   delete from XDP_PROC_BODY_TL T
232   where not exists
233     (select NULL
234     from XDP_PROC_BODY B
235     where B.PROC_NAME = T.PROC_NAME
236     );
237 
238 
239 
240 /******
241 
242 -- rephrased the query to use EXISTS ratherthan using IN
243 -- skilaru 03/26/2001
244 
245   update XDP_PROC_BODY_TL T set (
246       DISPLAY_NAME,
247       DESCRIPTION
248     ) = (select
249       B.DISPLAY_NAME,
250       B.DESCRIPTION
251     from XDP_PROC_BODY_TL B
252     where B.PROC_NAME = T.PROC_NAME
253     and B.LANGUAGE = T.SOURCE_LANG)
254   where (
255       T.PROC_NAME,
256       T.LANGUAGE
257   ) in (select
258       SUBT.PROC_NAME,
259       SUBT.LANGUAGE
260     from XDP_PROC_BODY_TL SUBB, XDP_PROC_BODY_TL SUBT
261     where SUBB.PROC_NAME = SUBT.PROC_NAME
262     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
263     and (SUBB.DISPLAY_NAME <> SUBT.DISPLAY_NAME
264       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
265       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
266       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
267   ));
268 
269 *****/
270 
271 
272  update   XDP_PROC_BODY_TL T
273     set ( DISPLAY_NAME, DESCRIPTION) = (select B.DISPLAY_NAME, B.DESCRIPTION
274                                           from XDP_PROC_BODY_TL B
275                                          where B.PROC_NAME = T.PROC_NAME
276                                            and B.LANGUAGE = T.SOURCE_LANG)
277   where EXISTS (select SUBT.PROC_NAME, SUBT.LANGUAGE
278                   from XDP_PROC_BODY_TL SUBB, XDP_PROC_BODY_TL SUBT
279                  where SUBB.PROC_NAME = SUBT.PROC_NAME
280                    and SUBB.LANGUAGE = SUBT.SOURCE_LANG
281                    and (SUBB.DISPLAY_NAME <> SUBT.DISPLAY_NAME
282                         or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
283                         or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
284                         or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null))
285                    and SUBT.proc_name =  T.PROC_NAME
286                    and SUBT.language  =  T.LANGUAGE
287                );
288 
289 
290   insert into XDP_PROC_BODY_TL (
291     PROC_NAME,
292     DISPLAY_NAME,
293     DESCRIPTION,
294     CREATED_BY,
295     CREATION_DATE,
296     LAST_UPDATED_BY,
297     LAST_UPDATE_DATE,
298     LAST_UPDATE_LOGIN,
299     LANGUAGE,
300     SOURCE_LANG
301   ) select
302     B.PROC_NAME,
303     B.DISPLAY_NAME,
304     B.DESCRIPTION,
305     B.CREATED_BY,
306     B.CREATION_DATE,
307     B.LAST_UPDATED_BY,
308     B.LAST_UPDATE_DATE,
309     B.LAST_UPDATE_LOGIN,
310     L.LANGUAGE_CODE,
311     B.SOURCE_LANG
312   from XDP_PROC_BODY_TL B, FND_LANGUAGES L
313   where L.INSTALLED_FLAG in ('I', 'B')
314   and B.LANGUAGE = userenv('LANG')
315   and not exists
316     (select NULL
317     from XDP_PROC_BODY_TL T
318     where T.PROC_NAME = B.PROC_NAME
319     and T.LANGUAGE = L.LANGUAGE_CODE);
320 end ADD_LANGUAGE;
321 
322 procedure LOAD_ROW (
323   X_PROC_NAME in VARCHAR2,
324   X_PROC_SPEC in VARCHAR2,
325   X_PROC_BODY in VARCHAR2,
326   X_PROC_TYPE in VARCHAR2,
327   X_DISPLAY_NAME in VARCHAR2,
328   X_DESCRIPTION in VARCHAR2,
329   X_OWNER in VARCHAR2,
330   X_PROTECTED_FLAG in VARCHAR2 := 'N'
331   ) IS
332 begin
333 
334   declare
335      user_id            number := 0;
336      row_id             varchar2(64);
337 
338   begin
339 
340      /* The following derivation has been replaced with the FND API.		dputhiye 15-JUL-2005. R12 ATG "Seed Version by Date" Uptake */
341      --if (X_OWNER = 'SEED') then
342      --   user_id := 1;
343      --end if;
344      user_id := fnd_load_util.owner_id(X_OWNER);
345 
346      XDP_PROC_BODY_PKG.UPDATE_ROW (
347   	X_PROC_NAME => X_PROC_NAME,
348   	X_PROC_SPEC => X_PROC_SPEC,
349   	X_PROC_BODY => X_PROC_BODY,
350   	X_PROC_TYPE => X_PROC_TYPE,
351   	X_DISPLAY_NAME => X_DISPLAY_NAME,
352   	X_DESCRIPTION => X_DESCRIPTION,
353         X_LAST_UPDATE_DATE => sysdate,
354         X_LAST_UPDATED_BY => user_id,
355         X_LAST_UPDATE_LOGIN => 0,
356   		X_PROTECTED_FLAG => X_PROTECTED_FLAG);
357 
358     exception
359        when NO_DATA_FOUND then
360           XDP_PROC_BODY_PKG.INSERT_ROW (
361              	X_ROWID => row_id,
362   		X_PROC_NAME => X_PROC_NAME,
363   		X_PROC_SPEC => X_PROC_SPEC,
364   		X_PROC_BODY => X_PROC_BODY,
365   		X_PROC_TYPE => X_PROC_TYPE,
366   		X_DISPLAY_NAME => X_DISPLAY_NAME,
367   		X_DESCRIPTION => X_DESCRIPTION,
368              	X_CREATION_DATE => sysdate,
369              	X_CREATED_BY => user_id,
370              	X_LAST_UPDATE_DATE => sysdate,
371              	X_LAST_UPDATED_BY => user_id,
372              	X_LAST_UPDATE_LOGIN => 0 ,
373   				X_PROTECTED_FLAG => X_PROTECTED_FLAG);
374    end;
375 end LOAD_ROW;
376 
377 procedure TRANSLATE_ROW (
378    X_PROC_NAME in VARCHAR2,
379    X_DISPLAY_NAME in VARCHAR2,
380    X_DESCRIPTION in VARCHAR2,
381    X_OWNER in VARCHAR2) IS
382 
383 begin
384 
385     -- only update rows that have not been altered by user
386 
387     update XDP_PROC_BODY_TL
388     set  description = X_DESCRIPTION,
389         display_name = X_DISPLAY_NAME,
390         source_lang = userenv('LANG'),
391         last_update_date = sysdate,
392         --last_updated_by = decode(X_OWNER, 'SEED', 1, 0),		/*dputhiye 15-JUL-2005. DECODE replaced with FND API.*/
393 	last_updated_by = fnd_load_util.owner_id(X_OWNER),
394         last_update_login = 0
395   where proc_name = X_PROC_NAME
396     and userenv('LANG') in (language, source_lang);
397 
398 end TRANSLATE_ROW;
399 
400 
401 end XDP_PROC_BODY_PKG;