[Home] [Help]
PACKAGE BODY: APPS.FND_IMP_CONV_PKG
Source
1 PACKAGE BODY FND_IMP_CONV_PKG AS
2 /* $Header: afimpconvb.pls 120.2 2005/07/15 04:18:48 pchallag noship $ */
3
4 /* 0 - new
5 1 - nice upgrade
6 2 - hard upgrade
7 3 - not applied
8 */
9 FUNCTION compare_rcsid(rcsname1 varchar2, rcsname2 varchar2)
10 RETURN INTEGER IS
11 x INTEGER := 0;
12 rcsid1 FND_IMP_RCSID;
13 rcsid2 FND_IMP_RCSID;
14 BEGIN
15 if(rcsname1 IS NULL) then
16 return 0;
17 end if;
18 rcsid1 := get_rcsid(rcsname1);
19 rcsid2 := get_rcsid(rcsname2);
20 x := compare_rcsid(rcsid1, rcsid2);
21 if(x = 0 or x = -1) then return 3; end if;
22 if(rcsid1(1) = 2) then return 1; end if;
23 return 2;
24 END compare_rcsid;
25
26 FUNCTION get_rcsname(rcsname varchar2)
27 RETURN VARCHAR2 IS
28 ret varchar2(300);
29 rcsid FND_IMP_RCSID;
30 BEGIN
31 rcsid := get_rcsid(rcsname);
32 ret := rcsid(1) || '> ';
33 for i in 2..11 loop
34 ret := ret || rcsid(i) || '_';
35 end loop;
36 return ret;
37 END get_rcsname;
38
39 FUNCTION get_rcsid(rcsname varchar2)
40 RETURN FND_IMP_RCSID IS
41 x INTEGER := 0;
42 prev INTEGER;
43 ret FND_IMP_RCSID := FND_IMP_RCSID(0,0,0,0,0,0,0,0,0,0,0);
44 BEGIN
45 for i in 1..10 loop
46 prev := x+1;
47 x := instr(rcsname, '.', prev);
48 if(x = 0) then
49 ret(1) := i;
50 ret(i+1) := substr(rcsname, prev);
51 return ret;
52 end if;
53 ret(i+1) := to_number(substr(rcsname, prev, x-prev));
54 end loop;
55 ret(1) := 10;
56 return ret;
57 END get_rcsid;
58
59 FUNCTION compare_rcsid(rcsid1 fnd_imp_rcsid, rcsid2 fnd_imp_rcsid)
60 RETURN INTEGER IS
61 commonSz INTEGER;
62 maxSz INTEGER;
63 diff INTEGER;
64 BEGIN
65 commonSz := LEAST(rcsid1(1), rcsid2(1)) + 1;
66 maxSz := GREATEST(rcsid1(1), rcsid2(1)) + 1;
67 for i in 2..commonSz loop
68 diff := SIGN(rcsid2(i) - rcsid1(i));
69 if(diff <> 0) then
70 return diff;
71 end if;
72 end loop;
73 return SIGN(rcsid2(maxSz) - rcsid1(maxSz));
74 END compare_rcsid;
75
76 /*
77 -1 - new file
78 0 - mainline file overwritten by mainline file
79 1 - branched file overwritten by branched file in the same branch
80 2 - branched file overwritten by branched file in a different branch
81 3 - mainline file overwritten by a branched file
82 4 - branched file overwritten by a mainline file
83 5 - branched file overwritten by branched file in a different branch (different rcsid size altogether)
84 */
85 FUNCTION check_branching(rcsname1 varchar2, rcsname2 varchar2)
86 RETURN INTEGER IS
87 x INTEGER;
88 rcsid1 FND_IMP_RCSID;
89 rcsid2 FND_IMP_RCSID;
90 BEGIN
91 if(rcsname1 IS NULL) then
92 return -1;
93 end if;
94 rcsid1 := get_rcsid(rcsname1);
95 rcsid2 := get_rcsid(rcsname2);
96 x := check_branching(rcsid1, rcsid2);
97 return x;
98 END check_branching;
99
100 FUNCTION check_branching(rcsid1 fnd_imp_rcsid, rcsid2 fnd_imp_rcsid)
101 RETURN INTEGER IS
102 commonSz INTEGER;
103 maxSz INTEGER;
104 BEGIN
105 if (rcsid1(1) = rcsid2(1) and rcsid1(1) = 2) then
106 return 0;
107 end if;
108 if (rcsid1(1) = rcsid2(1)) then
109 for i in 2..rcsid1(1) loop
110 if (rcsid1(i) <> rcsid2(i)) then
111 return 2;
112 end if;
113 end loop;
114 return 1;
115 else
116 if (rcsid1(1) = 2) then
117 return 3;
118 end if;
119 if (rcsid2(1) = 2) then
120 return 4;
121 end if;
122 return 5;
123 end if;
124 END check_branching;
125
126 PROCEDURE uninstall IS
127 CURSOR drop_lst IS
128 select 'drop '||object_type||' '||owner||'.'||object_name
129 from all_objects
130 where object_name like 'FND_IMP_%'
131 and object_type IN ('TABLE', 'VIEW', 'SYNONYM')
132 and owner IN ('APPS', 'APPLSYS');
133 clean_cmd VARCHAR2(300);
134 BEGIN
135 OPEN drop_lst;
136 LOOP
137 FETCH drop_lst into clean_cmd;
138 EXIT WHEN drop_lst%NOTFOUND;
139 -- dbms_output.put_line(''||clean_cmd);
140 execute immediate ''||clean_cmd;
141 END LOOP;
142 CLOSE drop_lst;
143 END uninstall;
144
145 END FND_IMP_CONV_PKG;