[Home] [Help]
PACKAGE BODY: APPS.IBC_CITEM_PREVIEW_PVT
Source
1 Package Body IBC_CITEM_PREVIEW_PVT as
2 /* $Header: ibcvcipb.pls 115.13 2004/04/09 00:09:20 srrangar ship $ */
3
4 PROCEDURE Get_Citem_Version (
5 p_init_msg_list IN VARCHAR2,
6 p_content_item_id IN NUMBER,
7 p_latest_component_versions IN VARCHAR2,
8 x_citem_version_id OUT NOCOPY NUMBER,
9 x_version_number OUT NOCOPY NUMBER,
10 x_start_date OUT NOCOPY DATE,
11 x_end_date OUT NOCOPY DATE,
12 x_return_status OUT NOCOPY VARCHAR2,
13 x_msg_count OUT NOCOPY NUMBER,
14 x_msg_data OUT NOCOPY VARCHAR2
15 ) AS
16 CURSOR Get_Latest_Version IS
17 select CITEM_VERSION_ID, VERSION_NUMBER, START_DATE, END_DATE
18 from IBC_CITEM_VERSIONS_B
19 where CONTENT_ITEM_ID = p_content_item_id
20 and VERSION_NUMBER = (select max(VERSION_NUMBER)
21 from IBC_CITEM_VERSIONS_B
22 where CONTENT_ITEM_ID = p_content_item_id);
23
24 CURSOR Get_Latest_Approved_Version IS
25 select CITEM_VERSION_ID, VERSION_NUMBER, START_DATE, END_DATE
26 from IBC_CITEM_VERSIONS_B
27 where CONTENT_ITEM_ID = p_content_item_id
28 and VERSION_NUMBER = (select max(VERSION_NUMBER)
29 from IBC_CITEM_VERSIONS_B
30 where CONTENT_ITEM_ID = p_content_item_id
31 and CITEM_VERSION_STATUS = IBC_UTILITIES_PUB.G_STV_APPROVED);
32
33 BEGIN
34 -- Initialize message list if p_init_msg_list is set to TRUE.
35 IF FND_API.to_Boolean( p_init_msg_list ) THEN
36 FND_MSG_PUB.initialize;
37 END IF;
38 -- Initialize API return status to success
39 x_return_status := FND_API.G_RET_STS_SUCCESS;
40
41 IF (p_latest_component_versions = FND_API.G_TRUE) THEN
42 OPEN Get_Latest_Version;
43 FETCH Get_Latest_Version INTO x_citem_version_id, x_version_number,
44 x_start_date, x_end_date;
45 CLOSE Get_Latest_Version;
46 ELSE
47 OPEN Get_Latest_Approved_Version;
48 FETCH Get_Latest_Approved_Version INTO x_citem_version_id, x_version_number,
49 x_start_date, x_end_date;
50 CLOSE Get_Latest_Approved_Version;
51 END IF;
52
53 EXCEPTION
54 WHEN FND_API.G_EXC_ERROR THEN
55 x_return_status := FND_API.G_RET_STS_ERROR;
56 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
57 p_data => x_msg_data);
58 END Get_Citem_Version;
59
60
61
62
63
64
65
66 PROCEDURE Preview_Citem_Xml (
67 p_init_msg_list IN VARCHAR2,
68 p_content_item_id IN NUMBER,
69 p_citem_version_id IN NUMBER,
70 p_lang_code IN VARCHAR2,
71 p_version_number IN NUMBER,
72 p_start_date IN DATE,
73 p_end_date IN DATE,
74 p_preview_mode IN VARCHAR2,
75 p_xml_clob_loc IN OUT NOCOPY CLOB,
76 p_num_levels IN NUMBER,
77 x_num_levels_loaded OUT NOCOPY NUMBER,
78 x_return_status OUT NOCOPY VARCHAR2,
79 x_msg_count OUT NOCOPY NUMBER,
80 x_msg_data OUT NOCOPY VARCHAR2
81 ) AS
82 l_version_number NUMBER;
83 l_start_date DATE;
84 l_end_date DATE;
85 l_content_type_code IBC_CONTENT_ITEMS.CONTENT_TYPE_CODE%TYPE;
86 l_item_reference_code IBC_CONTENT_ITEMS.ITEM_REFERENCE_CODE%TYPE;
87 l_encrypt_flag VARCHAR2(1);
88
89 l_content_item_name IBC_CITEM_VERSIONS_TL.CONTENT_ITEM_NAME%TYPE;
90 l_description IBC_CITEM_VERSIONS_TL.DESCRIPTION%TYPE;
91 l_attachment_attribute_code IBC_CITEM_VERSIONS_TL.ATTACHMENT_ATTRIBUTE_CODE%TYPE;
92 l_attachment_file_id NUMBER;
93 l_attachment_file_name IBC_CITEM_VERSIONS_TL.ATTACHMENT_FILE_NAME%TYPE;
94 l_attribute_file_id NUMBER;
95 l_default_mime_type IBC_CITEM_VERSIONS_TL.DEFAULT_RENDITION_MIME_TYPE%TYPE;
96
97 l_comp_content_item_id NUMBER;
98 l_comp_citem_version_id NUMBER;
99 l_comp_citem_version_number NUMBER;
100 l_comp_citem_start_date DATE;
101 l_comp_citem_end_date DATE;
102 l_tmp_num_levels NUMBER;
103 l_has_component_items VARCHAR2(1) := FND_API.g_false;
104 l_max_num_levels_loaded NUMBER := 0;
105 --
106 CURSOR Get_Citem IS
107 select CONTENT_TYPE_CODE, ITEM_REFERENCE_CODE, ENCRYPT_FLAG
108 from IBC_CONTENT_ITEMS
109 where content_item_id = p_content_item_id;
110
111 CURSOR Get_Version IS
112 select VERSION_NUMBER, START_DATE, END_DATE
113 from IBC_CITEM_VERSIONS_B
114 where CITEM_VERSION_ID = p_citem_version_id;
115
116 CURSOR Get_Citem_Meta_Csr IS
117 select ATTRIBUTE_FILE_ID, CONTENT_ITEM_NAME, DESCRIPTION, ATTACHMENT_ATTRIBUTE_CODE,
118 ATTACHMENT_FILE_ID, ATTACHMENT_FILE_NAME, DEFAULT_RENDITION_MIME_TYPE
119 from IBC_CITEM_VERSIONS_TL
120 where citem_version_id = p_citem_version_id
121 and language = nvl(p_lang_code, userenv('LANG'));
122
123
124 CURSOR Get_Compound_Item_Ref IS
125 select r.ATTRIBUTE_TYPE_CODE, r.CONTENT_ITEM_ID,
126 r.SUBITEM_VERSION_ID, c.ENCRYPT_FLAG
127 from IBC_COMPOUND_RELATIONS r, IBC_CONTENT_ITEMS c
128 where r.CITEM_VERSION_ID = p_citem_version_id
129 and r.CONTENT_ITEM_ID = c.CONTENT_ITEM_ID
130 order by r.SORT_ORDER;
131
132 BEGIN
133 -- Initialize message list if p_init_msg_list is set to TRUE.
134 IF FND_API.to_Boolean( p_init_msg_list ) THEN
135 FND_MSG_PUB.initialize;
136 END IF;
137 -- Initialize API return status to success
138 x_return_status := FND_API.G_RET_STS_SUCCESS;
139
140 -- **************** Real Logic Starts *****************
141
142 -- Retrieve Content Item
143 OPEN Get_Citem;
144 FETCH Get_Citem INTO l_content_type_code, l_item_reference_code,l_encrypt_flag;
145 -- check if p_content_item_id is valid
146 IF Get_Citem%NOTFOUND THEN
147 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
148 FND_MESSAGE.Set_Name('IBC', 'INVALID_CITEM_ID');
149 FND_MESSAGE.Set_token('CITEM_ID', p_content_item_id);
150 FND_MSG_PUB.ADD;
151 END IF;
152 RAISE FND_API.G_EXC_ERROR;
153 END IF;
154 CLOSE Get_Citem;
155
156 -- Retrieve Meta Data
157 OPEN Get_Citem_Meta_Csr;
158 FETCH Get_Citem_Meta_Csr INTO l_attribute_file_id, l_content_item_name, l_description,
159 l_attachment_attribute_code,
160 l_attachment_file_id,
161 l_attachment_file_name,
162 l_default_mime_type;
163 -- check if p_citem_version_id is valid
164 IF Get_Citem_Meta_Csr%NOTFOUND THEN
165 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
166 FND_MESSAGE.Set_Name('IBC', 'INVALID_CITEM_VERSION_ID');
167 FND_MESSAGE.Set_token('CITEM_VERSION_ID', p_citem_version_id);
168 FND_MSG_PUB.ADD;
169 END IF;
170 RAISE FND_API.G_EXC_ERROR;
171 END IF;
172 CLOSE Get_Citem_Meta_Csr;
173
174 IF (p_version_number is NULL) THEN
175 OPEN Get_Version;
176 FETCH Get_Version INTO l_version_number, l_start_date,
177 l_end_date;
178 CLOSE Get_Version;
179 ELSE
180 l_version_number := p_version_number;
181 l_start_date := p_start_date;
182 l_end_date := p_end_date;
183 END IF;
184
185 -- Openning Tags (Root + Renditions + Name + Description + Attachment)
186 IBC_UTILITIES_PVT.Build_Citem_Open_Tags (
187 p_content_type_code => l_content_type_code,
188 p_content_item_id => p_content_item_id,
189 p_citem_version_id => p_citem_version_id,
190 p_lang_code => p_lang_code,
191 p_version_number => l_version_number,
192 p_start_date => l_start_date,
193 p_end_date => l_end_date,
194 p_item_reference_code => l_item_reference_code,
195 p_encrypt_flag => l_encrypt_flag,
196 p_content_item_name => l_content_item_name,
197 p_description => l_description,
198 p_attachment_attribute_code => l_attachment_attribute_code,
199 p_attachment_file_id => l_attachment_file_id,
200 p_attachment_file_name => l_attachment_file_name,
201 p_default_mime_type => l_default_mime_type,
202 p_is_preview => FND_API.G_TRUE,
203 p_xml_clob_loc => p_xml_clob_loc
204 );
205 -- User defined primitive attributes
206 IBC_UTILITIES_PVT.Build_Attribute_Bundle (
207 p_file_id => l_attribute_file_id,
208 p_xml_clob_loc => p_xml_clob_loc
209 );
210 -- Compound Item attributes
211 IF (p_num_levels IS NULL OR p_num_levels > 0) THEN
212
213 -- compound items expanded
214 FOR compound_item_rec IN Get_Compound_Item_Ref LOOP
215
216 l_has_component_items := FND_API.g_true;
217 l_comp_content_item_id := compound_item_rec.content_item_id;
218 l_comp_citem_version_id := compound_item_rec.subitem_version_id;
219
220 IF (p_preview_mode = IBC_CITEM_PREVIEW_GRP.G_LATEST_COMP_VERSIONS OR
221 (p_preview_mode = IBC_CITEM_PREVIEW_GRP.G_DEFAULT_COMP_VERSIONS AND
222 l_comp_citem_version_id is NULL)) THEN
223
224 -- if default versions specified, but value not set, also use latest versions.
225 Get_Citem_Version (
226 p_init_msg_list => p_init_msg_list,
227 p_content_item_id => l_comp_content_item_id,
228 p_latest_component_versions => FND_API.G_TRUE,
229 x_citem_version_id => l_comp_citem_version_id,
230 x_version_number => l_comp_citem_version_number,
231 x_start_date => l_comp_citem_start_date,
232 x_end_date => l_comp_citem_end_date,
233 x_return_status => x_return_status,
234 x_msg_count => x_msg_count,
235 x_msg_data => x_msg_data);
236 ELSIF (p_preview_mode = IBC_CITEM_PREVIEW_GRP.G_LIVE_COMP_VERSIONS) THEN
237 Get_Citem_Version (
238 p_init_msg_list => p_init_msg_list,
239 p_content_item_id => l_comp_content_item_id,
240 p_latest_component_versions => FND_API.G_FALSE,
241 x_citem_version_id => l_comp_citem_version_id,
242 x_version_number => l_comp_citem_version_number,
243 x_start_date => l_comp_citem_start_date,
244 x_end_date => l_comp_citem_end_date,
245 x_return_status => x_return_status,
246 x_msg_count => x_msg_count,
247 x_msg_data => x_msg_data);
248 END IF;
249
250 --
251 -- No matter what the mode is : if the Subitem_version_id
252 -- is specified for the Compound Content Item, it should
253 -- be picked up.
254 -- Only when the SubItemVersionId is NULL then the mode should
255 -- be looked at to decide whether Live Or Latest Versions must
256 -- be shown.
257 -- Bug#3378895 and Bug#3378875
258 --
259 IF compound_item_rec.subitem_version_id IS NOT NULL THEN
260 l_comp_citem_version_id := compound_item_rec.subitem_version_id;
261 END IF;
262
263 -- Siva Devaki 22-Jan-04
264 -- Checking this condition to fix bug#3385548
265 IF ( l_comp_citem_version_id IS NOT NULL ) THEN
266
267 IBC_UTILITIES_PVT.Build_Preview_Cpnt_Open_Tag (
268 p_attribute_type_code => compound_item_rec.attribute_type_code,
269 p_content_item_id => l_comp_content_item_id,
270 p_content_item_version_id => l_comp_citem_version_id,
271 p_encrypt_flag => compound_item_rec.encrypt_flag,
272 p_xml_clob_loc => p_xml_clob_loc
273 );
274 l_tmp_num_levels := p_num_levels - 1;
275 Preview_Citem_Xml (
276 p_init_msg_list
277 ,l_comp_content_item_id
278 ,l_comp_citem_version_id
279 ,p_lang_code
280 ,l_comp_citem_version_number
281 ,l_comp_citem_start_date
282 ,l_comp_citem_end_date
283 ,p_preview_mode
284 ,p_xml_clob_loc
285 ,l_tmp_num_levels
286 ,x_num_levels_loaded
287 ,x_return_status
288 ,x_msg_count
289 ,x_msg_data
290 );
291 -- nested compounded items not valid
292 IF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
293 RAISE FND_API.G_EXC_ERROR;
294 END IF;
295
296 IBC_UTILITIES_PVT.Build_Close_Tag (
297 compound_item_rec.attribute_type_code,
298 p_xml_clob_loc
299 );
300
301 -- update max num levels
302 IF (x_num_levels_loaded > l_max_num_levels_loaded) THEN
303 l_max_num_levels_loaded := x_num_levels_loaded;
304 END IF;
305
306 END IF;
307
308
309 END LOOP;
310
311 -- set number of levels loaded
312 IF (l_has_component_items = FND_API.g_false) THEN
313 x_num_levels_loaded := 0;
314 ELSE
315 x_num_levels_loaded := l_max_num_levels_loaded + 1;
316 END IF;
317
318 -- p_num_levels = 0
319 ELSE
320 -- compound item references
321 IBC_UTILITIES_PVT.Build_Preview_Cpnt_References (
322 p_citem_version_id => p_citem_version_id,
323 p_xml_clob_loc => p_xml_clob_loc
324 );
325 -- set number of levels loaded
326 x_num_levels_loaded := 0;
327
328 END IF;
329
330 -- Close Root Tag
331 IBC_UTILITIES_PVT.Build_Close_Tag (
332 l_content_type_code, -- p_content_type_code IN VARCHAR2
333 p_xml_clob_loc -- p_xml_clob_loc IN OUT CLOB
334 );
335 -- **************** Real Logic Ends *****************
336
337 EXCEPTION
338 WHEN FND_API.G_EXC_ERROR THEN
339 x_return_status := FND_API.G_RET_STS_ERROR;
340 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
341 p_data => x_msg_data);
342 END Preview_Citem_Xml;
343
344
345 END IBC_CITEM_PREVIEW_PVT;