DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_UC_REF_KEYWORDS_PKG

Source


1 PACKAGE BODY igs_uc_ref_keywords_pkg AS
2 /* $Header: IGSXI29B.pls 115.5 2003/02/28 07:49:11 bayadav noship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_uc_ref_keywords%ROWTYPE;
6   new_references igs_uc_ref_keywords%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2,
11     x_keyword                           IN     VARCHAR2,
12     x_imported                          IN     VARCHAR2,
13     x_creation_date                     IN     DATE    ,
14     x_created_by                        IN     NUMBER  ,
15     x_last_update_date                  IN     DATE    ,
16     x_last_updated_by                   IN     NUMBER  ,
17     x_last_update_login                 IN     NUMBER
18   ) AS
19   /*
20   ||  Created By : rgopalan
21   ||  Created On : 01-OCT-2001
22   ||  Purpose : Initialises the Old and New references for the columns of the table.
23   ||  Known limitations, enhancements or remarks :
24   ||  Change History :
25   ||  Who             When            What
26   ||  (reverse chronological order - newest change first)
27   */
28 
29     CURSOR cur_old_ref_values IS
30       SELECT   *
31       FROM     IGS_UC_REF_KEYWORDS
32       WHERE    rowid = x_rowid;
33 
34   BEGIN
35 
36     l_rowid := x_rowid;
37 
38     -- Code for setting the Old and New Reference Values.
39     -- Populate Old Values.
40     OPEN cur_old_ref_values;
41     FETCH cur_old_ref_values INTO old_references;
42     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
43       CLOSE cur_old_ref_values;
44       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
45       igs_ge_msg_stack.add;
46       app_exception.raise_exception;
47       RETURN;
48     END IF;
49     CLOSE cur_old_ref_values;
50 
51     -- Populate New Values.
52     new_references.keyword                           := x_keyword;
53     new_references.imported                          := x_imported;
54 
55     IF (p_action = 'UPDATE') THEN
56       new_references.creation_date                   := old_references.creation_date;
57       new_references.created_by                      := old_references.created_by;
58     ELSE
59       new_references.creation_date                   := x_creation_date;
60       new_references.created_by                      := x_created_by;
61     END IF;
62 
63     new_references.last_update_date                  := x_last_update_date;
64     new_references.last_updated_by                   := x_last_updated_by;
65     new_references.last_update_login                 := x_last_update_login;
66 
67   END set_column_values;
68 
69 
70   PROCEDURE check_child_existance IS
71   /*
72   ||  Created By : rgopalan
73   ||  Created On : 01-OCT-2001
74   ||  Purpose : Checks for the existance of Child records.
75   ||  Known limitations, enhancements or remarks :
76   ||  Change History :
77   ||  Who             When            What
78   ||  (reverse chronological order - newest change first)
79   */
80   BEGIN
81 
82     igs_uc_crse_keywrds_pkg.get_fk_igs_uc_ref_keywords (
83       old_references.keyword
84     );
85 
86   END check_child_existance;
87 
88 
89   FUNCTION get_pk_for_validation (
90     x_keyword                           IN     VARCHAR2
91   ) RETURN BOOLEAN AS
92   /*
93   ||  Created By : rgopalan
94   ||  Created On : 01-OCT-2001
95   ||  Purpose : Validates the Primary Key of the table.
96   ||  Known limitations, enhancements or remarks :
97   ||  Change History :
98   ||  Who             When            What
99   ||  (reverse chronological order - newest change first)
100   */
101     CURSOR cur_rowid IS
102       SELECT   rowid
103       FROM     igs_uc_ref_keywords
104       WHERE    keyword = x_keyword ;
105 
106     lv_rowid cur_rowid%RowType;
107 
108   BEGIN
109 
110     OPEN cur_rowid;
111     FETCH cur_rowid INTO lv_rowid;
112     IF (cur_rowid%FOUND) THEN
113       CLOSE cur_rowid;
114       RETURN(TRUE);
115     ELSE
116       CLOSE cur_rowid;
117       RETURN(FALSE);
118     END IF;
119 
120   END get_pk_for_validation;
121 
122 
123   PROCEDURE before_dml (
124     p_action                            IN     VARCHAR2,
125     x_rowid                             IN     VARCHAR2,
126     x_keyword                           IN     VARCHAR2,
127     x_imported                          IN     VARCHAR2,
128     x_creation_date                     IN     DATE    ,
129     x_created_by                        IN     NUMBER  ,
130     x_last_update_date                  IN     DATE    ,
131     x_last_updated_by                   IN     NUMBER  ,
132     x_last_update_login                 IN     NUMBER
133   ) AS
134   /*
135   ||  Created By : rgopalan
136   ||  Created On : 01-OCT-2001
137   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
138   ||            Trigger Handlers for the table, before any DML operation.
139   ||  Known limitations, enhancements or remarks :
140   ||  Change History :
141   ||  Who             When            What
142   ||  (reverse chronological order - newest change first)
143   */
144   BEGIN
145 
146     set_column_values (
147       p_action,
148       x_rowid,
149       x_keyword,
150       x_imported,
151       x_creation_date,
152       x_created_by,
153       x_last_update_date,
154       x_last_updated_by,
155       x_last_update_login
156     );
157 
158     IF (p_action = 'INSERT') THEN
159       -- Call all the procedures related to Before Insert.
160       IF ( get_pk_for_validation(
161              new_references.keyword
162            )
163          ) THEN
164         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
165         igs_ge_msg_stack.add;
166         app_exception.raise_exception;
167       END IF;
168     ELSIF (p_action = 'DELETE') THEN
169       -- Call all the procedures related to Before Delete.
170       check_child_existance;
171     ELSIF (p_action = 'VALIDATE_INSERT') THEN
172       -- Call all the procedures related to Before Insert.
173       IF ( get_pk_for_validation (
174              new_references.keyword
175            )
176          ) THEN
177         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
178         igs_ge_msg_stack.add;
179         app_exception.raise_exception;
180       END IF;
181     ELSIF (p_action = 'VALIDATE_DELETE') THEN
182       check_child_existance;
183     END IF;
184 
185   END before_dml;
186 
187 
188   PROCEDURE insert_row (
189     x_rowid                             IN OUT NOCOPY VARCHAR2,
190     x_keyword                           IN OUT NOCOPY VARCHAR2,
191     x_imported                          IN     VARCHAR2,
192     x_mode                              IN     VARCHAR2
193   ) AS
194   /*
195   ||  Created By : rgopalan
196   ||  Created On : 01-OCT-2001
197   ||  Purpose : Handles the INSERT DML logic for the table.
198   ||  Known limitations, enhancements or remarks :
199   ||  Change History :
200   ||  Who             When            What
201   ||  (reverse chronological order - newest change first)
202   */
203     CURSOR c IS
204       SELECT   rowid
205       FROM     igs_uc_ref_keywords
206       WHERE    keyword                           = x_keyword;
207 
208     x_last_update_date           DATE;
209     x_last_updated_by            NUMBER;
210     x_last_update_login          NUMBER;
211 
212   BEGIN
213 
214     x_last_update_date := SYSDATE;
215     IF (x_mode = 'I') THEN
216       x_last_updated_by := 1;
217       x_last_update_login := 0;
218     ELSIF (x_mode = 'R') THEN
219       x_last_updated_by := fnd_global.user_id;
220       IF (x_last_updated_by IS NULL) THEN
221         x_last_updated_by := -1;
222       END IF;
223       x_last_update_login := fnd_global.login_id;
224       IF (x_last_update_login IS NULL) THEN
225         x_last_update_login := -1;
226       END IF;
227     ELSE
228       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
229       igs_ge_msg_stack.add;
230       app_exception.raise_exception;
231     END IF;
232 
233 /*    SELECT    igs_uc_ref_keywords_s.NEXTVAL
234     INTO      x_keyword
235     FROM      dual;
236 */
237     before_dml(
238       p_action                            => 'INSERT',
239       x_rowid                             => x_rowid,
240       x_keyword                           => x_keyword,
241       x_imported                          => x_imported,
242       x_creation_date                     => x_last_update_date,
243       x_created_by                        => x_last_updated_by,
244       x_last_update_date                  => x_last_update_date,
245       x_last_updated_by                   => x_last_updated_by,
246       x_last_update_login                 => x_last_update_login
247     );
248 
249     INSERT INTO igs_uc_ref_keywords (
250       keyword,
251       imported,
252       creation_date,
253       created_by,
254       last_update_date,
255       last_updated_by,
256       last_update_login
257     ) VALUES (
258       new_references.keyword,
259       new_references.imported,
260       x_last_update_date,
261       x_last_updated_by,
262       x_last_update_date,
263       x_last_updated_by,
264       x_last_update_login
265     );
266 
267     OPEN c;
268     FETCH c INTO x_rowid;
269     IF (c%NOTFOUND) THEN
270       CLOSE c;
271       RAISE NO_DATA_FOUND;
272     END IF;
273     CLOSE c;
274 
275   END insert_row;
276 
277 
278   PROCEDURE lock_row (
279     x_rowid                             IN     VARCHAR2,
280     x_keyword                           IN     VARCHAR2,
281     x_imported                          IN     VARCHAR2
282   ) AS
283   /*
284   ||  Created By : rgopalan
285   ||  Created On : 01-OCT-2001
286   ||  Purpose : Handles the LOCK mechanism for the table.
287   ||  Known limitations, enhancements or remarks :
288   ||  Change History :
289   ||  Who             When            What
290   ||  (reverse chronological order - newest change first)
291   */
292     CURSOR c1 IS
293       SELECT
294         imported
295       FROM  igs_uc_ref_keywords
296       WHERE rowid = x_rowid
297       FOR UPDATE NOWAIT;
298 
299     tlinfo c1%ROWTYPE;
300 
301   BEGIN
302 
303     OPEN c1;
304     FETCH c1 INTO tlinfo;
305     IF (c1%notfound) THEN
306       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
307       igs_ge_msg_stack.add;
308       CLOSE c1;
309       app_exception.raise_exception;
310       RETURN;
311     END IF;
312     CLOSE c1;
313 
314     IF (
315         (tlinfo.imported = x_imported)
316        ) THEN
317       NULL;
318     ELSE
319       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
320       igs_ge_msg_stack.add;
321       app_exception.raise_exception;
322     END IF;
323 
324     RETURN;
325 
326   END lock_row;
327 
328 
329   PROCEDURE update_row (
330     x_rowid                             IN     VARCHAR2,
331     x_keyword                           IN     VARCHAR2,
332     x_imported                          IN     VARCHAR2,
333     x_mode                              IN     VARCHAR2
334   ) AS
335   /*
336   ||  Created By : rgopalan
337   ||  Created On : 01-OCT-2001
338   ||  Purpose : Handles the UPDATE DML logic for the table.
339   ||  Known limitations, enhancements or remarks :
340   ||  Change History :
341   ||  Who             When            What
342   ||  (reverse chronological order - newest change first)
343   */
344     x_last_update_date           DATE ;
345     x_last_updated_by            NUMBER;
346     x_last_update_login          NUMBER;
347 
348   BEGIN
349 
350     x_last_update_date := SYSDATE;
351     IF (X_MODE = 'I') THEN
352       x_last_updated_by := 1;
353       x_last_update_login := 0;
354     ELSIF (x_mode = 'R') THEN
355       x_last_updated_by := fnd_global.user_id;
356       IF x_last_updated_by IS NULL THEN
357         x_last_updated_by := -1;
358       END IF;
359       x_last_update_login := fnd_global.login_id;
360       IF (x_last_update_login IS NULL) THEN
361         x_last_update_login := -1;
362       END IF;
363     ELSE
364       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
365       igs_ge_msg_stack.add;
366       app_exception.raise_exception;
367     END IF;
368 
369     before_dml(
370       p_action                            => 'UPDATE',
371       x_rowid                             => x_rowid,
372       x_keyword                           => x_keyword,
373       x_imported                          => x_imported,
374       x_creation_date                     => x_last_update_date,
375       x_created_by                        => x_last_updated_by,
376       x_last_update_date                  => x_last_update_date,
377       x_last_updated_by                   => x_last_updated_by,
378       x_last_update_login                 => x_last_update_login
379     );
380 
381     UPDATE igs_uc_ref_keywords
382       SET
383         imported                          = new_references.imported,
384         last_update_date                  = x_last_update_date,
385         last_updated_by                   = x_last_updated_by,
386         last_update_login                 = x_last_update_login
387       WHERE rowid = x_rowid;
388 
389     IF (SQL%NOTFOUND) THEN
390       RAISE NO_DATA_FOUND;
391     END IF;
392 
393   END update_row;
394 
395 
396   PROCEDURE add_row (
397     x_rowid                             IN OUT NOCOPY VARCHAR2,
398     x_keyword                           IN OUT NOCOPY VARCHAR2,
399     x_imported                          IN     VARCHAR2,
400     x_mode                              IN     VARCHAR2
401   ) AS
402   /*
403   ||  Created By : rgopalan
404   ||  Created On : 01-OCT-2001
405   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
406   ||  Known limitations, enhancements or remarks :
407   ||  Change History :
408   ||  Who             When            What
409   ||  (reverse chronological order - newest change first)
410   */
411     CURSOR c1 IS
412       SELECT   rowid
413       FROM     igs_uc_ref_keywords
414       WHERE    keyword                           = x_keyword;
415 
416   BEGIN
417 
418     OPEN c1;
419     FETCH c1 INTO x_rowid;
420     IF (c1%NOTFOUND) THEN
421       CLOSE c1;
422 
423       insert_row (
424         x_rowid,
425         x_keyword,
426         x_imported,
427         x_mode
428       );
429       RETURN;
430     END IF;
431     CLOSE c1;
432 
433     update_row (
434       x_rowid,
435       x_keyword,
436       x_imported,
437       x_mode
438     );
439 
440   END add_row;
441 
442 
443   PROCEDURE delete_row (
444     x_rowid IN VARCHAR2
445   ) AS
446   /*
447   ||  Created By : rgopalan
448   ||  Created On : 01-OCT-2001
449   ||  Purpose : Handles the DELETE DML logic for the table.
450   ||  Known limitations, enhancements or remarks :
451   ||  Change History :
452   ||  Who             When            What
453   ||  (reverse chronological order - newest change first)
454   */
455   BEGIN
456 
457     before_dml (
458       p_action => 'DELETE',
459       x_rowid => x_rowid
460     );
461 
462     DELETE FROM igs_uc_ref_keywords
463     WHERE rowid = x_rowid;
464 
465     IF (SQL%NOTFOUND) THEN
466       RAISE NO_DATA_FOUND;
467     END IF;
468 
469   END delete_row;
470 
471 
472 END igs_uc_ref_keywords_pkg;