DBA Data[Home] [Help]

PACKAGE BODY: APPS.FEM_DB_LINKS_PKG

Source


1 package body FEM_DB_LINKS_PKG as
2 /* $Header: fem_db_links_pkb.plb 120.0 2005/06/06 20:34:48 appldev noship $ */
3 procedure INSERT_ROW (
4   X_ROWID in out nocopy VARCHAR2,
5   X_DATABASE_LINK in VARCHAR2,
6   X_MIG_WF_OUT_AGENT_IN_LOCAL_DB in VARCHAR2,
7   X_MIG_WF_IN_AGENT_IN_LINKED_DB in VARCHAR2,
8   X_OBJECT_VERSION_NUMBER in NUMBER,
9   X_DB_LINK_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 ) is
17   cursor C is select ROWID from FEM_DB_LINKS_B
18     where DATABASE_LINK = X_DATABASE_LINK
19     ;
20 begin
21   insert into FEM_DB_LINKS_B (
22     MIG_WF_OUT_AGENT_IN_LOCAL_DB,
23     DATABASE_LINK,
24     MIG_WF_IN_AGENT_IN_LINKED_DB,
25     OBJECT_VERSION_NUMBER,
26     CREATION_DATE,
27     CREATED_BY,
28     LAST_UPDATE_DATE,
29     LAST_UPDATED_BY,
30     LAST_UPDATE_LOGIN
31   ) values (
32     X_MIG_WF_OUT_AGENT_IN_LOCAL_DB,
33     X_DATABASE_LINK,
34     X_MIG_WF_IN_AGENT_IN_LINKED_DB,
35     X_OBJECT_VERSION_NUMBER,
36     X_CREATION_DATE,
37     X_CREATED_BY,
38     X_LAST_UPDATE_DATE,
39     X_LAST_UPDATED_BY,
40     X_LAST_UPDATE_LOGIN
41   );
42 
43   insert into FEM_DB_LINKS_TL (
44     DATABASE_LINK,
45     DB_LINK_NAME,
46     DESCRIPTION,
47     CREATION_DATE,
48     CREATED_BY,
49     LAST_UPDATED_BY,
50     LAST_UPDATE_DATE,
51     LAST_UPDATE_LOGIN,
52     LANGUAGE,
53     SOURCE_LANG
54   ) select
55     X_DATABASE_LINK,
56     X_DB_LINK_NAME,
57     X_DESCRIPTION,
58     X_CREATION_DATE,
59     X_CREATED_BY,
60     X_LAST_UPDATED_BY,
61     X_LAST_UPDATE_DATE,
62     X_LAST_UPDATE_LOGIN,
63     L.LANGUAGE_CODE,
64     userenv('LANG')
65   from FND_LANGUAGES L
66   where L.INSTALLED_FLAG in ('I', 'B')
67   and not exists
68     (select NULL
69     from FEM_DB_LINKS_TL T
70     where T.DATABASE_LINK = X_DATABASE_LINK
71     and T.LANGUAGE = L.LANGUAGE_CODE);
72 
73   open c;
74   fetch c into X_ROWID;
75   if (c%notfound) then
76     close c;
77     raise no_data_found;
78   end if;
79   close c;
80 
81 end INSERT_ROW;
82 
83 procedure LOCK_ROW (
84   X_DATABASE_LINK in VARCHAR2,
85   X_MIG_WF_OUT_AGENT_IN_LOCAL_DB in VARCHAR2,
86   X_MIG_WF_IN_AGENT_IN_LINKED_DB in VARCHAR2,
87   X_OBJECT_VERSION_NUMBER in NUMBER,
88   X_DB_LINK_NAME in VARCHAR2,
89   X_DESCRIPTION in VARCHAR2
90 ) is
91   cursor c is select
92       MIG_WF_OUT_AGENT_IN_LOCAL_DB,
93       MIG_WF_IN_AGENT_IN_LINKED_DB,
94       OBJECT_VERSION_NUMBER
95     from FEM_DB_LINKS_B
96     where DATABASE_LINK = X_DATABASE_LINK
97     for update of DATABASE_LINK nowait;
98   recinfo c%rowtype;
99 
100   cursor c1 is select
101       DB_LINK_NAME,
102       DESCRIPTION,
103       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
104     from FEM_DB_LINKS_TL
105     where DATABASE_LINK = X_DATABASE_LINK
106     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
107     for update of DATABASE_LINK nowait;
108 begin
109   open c;
110   fetch c into recinfo;
111   if (c%notfound) then
112     close c;
113     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
114     app_exception.raise_exception;
115   end if;
116   close c;
117   if (    ((recinfo.MIG_WF_OUT_AGENT_IN_LOCAL_DB = X_MIG_WF_OUT_AGENT_IN_LOCAL_DB)
118            OR ((recinfo.MIG_WF_OUT_AGENT_IN_LOCAL_DB is null) AND (X_MIG_WF_OUT_AGENT_IN_LOCAL_DB is null)))
119       AND ((recinfo.MIG_WF_IN_AGENT_IN_LINKED_DB = X_MIG_WF_IN_AGENT_IN_LINKED_DB)
120            OR ((recinfo.MIG_WF_IN_AGENT_IN_LINKED_DB is null) AND (X_MIG_WF_IN_AGENT_IN_LINKED_DB is null)))
121       AND (recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
122   ) then
123     null;
124   else
125     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
126     app_exception.raise_exception;
127   end if;
128 
129   for tlinfo in c1 loop
130     if (tlinfo.BASELANG = 'Y') then
131       if (    ((tlinfo.DB_LINK_NAME = X_DB_LINK_NAME)
132                OR ((tlinfo.DB_LINK_NAME is null) AND (X_DB_LINK_NAME is null)))
133           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
134                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
135       ) then
136         null;
137       else
138         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
139         app_exception.raise_exception;
140       end if;
141     end if;
142   end loop;
143   return;
144 end LOCK_ROW;
145 
146 procedure UPDATE_ROW (
147   X_DATABASE_LINK in VARCHAR2,
148   X_MIG_WF_OUT_AGENT_IN_LOCAL_DB in VARCHAR2,
149   X_MIG_WF_IN_AGENT_IN_LINKED_DB in VARCHAR2,
150   X_OBJECT_VERSION_NUMBER in NUMBER,
151   X_DB_LINK_NAME in VARCHAR2,
152   X_DESCRIPTION in VARCHAR2,
153   X_LAST_UPDATE_DATE in DATE,
154   X_LAST_UPDATED_BY in NUMBER,
155   X_LAST_UPDATE_LOGIN in NUMBER
156 ) is
157 begin
158   update FEM_DB_LINKS_B set
159     MIG_WF_OUT_AGENT_IN_LOCAL_DB = X_MIG_WF_OUT_AGENT_IN_LOCAL_DB,
160     MIG_WF_IN_AGENT_IN_LINKED_DB = X_MIG_WF_IN_AGENT_IN_LINKED_DB,
161     OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
162     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
163     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
164     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
165   where DATABASE_LINK = X_DATABASE_LINK;
166 
167   if (sql%notfound) then
168     raise no_data_found;
169   end if;
170 
171   update FEM_DB_LINKS_TL set
172     DB_LINK_NAME = X_DB_LINK_NAME,
173     DESCRIPTION = X_DESCRIPTION,
174     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
175     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
176     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
177     SOURCE_LANG = userenv('LANG')
178   where DATABASE_LINK = X_DATABASE_LINK
179   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
180 
181   if (sql%notfound) then
182     raise no_data_found;
183   end if;
184 end UPDATE_ROW;
185 
186 procedure DELETE_ROW (
187   X_DATABASE_LINK in VARCHAR2
188 ) is
189 begin
190   delete from FEM_DB_LINKS_TL
191   where DATABASE_LINK = X_DATABASE_LINK;
192 
193   if (sql%notfound) then
194     raise no_data_found;
195   end if;
196 
197   delete from FEM_DB_LINKS_B
198   where DATABASE_LINK = X_DATABASE_LINK;
199 
200   if (sql%notfound) then
201     raise no_data_found;
202   end if;
203 end DELETE_ROW;
204 
205 procedure ADD_LANGUAGE
206 is
207 begin
208   delete from FEM_DB_LINKS_TL T
209   where not exists
210     (select NULL
211     from FEM_DB_LINKS_B B
212     where B.DATABASE_LINK = T.DATABASE_LINK
213     );
214 
215   update FEM_DB_LINKS_TL T set (
216       DB_LINK_NAME,
217       DESCRIPTION
218     ) = (select
219       B.DB_LINK_NAME,
220       B.DESCRIPTION
221     from FEM_DB_LINKS_TL B
222     where B.DATABASE_LINK = T.DATABASE_LINK
223     and B.LANGUAGE = T.SOURCE_LANG)
224   where (
225       T.DATABASE_LINK,
226       T.LANGUAGE
227   ) in (select
228       SUBT.DATABASE_LINK,
229       SUBT.LANGUAGE
230     from FEM_DB_LINKS_TL SUBB, FEM_DB_LINKS_TL SUBT
231     where SUBB.DATABASE_LINK = SUBT.DATABASE_LINK
232     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
233     and (SUBB.DB_LINK_NAME <> SUBT.DB_LINK_NAME
234       or (SUBB.DB_LINK_NAME is null and SUBT.DB_LINK_NAME is not null)
235       or (SUBB.DB_LINK_NAME is not null and SUBT.DB_LINK_NAME is null)
236       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
237       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
238       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
239   ));
240 
241   insert into FEM_DB_LINKS_TL (
242     DATABASE_LINK,
243     DB_LINK_NAME,
244     DESCRIPTION,
245     CREATION_DATE,
246     CREATED_BY,
247     LAST_UPDATED_BY,
248     LAST_UPDATE_DATE,
249     LAST_UPDATE_LOGIN,
250     LANGUAGE,
251     SOURCE_LANG
252   ) select /*+ ORDERED */
253     B.DATABASE_LINK,
254     B.DB_LINK_NAME,
255     B.DESCRIPTION,
256     B.CREATION_DATE,
257     B.CREATED_BY,
258     B.LAST_UPDATED_BY,
259     B.LAST_UPDATE_DATE,
260     B.LAST_UPDATE_LOGIN,
261     L.LANGUAGE_CODE,
262     B.SOURCE_LANG
263   from FEM_DB_LINKS_TL B, FND_LANGUAGES L
264   where L.INSTALLED_FLAG in ('I', 'B')
265   and B.LANGUAGE = userenv('LANG')
266   and not exists
267     (select NULL
268     from FEM_DB_LINKS_TL T
269     where T.DATABASE_LINK = B.DATABASE_LINK
270     and T.LANGUAGE = L.LANGUAGE_CODE);
271 end ADD_LANGUAGE;
272 PROCEDURE TRANSLATE_ROW(
273         x_DATABASE_LINK in varchar2,
274         x_owner in varchar2,
275         x_last_update_date in varchar2,
276         x_DB_LINK_NAME in varchar2,
277         x_description in varchar2,
278         x_custom_mode in varchar2) is
279 
280         owner_id number;
281         ludate date;
282         row_id varchar2(64);
283         f_luby    number;  -- entity owner in file
284         f_ludate  date;    -- entity update date in file
285         db_luby   number;  -- entity owner in db
286         db_ludate date;    -- entity update date in db
287     begin
288 
289 
290         -- Translate owner to file_last_updated_by
291         f_luby := fnd_load_util.owner_id(x_owner);
292 
293         -- Translate char last_update_date to date
294         f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
295         begin
296           select LAST_UPDATED_BY, LAST_UPDATE_DATE
297           into db_luby, db_ludate
298           from FEM_DB_LINKS_TL
299           where DATABASE_LINK = x_DATABASE_LINK
300           and LANGUAGE = userenv('LANG');
301 
302 	  -- Test for customization and version
303           if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
304                                         db_ludate, x_custom_mode)) then
305             -- Update translations for this language
306             update FEM_DB_LINKS_TL set
307               DB_LINK_NAME = decode(x_DB_LINK_NAME,
308 			       fnd_load_util.null_value, null, -- Real null
309 			       null, x_DB_LINK_NAME,                  -- No change
310 			       x_DB_LINK_NAME),
311               DESCRIPTION = nvl(x_description, DESCRIPTION),
312               LAST_UPDATE_DATE = f_ludate,
313               LAST_UPDATED_BY = f_luby,
314               LAST_UPDATE_LOGIN = 0,
315               SOURCE_LANG = userenv('LANG')
316             where userenv('LANG') in (LANGUAGE, SOURCE_LANG)
317             and DATABASE_LINK = x_DATABASE_LINK;
318          end if;
319         exception
320           when no_data_found then
321             -- Do not insert missing translations, skip this row
322             null;
323         end;
324      end TRANSLATE_ROW;
325 
326 
327 end FEM_DB_LINKS_PKG;