[Home] [Help]
PACKAGE BODY: APPS.IBU_KNOWLEDGE_GRP
Source
1 PACKAGE BODY IBU_Knowledge_Grp AS
2 /* $Header: ibugkbb.pls 120.1 2011/02/22 11:25:26 dkumbhat ship $ */
3
4 -- ========================================================================================
5 PROCEDURE Specific_Search_Mes(
6 p_api_version IN NUMBER,
7 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
8 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
9 x_return_status OUT NOCOPY VARCHAR2,
10 x_msg_count OUT NOCOPY NUMBER,
11 x_msg_data OUT NOCOPY VARCHAR2,
12 p_search_string IN VARCHAR2 := NULL,
13 p_updated_in_days IN NUMBER := NULL,
14 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
15 p_application_id IN NUMBER,
16 p_area_array IN AMV_SEARCH_PVT.amv_char_varray_type
17 := null, --amv_search_grp.Default_AreaArray,
18 p_content_array IN AMV_SEARCH_PVT.amv_char_varray_type
19 := null, --amv_search_grp.Default_ContentArray,
20 p_param_array IN AMV_SEARCH_PVT.amv_searchpar_varray_type,
21 p_user_id IN NUMBER := NULL,
22 p_category_id IN AMV_SEARCH_PVT.amv_number_varray_type,
23 p_include_subcats IN VARCHAR2 := FND_API.G_FALSE,
24 p_external_contents IN VARCHAR2 := FND_API.G_FALSE,
25 p_rows_requested IN NUMBER,
26 p_start_row_pos IN NUMBER := 1,
27 p_get_total_cnt_flag IN VARCHAR2 := fnd_api.g_false,
28 x_rows_returned OUT NOCOPY NUMBER,
29 x_next_row_pos OUT NOCOPY NUMBER,
30 x_total_row_cnt OUT NOCOPY NUMBER,
31 x_result_array IN OUT NOCOPY cs_kb_result_varray_type,
32 x_amv_result_array OUT NOCOPY AMV_SEARCH_PVT.amv_searchres_varray_type
33 ) is
34 l_amv_req_obj AMV_SEARCH_PVT.amv_request_obj_type;
35 l_amv_ret_obj AMV_SEARCH_PVT.amv_return_obj_type;
36 l_amv_res_array AMV_SEARCH_PVT.amv_searchres_varray_type;
37 l_ret_cnt pls_integer :=0;
38 l_search_string VARCHAR2(150) := p_search_string;
39 l_updated_in_days NUMBER := p_updated_in_days;
40 l_user_id NUMBER := p_user_id;
41 begin
42 -- x_result_array := cs_kb_result_varray_type();
43 null;
44 -- check for G_MISS* per standard
45 if l_search_string is null or l_search_string = FND_API.G_MISS_CHAR then
46 l_search_string := FND_API.G_MISS_CHAR;
47 end if;
48 if l_updated_in_days is null or l_updated_in_days = FND_API.G_MISS_NUM then
49 l_updated_in_days := FND_API.G_MISS_NUM;
50 end if;
51 if l_user_id is null or l_user_id = FND_API.G_MISS_NUM then
52 l_user_id := FND_API.G_MISS_NUM;
53 end if;
54
55 l_amv_req_obj.records_requested := p_rows_requested;
56 l_amv_req_obj.start_record_position :=p_start_row_pos;
57 l_amv_req_obj.return_total_count_flag :=p_get_total_cnt_flag;
58
59 AMV_SEARCH_GRP.Content_Search(
60 p_api_version => p_api_version,
61 p_init_msg_list => p_init_msg_list,
62 p_validation_level => p_validation_level,
63 x_return_status => x_return_status,
64 x_msg_count => x_msg_count,
65 x_msg_data => x_msg_data,
66 p_check_login_user => p_check_login_user,
67 p_application_id => p_application_id,
68 p_area_array => p_area_array,
69 p_content_array => p_content_array,
70 p_param_array => p_param_array,
71 p_imt_string => l_search_string,
72 p_days => l_updated_in_days,
73 p_user_id => l_user_id,
74 p_category_id => p_category_id,
75 p_include_subcats => p_include_subcats,
76 p_external_contents => p_external_contents,
77 p_request_obj => l_amv_req_obj,
78 x_return_obj => l_amv_ret_obj,
79 x_searchres_array => l_amv_res_array);
80
81 x_amv_result_array := l_amv_res_array;
82
83 if(x_return_status = FND_API.G_RET_STS_SUCCESS) then
84
85 x_rows_returned
86 := l_amv_ret_obj.returned_record_count;
87 x_next_row_pos
88 := l_amv_ret_obj.next_record_position;
89 x_total_row_cnt
90 := l_amv_ret_obj.total_record_count;
91
92 l_ret_cnt :=l_amv_ret_obj.returned_record_count;
93 if(l_ret_cnt> 0) then
94
95 x_result_array.EXTEND(l_ret_cnt);
96 for i in 1..l_ret_cnt loop
97 x_result_array(i) := cs_kb_result_obj_type(
98 l_amv_res_array(i).score,
99 l_amv_res_array(i).area_id,
100 l_amv_res_array(i).title,
101 l_amv_res_array(i).user1,
102 l_amv_res_array(i).url_string,
103 l_amv_res_array(i).description, 'MES', null);
104 end loop;
105
106 end if;
107 end if;
108
109 end Specific_Search_Mes;
110 -- ========================================================================================
111 --
112 -- This api is called by java.
113 -- It takes object params, convert to amv record types and call
114 -- the record type api.
115 --
116 PROCEDURE Specific_Search(
117 p_api_version IN NUMBER,
118 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
119 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
120 x_return_status OUT NOCOPY VARCHAR2,
121 x_msg_count OUT NOCOPY NUMBER,
122 x_msg_data OUT NOCOPY VARCHAR2,
123 p_repository_tbl IN cs_kb_varchar100_tbl_type,
124 p_search_string IN VARCHAR2 := NULL,
125 p_updated_in_days IN NUMBER := NULL,
126 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
127 p_application_id IN NUMBER,
128 p_area_array IN JTF_VARCHAR2_TABLE_4000 := null,
129 p_content_array IN JTF_VARCHAR2_TABLE_4000 := null,
130 p_param_operator_array IN JTF_VARCHAR2_TABLE_100 := null,
131 p_param_searchstring_array IN JTF_VARCHAR2_TABLE_400 := null,
132 p_user_id IN NUMBER := NULL,
133 p_category_id IN JTF_NUMBER_TABLE,
134 p_include_subcats IN VARCHAR2 := FND_API.G_FALSE,
135 p_external_contents IN VARCHAR2 := FND_API.G_FALSE,
136 p_rows_requested_tbl IN cs_kb_number_tbl_type,
137 p_start_row_pos_tbl IN cs_kb_number_tbl_type,
138 p_get_total_cnt_flag IN VARCHAR2 := fnd_api.g_true,
139 x_rows_returned_tbl OUT NOCOPY cs_kb_number_tbl_type,
140 x_next_row_pos_tbl OUT NOCOPY cs_kb_number_tbl_type,
141 x_total_row_cnt_tbl OUT NOCOPY cs_kb_number_tbl_type,
142 x_result_array OUT NOCOPY cs_kb_result_varray_type
143 )is
144 l_param_array AMV_SEARCH_PVT.amv_searchpar_varray_type
145 := AMV_SEARCH_PVT.amv_searchpar_varray_type();
146 l_area_array AMV_SEARCH_PVT.amv_char_varray_type
147 := AMV_SEARCH_PVT.amv_char_varray_type();
148 l_content_array AMV_SEARCH_PVT.amv_char_varray_type
149 := AMV_SEARCH_PVT.amv_char_varray_type();
150 l_category_id AMV_SEARCH_PVT.amv_number_varray_type
151 := AMV_SEARCH_PVT.amv_number_varray_type();
152 l_amv_result_array AMV_SEARCH_PVT.amv_searchres_varray_type;
153 i1 pls_integer;
154 l_search_string VARCHAR2(150) := p_search_string;
155 l_updated_in_days NUMBER := p_updated_in_days;
156 l_user_id NUMBER := p_user_id;
157 begin
158 -- check for G_MISS* per standard
159 if l_search_string is null or l_search_string = FND_API.G_MISS_CHAR then
160 l_search_string := FND_API.G_MISS_CHAR;
161 end if;
162 if l_updated_in_days is null or l_updated_in_days = FND_API.G_MISS_NUM then
163 l_updated_in_days := FND_API.G_MISS_NUM;
164 end if;
165 if l_user_id is null or l_user_id = FND_API.G_MISS_NUM then
166 l_user_id := FND_API.G_MISS_NUM;
167 end if;
168
169 -- convert to amv record types
170
171 if(p_param_operator_array is not null and
172 p_param_operator_array.COUNT>0) then
173 i1 := p_param_operator_array.FIRST;
174 while i1 is not null loop
175 l_param_array.EXTEND;
176 l_param_array(i1).operator := p_param_operator_array(i1);
177 l_param_array(i1).search_string := p_param_searchstring_array(i1);
178 i1 := p_param_operator_array.NEXT(i1);
179 end loop;
180 end if;
181
182 if(p_area_array is not null and p_area_array.COUNT>0) then
183 i1 := p_area_array.FIRST;
184 while i1 is not null loop
185 l_area_array.EXTEND;
186 l_area_array(i1) := p_area_array(i1);
187 i1 := p_area_array.NEXT(i1);
188 end loop;
189 end if;
190
191 if(p_content_array is not null and p_content_array.COUNT>0) then
192 i1 := p_content_array.FIRST;
193 while i1 is not null loop
194 l_content_array.EXTEND;
195 l_content_array(i1) := p_content_array(i1);
196 i1 := p_content_array.NEXT(i1);
197 end loop;
198 end if;
199
200 if(p_category_id is not null and p_category_id.COUNT>0) then
201 i1 := p_category_id.FIRST;
202 while i1 is not null loop
203 l_category_id.EXTEND;
204 l_category_id(i1) := p_category_id(i1);
205 i1 := p_category_id.NEXT(i1);
206 end loop;
207 end if;
208
209 Specific_Search(
210 p_api_version => p_api_version,
211 p_init_msg_list => p_init_msg_list,
212 p_validation_level => p_validation_level,
213 x_return_status => x_return_status,
214 x_msg_count => x_msg_count,
215 x_msg_data => x_msg_data,
216 p_repository_tbl => p_repository_tbl,
217 p_search_string => l_search_string,
218 p_updated_in_days => l_updated_in_days,
219 p_check_login_user => p_check_login_user,
220 p_application_id => p_application_id,
221 p_area_array => l_area_array,
222 p_content_array => l_content_array,
223 p_param_array => l_param_array,
224 p_user_id => l_user_id,
225 p_category_id => l_category_id,
226 p_include_subcats => p_include_subcats,
227 p_external_contents => p_external_contents,
228 p_rows_requested_tbl => p_rows_requested_tbl,
229 p_start_row_pos_tbl => p_start_row_pos_tbl,
230 p_get_total_cnt_flag => p_get_total_cnt_flag,
231 x_rows_returned_tbl => x_rows_returned_tbl,
232 x_next_row_pos_tbl => x_next_row_pos_tbl,
233 x_total_row_cnt_tbl => x_total_row_cnt_tbl,
234 x_result_array => x_result_array,
235 x_amv_result_array => l_amv_result_array);
236
237 end Specific_Search;
238
239 -- ===========================================================================
240 --
241 -- Main Specific search
242 --
243 PROCEDURE Specific_Search(
244 p_api_version IN NUMBER,
245 p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
246 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
247 x_return_status OUT NOCOPY VARCHAR2,
248 x_msg_count OUT NOCOPY NUMBER,
249 x_msg_data OUT NOCOPY VARCHAR2,
250 p_repository_tbl IN cs_kb_varchar100_tbl_type,
251 p_search_string IN VARCHAR2 := NULL,
252 p_updated_in_days IN NUMBER := NULL,
253 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
254 p_application_id IN NUMBER,
255 p_area_array IN AMV_SEARCH_PVT.amv_char_varray_type
256 := AMV_SEARCH_PVT.amv_char_varray_type(),
257 p_content_array IN AMV_SEARCH_PVT.amv_char_varray_type
258 := AMV_SEARCH_PVT.amv_char_varray_type(),
259 p_param_array IN AMV_SEARCH_PVT.amv_searchpar_varray_type
260 := AMV_SEARCH_PVT.amv_searchpar_varray_type(),
261 p_user_id IN NUMBER := NULL,
262 p_category_id IN AMV_SEARCH_PVT.amv_number_varray_type
263 :=AMV_SEARCH_PVT.amv_number_varray_type(),
264 p_include_subcats IN VARCHAR2 := FND_API.G_FALSE,
265 p_external_contents IN VARCHAR2 := FND_API.G_FALSE,
266 p_rows_requested_tbl IN cs_kb_number_tbl_type,
267 p_start_row_pos_tbl IN cs_kb_number_tbl_type,
268 p_get_total_cnt_flag IN VARCHAR2 := fnd_api.g_true,
269 x_rows_returned_tbl OUT NOCOPY cs_kb_number_tbl_type,
270 x_next_row_pos_tbl OUT NOCOPY cs_kb_number_tbl_type,
271 x_total_row_cnt_tbl OUT NOCOPY cs_kb_number_tbl_type,
272 x_result_array OUT NOCOPY cs_kb_result_varray_type,
273 x_amv_result_array OUT NOCOPY AMV_SEARCH_PVT.amv_searchres_varray_type
274 )is
275 l_api_name CONSTANT varchar2(30) := 'Specific_Search';
276 l_api_version CONSTANT number := 1.0;
277 ind pls_integer; --index number
278 l_search_string VARCHAR2(150) := p_search_string;
279 l_updated_in_days NUMBER := p_updated_in_days;
280 l_user_id NUMBER := p_user_id;
281
282 begin
283 savepoint Specific_Search_GRP;
284
285 -- check for G_MISS* per standard
286 if l_search_string is null or l_search_string = FND_API.G_MISS_CHAR then
287 l_search_string := FND_API.G_MISS_CHAR;
288 end if;
289 if l_updated_in_days is null or l_updated_in_days = FND_API.G_MISS_NUM then
290 l_updated_in_days := FND_API.G_MISS_NUM;
291 end if;
292 if l_user_id is null or l_user_id = FND_API.G_MISS_NUM then
293 l_user_id := FND_API.G_MISS_NUM;
294 end if;
295
296 if not FND_API.Compatible_API_Call(
297 l_api_version,
298 p_api_version,
299 l_api_name,
300 G_PKG_NAME) then
301 raise FND_API.G_EXC_UNEXPECTED_ERROR;
302 end if;
303
304 if FND_API.to_Boolean(p_init_msg_list) then
305 FND_MSG_PUB.initialize;
306 end if;
307
308 x_return_status := FND_API.G_RET_STS_SUCCESS;
309 -- -- -- -- begin my code -- -- -- -- --
310 -- x_row_return_obj := cs_kb_rowret_obj_type(0, 0, 0);
311
312 -- this same array can be wrtten by both sms and mes search in out.
313 x_result_array := cs_kb_result_varray_type();
314 x_rows_returned_tbl := cs_kb_number_tbl_type();
315 x_next_row_pos_tbl :=cs_kb_number_tbl_type();
316 x_total_row_cnt_tbl :=cs_kb_number_tbl_type();
317
318
319 if(p_repository_tbl is null) then
320 if fnd_msg_pub.Check_Msg_Level( fnd_msg_pub.G_MSG_LVL_ERROR) then
321 fnd_message.set_name('CS', 'CS_KB_C_MISS_PARAM');
322 fnd_msg_pub.Add;
323 end if;
324 raise FND_API.G_EXC_ERROR;
325 end if;
326
327 ind := p_repository_tbl.FIRST;
328 while ind is not null loop
329
330 if(p_repository_tbl(ind) = 'MES') then
331
332 x_rows_returned_tbl.EXTEND;
333 x_next_row_pos_tbl.EXTEND;
334 x_total_row_cnt_tbl.EXTEND;
335
336 Specific_Search_Mes(
337 p_api_version => p_api_version,
338 p_init_msg_list => p_init_msg_list,
339 p_validation_level => p_validation_level,
340 x_return_status => x_return_status,
341 x_msg_count => x_msg_count,
342 x_msg_data => x_msg_data,
343 p_search_string => l_search_string,
344 p_updated_in_days => l_updated_in_days,
345 p_check_login_user => p_check_login_user,
346 p_application_id => p_application_id,
347 p_area_array => p_area_array,
348 p_content_array => p_content_array,
349 p_param_array => p_param_array,
350 p_user_id => l_user_id,
351 p_category_id => p_category_id,
352 p_include_subcats => p_include_subcats,
353 p_external_contents => p_external_contents,
354 p_rows_requested => p_rows_requested_tbl(ind),
355 p_start_row_pos => p_start_row_pos_tbl(ind),
356 p_get_total_cnt_flag => p_get_total_cnt_flag,
357 x_rows_returned => x_rows_returned_tbl(ind),
358 x_next_row_pos => x_next_row_pos_tbl(ind),
359 x_total_row_cnt => x_total_row_cnt_tbl(ind),
360 x_result_array => x_result_array,
361 x_amv_result_array => x_amv_result_array);
362 end if;
363 ind := p_repository_tbl.NEXT(ind);
364 end loop;
365 -- -- -- -- end of code -- -- -- --
366
367 -- Standard call to get message count. if count=1, get message info.
368 FND_MSG_PUB.Count_And_Get(
369 p_count => x_msg_count,
370 p_data => x_msg_data );
371
372 EXCEPTION
373 WHEN FND_API.G_EXC_ERROR THEN
374 ROLLBACK TO Specific_Search_GRP;
375 x_return_status := FND_API.G_RET_STS_ERROR ;
376 FND_MSG_PUB.Count_And_Get(
377 p_count => x_msg_count,
378 p_data => x_msg_data );
379 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
380 ROLLBACK TO Specific_Search_GRP;
381 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
382 FND_MSG_PUB.Count_And_Get(
383 p_count => x_msg_count,
384 p_data => x_msg_data);
385
386 WHEN OTHERS THEN
387 ROLLBACK TO Specific_Search_GRP;
388 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
389 IF FND_MSG_PUB.Check_Msg_Level
390 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
391 FND_MSG_PUB.Add_Exc_Msg(
392 G_PKG_NAME,
393 l_api_name);
394 END IF;
395 FND_MSG_PUB.Count_And_Get(
396 p_count => x_msg_count,
397 p_data => x_msg_data);
398
399
400 end Specific_Search;
401
402 -- ========================================================================================
403
404 end IBU_Knowledge_Grp;