2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <media_content.h>
20 #include <media_info_private.h>
21 #include <media-util-err.h>
24 static attribute_h g_attr_handle = NULL;
25 static attribute_h g_alias_attr_handle = NULL;
26 static MediaSvcHandle *db_handle = NULL;
27 static int ref_count = 0;
30 static int __media_content_create_attr_handle(void);
31 static int __media_content_create_alias_attr_handle(void);
32 static int __media_content_create_attribute_handle(void);
33 static int __media_content_destroy_attribute_handle(void);
36 static int __media_content_create_attr_handle(void)
38 int ret = MEDIA_CONTENT_ERROR_NONE;
40 ret = _media_filter_attribute_create(&g_attr_handle);
41 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
44 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_ID, DB_FIELD_MEDIA_ID);
45 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
47 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_PATH, DB_FIELD_MEDIA_PATH);
48 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
50 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_DISPLAY_NAME, DB_FIELD_MEDIA_DISPLAY_NAME);
51 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
53 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_TYPE, DB_FIELD_MEDIA_TYPE);
54 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
56 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_MIME_TYPE, DB_FIELD_MEDIA_MIME_TYPE);
57 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
59 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_SIZE, DB_FIELD_MEDIA_SIZE);
60 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
62 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_ADDED_TIME, DB_FIELD_MEDIA_ADDED_TIME);
63 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
65 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_MODIFIED_TIME, DB_FIELD_MEDIA_MODIFIED_TIME);
66 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
68 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_THUMBNAIL_PATH, DB_FIELD_MEDIA_THUMBNAIL_PATH);
69 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
71 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_TITLE, DB_FIELD_MEDIA_TITLE);
72 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
74 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_ALBUM, DB_FIELD_MEDIA_ALBUM);
75 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
77 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_ARTIST, DB_FIELD_MEDIA_ARTIST);
78 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
80 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_GENRE, DB_FIELD_MEDIA_GENRE);
81 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
83 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_COMPOSER, DB_FIELD_MEDIA_COMPOSER);
84 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
86 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_YEAR, DB_FIELD_MEDIA_YEAR);
87 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
89 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_RECORDED_DATE, DB_FIELD_MEDIA_RECORDED_DATE);
90 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
92 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_COPYRIGHT, DB_FIELD_MEDIA_COPYRIGHT);
93 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
95 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_TRACK_NUM, DB_FIELD_MEDIA_TRACK_NUM);
96 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
98 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_DESCRIPTION, DB_FIELD_MEDIA_DESCRIPTION);
99 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
101 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_BITRATE, DB_FIELD_MEDIA_BITRATE);
102 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
104 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_SAMPLERATE, DB_FIELD_MEDIA_SAMPLERATE);
105 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
107 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_CHANNEL, DB_FIELD_MEDIA_CHANNEL);
108 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
110 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_DURATION, DB_FIELD_MEDIA_DURATION);
111 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
113 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_LONGITUDE, DB_FIELD_MEDIA_LONGITUDE);
114 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
116 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_LATITUDE, DB_FIELD_MEDIA_LATITUDE);
117 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
119 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_ALTITUDE, DB_FIELD_MEDIA_ALTITUDE);
120 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
122 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_WIDTH, DB_FIELD_MEDIA_WIDTH);
123 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
125 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_HEIGHT, DB_FIELD_MEDIA_HEIGHT);
126 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
128 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_DATETAKEN, DB_FIELD_MEDIA_DATETAKEN);
129 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
131 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_ORIENTATION, DB_FIELD_MEDIA_ORIENTATION);
132 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
134 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_PLAYED_COUNT, DB_FIELD_MEDIA_PLAYED_COUNT);
135 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
137 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_LAST_PLAYED_TIME, DB_FIELD_MEDIA_LAST_PLAYED_TIME);
138 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
140 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_LAST_PLAYED_POSITION, DB_FIELD_MEDIA_LAST_PLAYED_POSITION);
141 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
143 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_RATING, DB_FIELD_MEDIA_RATING);
144 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
146 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_FAVOURITE, DB_FIELD_MEDIA_FAVOURITE);
147 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
149 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_AUTHOR, DB_FIELD_MEDIA_AUTHOR);
150 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
152 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_PROVIDER, DB_FIELD_MEDIA_PROVIDER);
153 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
155 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_CONTENT_NAME, DB_FIELD_MEDIA_CONTENT_NAME);
156 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
158 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_CATEGORY, DB_FIELD_MEDIA_CATEGORY);
159 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
161 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_LOCATION_TAG, DB_FIELD_MEDIA_LOCATION_TAG);
162 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
164 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_AGE_RATING, DB_FIELD_MEDIA_AGE_RATING);
165 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
167 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_KEYWORD, DB_FIELD_MEDIA_KEYWORD);
168 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
170 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_IS_DRM, DB_FIELD_MEDIA_IS_DRM);
171 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
173 ret = _media_filter_attribute_add(g_attr_handle, MEDIA_STORAGE_TYPE, DB_FIELD_MEDIA_STORAGE_TYPE);
174 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
177 ret = _media_filter_attribute_add(g_attr_handle, PLAYLIST_NAME, DB_FIELD_PLAYLIST_NAME);
178 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
180 ret = _media_filter_attribute_add(g_attr_handle, PLAYLIST_MEMBER_ORDER, DB_FIELD_PLAYLIST_MEMBER_ORDER);
181 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
184 ret = _media_filter_attribute_add(g_attr_handle, PLAYLIST_MEDIA_COUNT, DB_FIELD_PLAYLIST_MEDIA_COUNT);
185 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
188 ret = _media_filter_attribute_add(g_attr_handle, TAG_NAME, DB_FIELD_TAG_NAME);
189 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
192 ret = _media_filter_attribute_add(g_attr_handle, TAG_MEDIA_COUNT, DB_FIELD_TAG_MEDIA_COUNT);
193 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
196 ret = _media_filter_attribute_add(g_attr_handle, BOOKMARK_MARKED_TIME, DB_FIELD_BOOKMARK_MARKED_TIME);
197 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
202 static int __media_content_create_alias_attr_handle(void)
204 int ret = MEDIA_CONTENT_ERROR_NONE;
206 ret = _media_filter_attribute_create(&g_alias_attr_handle);
207 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
210 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_ID, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ID);
211 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
213 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_PATH, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_PATH);
214 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
216 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_DISPLAY_NAME, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_DISPLAY_NAME);
217 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
219 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_TYPE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_TYPE);
220 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
222 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_MIME_TYPE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_MIME_TYPE);
223 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
225 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_SIZE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_SIZE);
226 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
228 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_ADDED_TIME, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ADDED_TIME);
229 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
231 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_MODIFIED_TIME, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_MODIFIED_TIME);
232 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
234 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_THUMBNAIL_PATH, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_THUMBNAIL_PATH);
235 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
237 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_TITLE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_TITLE);
238 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
240 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_ALBUM, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ALBUM);
241 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
243 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_ARTIST, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ARTIST);
244 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
246 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_GENRE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_GENRE);
247 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
249 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_COMPOSER, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_COMPOSER);
250 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
252 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_YEAR, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_YEAR);
253 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
255 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_RECORDED_DATE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_RECORDED_DATE);
256 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
258 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_COPYRIGHT, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_COPYRIGHT);
259 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
261 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_TRACK_NUM, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_TRACK_NUM);
262 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
264 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_DESCRIPTION, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_DESCRIPTION);
265 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
267 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_BITRATE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_BITRATE);
268 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
270 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_SAMPLERATE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_SAMPLERATE);
271 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
273 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_CHANNEL, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_CHANNEL);
274 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
276 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_DURATION, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_DURATION);
277 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
279 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_LONGITUDE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_LONGITUDE);
280 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
282 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_LATITUDE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_LATITUDE);
283 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
285 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_ALTITUDE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ALTITUDE);
286 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
288 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_WIDTH, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_WIDTH);
289 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
291 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_HEIGHT, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_HEIGHT);
292 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
294 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_DATETAKEN, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_DATETAKEN);
295 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
297 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_ORIENTATION, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ORIENTATION);
298 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
300 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_PLAYED_COUNT, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_PLAYED_COUNT);
301 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
303 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_LAST_PLAYED_TIME, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_LAST_PLAYED_TIME);
304 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
306 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_LAST_PLAYED_POSITION, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_LAST_PLAYED_POSITION);
307 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
309 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_RATING, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_RATING);
310 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
312 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_FAVOURITE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_FAVOURITE);
313 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
315 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_AUTHOR, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_AUTHOR);
316 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
318 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_PROVIDER, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_PROVIDER);
319 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
321 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_CONTENT_NAME, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_CONTENT_NAME);
322 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
324 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_CATEGORY, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_CATEGORY);
325 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
327 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_LOCATION_TAG, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_LOCATION_TAG);
328 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
330 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_AGE_RATING, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_AGE_RATING);
331 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
333 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_KEYWORD, DB_TABLE_ALIAS_MEDIA"."MEDIA_KEYWORD);
334 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
336 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_IS_DRM, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_IS_DRM);
337 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
339 ret = _media_filter_attribute_add(g_alias_attr_handle, MEDIA_STORAGE_TYPE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_STORAGE_TYPE);
340 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
343 ret = _media_filter_attribute_add(g_alias_attr_handle, FOLDER_ID, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_ID);
344 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
346 ret = _media_filter_attribute_add(g_alias_attr_handle, FOLDER_PATH, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_PATH);
347 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
349 ret = _media_filter_attribute_add(g_alias_attr_handle, FOLDER_NAME, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_NAME);
350 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
352 ret = _media_filter_attribute_add(g_alias_attr_handle, FOLDER_MODIFIED_TIME, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_MODIFIED_TIME);
353 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
355 ret = _media_filter_attribute_add(g_alias_attr_handle, FOLDER_STORAGE_TYPE, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_STORAGE_TYPE);
356 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
359 ret = _media_filter_attribute_add(g_alias_attr_handle, PLAYLIST_NAME, DB_TABLE_ALIAS_PLAYLIST"."DB_FIELD_PLAYLIST_NAME);
360 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
362 ret = _media_filter_attribute_add(g_alias_attr_handle, PLAYLIST_MEMBER_ORDER, DB_TABLE_ALIAS_PLAYLIST_MAP"."DB_FIELD_PLAYLIST_MEMBER_ORDER);
363 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
366 ret = _media_filter_attribute_add(g_alias_attr_handle, TAG_NAME, DB_TABLE_ALIAS_TAG"."DB_FIELD_TAG_NAME);
367 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
370 ret = _media_filter_attribute_add(g_alias_attr_handle, BOOKMARK_MARKED_TIME, DB_TABLE_ALIAS_BOOKMARK"."DB_FIELD_BOOKMARK_MARKED_TIME);
371 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
378 static int __media_content_create_attribute_handle(void)
380 int ret = MEDIA_CONTENT_ERROR_NONE;
382 ret = __media_content_create_attr_handle();
383 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
385 ret = __media_content_create_alias_attr_handle();
390 static int __media_content_destroy_attribute_handle(void)
392 int ret = MEDIA_CONTENT_ERROR_NONE;
394 ret = _media_filter_attribute_destory(g_attr_handle);
395 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
397 ret = _media_filter_attribute_destory(g_alias_attr_handle);
402 attribute_h _content_get_attirbute_handle(void)
404 return g_attr_handle;
407 attribute_h _content_get_alias_attirbute_handle(void)
409 return g_alias_attr_handle;
412 MediaSvcHandle* _content_get_db_handle(void)
417 int _content_query_prepare(sqlite3_stmt **stmt, char *select_query, char *condition_query, char *option_query)
420 int err = MEDIA_CONTENT_ERROR_NONE;
421 char query[MAX_QUERY_SIZE];
422 memset(query, '\0', sizeof(query));
424 if(db_handle == NULL)
426 media_content_error("DB_FAILED(0x%08x) database is not connected", MEDIA_CONTENT_ERROR_DB_FAILED);
427 return MEDIA_CONTENT_ERROR_DB_FAILED;
430 if(STRING_VALID(select_query)) {
431 if(!STRING_VALID(condition_query)) {
432 condition_query = " ";
435 if(!STRING_VALID(option_query)) {
440 //query = sqlite3_mprintf("%s %s %s", select_query, condition_query, option_query);
441 len = snprintf(query, sizeof(query), "%s %s %s", select_query, condition_query, option_query);
445 media_content_error("snprintf failed");
446 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
449 media_content_debug("Query : [%s]", query);
451 err = sqlite3_prepare_v2((sqlite3*)db_handle, query, strlen(query), stmt, NULL);
454 media_content_error("DB_FAILED(0x%08x) fail to sqlite3_prepare(), %s", MEDIA_CONTENT_ERROR_DB_FAILED, sqlite3_errmsg((sqlite3*)db_handle));
456 if (err == SQLITE_BUSY)
457 return MEDIA_CONTENT_ERROR_DB_BUSY;
459 return MEDIA_CONTENT_ERROR_DB_FAILED;
464 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
465 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
468 return MEDIA_CONTENT_ERROR_NONE;
471 int _content_error_capi(int type, int content_error)
473 if(type == MEDIA_CONTENT_TYPE)
475 if(content_error == MEDIA_INFO_ERROR_NONE)
476 return MEDIA_CONTENT_ERROR_NONE;
477 else if(content_error == MEDIA_INFO_ERROR_INVALID_PARAMETER)
478 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
479 else if(content_error == MEDIA_INFO_ERROR_DATABASE_INTERNAL)
480 return MEDIA_CONTENT_ERROR_DB_FAILED;
481 else if(content_error == MEDIA_INFO_ERROR_DATABASE_CONNECT)
482 return MEDIA_CONTENT_ERROR_DB_FAILED;
483 else if(content_error == MEDIA_INFO_ERROR_DATABASE_DISCONNECT)
484 return MEDIA_CONTENT_ERROR_DB_FAILED;
485 else if(content_error == MEDIA_INFO_ERROR_DATABASE_NO_RECORD)
486 return MEDIA_CONTENT_ERROR_DB_FAILED;
487 } else if(type == MEDIA_REGISTER_TYPE) {
488 if(content_error == MS_MEDIA_ERR_NONE)
489 return MEDIA_CONTENT_ERROR_NONE;
490 else if(content_error == MS_MEDIA_ERR_INVALID_PARAMETER || content_error == MS_MEDIA_ERR_INVALID_PATH)
491 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
492 else if(content_error == MS_MEDIA_ERR_INSERT_FAIL || content_error == MS_MEDIA_ERR_DRM_INSERT_FAIL)
493 return MEDIA_CONTENT_ERROR_DB_FAILED;
496 media_content_error("content_error : %d [ type :%d ]", content_error, type);
497 return MEDIA_CONTENT_ERROR_DB_FAILED;
500 int _content_query_sql(char *query_str)
502 int err = MEDIA_CONTENT_ERROR_NONE;
505 if(db_handle == NULL)
507 media_content_error("DB_FAILED(0x%08x) database is not connected", MEDIA_CONTENT_ERROR_DB_FAILED);
508 return MEDIA_CONTENT_ERROR_DB_FAILED;
511 err = sqlite3_exec(db_handle, query_str, NULL, NULL, &err_msg);
516 media_content_error("DB_FAILED : %s", err_msg);
517 media_content_error("DB_FAILED SQL: %s", query_str);
518 sqlite3_free(err_msg);
521 media_content_error("DB_FAILED(0x%08x) database operation is failed", MEDIA_CONTENT_ERROR_DB_FAILED);
523 if (err == SQLITE_BUSY)
524 return MEDIA_CONTENT_ERROR_DB_BUSY;
526 return MEDIA_CONTENT_ERROR_DB_FAILED;
530 media_content_debug("DB_SUCCESS: %s", query_str);
534 sqlite3_free(err_msg);
536 return MEDIA_CONTENT_ERROR_NONE;
539 int media_content_connect(void)
541 int ret = MEDIA_CONTENT_ERROR_NONE;
545 if(db_handle == NULL)
547 ret = media_svc_connect(&db_handle);
550 ret = _content_error_capi(MEDIA_CONTENT_TYPE, ret);
552 if(ret == MEDIA_CONTENT_ERROR_NONE) {
553 ret = __media_content_create_attribute_handle();
562 int media_content_disconnect(void)
564 int ret = MEDIA_CONTENT_ERROR_NONE;
572 media_content_error("DB_FAILED(0x%08x) database is not connected", MEDIA_CONTENT_ERROR_DB_FAILED);
573 return MEDIA_CONTENT_ERROR_DB_FAILED;
578 if(db_handle != NULL)
580 ret = media_svc_disconnect(db_handle);
581 ret = _content_error_capi(MEDIA_CONTENT_TYPE, ret);
582 if(ret == MEDIA_CONTENT_ERROR_NONE)
584 ret = __media_content_destroy_attribute_handle();