DBA Data[Home] [Help]

PACKAGE BODY: APPS.WF_ITEM_ATTRIBUTES_PKG

Source


1 package body WF_ITEM_ATTRIBUTES_PKG as
2 /* $Header: wfitab.pls 120.1 2005/07/02 02:46:32 appldev ship $ */
3 procedure INSERT_ROW (
4   X_ROWID in out nocopy VARCHAR2,
5   X_ITEM_TYPE in VARCHAR2,
6   X_NAME in VARCHAR2,
7   X_SEQUENCE in NUMBER,
8   X_TYPE in VARCHAR2,
9   X_PROTECT_LEVEL in NUMBER,
10   X_CUSTOM_LEVEL in NUMBER,
11   X_SUBTYPE in VARCHAR2,
12   X_FORMAT in VARCHAR2,
13   X_TEXT_DEFAULT in VARCHAR2,
14   X_NUMBER_DEFAULT in NUMBER,
15   X_DATE_DEFAULT in DATE,
16   X_DISPLAY_NAME in VARCHAR2,
17   X_DESCRIPTION in VARCHAR2
18 ) is
19   cursor C is select ROWID from WF_ITEM_ATTRIBUTES
20     where ITEM_TYPE = X_ITEM_TYPE
21     and NAME = X_NAME
22     ;
23 begin
24   insert into WF_ITEM_ATTRIBUTES (
25     ITEM_TYPE,
26     NAME,
27     SEQUENCE,
28     TYPE,
29     PROTECT_LEVEL,
30     CUSTOM_LEVEL,
31     SUBTYPE,
32     FORMAT,
33     TEXT_DEFAULT,
34     NUMBER_DEFAULT,
35     DATE_DEFAULT
36   ) values (
37     X_ITEM_TYPE,
38     X_NAME,
39     X_SEQUENCE,
40     X_TYPE,
41     X_PROTECT_LEVEL,
42     X_CUSTOM_LEVEL,
43     X_SUBTYPE,
44     X_FORMAT,
45     X_TEXT_DEFAULT,
46     X_NUMBER_DEFAULT,
47     X_DATE_DEFAULT
48   );
49 
50   insert into WF_ITEM_ATTRIBUTES_TL (
51     ITEM_TYPE,
52     NAME,
53     DISPLAY_NAME,
54     PROTECT_LEVEL,
55     CUSTOM_LEVEL,
56     DESCRIPTION,
57     LANGUAGE,
58     SOURCE_LANG
59   ) select
60     X_ITEM_TYPE,
61     X_NAME,
62     X_DISPLAY_NAME,
63     X_PROTECT_LEVEL,
64     X_CUSTOM_LEVEL,
65     X_DESCRIPTION,
66     L.CODE,
67     userenv('LANG')
68   from WF_LANGUAGES L
69   where L.INSTALLED_FLAG = 'Y'
70   and not exists
71     (select NULL
72     from WF_ITEM_ATTRIBUTES_TL T
73     where T.ITEM_TYPE = X_ITEM_TYPE
74     and T.NAME = X_NAME
75     and T.LANGUAGE = L.CODE);
76 
77   open c;
78   fetch c into X_ROWID;
79   if (c%notfound) then
80     close c;
81     raise no_data_found;
82   end if;
83   close c;
84 
85 exception
86   when others then
87     wf_core.context('Wf_Item_Attributes_Pkg', 'Insert_Row',
88         x_item_type, x_name);
89     raise;
90 end INSERT_ROW;
91 
92 procedure LOCK_ROW (
93   X_ITEM_TYPE in VARCHAR2,
94   X_NAME in VARCHAR2,
95   X_SEQUENCE in NUMBER,
96   X_TYPE in VARCHAR2,
97   X_PROTECT_LEVEL in NUMBER,
98   X_CUSTOM_LEVEL in NUMBER,
99   X_SUBTYPE in VARCHAR2,
100   X_FORMAT in VARCHAR2,
101   X_TEXT_DEFAULT in VARCHAR2,
102   X_NUMBER_DEFAULT in NUMBER,
103   X_DATE_DEFAULT in DATE,
104   X_DISPLAY_NAME in VARCHAR2,
105   X_DESCRIPTION in VARCHAR2
106 ) is
107   cursor c is select
108       SEQUENCE,
109       TYPE,
110       PROTECT_LEVEL,
111       CUSTOM_LEVEL,
112       SUBTYPE,
113       FORMAT,
114       TEXT_DEFAULT,
115       NUMBER_DEFAULT,
116       DATE_DEFAULT
117     from WF_ITEM_ATTRIBUTES
118     where ITEM_TYPE = X_ITEM_TYPE
119     and NAME = X_NAME
120     for update of ITEM_TYPE nowait;
121   recinfo c%rowtype;
122 
123   cursor c1 is select
124       DISPLAY_NAME,
125       DESCRIPTION
126     from WF_ITEM_ATTRIBUTES_TL
127     where ITEM_TYPE = X_ITEM_TYPE
128     and NAME = X_NAME
129     and LANGUAGE = userenv('LANG')
130     for update of ITEM_TYPE nowait;
131   tlinfo c1%rowtype;
132 
133 begin
134   open c;
135   fetch c into recinfo;
136   if (c%notfound) then
137     close c;
138     wf_core.raise('WF_RECORD_DELETED');
139   end if;
140   close c;
141   if (    (recinfo.SEQUENCE = X_SEQUENCE)
142       AND (recinfo.TYPE = X_TYPE)
143       AND (recinfo.PROTECT_LEVEL = X_PROTECT_LEVEL)
144       AND (recinfo.CUSTOM_LEVEL = X_CUSTOM_LEVEL)
145       AND ((recinfo.SUBTYPE = X_SUBTYPE)
146            OR ((recinfo.SUBTYPE is null) AND (X_SUBTYPE is null)))
147       AND ((recinfo.FORMAT = X_FORMAT)
148            OR ((recinfo.FORMAT is null) AND (X_FORMAT is null)))
149       AND ((recinfo.TEXT_DEFAULT = X_TEXT_DEFAULT)
150            OR ((recinfo.TEXT_DEFAULT is null) AND (X_TEXT_DEFAULT is null)))
151       AND ((recinfo.NUMBER_DEFAULT = X_NUMBER_DEFAULT)
152            OR ((recinfo.NUMBER_DEFAULT is null) AND (X_NUMBER_DEFAULT is null)))
153       AND ((recinfo.DATE_DEFAULT = X_DATE_DEFAULT)
154            OR ((recinfo.DATE_DEFAULT is null) AND (X_DATE_DEFAULT is null)))
155   ) then
156     null;
157   else
158     wf_core.raise('WF_RECORD_CHANGED');
159   end if;
160 
161   open c1;
162   fetch c1 into tlinfo;
163   if (c1%notfound) then
164     close c1;
165     return;
166   end if;
167   close c1;
168 
169   if (    (tlinfo.DISPLAY_NAME = X_DISPLAY_NAME)
170       AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
171            OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
172   ) then
173     null;
174   else
175     wf_core.raise('WF_RECORD_CHANGED');
176   end if;
177   return;
178 
179 exception
180   when others then
181     wf_core.context('Wf_Item_Attributes_Pkg', 'Lock_Row',
182         x_item_type, x_name);
183     raise;
184 end LOCK_ROW;
185 
186 procedure UPDATE_ROW (
187   X_ITEM_TYPE in VARCHAR2,
188   X_NAME in VARCHAR2,
189   X_SEQUENCE in NUMBER,
190   X_TYPE in VARCHAR2,
191   X_PROTECT_LEVEL in NUMBER,
192   X_CUSTOM_LEVEL in NUMBER,
193   X_SUBTYPE in VARCHAR2,
194   X_FORMAT in VARCHAR2,
195   X_TEXT_DEFAULT in VARCHAR2,
196   X_NUMBER_DEFAULT in NUMBER,
197   X_DATE_DEFAULT in DATE,
198   X_DISPLAY_NAME in VARCHAR2,
199   X_DESCRIPTION in VARCHAR2
200 ) is
201 begin
202   update WF_ITEM_ATTRIBUTES set
203     SEQUENCE = X_SEQUENCE,
204     TYPE = X_TYPE,
205     PROTECT_LEVEL = X_PROTECT_LEVEL,
206     CUSTOM_LEVEL = X_CUSTOM_LEVEL,
207     SUBTYPE = X_SUBTYPE,
208     FORMAT = X_FORMAT,
209     TEXT_DEFAULT = X_TEXT_DEFAULT,
210     NUMBER_DEFAULT = X_NUMBER_DEFAULT,
211     DATE_DEFAULT = X_DATE_DEFAULT
212   where ITEM_TYPE = X_ITEM_TYPE
213   and NAME = X_NAME;
214 
215   if (sql%notfound) then
216     raise no_data_found;
217   end if;
218 
219   update WF_ITEM_ATTRIBUTES_TL set
220     DISPLAY_NAME = X_DISPLAY_NAME,
221     DESCRIPTION = X_DESCRIPTION,
222     SOURCE_LANG = userenv('LANG')
223   where ITEM_TYPE = X_ITEM_TYPE
224   and NAME = X_NAME
225   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
226 
227   if (sql%notfound) then
228     raise no_data_found;
229   end if;
230 
231 exception
232   when others then
233     wf_core.context('Wf_Item_Attributes_Pkg', 'Update_Row',
234         x_item_type, x_name);
235     raise;
236 end UPDATE_ROW;
237 
238 procedure DELETE_ROW (
239   X_ITEM_TYPE in VARCHAR2,
240   X_NAME in VARCHAR2
241 ) is
242 begin
243   delete from WF_ITEM_ATTRIBUTES_TL
244   where ITEM_TYPE = X_ITEM_TYPE
245   and NAME = X_NAME;
246 
247   if (sql%notfound) then
248     raise no_data_found;
249   end if;
250 
251   delete from WF_ITEM_ATTRIBUTES
252   where ITEM_TYPE = X_ITEM_TYPE
253   and NAME = X_NAME;
254 
255   if (sql%notfound) then
256     raise no_data_found;
257   end if;
258 
259 exception
260   when others then
261     wf_core.context('Wf_Item_Attributes_Pkg', 'Delete_Row',
262         x_item_type, x_name);
263     raise;
264 end DELETE_ROW;
265 
266 procedure ADD_LANGUAGE
267 is
268 begin
269 /* Mar/19/03 requested by Ric Ginsberg */
270 /* The following delete and update statements are commented out */
271 /* as a quick workaround to fix the time-consuming table handler issue */
272 /* Eventually we'll need to turn them into a separate fix_language procedure */
273 /*
274 
275   delete from WF_ITEM_ATTRIBUTES_TL T
276   where not exists
277     (select NULL
278     from WF_ITEM_ATTRIBUTES B
279     where B.ITEM_TYPE = T.ITEM_TYPE
280     and B.NAME = T.NAME
281     );
282 
283   update WF_ITEM_ATTRIBUTES_TL T set (
284       DISPLAY_NAME,
285       DESCRIPTION
286     ) = (select
287       B.DISPLAY_NAME,
288       B.DESCRIPTION
289     from WF_ITEM_ATTRIBUTES_TL B
290     where B.ITEM_TYPE = T.ITEM_TYPE
291     and B.NAME = T.NAME
292     and B.LANGUAGE = T.SOURCE_LANG)
293   where (
294       T.ITEM_TYPE,
295       T.NAME,
296       T.LANGUAGE
297   ) in (select
298       SUBT.ITEM_TYPE,
299       SUBT.NAME,
300       SUBT.LANGUAGE
301     from WF_ITEM_ATTRIBUTES_TL SUBB, WF_ITEM_ATTRIBUTES_TL SUBT
302     where SUBB.ITEM_TYPE = SUBT.ITEM_TYPE
303     and SUBB.NAME = SUBT.NAME
304     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
305     and (SUBB.DISPLAY_NAME <> SUBT.DISPLAY_NAME
306       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
307       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
308       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
309   ));
310 */
311   insert into WF_ITEM_ATTRIBUTES_TL (
312     ITEM_TYPE,
313     NAME,
314     DISPLAY_NAME,
315     PROTECT_LEVEL,
316     CUSTOM_LEVEL,
317     DESCRIPTION,
318     LANGUAGE,
319     SOURCE_LANG
320   ) select
321     B.ITEM_TYPE,
322     B.NAME,
323     B.DISPLAY_NAME,
324     B.PROTECT_LEVEL,
325     B.CUSTOM_LEVEL,
326     B.DESCRIPTION,
327     L.CODE,
328     B.SOURCE_LANG
329   from WF_ITEM_ATTRIBUTES_TL B, WF_LANGUAGES L
330   where L.INSTALLED_FLAG = 'Y'
331   and B.LANGUAGE = userenv('LANG')
332   and (B.ITEM_TYPE ,B.NAME ,L.CODE) NOT IN
333    (select /*+ hash_aj index_ffs(T,WF_ITEM_ATTRIBUTES_TL_PK) */
334       T.ITEM_TYPE  , T.NAME,T.LANGUAGE
335    from WF_ITEM_ATTRIBUTES_TL T) ;
336 
337 
338 end ADD_LANGUAGE;
339 
340 end WF_ITEM_ATTRIBUTES_PKG;