DBA Data[Home] [Help]

PACKAGE BODY: APPS.WF_MESSAGES_PKG

Source


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