DBA Data[Home] [Help]

PACKAGE BODY: APPS.IBU_KNOWLEDGE_GRP

Source


1 PACKAGE BODY IBU_Knowledge_Grp AS
2 /* $Header: ibugkbb.pls 120.0 2005/09/12 10:17:38 ktma noship $ */
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;