DBA Data[Home] [Help]

PACKAGE BODY: APPS.BIS_BIA_RSG_CUSTOM_API_MGMNT

Source


1 PACKAGE BODY BIS_BIA_RSG_CUSTOM_API_MGMNT AS
2 /*$Header: BISCAPIB.pls 120.1 2005/07/12 16:37:48 tiwang noship $*/
3 
4 PROCEDURE DEBUG(
5   P_TEXT VARCHAR2
6 , P_IDENT NUMBER DEFAULT 3)
7 IS
8 BEGIN
9   BIS_COLLECTION_UTILITIES.debug(P_TEXT, P_IDENT);
10   --DBMS_OUTPUT.PUT_LINE(P_TEXT);
11 END;
12 
13 PROCEDURE LOG(
14   P_TEXT VARCHAR2 )
15 IS
16 BEGIN
17   BIS_COLLECTION_UTILITIES.put_line('   ' || P_TEXT);
18   --DBMS_OUTPUT.PUT_LINE(P_TEXT);
19 END;
20 
21 
22 PROCEDURE OUTPUT_PARAM (
23     p_parameter_tbl IN OUT NOCOPY BIS_BIA_RSG_PARAMETER_TBL
24 ) IS
25   l_name            varchar2(32767);
26   l_value           varchar2(32767);
27 BEGIN
28   FOR i IN 1..p_parameter_tbl.count LOOP
29          l_name  := p_parameter_tbl(i).parameter_name;
30          l_value := p_parameter_tbl(i).parameter_value;
31          DEBUG( '( name, value) = (' || l_name ||', ' || l_value ||')' );
32   END LOOP;
33 END;
34 
35 
36 PROCEDURE ADD_PARAM (
37      p_parameter_tbl 	   IN OUT NOCOPY BIS_BIA_RSG_PARAMETER_TBL,
38      p_param_name          IN VARCHAR2,
39      p_param_value         IN VARCHAR2
40 ) IS
41   l_parameter_rec   BIS_BIA_RSG_PARAMETER_REC := BIS_BIA_RSG_PARAMETER_REC(TO_CHAR(null),TO_CHAR(null));
42 BEGIN
43   l_parameter_rec.parameter_name  := p_param_name;
44   l_parameter_rec.parameter_value := p_param_value;
45   p_parameter_tbl.extend;
46   p_parameter_tbl(p_parameter_tbl.LAST) := l_parameter_rec;
47 
48   DEBUG('Added Parameter ('|| p_param_name ||', ' || p_param_value || ')' );
49 
50 END;
51 
52 FUNCTION GET_PARAM (
53      p_parameter_tbl 	   IN OUT NOCOPY BIS_BIA_RSG_PARAMETER_TBL,
54      p_param_name          IN VARCHAR2
55 ) RETURN VARCHAR2
56 IS
57   l_parameter_rec   BIS_BIA_RSG_PARAMETER_REC := BIS_BIA_RSG_PARAMETER_REC(TO_CHAR(null),TO_CHAR(null));
58   l_name            varchar2(32767);
59   l_value           varchar2(32767) := null;
60 BEGIN
61   FOR i IN 1..p_parameter_tbl.count LOOP
62     if p_param_name = p_parameter_tbl(i).parameter_name then
63        l_value := p_parameter_tbl(i).parameter_value;
64        LOG('Retrieved Parameter ('|| p_param_name ||', ' || l_value || ')' );
65        EXIT;
66     end if;
67   END LOOP;
68   return l_value;
69 END;
70 
71 
72 PROCEDURE SET_PARAM (
73      p_parameter_tbl 	   IN OUT NOCOPY BIS_BIA_RSG_PARAMETER_TBL,
74      p_param_name          IN VARCHAR2,
75      p_param_value         IN VARCHAR2
76 ) IS
77   l_parameter_rec   BIS_BIA_RSG_PARAMETER_REC := BIS_BIA_RSG_PARAMETER_REC(TO_CHAR(null),TO_CHAR(null));
78   l_name            varchar2(32767);
79   l_value            varchar2(32767);
80 BEGIN
81   FOR i IN 1..p_parameter_tbl.count LOOP
82          l_name  := p_parameter_tbl(i).parameter_name;
83          l_value := p_parameter_tbl(i).parameter_value;
84 
85          if l_name = p_param_name then
86             p_parameter_tbl(i).parameter_value := p_param_value;
87             LOG('Value of ' || l_name || ' was changed from ' || NVL(l_value, 'NULL') || ' to ' || p_parameter_tbl(i).parameter_value);
88          end if;
89 
90   END LOOP;
91 END;
92 
93 
94 PROCEDURE INIT_PARAMS (
95     p_parameter_tbl IN OUT NOCOPY BIS_BIA_RSG_PARAMETER_TBL,
96     P_API_TYPE      IN 	VARCHAR2,
97     P_OBJ_NAME      IN 	VARCHAR2,
98     P_OBJ_TYPE      IN 	VARCHAR2,
99     P_MODE          IN 	VARCHAR2,
100     P_MV_REF_METHOD IN  VARCHAR2
101 ) IS
102   l_parameter_rec   BIS_BIA_RSG_PARAMETER_REC := BIS_BIA_RSG_PARAMETER_REC(TO_CHAR(null),TO_CHAR(null));
103 BEGIN
104   /*
105     'MV_LOG_MGT'-----Drop and create MV log
106     'MV_INDEX_MGT'---Drop and create MV index
107     'MV_THRESHOLD'---Using threshold at runtime to decide the MV refresh method
108     This parameter value will be passed in the custom API
109   */
110   ADD_PARAM(p_parameter_tbl, PARA_API_TYPE, P_API_TYPE );
111   /*
112     'BEFORE'-----Calling the API before the MV or table refresh
113     'AFTER'---Calling the API after the MV or table refresh
114     This parameter value will be passed in the custom API
115   */
116   ADD_PARAM(p_parameter_tbl, PARA_MODE, P_MODE );
117   /*
118     The table or MV name
119     This parameter value will be passed in the custom API
120   */
121   ADD_PARAM(p_parameter_tbl, PARA_OBJECT_NAME, P_OBJ_NAME ) ; --'BIS_TEST_TABLE' );
122   /*
123     'TABLE' or 'MV'
124     This parameter value will be passed in the custom API
125   */
126   ADD_PARAM(p_parameter_tbl, PARA_OBJECT_TYPE, P_OBJ_TYPE) ; --'TABLE'  );
127   /*
128     This is an in/out parameter. ---modified for enhancement 4423644
129     The custom API can code logic based on this value OR set value for it.
130     After checking the threshold, if the MV should be complete refreshed,
131     then the parameter value is 'COMPLETE', otherwise the value is 'FAST'
132   */
133   ADD_PARAM(p_parameter_tbl, PARA_MV_REFRESH_METHOD, P_MV_REF_METHOD);
134   /*
135    This is an out parameter.
136    The custom API will set value for it based on if the process is successful or not
137    It has value
138      0---success
139      1-failure
140      null---the logic has not been implemented
141   */
142   ADD_PARAM(p_parameter_tbl, PARA_COMPLETE_STATUS, TO_CHAR(null) );
143   /*
144     This is an out parameter.
145     The custom API will set value for it if the above status has value 1---failure
146   */
147   ADD_PARAM(p_parameter_tbl, PARA_MESSAGE, TO_CHAR(null) );
148 
149 END;
150 
151 PROCEDURE INVOKE_API_DYNAMICALLY (
152     p_parameter_tbl IN OUT NOCOPY BIS_BIA_RSG_PARAMETER_TBL,
153     P_API 	        IN 	VARCHAR2
154 ) IS
155   l_dynamic_sql     varchar2(32767);
156 BEGIN
157   l_dynamic_sql := 'BEGIN '|| P_API ||' (:1); END;';
158   LOG('Executing ' || l_dynamic_sql);
159   LOG('************entering '||P_API||'*********************************');
160   execute immediate l_dynamic_sql using IN OUT p_parameter_tbl ;
161   LOG('************end of '||P_API||'*********************************');
162 
163 EXCEPTION WHEN OTHERS THEN
164   LOG('CUSTOM API Error!!!!!');
165   LOG(sqlerrm);
166   RAISE;
167 END;
168 
169 PROCEDURE INVOKE_CUSTOM_API (
170     RTNBUF  		IN OUT NOCOPY VARCHAR2,
171     RETCODE		    OUT NOCOPY VARCHAR2,
172     P_API 	        IN 	VARCHAR2,
173     P_API_TYPE      IN 	VARCHAR2,
174     P_OBJ_NAME      IN 	VARCHAR2,
175     P_OBJ_TYPE      IN 	VARCHAR2,
176     P_MODE          IN 	VARCHAR2
177 ) IS
178   l_parameter_tbl   BIS_BIA_RSG_PARAMETER_TBL := BIS_BIA_RSG_PARAMETER_TBL();
179   l_complete_status VARCHAR2(32767);
180   l_mv_refresh_method VARCHAR2(32767);
181   l_message  VARCHAR2(32767);
182   l_api      VARCHAR2(32767);
183 BEGIN
184   l_api := P_API;
185 
186   if (l_api is null) then
187     select custom_api into l_api
188     from bis_obj_properties
189     where object_name = P_OBJ_NAME
190     and object_type = P_OBJ_TYPE;
191   end if;
192 
193   IF (BIS_COLLECTION_UTILITIES.g_object_name is NULL) THEN
194     IF (Not BIS_COLLECTION_UTILITIES.setup(l_API)) THEN
195       RAISE_APPLICATION_ERROR (-20000,'Error in SETUP: ' || sqlerrm);
196       return;
197     END IF;
198   END IF;
199 
200   INIT_PARAMS(l_parameter_tbl, P_API_TYPE, P_OBJ_NAME, P_OBJ_TYPE, P_MODE,RTNBUF);
201   if (l_api is null) then
202     LOG('no custime API defined in RSG for ' || P_OBJ_NAME );
203     return;
204   end if;
205 
206   ---LOG('Before calling ' || l_api );
207   INVOKE_API_DYNAMICALLY(l_parameter_tbl, l_api);
208   ---  LOG('After calling ' || l_api );
209   OUTPUT_PARAM(l_parameter_tbl);
210 
211   l_complete_status := GET_PARAM(l_parameter_tbl, PARA_COMPLETE_STATUS);
212   l_message := GET_PARAM(l_parameter_tbl, PARA_MESSAGE);
213   l_mv_refresh_method := GET_PARAM(l_parameter_tbl, PARA_MV_REFRESH_METHOD);
214 
215   RTNBUF := l_mv_refresh_method;
216   RETCODE := l_complete_status;
217 
218   IF ( l_complete_status is NULL )  THEN
219     LOG( l_api || ' did not implement ' || P_API_TYPE || ', ' || P_MODE );
220   ELSIF ( l_complete_status = STATUS_SUCCESS )  THEN
221     LOG( l_api || ' succeeded running, ' || P_API_TYPE || ', ' || P_MODE );
222   ELSIF ( l_complete_status = STATUS_FAILURE )  THEN
223     LOG( l_api || ' failed running, ' || P_API_TYPE || ', ' || P_MODE );
224     RTNBUF := l_message;
225     RAISE_APPLICATION_ERROR(-20000, l_message);
226   END IF;
227 
228  --- LOG('Completed INVOKE_CUSTOME_API ' || P_API );
229 EXCEPTION WHEN OTHERS THEN
230     RTNBUF := sqlerrm;
231     RETCODE	:= sqlcode;
232     RAISE;
233 END INVOKE_CUSTOM_API;
234 
235 
236 
237 END BIS_BIA_RSG_CUSTOM_API_MGMNT; -- Package Body BIS_BIA_RSG_CUSTOM_API_MGMNT