Apply Werror option and fix warning code
[platform/core/api/media-content.git] / test / media-content_test.c
1 /*
2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3 *
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
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
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.
15 */
16
17 #include <sys/time.h>
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include <unistd.h>
21 #include <media_content.h>
22 #include <media_info_private.h>
23 #include <dlog.h>
24 #include <pthread.h>
25 #include <glib.h>
26 #include <tzplatform_config.h>
27
28 filter_h g_filter = NULL;
29 filter_h g_filter_g = NULL;     //filter for group like folder, tag, playlist, album, year ...
30
31 GMainLoop *g_loop = NULL;
32 static int g_cnt = 0;
33 static int g_media_cnt = 0;
34
35 #define test_audio_id   "0f999626-6218-450c-a4ad-181a3bab6ebf"
36 #define test_video_id   "c1a92494-cc5b-4d74-aa7d-253199234548"
37 #define test_image_id "db1c184c-6f31-43b4-b924-8c00ac5b6197"
38 media_folder_h g_folder = NULL;
39
40 bool get_audio_meta(audio_meta_h audio)
41 {
42         char *c_value = NULL;
43         int i_value = 0;
44         time_t t_value = 0;
45         int ret = MEDIA_CONTENT_ERROR_NONE;
46
47         media_content_debug("=== audio meta ===");
48
49         ret = audio_meta_get_media_id(audio, &c_value);
50         if(ret != MEDIA_CONTENT_ERROR_NONE)
51                 media_content_error("error when get meta : [%d]", ret);
52         media_content_debug("audio_id : [%s]", c_value);
53         SAFE_FREE(c_value);
54
55         ret = audio_meta_get_album(audio, &c_value);
56         if(ret != MEDIA_CONTENT_ERROR_NONE)
57                 media_content_error("error when get meta : [%d]", ret);
58         media_content_debug("album : [%s]", c_value);
59         SAFE_FREE(c_value);
60
61         ret = audio_meta_get_artist(audio, &c_value);
62         if(ret != MEDIA_CONTENT_ERROR_NONE)
63                 media_content_error("error when get meta : [%d]", ret);
64         media_content_debug("artist : [%s]", c_value);
65         SAFE_FREE(c_value);
66
67         ret = audio_meta_get_album_artist(audio, &c_value);
68         if(ret != MEDIA_CONTENT_ERROR_NONE)
69                 media_content_error("error when get meta : [%d]", ret);
70         media_content_debug("album_artist : [%s]", c_value);
71         SAFE_FREE(c_value);
72
73         ret = audio_meta_get_genre(audio, &c_value);
74         if(ret != MEDIA_CONTENT_ERROR_NONE)
75                 media_content_error("error when get meta : [%d]", ret);
76         media_content_debug("genre : [%s]", c_value);
77         SAFE_FREE(c_value);
78
79         ret = audio_meta_get_composer(audio, &c_value);
80         if(ret != MEDIA_CONTENT_ERROR_NONE)
81                 media_content_error("error when get meta : [%d]", ret);
82         media_content_debug("composer : [%s]", c_value);
83         SAFE_FREE(c_value);
84
85         ret = audio_meta_get_year(audio, &c_value);
86         if(ret != MEDIA_CONTENT_ERROR_NONE)
87                 media_content_error("error when get meta : [%d]", ret);
88         media_content_debug("year : [%s]", c_value);
89         SAFE_FREE(c_value);
90
91         ret = audio_meta_get_recorded_date(audio, &c_value);
92         if(ret != MEDIA_CONTENT_ERROR_NONE)
93                 media_content_error("error when get meta : [%d]", ret);
94         media_content_debug("recorded_date : [%s]", c_value);
95         SAFE_FREE(c_value);
96
97         ret = audio_meta_get_copyright(audio, &c_value);
98         if(ret != MEDIA_CONTENT_ERROR_NONE)
99                 media_content_error("error when get meta : [%d]", ret);
100         media_content_debug("copyright : [%s]", c_value);
101         SAFE_FREE(c_value);
102
103         ret = audio_meta_get_track_num(audio, &c_value);
104         if(ret != MEDIA_CONTENT_ERROR_NONE)
105                 media_content_error("error when get meta : [%d]", ret);
106         media_content_debug("track_num : [%s]", c_value);
107         SAFE_FREE(c_value);
108
109         ret = audio_meta_get_bit_rate(audio, &i_value);
110         if(ret != MEDIA_CONTENT_ERROR_NONE)
111                 media_content_error("error when get meta : [%d]", ret);
112         media_content_debug("bitrate : [%d]", i_value);
113
114         ret = audio_meta_get_sample_rate(audio, &i_value);
115         if(ret != MEDIA_CONTENT_ERROR_NONE)
116                 media_content_error("error when get meta : [%d]", ret);
117         media_content_debug("samplerate : [%d]", i_value);
118
119         ret = audio_meta_get_channel(audio, &i_value);
120         if(ret != MEDIA_CONTENT_ERROR_NONE)
121                 media_content_error("error when get meta : [%d]", ret);
122         media_content_debug("channel : [%d]", i_value);
123
124         ret = audio_meta_get_duration(audio, &i_value);
125         if(ret != MEDIA_CONTENT_ERROR_NONE)
126                 media_content_error("error when get meta : [%d]", ret);
127         media_content_debug("duration : [%d]", i_value);
128
129         ret = audio_meta_get_played_count(audio, &i_value);
130         if(ret != MEDIA_CONTENT_ERROR_NONE)
131                 media_content_error("error when get meta : [%d]", ret);
132         media_content_debug("played_count : [%d]", i_value);
133
134         ret = audio_meta_get_played_time(audio, &t_value);
135         if(ret != MEDIA_CONTENT_ERROR_NONE)
136                 media_content_error("error when get meta : [%d]", ret);
137         media_content_debug("played_time : [%d]", t_value);
138
139         ret = audio_meta_get_played_position(audio, &i_value);
140         if(ret != MEDIA_CONTENT_ERROR_NONE)
141                 media_content_error("error when get meta : [%d]", ret);
142         media_content_debug("played_position : [%d]", i_value);
143
144         return true;
145 }
146
147 bool get_video_meta(video_meta_h video)
148 {
149         char *c_value = NULL;
150         int i_value = 0;
151         time_t t_value = 0;
152         int ret = MEDIA_CONTENT_ERROR_NONE;
153
154         media_content_debug("=== video meta ===");
155
156         ret = video_meta_get_media_id(video, &c_value);
157         if(ret != MEDIA_CONTENT_ERROR_NONE)
158                 media_content_error("error when get meta : [%d]", ret);
159         media_content_debug("video_id : [%s]", c_value);
160         SAFE_FREE(c_value);
161
162         ret = video_meta_get_album(video, &c_value);
163         if(ret != MEDIA_CONTENT_ERROR_NONE)
164                 media_content_error("error when get meta : [%d]", ret);
165         media_content_debug("album : [%s]", c_value);
166         SAFE_FREE(c_value);
167
168         ret = video_meta_get_artist(video, &c_value);
169         if(ret != MEDIA_CONTENT_ERROR_NONE)
170                 media_content_error("error when get meta : [%d]", ret);
171         media_content_debug("artist : [%s]", c_value);
172         SAFE_FREE(c_value);
173
174         ret = video_meta_get_album_artist(video, &c_value);
175         if(ret != MEDIA_CONTENT_ERROR_NONE)
176                 media_content_error("error when get meta : [%d]", ret);
177         media_content_debug("album_artist : [%s]", c_value);
178         SAFE_FREE(c_value);
179
180         ret = video_meta_get_genre(video, &c_value);
181         if(ret != MEDIA_CONTENT_ERROR_NONE)
182                 media_content_error("error when get meta : [%d]", ret);
183         media_content_debug("genre : [%s]", c_value);
184         SAFE_FREE(c_value);
185
186         ret = video_meta_get_composer(video, &c_value);
187         if(ret != MEDIA_CONTENT_ERROR_NONE)
188                 media_content_error("error when get meta : [%d]", ret);
189         media_content_debug("omposer : [%s]", c_value);
190         SAFE_FREE(c_value);
191
192         ret = video_meta_get_year(video, &c_value);
193         if(ret != MEDIA_CONTENT_ERROR_NONE)
194                 media_content_error("error when get meta : [%d]", ret);
195         media_content_debug("year : [%s]", c_value);
196         SAFE_FREE(c_value);
197
198         ret = video_meta_get_recorded_date(video, &c_value);
199         if(ret != MEDIA_CONTENT_ERROR_NONE)
200                 media_content_error("error when get meta : [%d]", ret);
201         media_content_debug("recorded_date : [%s]", c_value);
202         SAFE_FREE(c_value);
203
204         ret = video_meta_get_copyright(video, &c_value);
205         if(ret != MEDIA_CONTENT_ERROR_NONE)
206                 media_content_error("error when get meta : [%d]", ret);
207         media_content_debug("copyright : [%s]", c_value);
208         SAFE_FREE(c_value);
209
210         ret = video_meta_get_track_num(video, &c_value);
211         if(ret != MEDIA_CONTENT_ERROR_NONE)
212                 media_content_error("error when get meta : [%d]", ret);
213         media_content_debug("track_num : [%s]", c_value);
214         SAFE_FREE(c_value);
215
216         ret = video_meta_get_bit_rate(video, &i_value);
217         if(ret != MEDIA_CONTENT_ERROR_NONE)
218                 media_content_error("error when get meta : [%d]", ret);
219         media_content_debug("bitrate : [%d]", i_value);
220
221         ret = video_meta_get_duration(video, &i_value);
222         if(ret != MEDIA_CONTENT_ERROR_NONE)
223                 media_content_error("error when get meta : [%d]", ret);
224         media_content_debug("duration : [%d]", i_value);
225
226         ret = video_meta_get_width(video, &i_value);
227         if(ret != MEDIA_CONTENT_ERROR_NONE)
228                 media_content_error("error when get meta : [%d]", ret);
229         media_content_debug("width : [%d]", i_value);
230
231         ret = video_meta_get_height(video, &i_value);
232         if(ret != MEDIA_CONTENT_ERROR_NONE)
233                 media_content_error("error when get meta : [%d]", ret);
234         media_content_debug("height : [%d]", i_value);
235
236         ret = video_meta_get_played_count(video, &i_value);
237         if(ret != MEDIA_CONTENT_ERROR_NONE)
238                 media_content_error("error when get meta : [%d]", ret);
239         media_content_debug("played_count : [%d]", i_value);
240
241         ret = video_meta_get_played_time(video, &t_value);
242         if(ret != MEDIA_CONTENT_ERROR_NONE)
243                 media_content_error("error when get meta : [%d]", ret);
244         media_content_debug("played_time : [%d]", t_value);
245
246         ret = video_meta_get_played_position(video, &i_value);
247         if(ret != MEDIA_CONTENT_ERROR_NONE)
248                 media_content_error("error when get meta : [%d]", ret);
249         media_content_debug("played_position : [%d]", i_value);
250
251         return true;
252 }
253
254 bool gallery_folder_list_cb(media_folder_h folder, void *user_data)
255 {
256         media_folder_h new_folder = NULL;
257         media_folder_clone(&new_folder, folder);
258
259         GList **list = (GList**)user_data;
260         *list = g_list_append(*list, new_folder);
261
262         return true;
263 }
264
265 bool gallery_media_item_cb(media_info_h media, void *user_data)
266 {
267         media_info_h new_media = NULL;
268         media_info_clone(&new_media, media);
269
270         GList **list = (GList**)user_data;
271         *list = g_list_append(*list, new_media);
272
273         return true;
274 }
275
276 bool gallery_tag_item_cb(media_tag_h tag, void *user_data)
277 {
278         media_tag_h new_tag = NULL;
279         media_tag_clone(&new_tag, tag);
280
281         GList **list = (GList**)user_data;
282         *list = g_list_append(*list, new_tag);
283
284         return true;
285 }
286
287 bool gallery_bookmarks_cb(media_bookmark_h bookmark, void *user_data)
288 {
289         media_bookmark_h new_bm = NULL;
290         int ret = MEDIA_CONTENT_ERROR_NONE;
291
292         ret = media_bookmark_clone(&new_bm, bookmark);
293         if(ret != MEDIA_CONTENT_ERROR_NONE)
294                 media_content_error("error media_bookmark_clone : [%d]", ret);
295
296         GList **list = (GList**)user_data;
297         *list = g_list_append(*list, new_bm);
298
299         return true;
300 }
301
302 bool media_item_cb(media_info_h media, void *user_data)
303 {
304         char *c_value = NULL;
305         char *media_id = NULL;
306         media_content_type_e media_type = 0;
307         int ret = MEDIA_CONTENT_ERROR_NONE;
308
309         if(media == NULL)
310         {
311                 media_content_debug("NO Item");
312                 return true;
313         }
314
315         ret = media_info_get_media_type(media, &media_type);
316         if(ret != MEDIA_CONTENT_ERROR_NONE)
317                 media_content_error("error when get info : [%d]", ret);
318         media_content_debug("media_type : [%d]", media_type);
319
320         ret = media_info_get_media_id(media, &media_id);
321         if(ret != MEDIA_CONTENT_ERROR_NONE)
322                 media_content_error("error when get info : [%d]", ret);
323         media_content_debug("media_id : [%s]", media_id);
324
325         ret = media_info_get_file_path(media, &c_value);
326         if(ret != MEDIA_CONTENT_ERROR_NONE)
327                 media_content_error("error when get info : [%d]", ret);
328         media_content_debug("file_path : [%s]", c_value);
329         SAFE_FREE(c_value);
330
331 #if 0
332         int i_value = 0;
333         time_t t_value = 0;
334         bool b_value = false;
335         unsigned long long size = 0;
336
337         if(media_type == MEDIA_CONTENT_TYPE_MUSIC)
338         {
339                 audio_meta_h audio;
340
341                 if(media_info_get_audio(media, &audio) == MEDIA_CONTENT_ERROR_NONE)
342                 {
343                         get_audio_meta(audio);
344                         ret = audio_meta_destroy(audio);
345                         if(ret != MEDIA_CONTENT_ERROR_NONE)
346                                 media_content_error("error audio_meta_destroy : [%d]", ret);
347                 }
348                 else
349                         media_content_error("[audio_error]");
350
351         }
352         else if(media_type == MEDIA_CONTENT_TYPE_IMAGE)
353         {
354                 image_meta_h image;
355                 media_content_orientation_e orientation = 0;
356                 bool is_burst_shot = false;
357                 char *burst_id = NULL;
358                 char *weather = NULL;
359
360                 if(media_info_get_image(media, &image) == MEDIA_CONTENT_ERROR_NONE)
361                 {
362                         ret = image_meta_get_orientation(image, &orientation);
363                         if(ret != MEDIA_CONTENT_ERROR_NONE)
364                                 media_content_error("error image_meta_get_orientation : [%d]", ret);
365                         else
366                                 media_content_debug("[image] orientation : %d", orientation);
367
368                         ret = image_meta_is_burst_shot(image, &is_burst_shot);
369                         if(ret != MEDIA_CONTENT_ERROR_NONE)
370                                 media_content_error("error image_meta_is_burst_shot : [%d]", ret);
371                         if(is_burst_shot)
372                         {
373                                 ret = image_meta_get_burst_id(image, &burst_id);
374                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
375                                         media_content_error("error image_meta_get_burst_id : [%d]", ret);
376                                 else
377                                         media_content_debug("[image] burst_id : [%s]", burst_id);
378
379                                 SAFE_FREE(burst_id);
380                         }
381
382                         ret = image_meta_destroy(image);
383                         if(ret != MEDIA_CONTENT_ERROR_NONE)
384                                 media_content_error("error image_meta_destroy : [%d]", ret);
385                 }
386                 else
387                         media_content_error("[image_error]");
388
389         }
390         else if(media_type == MEDIA_CONTENT_TYPE_VIDEO)
391         {
392                 video_meta_h video;
393
394                 if(media_info_get_video(media, &video) == MEDIA_CONTENT_ERROR_NONE)
395                 {
396                         get_video_meta(video);
397                         ret = video_meta_destroy(video);
398                         if(ret != MEDIA_CONTENT_ERROR_NONE)
399                                 media_content_error("error video_meta_destroy : [%d]", ret);
400                 }
401                 else
402                         media_content_error("[video_error]");
403
404         }
405         else
406         {
407                 media_content_debug("Other Content");
408         }
409
410         media_content_debug("=== media_info ===");
411         ret = media_info_get_file_path(media, &c_value);
412         if(ret != MEDIA_CONTENT_ERROR_NONE)
413                 media_content_error("error when get info : [%d]", ret);
414         media_content_debug("file_path : [%s]", c_value);
415         SAFE_FREE(c_value);
416
417         ret = media_info_get_display_name(media, &c_value);
418         if(ret != MEDIA_CONTENT_ERROR_NONE)
419                 media_content_error("error when get info : [%d]", ret);
420         media_content_debug("display_name : [%s]", c_value);
421         SAFE_FREE(c_value);
422
423         ret = media_info_get_mime_type(media, &c_value);
424         if(ret != MEDIA_CONTENT_ERROR_NONE)
425                 media_content_error("error when get info : [%d]", ret);
426         media_content_debug("mime_type : [%s]", c_value);
427         SAFE_FREE(c_value);
428
429         ret = media_info_get_thumbnail_path(media, &c_value);
430         if(ret != MEDIA_CONTENT_ERROR_NONE)
431                 media_content_error("error when get info : [%d]", ret);
432         media_content_debug("thumbnail_path : [%s]", c_value);
433         SAFE_FREE(c_value);
434
435         ret = media_info_get_description(media, &c_value);
436         if(ret != MEDIA_CONTENT_ERROR_NONE)
437                 media_content_error("error when get info : [%d]", ret);
438         media_content_debug("description : [%s]", c_value);
439         SAFE_FREE(c_value);
440
441         ret = media_info_get_author(media, &c_value);
442         if(ret != MEDIA_CONTENT_ERROR_NONE)
443                 media_content_error("error when get info : [%d]", ret);
444         media_content_debug("author : [%s]", c_value);
445         SAFE_FREE(c_value);
446
447         ret = media_info_get_provider(media, &c_value);
448         if(ret != MEDIA_CONTENT_ERROR_NONE)
449                 media_content_error("error when get info : [%d]", ret);
450         media_content_debug("provider : [%s]", c_value);
451         SAFE_FREE(c_value);
452
453         ret = media_info_get_content_name(media, &c_value);
454         if(ret != MEDIA_CONTENT_ERROR_NONE)
455                 media_content_error("error when get info : [%d]", ret);
456         media_content_debug("content_name : [%s]", c_value);
457         SAFE_FREE(c_value);
458
459         ret = media_info_get_category(media, &c_value);
460         if(ret != MEDIA_CONTENT_ERROR_NONE)
461                 media_content_error("error when get info : [%d]", ret);
462         media_content_debug("category : [%s]", c_value);
463         SAFE_FREE(c_value);
464
465         ret = media_info_get_location_tag(media, &c_value);
466         if(ret != MEDIA_CONTENT_ERROR_NONE)
467                 media_content_error("error when get info : [%d]", ret);
468         media_content_debug("location_tag : [%s]", c_value);
469         SAFE_FREE(c_value);
470
471         ret = media_info_get_age_rating(media, &c_value);
472         if(ret != MEDIA_CONTENT_ERROR_NONE)
473                 media_content_error("error when get info : [%d]", ret);
474         media_content_debug("age_rating : [%s]", c_value);
475         SAFE_FREE(c_value);
476
477         ret = media_info_get_keyword(media, &c_value);
478         if(ret != MEDIA_CONTENT_ERROR_NONE)
479                 media_content_error("error when get info : [%d]", ret);
480         media_content_debug("keyword : [%s]", c_value);
481         SAFE_FREE(c_value);
482
483         ret = media_info_get_size(media, &size);
484         if(ret != MEDIA_CONTENT_ERROR_NONE)
485                 media_content_error("error when get info : [%d]", ret);
486         media_content_debug("size : [%lld]", size);
487
488         ret = media_info_get_added_time(media, &t_value);
489         if(ret != MEDIA_CONTENT_ERROR_NONE)
490                 media_content_error("error when get info : [%d]", ret);
491         media_content_debug("added_time : [%d]", t_value);
492
493         ret = media_info_get_modified_time(media, &t_value);
494         if(ret != MEDIA_CONTENT_ERROR_NONE)
495                 media_content_error("error when get info : [%d]", ret);
496         media_content_debug("modified_time : [%d]", t_value);
497
498         ret = media_info_get_timeline(media, &t_value);
499         if(ret != MEDIA_CONTENT_ERROR_NONE)
500                 media_content_error("error when get info : [%d]", ret);
501         media_content_debug("timeline : [%d]", t_value);
502
503         ret = media_info_get_rating(media, &i_value);
504         if(ret != MEDIA_CONTENT_ERROR_NONE)
505                 media_content_error("error when get info : [%d]", ret);
506         media_content_debug("rating : [%d]", i_value);
507
508         ret = media_info_get_favorite(media, &b_value);
509         if(ret != MEDIA_CONTENT_ERROR_NONE)
510                 media_content_error("error when get info : [%d]", ret);
511         media_content_debug("favorite : [%d]", b_value);
512
513         ret = media_info_is_drm(media, &b_value);
514         if(ret != MEDIA_CONTENT_ERROR_NONE)
515                 media_content_error("error when get info : [%d]", ret);
516         media_content_debug("is_drm : [%d]", b_value);
517
518         ret = media_info_set_weather(media, "Sunny");
519         if(ret != MEDIA_CONTENT_ERROR_NONE) {
520                 media_content_error("Fail to set weather");
521                 return ret;
522
523         ret = media_info_get_weather(media, &c_value);
524         if(ret != MEDIA_CONTENT_ERROR_NONE)
525                 media_content_error("error when get info : [%d]", ret);
526         media_content_debug("weather : [%s]", c_value);
527         SAFE_FREE(c_value);
528
529         /* Media server can't update when another db handle holds DB connection by sqlite3_prepare */
530         //ret = media_info_set_location_tag(media, "Test location tag");
531         //media_info_update_to_db(media);
532         SAFE_FREE(media_id);
533 #endif
534         SAFE_FREE(media_id);
535         return true;
536 }
537
538 bool folder_list_cb(media_folder_h folder, void *user_data)
539 {
540         int item_count;
541         char *folder_id = NULL;
542         char *str_val = NULL;
543         int int_val = -1;
544         media_content_storage_e storage_type;
545         bool ret;
546         media_folder_h *_folder = (media_folder_h*)user_data;
547
548         if(folder != NULL)
549         {
550                 if(_folder != NULL)
551                         media_folder_clone(_folder, folder);
552
553                 if(media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE)
554                 {
555                         media_content_error("[ERROR] media_folder_get_folder_id is failed");
556                         return false;
557                 }
558                 media_content_debug("folder_id = [%s]", folder_id);
559
560                 if(media_folder_get_path(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE)
561                 {
562                         SAFE_FREE(folder_id);
563                         media_content_error("[ERROR] media_folder_get_path is failed");
564                         return false;
565                 }
566                 media_content_debug("folder_path = [%s]", str_val);
567                 SAFE_FREE(str_val);
568
569                 if(media_folder_get_name(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE)
570                 {
571                         SAFE_FREE(folder_id);
572                         media_content_error("[ERROR] media_folder_get_name is failed");
573                         return false;
574                 }
575                 media_content_debug("folder_name = [%s]", str_val);
576                 SAFE_FREE(str_val);
577
578                 if(media_folder_get_storage_type(folder, &storage_type) != MEDIA_CONTENT_ERROR_NONE)
579                 {
580                         SAFE_FREE(folder_id);
581                         media_content_error("[ERROR] media_folder_get_storage_type is failed");
582                         return false;
583                 }
584                 media_content_debug("storage_type = [%d]", storage_type);
585
586                 if(media_folder_get_storage_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE)
587                 {
588                         SAFE_FREE(folder_id);
589                         media_content_error("[ERROR] media_folder_get_name is failed");
590                         return false;
591                 }
592                 media_content_debug("storage_id = [%s]", str_val);
593
594                 if(media_folder_get_order(folder, &int_val) != MEDIA_CONTENT_ERROR_NONE)
595                 {
596                         media_content_error("[ERROR] media_folder_get_order is failed");
597                         return false;
598                 }
599                 media_content_debug("folder_order = [%d]", int_val);
600
601                 if(media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE)
602                 {
603                         SAFE_FREE(folder_id);
604                         media_content_error("[ERROR] media_folder_get_media_count_from_db is failed");
605                         return false;
606                 }
607
608                 if(media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
609                 {
610                         SAFE_FREE(folder_id);
611                         media_content_error("[ERROR] media_folder_foreach_media_from_db is failed");
612                         return false;
613                 }
614
615                 SAFE_FREE(folder_id);
616                 ret = true;
617         }
618         else
619         {
620                 ret = false;
621         }
622
623         return ret;
624 }
625
626 bool test_album_from_db(int album_id)
627 {
628         int ret = MEDIA_CONTENT_ERROR_NONE;
629         media_album_h album_h;
630         int test_album_id = 0;
631         char *album_name = NULL;
632         char *artist = NULL;
633
634         ret = media_album_get_album_from_db(album_id, &album_h);
635         if(ret != MEDIA_CONTENT_ERROR_NONE)
636         {
637                 media_content_error("error when get album");
638                 return false;
639         }
640
641         if(media_album_get_album_id(album_h, &test_album_id) != MEDIA_CONTENT_ERROR_NONE)
642         {
643                 media_album_destroy(album_h);
644                 return false;
645         }
646
647         media_content_debug("test_album_id : [%d]", test_album_id);
648
649         if(media_album_get_name(album_h, &album_name) != MEDIA_CONTENT_ERROR_NONE)
650         {
651                 media_album_destroy(album_h);
652                 return false;
653         }
654
655         media_content_debug("album_name : [%s]", album_name);
656
657         if(media_album_get_artist(album_h, &artist) != MEDIA_CONTENT_ERROR_NONE)
658         {
659                 media_album_destroy(album_h);
660                 /* fix prevent: Resource Leak */
661                 SAFE_FREE(album_name);
662                 return false;
663         }
664
665         media_content_debug("artist : [%s]", artist);
666
667         SAFE_FREE(album_name);
668         SAFE_FREE(artist);
669
670         media_album_destroy(album_h);
671
672         return true;
673 }
674
675 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
676 {
677         int playlist_id = 0;
678         char *playlist_name = NULL;
679         media_playlist_h playlist_h;
680         char *playlist_thumbnail_path = NULL;
681
682         media_content_debug("playlist_list_cb ======");
683
684         GList **list = (GList**)user_data;
685
686         if(playlist == NULL)
687         {
688                 media_content_debug(" playlist handle is NULL");
689                 return false;
690         }
691
692         media_playlist_get_playlist_id(playlist, &playlist_id);
693         media_content_debug("playlist_id : %d", playlist_id);
694
695         if(user_data != NULL)
696                 *list = g_list_append(*list, (gpointer)playlist_id);
697
698         media_playlist_get_name(playlist, &playlist_name);
699         media_content_debug("playlist_name : %s", playlist_name);
700         SAFE_FREE(playlist_name);
701
702         media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
703         media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
704         SAFE_FREE(playlist_thumbnail_path);
705
706         media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
707
708         media_playlist_destroy(playlist_h);
709
710         return true;
711 }
712
713 bool tag_list_cb(media_tag_h tag, void *user_data)
714 {
715         int tag_id = 0;
716         char *tag_name = NULL;
717         int ret = MEDIA_CONTENT_ERROR_NONE;
718
719         if(tag == NULL)
720         {
721                 media_content_debug(" tag handle is NULL");
722                 return false;
723         }
724
725         ret = media_tag_get_tag_id(tag, &tag_id);
726         if(ret != MEDIA_CONTENT_ERROR_NONE)
727                 media_content_error("error media_tag_get_tag_id : [%d]", ret);
728         else
729                 media_content_debug("tag_id : %d", tag_id);
730
731         ret = media_tag_get_name(tag, &tag_name);
732         if(ret != MEDIA_CONTENT_ERROR_NONE)
733                 media_content_error("error media_tag_get_name : [%d]", ret);
734         else
735                 media_content_debug("tag_name : %s", tag_name);
736         SAFE_FREE(tag_name);
737
738         return true;
739 }
740
741 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
742 {
743         media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark;
744         int ret = MEDIA_CONTENT_ERROR_NONE;
745
746         if(_bookmark != NULL)
747         {
748                 char *name = NULL;
749                 time_t time = 0;
750                 int bookmark_id = 0;
751
752                 ret = media_bookmark_get_bookmark_id(bookmark, &bookmark_id);
753                 if(ret != MEDIA_CONTENT_ERROR_NONE)
754                         media_content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
755                 else
756                         media_content_debug("bookmark_id : %d", bookmark_id);
757
758                 ret = media_bookmark_get_thumbnail_path(bookmark, &name);
759                 if(ret != MEDIA_CONTENT_ERROR_NONE)
760                         media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
761                 else
762                         media_content_debug("bookmark thumbnail_path : %s", name);
763                 SAFE_FREE(name);
764
765                 ret = media_bookmark_get_marked_time(bookmark, &time);
766                 if(ret != MEDIA_CONTENT_ERROR_NONE)
767                         media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
768                 else
769                         media_content_debug("bookmark marked_time : %d", time);
770         }
771
772         return true;
773 }
774
775 bool album_list_cb(media_album_h album, void *user_data)
776 {
777         int album_id = 0;
778         char *album_name = NULL;
779         char *artist = NULL;
780         char *album_art = NULL;
781         int media_count = 0;
782         int ret = MEDIA_CONTENT_ERROR_NONE;
783         filter_h filter = NULL;
784
785         /*Set Filter*/
786         char *condition = "MEDIA_TYPE=3";       /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
787
788         ret = media_filter_create(&filter);
789         if(ret != MEDIA_CONTENT_ERROR_NONE) {
790                 media_content_error("Fail to create filter");
791                 return ret;
792         }
793         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
794         if(ret != MEDIA_CONTENT_ERROR_NONE) {
795                 media_filter_destroy(filter);
796                 media_content_error("Fail to set condition");
797                 return ret;
798         }
799         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
800         if(ret != MEDIA_CONTENT_ERROR_NONE) {
801                 media_filter_destroy(filter);
802                 media_content_error("Fail to set order");
803                 return ret;
804         }
805
806         if(album != NULL)
807         {
808                 if(media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE)
809                 {
810                         media_filter_destroy(filter);
811                         return false;
812                 }
813
814                 media_content_debug("album_id : [%d]", album_id);
815
816                 if(media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE)
817                 {
818                         media_filter_destroy(filter);
819                         return false;
820                 }
821
822                 media_content_debug("album_name : [%s]", album_name);
823                 SAFE_FREE(album_name);
824
825                 if(media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE)
826                 {
827                         media_filter_destroy(filter);
828                         return false;
829                 }
830
831                 media_content_debug("artist : [%s]", artist);
832                 SAFE_FREE(artist);
833
834                 if(media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE)
835                 {
836                         media_filter_destroy(filter);
837                         return false;
838                 }
839
840                 media_content_debug("album_art : [%s]", album_art);
841                 SAFE_FREE(album_art);
842
843                 if(media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
844                 {
845                         media_filter_destroy(filter);
846                         return false;
847                 }
848
849                 media_content_debug("media_count : [%d]", media_count);
850
851                 if(media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
852                 {
853                         media_filter_destroy(filter);
854                         return false;
855                 }
856
857                 test_album_from_db(album_id);
858         }
859         else
860         {
861                 media_content_error("album item not Found!!");
862         }
863
864         media_filter_destroy(filter);
865
866         return true;
867 }
868
869 bool group_list_cb(const char *group_name, void *user_data)
870 {
871         int media_count = 0;
872         int *idx = user_data;
873
874         media_content_debug("group item : [%s] [%d]", group_name, *idx);
875
876         if(media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
877                 return false;
878
879         media_content_debug("media_count : [%d]", media_count);
880
881         if(media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
882                 return false;
883
884         return true;
885 }
886
887 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
888 {
889         media_content_debug("playlist_member_id : [%d]", playlist_member_id);
890
891         GList **list = (GList**)user_data;
892         *list = g_list_append(*list, (gpointer)playlist_member_id);
893
894         //media_item_cb(media, user_data);
895
896         return true;
897 }
898
899 int test_filter_create(void)
900 {
901         media_content_debug("\n============Filter Create============\n\n");
902
903         int ret = MEDIA_CONTENT_ERROR_NONE;
904
905         /* Filter for media */
906         char *condition = "MEDIA_TYPE=3";       /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
907         //char *condition = "MEDIA_TYPE IS NOT 0 AND MEDIA_DESCRIPTION IS NOT NULL";    /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
908
909         ret = media_filter_create(&g_filter);
910
911         /* Set condition and collate
912          * Condition string : You can make where statement of sql.
913          * Colation : You can use collation when comparing.
914          * Ex) In case of FILE_NAME='Samsung' as condition string,
915          *     if you want to compare with NOCASE collation,
916          *     call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
917          *     if you want to compare in case-sensitive,
918          *     call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
919          */
920         ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
921
922         /* Collation of ordering
923          * If you want to get list, which is sorted by NOCASE,
924          * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
925          * Or,
926          * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
927          */
928         /* Able to set multi column to set order */
929         //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_MODIFIED_TIME, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_DEFAULT);
930         //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
931         //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TRACK_NUM_INT, MEDIA_CONTENT_COLLATE_DEFAULT);
932         //ret = media_filter_set_storage(g_filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
933
934         /* Filter for group */
935         //char *g_condition = "TAG_NAME like \"\%my\%\"";
936         //char *g_condition = "BOOKMARK_MARKED_TIME > 300";
937
938         ret = media_filter_create(&g_filter_g);
939
940         //ret = media_filter_set_condition(g_filter_g, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
941         ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
942
943         return ret;
944 }
945
946 int test_filter_destroy(void)
947 {
948         media_content_debug("\n============Filter Create============\n\n");
949
950         int ret = MEDIA_CONTENT_ERROR_NONE;
951
952         ret = media_filter_destroy(g_filter);
953
954         return ret;
955 }
956
957 int test_connect_database(void)
958 {
959         int ret = MEDIA_CONTENT_ERROR_NONE;
960
961         media_content_debug("\n============DB Connection Test============\n\n");
962
963         ret = media_content_connect();
964
965         if(ret == MEDIA_CONTENT_ERROR_NONE)
966         {
967                 media_content_debug("connection is success\n\n");
968         }
969         else
970                 media_content_error("connection is failed\n\n");
971
972         return ret;
973 }
974
975 int test_gallery_scenario(void)
976 {
977         int ret = MEDIA_CONTENT_ERROR_NONE;
978         int i;
979         filter_h filter = NULL;
980
981         int count;
982         GList *folder_list = NULL;
983         media_folder_h folder_handle = NULL;
984
985         /* First, Get folder list */
986         ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
987         if(ret != MEDIA_CONTENT_ERROR_NONE) {
988                 media_content_error("media_folder_foreach_folder_from_db failed: %d", ret);
989                 return -1;
990         } else {
991                 media_content_debug("media_folder_foreach_folder_from_db success!!");
992                 char *folder_id = NULL;
993                 char *folder_name = NULL;
994                 char *folder_path = NULL;
995
996                 for(i = 0; i < g_list_length(folder_list); i++) {
997                         folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
998
999                         ret = media_folder_get_folder_id(folder_handle, &folder_id);
1000                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1001                                 media_content_error("media_folder_get_folder_id failed: %d", ret);
1002                         ret = media_folder_get_name(folder_handle, &folder_name);
1003                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1004                                 media_content_error("media_folder_get_name failed: %d", ret);
1005                         ret = media_folder_get_path(folder_handle, &folder_path);
1006                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1007                                 media_content_error("media_folder_get_path failed: %d", ret);
1008
1009                         media_content_debug("folder_id [%d] : %s", i, folder_id);
1010                         media_content_debug("folder_name [%d] : %s", i, folder_name);
1011                         media_content_debug("folder_path [%d] : %s", i, folder_path);
1012
1013                         ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
1014                         /* User should free these string */
1015                         SAFE_FREE(folder_id);
1016                         SAFE_FREE(folder_name);
1017                         SAFE_FREE(folder_path);
1018                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1019                                 media_content_error("media_folder_get_media_count_from_db failed: %d", ret);
1020                                 return -1;
1021                         } else {
1022                                 media_content_debug("media count [%d] : %d", i, count);
1023                         }
1024                 }
1025         }
1026
1027         /* To check performance */
1028         struct timeval start, end;
1029         gettimeofday(&start, NULL);
1030
1031         /* Second, Get all item list */
1032         media_info_h media_handle = NULL;
1033         GList *all_item_list = NULL;
1034
1035         media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
1036         media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
1037         ret = media_filter_create(&filter);
1038         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1039                 media_content_error("Fail to create filter");
1040                 return ret;
1041         }
1042         ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
1043         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1044                 media_filter_destroy(filter);
1045                 media_content_error("Fail to set condition");
1046                 return ret;
1047         }
1048         ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
1049         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1050                 media_filter_destroy(filter);
1051                 media_content_error("Fail to set order");
1052                 return ret;
1053         }
1054
1055         ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
1056         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1057                 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
1058                 media_filter_destroy(filter);
1059                 return -1;
1060         } else {
1061                 media_content_debug("media_info_foreach_media_from_db success");
1062                 media_content_type_e media_type;
1063                 char *media_id = NULL;
1064                 char *media_name = NULL;
1065                 char *media_path = NULL;
1066
1067                 for(i = 0; i < g_list_length(all_item_list); i++) {
1068                         media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1069
1070                         ret = media_info_get_media_id(media_handle, &media_id);
1071                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1072                                 media_content_error("media_info_get_media_id failed: %d", ret);
1073                         ret = media_info_get_media_type(media_handle, &media_type);
1074                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1075                                 media_content_error("media_info_get_media_type failed: %d", ret);
1076                         ret = media_info_get_display_name(media_handle, &media_name);
1077                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1078                                 media_content_error("media_info_get_display_name failed: %d", ret);
1079                         ret = media_info_get_file_path(media_handle, &media_path);
1080                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1081                                 media_content_error("media_info_get_file_path failed: %d", ret);
1082
1083                         if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1084                                 image_meta_h image_handle;
1085                                 int width = 0, height = 0;
1086                                 media_content_orientation_e orientation = 0;
1087                                 char *datetaken = NULL;
1088                                 char *burst_id = NULL;
1089
1090                                 ret = media_info_get_image(media_handle, &image_handle);
1091                                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1092                                         media_content_error("media_info_get_image failed: %d", ret);
1093                                 } else {
1094                                         ret = image_meta_get_width(image_handle, &width);
1095                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1096                                                 media_content_error("error image_meta_get_width : [%d]", ret);
1097                                         ret = image_meta_get_height(image_handle, &height);
1098                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1099                                                 media_content_error("error image_meta_get_height : [%d]", ret);
1100                                         ret = image_meta_get_orientation(image_handle, &orientation);
1101                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1102                                                 media_content_error("error image_meta_get_orientation : [%d]", ret);
1103                                         ret = image_meta_get_date_taken(image_handle, &datetaken);
1104                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1105                                                 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1106                                         ret = image_meta_get_burst_id(image_handle, &burst_id);
1107                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1108                                                 media_content_error("error image_meta_get_burst_id : [%d]", ret);
1109
1110                                         media_content_debug("This is Image");
1111                                         media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1112                                 }
1113
1114                                 SAFE_FREE(datetaken);
1115                                 SAFE_FREE(burst_id);
1116                                 ret = image_meta_destroy(image_handle);
1117                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1118                                         media_content_error("error image_meta_destroy : [%d]", ret);
1119
1120                         } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1121                                 video_meta_h video_handle;
1122                                 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;
1123                                 int duration = 0;
1124                                 time_t time_played = 0;
1125
1126                                 ret = media_info_get_video(media_handle, &video_handle);
1127                                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1128                                         media_content_error("media_info_get_video failed: %d", ret);
1129                                 } else {
1130                                         ret = video_meta_get_artist(video_handle, &artist);
1131                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1132                                                 media_content_error("error video_meta_get_artist : [%d]", ret);
1133                                         ret = video_meta_get_album(video_handle, &album);
1134                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1135                                                 media_content_error("error video_meta_get_album : [%d]", ret);
1136                                         ret = video_meta_get_album_artist(video_handle, &album_artist);
1137                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1138                                                 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1139                                         ret = video_meta_get_duration(video_handle, &duration);
1140                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1141                                                 media_content_error("error video_meta_get_duration : [%d]", ret);
1142                                         ret = video_meta_get_played_time(video_handle, &time_played);
1143                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1144                                                 media_content_error("error video_meta_get_played_time : [%d]", ret);
1145
1146                                         media_content_debug("This is Video");
1147                                         media_content_debug("Title: %s, Album: %s, Artist: %s, Album_artist: %s \n Duration: %d, Played time: %d", title, album, artist, album_artist, duration, time_played);
1148                                 }
1149
1150                                 SAFE_FREE(title);
1151                                 SAFE_FREE(artist);
1152                                 SAFE_FREE(album);
1153                                 SAFE_FREE(album_artist);
1154
1155                                 ret = video_meta_destroy(video_handle);
1156                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1157                                         media_content_error("error video_meta_destroy : [%d]", ret);
1158                         }
1159                         //media_content_debug("media_id [%d] : %s", i, media_id);
1160                         //media_content_debug("media_name [%d] : %s", i, media_name);
1161                         //media_content_debug("media_path [%d] : %s", i, media_path);
1162
1163                         SAFE_FREE(media_id);
1164                         SAFE_FREE(media_name);
1165                         SAFE_FREE(media_path);
1166                 }
1167         }
1168
1169         media_filter_destroy(filter);
1170         filter = NULL;
1171
1172         /* To check performance */
1173         gettimeofday(&end, NULL);
1174         long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1175         media_content_debug("Time : %ld\n", time);
1176
1177         /* Third, Get item list of a folder */
1178         GList *item_list = NULL;
1179
1180         for(i = 0; i < g_list_length(folder_list); i++) {
1181                 int j = 0;
1182                 char *folder_id = NULL;
1183                 char *folder_name = NULL;
1184                 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1185
1186                 media_folder_get_folder_id(folder_handle, &folder_id);
1187                 media_folder_get_name(folder_handle, &folder_name);
1188
1189                 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1190                 SAFE_FREE(folder_id);
1191                 SAFE_FREE(folder_name);
1192
1193                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1194                         media_content_error("media_folder_foreach_media_from_db failed: %d", ret);
1195                         return -1;
1196                 } else {
1197                         media_content_error("media_folder_foreach_media_from_db success!", ret);
1198                         char *media_id = NULL;
1199                         char *media_name = NULL;
1200                         char *media_path = NULL;
1201                         media_content_type_e media_type = 0;
1202
1203                         for(j = 0; j < g_list_length(item_list); j++) {
1204                                 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1205
1206                                 ret = media_info_get_media_id(media_handle, &media_id);
1207                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1208                                         media_content_error("media_info_get_media_id failed: %d", ret);
1209                                 ret = media_info_get_display_name(media_handle, &media_name);
1210                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1211                                         media_content_error("media_info_get_display_name failed: %d", ret);
1212                                 ret = media_info_get_file_path(media_handle, &media_path);
1213                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1214                                         media_content_error("media_info_get_file_path failed: %d", ret);
1215                                 ret = media_info_get_media_type(media_handle, &media_type);
1216                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1217                                         media_content_error("media_info_get_media_type failed: %d", ret);
1218
1219                                 media_content_debug("[%s] media_id [%d] : %s", folder_name, j, media_id);
1220                                 media_content_debug("[%s] media_type [%d] : %d", folder_name, j, media_type);
1221                                 media_content_debug("[%s] media_name [%d] : %s", folder_name, j, media_name);
1222                                 media_content_debug("[%s] media_path [%d] : %s", folder_name, j, media_path);
1223
1224                                 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1225                                         image_meta_h image_handle;
1226                                         int width = 0, height = 0;
1227                                         media_content_orientation_e orientation = 0;
1228                                         char *datetaken = NULL;
1229
1230                                         ret = media_info_get_image(media_handle, &image_handle);
1231                                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1232                                                 media_content_error("media_info_get_image failed: %d", ret);
1233                                         } else {
1234                                                 ret = image_meta_get_width(image_handle, &width);
1235                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1236                                                         media_content_error("error image_meta_get_width : [%d]", ret);
1237                                                 ret = image_meta_get_height(image_handle, &height);
1238                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1239                                                         media_content_error("error image_meta_get_height : [%d]", ret);
1240                                                 ret = image_meta_get_orientation(image_handle, &orientation);
1241                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1242                                                         media_content_error("error image_meta_get_orientation : [%d]", ret);
1243                                                 ret = image_meta_get_date_taken(image_handle, &datetaken);
1244                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1245                                                         media_content_error("error image_meta_get_date_taken : [%d]", ret);
1246
1247                                                 media_content_debug("This is Image");
1248                                                 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1249                                         }
1250
1251                                         SAFE_FREE(datetaken);
1252                                         ret = image_meta_destroy(image_handle);
1253                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1254                                                 media_content_error("error image_meta_destroy : [%d]", ret);
1255
1256                                 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1257                                         video_meta_h video_handle;
1258                                         char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;;
1259                                         int duration = 0;
1260                                         time_t time_played;
1261
1262                                         ret = media_info_get_video(media_handle, &video_handle);
1263                                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1264                                                 media_content_error("media_info_get_video failed: %d", ret);
1265                                         } else {
1266                                                 ret = video_meta_get_artist(video_handle, &artist);
1267                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1268                                                         media_content_error("error video_meta_get_artist : [%d]", ret);
1269                                                 ret = video_meta_get_album(video_handle, &album);
1270                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1271                                                         media_content_error("error video_meta_get_album : [%d]", ret);
1272                                                 ret = video_meta_get_album_artist(video_handle, &album_artist);
1273                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1274                                                         media_content_error("error video_meta_get_album_artist : [%d]", ret);
1275                                                 ret = video_meta_get_duration(video_handle, &duration);
1276                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1277                                                         media_content_error("error video_meta_get_duration : [%d]", ret);
1278                                                 ret = video_meta_get_played_time(video_handle, &time_played);
1279                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1280                                                         media_content_error("error video_meta_get_played_time : [%d]", ret);
1281
1282                                                 media_content_debug("This is Video");
1283                                                 media_content_debug("Title: %s, Album: %s, Artist: %s, Album_artist: %s \n Duration: %d, Played time: %d\n", title, album, artist, album_artist, duration, time_played);
1284                                         }
1285
1286                                         SAFE_FREE(title);
1287                                         SAFE_FREE(artist);
1288                                         SAFE_FREE(album);
1289                                         SAFE_FREE(album_artist);
1290
1291                                         ret = video_meta_destroy(video_handle);
1292                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1293                                                 media_content_error("error video_meta_destroy : [%d]", ret);
1294
1295                                         /* Get bookmar list in case of video */
1296                                         media_bookmark_h bm_handle;
1297                                         GList *bm_list = NULL;
1298
1299                                         ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list);
1300                                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1301                                                 media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret);
1302                                         } else {
1303                                                 media_content_debug("media_info_foreach_bookmark_from_db success");
1304
1305                                                 int k = 0;
1306
1307                                                 for(k = 0; k < g_list_length(bm_list); k++) {
1308                                                         bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k);
1309                                                         time_t marked_time;
1310                                                         char *thumb_path = NULL;
1311
1312                                                         ret = media_bookmark_get_marked_time(bm_handle, &marked_time);
1313                                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1314                                                                 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
1315                                                         ret = media_bookmark_get_thumbnail_path(bm_handle, &thumb_path);
1316                                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1317                                                                 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
1318
1319                                                         media_content_debug("Bookmark time : %d\nBookmar thumb: %s", marked_time, thumb_path);
1320                                                         SAFE_FREE(thumb_path);
1321                                                 }
1322
1323                                                 /* Remove bookmark list */
1324                                                 int l = 0;
1325                                                 if(bm_list) {
1326                                                         for(l = 0; l < g_list_length(bm_list); l++) {
1327                                                                 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l);
1328                                                                 ret = media_bookmark_destroy(bm_handle);
1329                                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1330                                                                         media_content_error("error media_bookmark_destroy : [%d]", ret);
1331                                                         }
1332
1333                                                         g_list_free(bm_list);
1334                                                 }
1335
1336                                         }
1337                                 }
1338
1339                                 SAFE_FREE(media_id);
1340                                 SAFE_FREE(media_name);
1341                                 SAFE_FREE(media_path);
1342                         }
1343                 }
1344         }
1345
1346         /* Get tag list */
1347         media_tag_h tag_handle = NULL;
1348         GList *tag_list = NULL;
1349         GList *media_list_in_tag = NULL;
1350
1351         ret = media_tag_foreach_tag_from_db (filter, gallery_tag_item_cb, &tag_list);
1352
1353         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1354                 media_content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1355                 return -1;
1356         } else {
1357                 media_content_error("media_tag_foreach_tag_from_db success");
1358                 char *tag_name = NULL;
1359                 int tag_id;
1360
1361                 for(i = 0; i < g_list_length(tag_list); i++) {
1362                         tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1363                         media_tag_get_tag_id(tag_handle, &tag_id);
1364                         media_tag_get_name(tag_handle, &tag_name);
1365
1366                         media_content_debug("[%d] %s", tag_id, tag_name);
1367
1368                         ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1369                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1370                                 media_content_error("media_tag_foreach_media_from_db failed: %d", ret);
1371                                 return -1;
1372                         } else {
1373                                 media_content_error("media_tag_foreach_media_from_db success");
1374                                 int j = 0;
1375                                 media_info_h tag_media_handle;
1376                                 char *media_id = NULL;
1377                                 char *media_name = NULL;
1378                                 char *media_path = NULL;
1379                                 media_content_type_e media_type = 0;
1380
1381                                 for(j = 0; j < g_list_length(media_list_in_tag); j++) {
1382                                         tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1383                                         ret = media_info_get_media_id(tag_media_handle, &media_id);
1384                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1385                                                 media_content_error("media_info_get_media_id failed: %d", ret);
1386                                         ret = media_info_get_display_name(tag_media_handle, &media_name);
1387                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1388                                                 media_content_error("media_info_get_display_name failed: %d", ret);
1389                                         ret = media_info_get_file_path(tag_media_handle, &media_path);
1390                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1391                                                 media_content_error("media_info_get_file_path failed: %d", ret);
1392                                         ret = media_info_get_media_type(tag_media_handle, &media_type);
1393                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1394                                                 media_content_error("media_info_get_media_type failed: %d", ret);
1395
1396                                         media_content_debug("[%s] media_id [%d] : %s", tag_name, j, media_id);
1397                                         media_content_debug("[%s] media_type [%d] : %d", tag_name, j, media_type);
1398                                         media_content_debug("[%s] media_name [%d] : %s", tag_name, j, media_name);
1399                                         media_content_debug("[%s] media_path [%d] : %s", tag_name, j, media_path);
1400                                 }
1401                                 SAFE_FREE(media_id);
1402                                 SAFE_FREE(media_name);
1403                                 SAFE_FREE(media_path);
1404                         }
1405                         SAFE_FREE(tag_name);
1406                 }
1407         }
1408
1409         /* Remove folder list */
1410         if(folder_list) {
1411                 for(i = 0; i < g_list_length(folder_list); i++) {
1412                         folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1413                         media_folder_destroy(folder_handle);
1414                 }
1415
1416                 g_list_free(folder_list);
1417         }
1418
1419         /* Remove all items list */
1420         if(all_item_list) {
1421                 for(i = 0; i < g_list_length(all_item_list); i++) {
1422                         media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1423                         ret = media_info_destroy(media_handle);
1424                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1425                                 media_content_error("media_info_destroy failed: %d", ret);
1426                 }
1427
1428                 g_list_free(all_item_list);
1429         }
1430
1431         /* Remove items list */
1432         if(item_list) {
1433                 for(i = 0; i < g_list_length(item_list); i++) {
1434                         media_handle = (media_info_h)g_list_nth_data(item_list, i);
1435                         ret = media_info_destroy(media_handle);
1436                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1437                                 media_content_error("media_info_destroy failed: %d", ret);
1438                 }
1439
1440                 g_list_free(item_list);
1441         }
1442
1443         /* Remove tag list */
1444         if(tag_list) {
1445                 for(i = 0; i < g_list_length(tag_list); i++) {
1446                         tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1447                         ret = media_tag_destroy(tag_handle);
1448                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1449                                 media_content_error("error media_tag_destroy : [%d]", ret);
1450                 }
1451
1452                 g_list_free(tag_list);
1453         }
1454
1455         /* Remove media list in a tag */
1456         if(media_list_in_tag) {
1457                 for(i = 0; i < g_list_length(media_list_in_tag); i++) {
1458                         media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1459                         ret = media_info_destroy(media_handle);
1460                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1461                                 media_content_error("media_info_destroy failed: %d", ret);
1462                 }
1463
1464                 g_list_free(media_list_in_tag);
1465         }
1466
1467         return MEDIA_CONTENT_ERROR_NONE;
1468 }
1469
1470 /*Get All Music file. sort by Title and not case sensitive*/
1471 int test_get_all_music_files(void)
1472 {
1473         int ret = MEDIA_CONTENT_ERROR_NONE;
1474         int media_count = 0;
1475         filter_h filter;
1476
1477         /*Set Filter*/
1478         char *condition = "MEDIA_TYPE=3";       /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1479
1480         ret = media_filter_create(&filter);
1481         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1482                 media_content_error("Fail to create filter");
1483                 return ret;
1484         }
1485         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_LOCALIZED);
1486         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1487                 media_filter_destroy(filter);
1488                 media_content_error("Fail to set condition");
1489                 return ret;
1490         }
1491         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_LOCALIZED);
1492         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1493                 media_filter_destroy(filter);
1494                 media_content_error("Fail to set order");
1495                 return ret;
1496         }
1497
1498         /*Get Media Count*/
1499         ret = media_info_get_media_count_from_db(filter, &media_count);
1500         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1501                 media_filter_destroy(filter);
1502                 media_content_error("Fail to get media count");
1503                 return ret;
1504         }
1505
1506         media_content_debug("media_count : [%d]", media_count);
1507
1508         ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1509         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1510                 media_filter_destroy(filter);
1511                 media_content_error("Fail to get media");
1512                 return ret;
1513         }
1514
1515         ret = media_filter_destroy(filter);
1516
1517         return ret;
1518 }
1519
1520 int test_media_info_operation(void)
1521 {
1522         int ret = MEDIA_CONTENT_ERROR_NONE;
1523         int media_count = 0;
1524
1525         media_content_debug("\n============Media info Test============\n\n");
1526
1527         test_filter_create();
1528
1529         ret = media_info_get_media_count_from_db(g_filter, &media_count);
1530         if(ret != MEDIA_CONTENT_ERROR_NONE)
1531                 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
1532         else
1533                 media_content_debug("media_count : [%d]", media_count);
1534
1535         ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1536         if(ret == MEDIA_CONTENT_ERROR_NONE)
1537                 media_content_debug("media_info_foreach_media_from_db is success");
1538         else
1539                 media_content_error("media_info_foreach_media_from_db is failed");
1540
1541         test_filter_destroy();
1542
1543         return ret;
1544 }
1545
1546 int test_media_info_operation_2(void)
1547 {
1548         int ret = MEDIA_CONTENT_ERROR_NONE;
1549         int bookmark_count = 0;
1550
1551         media_content_debug("\n============Media info Test 2============\n\n");
1552
1553         test_filter_create();
1554
1555 #if 0
1556         /* Bookmark */
1557         char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg"));
1558         media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1559         media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1560
1561         media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1562
1563         media_content_debug("bookmark_count : [%d]", bookmark_count);
1564
1565         ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1566 #endif
1567
1568         /* Tag */
1569         ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1570         if(ret != MEDIA_CONTENT_ERROR_NONE)
1571                 media_content_error("media_info_get_tag_count_from_db failed: %d", ret);
1572         else
1573                 media_content_debug("tag_count : [%d]", bookmark_count);
1574
1575         ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1576         if(ret != MEDIA_CONTENT_ERROR_NONE)
1577                 media_content_error("media_info_foreach_tag_from_db failed: %d", ret);
1578
1579         test_filter_destroy();
1580
1581         return ret;
1582 }
1583
1584 int test_folder_operation(void)
1585 {
1586         int ret = MEDIA_CONTENT_ERROR_NONE;
1587         filter_h filter = NULL;
1588         media_folder_h folder = NULL;
1589         char *folder_id = NULL;
1590         int count = 0;
1591
1592         media_content_debug("\n============Folder Test============\n\n");
1593
1594         test_filter_create();
1595
1596         ret = media_filter_create(&filter);
1597         if(ret != MEDIA_CONTENT_ERROR_NONE)
1598         {
1599                 media_content_error("[ERROR] media_folder_filter_create is failed");
1600                 return ret;
1601         }
1602
1603         media_filter_set_condition(filter, "(MEDIA_TYPE = 0 or MEDIA_TYPE = 1) and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);       /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1604         media_filter_set_offset(filter, 0,5);
1605         media_filter_set_order(filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1606         media_filter_set_storage(filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
1607
1608         ret = media_folder_get_folder_count_from_db(filter, &count);
1609         media_content_debug("Folder count : [%d]", count);
1610
1611         ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1612
1613         //test.3 get the media list in first folder
1614         filter_h m_filter = NULL;
1615
1616         ret = media_filter_create(&m_filter);
1617         if(ret != MEDIA_CONTENT_ERROR_NONE)
1618         {
1619                 test_filter_destroy();
1620                 media_filter_destroy(filter);
1621                 media_content_error("[ERROR] media_info_filter_create is failed");
1622                 return ret;
1623         }
1624
1625         media_filter_set_condition(m_filter, "MEDIA_TYPE=1 and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);   /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1626         media_filter_set_offset(m_filter, 0,5);
1627         media_filter_set_order(m_filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1628
1629         ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1630         if(ret != MEDIA_CONTENT_ERROR_NONE)
1631                 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1632
1633         media_filter_destroy(filter);
1634         media_filter_destroy(m_filter);
1635
1636         test_filter_destroy();
1637
1638         /* fix prevent: Resource Leak */
1639         SAFE_FREE(folder_id);
1640
1641         return ret;
1642 }
1643
1644 bool folder_update_cb(media_folder_h folder, void *user_data)
1645 {
1646         char *folder_id = NULL;
1647         char *folder_path = NULL;
1648         char *folder_name = NULL;
1649         int folder_order = -1;
1650         bool ret = true;
1651
1652         if(folder != NULL)
1653         {
1654                 ret = media_folder_get_folder_id(folder, &folder_id);
1655                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1656                 media_content_debug("folder_id = [%s]", folder_id);
1657                 SAFE_FREE(folder_id);
1658
1659                 ret = media_folder_get_path(folder, &folder_path);
1660                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1661                 media_content_debug("folder_path = [%s]", folder_path);
1662                 SAFE_FREE(folder_path);
1663
1664                 ret = media_folder_get_name(folder, &folder_name);
1665                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1666                 media_content_debug("folder_name = [%s]", folder_name);
1667                 SAFE_FREE(folder_name);
1668
1669                 ret = media_folder_get_order(folder, &folder_order);
1670                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1671                 media_content_debug("folder_order = [%d]", folder_order);
1672
1673                 ret = media_folder_clone(&g_folder, folder);
1674                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1675
1676                 ret = true;
1677         }
1678         else
1679         {
1680                 ret = false;
1681         }
1682
1683         return ret;
1684 }
1685
1686
1687 int test_folder_update(void)
1688 {
1689         int ret = MEDIA_CONTENT_ERROR_NONE;
1690         filter_h filter;
1691         int folder_count = 0;
1692
1693         media_content_debug("\n============Folder Update Test============\n\n");
1694
1695         ret = media_filter_create(&filter);
1696         media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1697
1698         ret = media_filter_set_condition(filter, "MEDIA_TYPE=0 and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);       /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1699         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, FOLDER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
1700
1701         ret = media_folder_get_folder_count_from_db(filter, &folder_count);
1702
1703         media_content_debug("Folder count : %d", folder_count);
1704
1705         ret = media_folder_foreach_folder_from_db(filter, folder_update_cb, NULL);
1706
1707         media_filter_destroy(filter);
1708
1709         ret = media_folder_set_name(g_folder, "test_folder");
1710
1711         ret = media_folder_set_order(g_folder, 200);
1712
1713         ret = media_folder_update_to_db(g_folder);
1714
1715         ret = media_folder_destroy(g_folder);
1716
1717         return ret;
1718 }
1719
1720 int test_playlist_operation(void)
1721 {
1722         int ret = MEDIA_CONTENT_ERROR_NONE;
1723         media_playlist_h playlist_1 = NULL;
1724         media_playlist_h playlist_2 = NULL;
1725         media_playlist_h playlist_3 = NULL;
1726         media_playlist_h playlist_4 = NULL;
1727         int playlist_id_1 = 0;
1728         int playlist_id_2 = 0;
1729         int playlist_id_3 = 0;
1730         char *playlist_name_1 = "myPlaylist_1";
1731         char *playlist_name_2 = "myPlaylist_2";
1732         char *playlist_name_3 = "myPlaylist_3";
1733         int playlist_count = 0;
1734         int media_count = 0;
1735         int order_1 = 0;
1736         int order_2 = 0;
1737         int order_3 = 0;
1738         int order_4 = 0;
1739         int order_5 = 0;
1740         filter_h filter = NULL;
1741         filter_h m_filter = NULL;
1742
1743         media_content_debug("\n============Playlist Test============\n\n");
1744
1745         /* Filter for playlist */
1746
1747         char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)";     /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1748
1749         ret = media_filter_create(&filter);
1750         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1751         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1752
1753         /* Create Playlist */
1754         media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1755         media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1756         media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1757
1758         if(playlist_1 != NULL)
1759         {
1760                 /* Add media to Playlist */
1761                 media_playlist_add_media(playlist_1, test_audio_id);
1762                 media_playlist_add_media(playlist_1, test_audio_id);
1763                 media_playlist_add_media(playlist_1, test_video_id);
1764
1765                 #if 0
1766                 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/Default.jpg"));
1767                 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1768                 #endif
1769
1770                 media_playlist_update_to_db(playlist_1);
1771         }
1772
1773         if(playlist_2 != NULL)
1774         {
1775                 media_playlist_add_media(playlist_2, test_audio_id);
1776                 media_playlist_add_media(playlist_2, test_audio_id);
1777                 media_playlist_update_to_db(playlist_2);
1778         }
1779
1780         /* Get Playlist Count*/
1781         ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1782         if (ret == 0)
1783                 media_content_debug("playlist_count [%d]", playlist_count);
1784
1785         /* Get Playlist*/
1786         GList *playlist_id_list = NULL;
1787         media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1788
1789         /* Get Playlist id*/
1790         playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1791         playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1792         playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1793         media_content_debug("playlist_id_1 [%d]", playlist_id_1);
1794         media_content_debug("playlist_id_2 [%d]", playlist_id_2);
1795         media_content_debug("playlist_id_3 [%d]", playlist_id_3);
1796
1797         /* Export and import playlist */
1798         media_playlist_export_to_file(playlist_3, "/opt/usr/media/Music/playlist.m3u");
1799         media_playlist_import_from_file( "/opt/usr/media/Music/playlist.m3u", "playlist_4", &playlist_4);
1800
1801         /* Filter for media*/
1802         ret = media_filter_create(&m_filter);
1803
1804         ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1805
1806         ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1807
1808         /* Get media count */
1809         media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1810         media_content_debug("playlist_1_media_count [%d]", media_count);
1811
1812         media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1813         media_content_debug("playlist_2_media_count [%d]", media_count);
1814
1815         media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1816         media_content_debug("playlist_3_media_count [%d]", media_count);
1817
1818         /* Get media of playlist */
1819         GList *playlist_member_id_list = NULL;
1820         GList *playlist_member_id_list_1 = NULL;
1821
1822         media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1823         media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1824
1825         int playlist_member_id_1_1 =0;
1826         int playlist_member_id_1_2 =0;
1827         int playlist_member_id_1_3 =0;
1828         int playlist_member_id_2_1 =0;
1829         int playlist_member_id_2_2 =0;
1830
1831         playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1832         playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1833         playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1834         playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1835         playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1836
1837         media_content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1838         media_content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1839         media_content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1840         media_content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1841         media_content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1842
1843         media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1844         media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1845         media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1846         media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1847         media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1848         media_content_debug("order_1 [%d] order_2 [%d] order_3 [%d] order_4 [%d] order_5 [%d]", order_1, order_2, order_3, order_4, order_5);
1849
1850         /* Update Playlist */
1851         media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1852         media_playlist_add_media(playlist_2, test_video_id);
1853         media_playlist_set_name(playlist_2, "test_playlist");
1854         media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1855         media_playlist_update_to_db(playlist_2);
1856
1857         /* Get Updated Playlist*/
1858         media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1859
1860         /* deletes the playlist */
1861         //media_playlist_delete_from_db(playlist_id_1);
1862         //media_playlist_delete_from_db(playlist_id_2);
1863
1864         if(playlist_1 != NULL)
1865                 media_playlist_destroy(playlist_1);
1866         if(playlist_2 != NULL)
1867                 media_playlist_destroy(playlist_2);
1868         if(playlist_3 != NULL)
1869                 media_playlist_destroy(playlist_3);
1870         if(playlist_4 != NULL)
1871                 media_playlist_destroy(playlist_4);
1872
1873         g_list_free(playlist_id_list);
1874         g_list_free(playlist_member_id_list);
1875         g_list_free(playlist_member_id_list_1);
1876
1877         if(filter != NULL)
1878                 ret = media_filter_destroy(filter);
1879         if(m_filter != NULL)
1880                 ret = media_filter_destroy(m_filter);
1881
1882         return ret;
1883 }
1884
1885 int test_tag_operation(void)
1886 {
1887         int ret = MEDIA_CONTENT_ERROR_NONE;
1888         media_tag_h tag_1;
1889         media_tag_h tag_2;
1890         media_tag_h tag_3;
1891         int tag_id_1 = 0;
1892         int tag_id_2 = 0;
1893         int tag_id_3 = 0;
1894         char *tag_name_1 = "myTag_1";
1895         char *tag_name_2 = "myTag_2";
1896         char *tag_name_3 = "myTag_3";
1897         int tag_count = 0;
1898         int media_count = 0;
1899         filter_h filter;
1900
1901         media_content_debug("\n============Tag Test============\n\n");
1902
1903         char *g_condition = "TAG_NAME like \"%%my%%\"";
1904
1905         ret = media_filter_create(&filter);
1906
1907         ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1908
1909         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1910
1911         /* Create Tag */
1912         ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1913         if(ret != MEDIA_CONTENT_ERROR_NONE)
1914                 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1915         ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1916         if(ret != MEDIA_CONTENT_ERROR_NONE)
1917                 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1918         ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1919         if(ret != MEDIA_CONTENT_ERROR_NONE)
1920                 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1921
1922         /* Add media to Tag */
1923         ret = media_tag_add_media(tag_1, test_audio_id);
1924         if(ret != MEDIA_CONTENT_ERROR_NONE)
1925                 media_content_error("error media_tag_add_media : [%d]", ret);
1926         ret = media_tag_add_media(tag_1, test_video_id);
1927         if(ret != MEDIA_CONTENT_ERROR_NONE)
1928                 media_content_error("error media_tag_add_media : [%d]", ret);
1929         ret = media_tag_update_to_db(tag_1);
1930         if(ret != MEDIA_CONTENT_ERROR_NONE)
1931                 media_content_error("error media_tag_update_to_db : [%d]", ret);
1932
1933         ret = media_tag_add_media(tag_2, test_audio_id);
1934         if(ret != MEDIA_CONTENT_ERROR_NONE)
1935                 media_content_error("error media_tag_add_media : [%d]", ret);
1936         ret = media_tag_update_to_db(tag_2);
1937         if(ret != MEDIA_CONTENT_ERROR_NONE)
1938                 media_content_error("error media_tag_update_to_db : [%d]", ret);
1939
1940         /* Get Tag Count*/
1941         ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1942         if(ret != MEDIA_CONTENT_ERROR_NONE)
1943                 media_content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1944         else
1945                 media_content_debug("tag_count [%d]", tag_count);
1946
1947         /* Get Tag*/
1948         ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1949         if(ret != MEDIA_CONTENT_ERROR_NONE)
1950                 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1951
1952         /* Get Tag id*/
1953         ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1954         if(ret != MEDIA_CONTENT_ERROR_NONE)
1955                 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1956         else
1957                 media_content_debug("tag_id_1 [%d]", tag_id_1);
1958
1959         ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1960         if(ret != MEDIA_CONTENT_ERROR_NONE)
1961                 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1962         else
1963                 media_content_debug("tag_id_2 [%d]", tag_id_2);
1964
1965         ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1966         if(ret != MEDIA_CONTENT_ERROR_NONE)
1967                 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1968         else
1969                 media_content_debug("tag_id_3 [%d]", tag_id_3);
1970
1971         /* Get media count */
1972         ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1973         if(ret != MEDIA_CONTENT_ERROR_NONE)
1974                 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1975         else
1976                 media_content_debug("tag_1_media_count [%d]", media_count);
1977
1978         ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
1979         if(ret != MEDIA_CONTENT_ERROR_NONE)
1980                 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1981         else
1982                 media_content_debug("tag_2_media_count [%d]", media_count);
1983
1984         /* Get media of Tag */
1985         ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
1986         if(ret != MEDIA_CONTENT_ERROR_NONE)
1987                 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1988
1989         ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
1990         if(ret != MEDIA_CONTENT_ERROR_NONE)
1991                 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1992
1993         /* Update Tag */
1994         ret = media_tag_add_media(tag_2, test_video_id);
1995         if(ret != MEDIA_CONTENT_ERROR_NONE)
1996                 media_content_error("error media_tag_add_media : [%d]", ret);
1997         ret = media_tag_set_name(tag_2, "test_tag");
1998         if(ret != MEDIA_CONTENT_ERROR_NONE)
1999                 media_content_error("error media_tag_set_name : [%d]", ret);
2000         ret = media_tag_update_to_db(tag_2);
2001         if(ret != MEDIA_CONTENT_ERROR_NONE)
2002                 media_content_error("error media_tag_update_to_db : [%d]", ret);
2003
2004         /* Get Updated Tag*/
2005         ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
2006         if(ret != MEDIA_CONTENT_ERROR_NONE)
2007                 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
2008
2009         /* deletes the tag */
2010         ret = media_tag_delete_from_db(tag_id_1);
2011         if(ret != MEDIA_CONTENT_ERROR_NONE)
2012                 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2013         ret = media_tag_delete_from_db(tag_id_2);
2014         if(ret != MEDIA_CONTENT_ERROR_NONE)
2015                 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2016
2017         ret = media_tag_destroy(tag_1);
2018         if(ret != MEDIA_CONTENT_ERROR_NONE)
2019                 media_content_error("error media_tag_destroy : [%d]", ret);
2020         ret = media_tag_destroy(tag_2);
2021         if(ret != MEDIA_CONTENT_ERROR_NONE)
2022                 media_content_error("error media_tag_destroy : [%d]", ret);
2023         ret = media_filter_destroy(filter);
2024         if(ret != MEDIA_CONTENT_ERROR_NONE)
2025                 media_content_error("error media_filter_destroy : [%d]", ret);
2026
2027         return ret;
2028 }
2029
2030
2031 int test_bookmark_operation(void)
2032 {
2033         //bookmark is only supported for video information.
2034         int ret = MEDIA_CONTENT_ERROR_NONE;
2035         int bookmark_count = 0;
2036         filter_h filter;
2037
2038         media_content_debug("\n============Bookmark Test============\n\n");
2039
2040         char *g_condition = "BOOKMARK_MARKED_TIME > 300";
2041
2042         ret = media_filter_create(&filter);
2043         if(ret != MEDIA_CONTENT_ERROR_NONE)
2044                 media_content_error("error media_filter_create : [%d]", ret);
2045
2046         ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2047         if(ret != MEDIA_CONTENT_ERROR_NONE)
2048                 media_content_error("error media_filter_set_condition : [%d]", ret);
2049
2050         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
2051         if(ret != MEDIA_CONTENT_ERROR_NONE)
2052                 media_content_error("error media_filter_set_order : [%d]", ret);
2053
2054         //insert bookmark to video
2055         const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg");
2056         ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
2057         if(ret != MEDIA_CONTENT_ERROR_NONE)
2058                 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2059
2060         ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
2061         if(ret != MEDIA_CONTENT_ERROR_NONE)
2062                 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2063
2064         ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
2065         if(ret != MEDIA_CONTENT_ERROR_NONE)
2066                 media_content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
2067         else
2068                 media_content_debug("bookmark_count = [%d]", bookmark_count);
2069
2070         ret = media_filter_destroy(filter);
2071         if(ret != MEDIA_CONTENT_ERROR_NONE)
2072                 media_content_error("error media_filter_destroy : [%d]", ret);
2073
2074         return ret;
2075 }
2076
2077 int test_album_list(void)
2078 {
2079         media_content_debug("\n============Album Test============\n\n");
2080
2081         int ret = MEDIA_CONTENT_ERROR_NONE;
2082         int album_count = 0;
2083         filter_h filter;
2084
2085         /*Set Filter*/
2086         char *condition = "MEDIA_TYPE=3";       /*0-image, 1-video, 2-sound, 3-music, 4-other*/
2087
2088         ret = media_filter_create(&filter);
2089         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2090                 media_content_error("Fail to create filter");
2091                 return ret;
2092         }
2093         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2094         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2095                 media_filter_destroy(filter);
2096                 media_content_error("Fail to set condition");
2097                 return ret;
2098         }
2099         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
2100         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2101                 media_filter_destroy(filter);
2102                 media_content_error("Fail to set order");
2103                 return ret;
2104         }
2105
2106         ret = media_album_get_album_count_from_db(filter, &album_count);
2107         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2108                 media_filter_destroy(filter);
2109                 return ret;
2110         } else {
2111                 media_content_debug("album_count [%d]", album_count);
2112         }
2113
2114         ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
2115         if(ret != MEDIA_CONTENT_ERROR_NONE)
2116                 media_content_error("error media_album_foreach_album_from_db : [%d]", ret);
2117
2118         ret = media_filter_destroy(filter);
2119         if(ret != MEDIA_CONTENT_ERROR_NONE)
2120                 media_content_error("error media_filter_destroy : [%d]", ret);
2121
2122         return ret;
2123 }
2124
2125 int test_group_operation(void)
2126 {
2127         media_content_debug("\n============Group Test============\n\n");
2128
2129         int ret = MEDIA_CONTENT_ERROR_NONE;
2130         int group_count = 0;
2131         int idx = 0;
2132
2133         ret = test_filter_create();
2134         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2135                 media_content_error("[error(0x%08x)", ret);
2136                 return ret;
2137         }
2138
2139         for(idx = 0; idx < MEDIA_CONTENT_GROUP_MAX; idx++)
2140         {
2141                 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
2142                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2143                         test_filter_destroy();
2144                         media_content_error("media_group_get_group_count_from_db fail. idx=[%d]", ret, idx);
2145                         return ret;
2146                 } else {
2147                         media_content_debug("[%2d]group_count [%d]", idx, group_count);
2148                 }
2149
2150                 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
2151         }
2152         ret = test_filter_destroy();
2153
2154         return ret;
2155 }
2156
2157 int test_update_operation()
2158 {
2159         int ret = MEDIA_CONTENT_ERROR_NONE;
2160         int i;
2161         media_info_h media_handle = NULL;
2162         GList *all_item_list = NULL;
2163
2164         /* Get all item list */
2165         ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
2166         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2167                 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
2168                 return -1;
2169         } else {
2170                 media_content_debug("media_info_foreach_media_from_db success");
2171                 char *media_id = NULL;
2172                 char *media_path = NULL;
2173                 media_content_type_e media_type = 0;
2174
2175                 for(i = 0; i < g_list_length(all_item_list); i++) {
2176                         media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2177
2178                         ret = media_info_get_media_id(media_handle, &media_id);
2179                         if(ret != MEDIA_CONTENT_ERROR_NONE)
2180                                 media_content_error("media_info_get_media_id failed: %d", ret);
2181                         ret = media_info_get_file_path(media_handle, &media_path);
2182                         if(ret != MEDIA_CONTENT_ERROR_NONE)
2183                                 media_content_error("media_info_get_file_path failed: %d", ret);
2184                         ret = media_info_get_media_type(media_handle, &media_type);
2185                         if(ret != MEDIA_CONTENT_ERROR_NONE)
2186                                 media_content_error("media_info_get_media_type failed: %d", ret);
2187
2188                         media_content_debug("media_id [%d] : %s", i, media_id);
2189                         media_content_debug("media_type [%d] : %d", i, media_type);
2190                         media_content_debug("media_path [%d] : %s", i, media_path);
2191 #if 0
2192                         if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
2193                                 image_meta_h image_handle;
2194                                 media_content_orientation_e orientation;
2195
2196                                 ret = media_info_get_image(media_handle, &image_handle);
2197                                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2198                                         media_content_error("media_info_get_image failed: %d", ret);
2199                                 } else {
2200                                         media_content_debug("media_info_get_image success");
2201
2202                                         //update image meta
2203                                         orientation = MEDIA_CONTENT_ORIENTATION_ROT_180;
2204                                         image_meta_set_orientation(image_handle, orientation);
2205
2206                                         ret = image_meta_update_to_db(image_handle);
2207                                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2208                                                 media_content_error("image_meta_update_to_db failed: %d", ret);
2209                                         } else {
2210                                                 media_content_debug("image_meta_update_to_db success");
2211                                         }
2212                                 }
2213
2214                         } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
2215                                 video_meta_h video_handle;
2216
2217                                 ret = media_info_get_video(media_handle, &video_handle);
2218                                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2219                                         media_content_error("media_info_get_video failed: %d", ret);
2220                                 } else {
2221                                         media_content_debug("media_info_get_video success");
2222
2223                                         //update video meta
2224                                         video_meta_set_played_count(video_handle,5);
2225                                         video_meta_set_played_time(video_handle,5);
2226                                         video_meta_set_played_position(video_handle,5);
2227                                         video_meta_update_to_db(video_handle);
2228
2229                                         ret = video_meta_update_to_db(video_handle);
2230                                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2231                                                 media_content_error("video_meta_update_to_db failed: %d", ret);
2232                                         } else {
2233                                                 media_content_debug("video_meta_update_to_db success");
2234                                         }
2235                                 }
2236                         } else if(media_type == MEDIA_CONTENT_TYPE_MUSIC) {//update audio meta
2237                                 audio_meta_h audio_handle = NULL;
2238                                 ret = media_info_get_audio(media_handle, &audio_handle);
2239                                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2240                                         media_content_error("media_info_get_audio failed: %d", ret);
2241                                 } else {
2242                                         media_content_debug("media_info_get_audio success");
2243
2244                                         audio_meta_set_played_count(audio_handle,5);
2245                                         audio_meta_set_played_time(audio_handle,1000);
2246                                         audio_meta_set_played_position(audio_handle,180);
2247
2248                                         ret = audio_meta_update_to_db(audio_handle);
2249                                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2250                                                 media_content_error("audio_meta_update_to_db failed: %d", ret);
2251                                         } else {
2252                                                 media_content_debug("audio_meta_update_to_db success");
2253                                         }
2254                                 }
2255
2256                         }
2257 #endif
2258                 }
2259
2260                 /* fix prevent: Resource Leak */
2261                 SAFE_FREE(media_id);
2262                 SAFE_FREE(media_path);
2263         }
2264
2265         return MEDIA_CONTENT_ERROR_NONE;
2266 }
2267
2268 int test_insert(void)
2269 {
2270         int ret = MEDIA_CONTENT_ERROR_NONE;
2271         char *path = "/opt/usr/media/Images/Default.jpg";
2272         //char *path = "/opt/usr/media/Others/other.txt";
2273         //char *path = NULL;
2274         media_info_h media_item = NULL;
2275         media_content_debug("\n============DB Insert Test============\n\n");
2276
2277         ret = media_info_insert_to_db(path, &media_item);
2278
2279         if((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL))
2280         {
2281                 media_content_debug("Insertion is success");
2282         }
2283         else
2284         {
2285                 media_content_error("Insertion is failed");
2286                 ret = media_info_destroy(media_item);
2287                 return ret;
2288         }
2289
2290         char *media_id = NULL;
2291
2292         ret = media_info_get_media_id(media_item, &media_id);
2293         if(ret != MEDIA_CONTENT_ERROR_NONE)
2294                 media_content_error("media_info_get_media_id failed: %d", ret);
2295         else
2296                 media_content_debug("Media ID: %s", media_id);
2297
2298         SAFE_FREE(media_id);
2299
2300         ret = media_info_update_to_db(media_item);
2301         if(ret == MEDIA_CONTENT_ERROR_NONE)
2302                 media_content_debug("media_info_update_to_db is success");
2303         else
2304                 media_content_error("media_info_update_to_db is failed");
2305
2306         ret = media_info_destroy(media_item);
2307         if(ret != MEDIA_CONTENT_ERROR_NONE)
2308                 media_content_error("media_info_destroy failed: %d", ret);
2309
2310         return ret;
2311 }
2312
2313 int test_move(void)
2314 {
2315         int ret = MEDIA_CONTENT_ERROR_NONE;
2316         const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2317         const char *dst_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/XX/Default1.jpg");
2318         media_info_h move_media = NULL;
2319
2320         ret = media_info_get_media_from_db(move_media_id, &move_media);
2321         if(ret == MEDIA_CONTENT_ERROR_NONE)
2322                 media_content_debug("media_info_get_media_from_db success");
2323         else
2324                 media_content_error("media_info_get_media_from_db failed: %d", ret);
2325
2326         media_content_debug("\n============DB Move Test============\n\n");
2327
2328         if(move_media) {
2329                 ret = media_info_move_to_db(move_media, dst_path);
2330
2331                 if(ret == MEDIA_CONTENT_ERROR_NONE)
2332                         media_content_debug("Move is success");
2333                 else
2334                         media_content_error("Move is failed");
2335
2336                 ret = media_info_destroy(move_media);
2337         } else {
2338                 media_content_debug("There is no item : %s", move_media_id);
2339         }
2340
2341         return ret;
2342 }
2343
2344 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2345 {
2346         char *thumbnail_path = NULL;
2347         int ret = MEDIA_CONTENT_ERROR_NONE;
2348         g_cnt++;
2349
2350         media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2351         media_content_debug("error_code [%d]", error);
2352         media_content_debug("thumbnail_path [%s]", path);
2353         if(user_data != NULL)
2354         {
2355                 media_info_h media = (media_info_h)user_data;
2356                 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2357                 if(ret != MEDIA_CONTENT_ERROR_NONE)
2358                         media_content_error("media_info_get_thumbnail_path failed: %d", ret);
2359                 else
2360                         media_content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2361                 SAFE_FREE(thumbnail_path);
2362                 ret = media_info_destroy(media);
2363                 if(ret != MEDIA_CONTENT_ERROR_NONE)
2364                         media_content_error("media_info_destroy failed: %d", ret);
2365         }
2366
2367         if(g_cnt == g_media_cnt)
2368                 g_main_loop_quit(g_loop);
2369
2370         return;
2371 }
2372
2373 bool thumbnail_create_cb(media_info_h media, void *user_data)
2374 {
2375         char *media_id = NULL;
2376         media_info_h dst = NULL;
2377         int ret = MEDIA_CONTENT_ERROR_NONE;
2378
2379         if(media == NULL)
2380         {
2381                 media_content_debug("NO Item");
2382                 return true;
2383         }
2384
2385         ret = media_info_get_media_id(media, &media_id);
2386         if(ret != MEDIA_CONTENT_ERROR_NONE)
2387                 media_content_error("media_info_get_media_id failed: %d", ret);
2388         else
2389                 media_content_debug("media_id : [%s]", media_id);
2390
2391         ret = media_info_clone(&dst, media);
2392         if(ret != MEDIA_CONTENT_ERROR_NONE)
2393                 media_content_error("media_info_clone failed: %d", ret);
2394         else
2395         {
2396                 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2397                 if(ret != MEDIA_CONTENT_ERROR_NONE)
2398                         media_content_error("media_info_create_thumbnail failed: %d", ret);
2399         }
2400
2401         /* fix prevent: Resource leak */
2402         SAFE_FREE(media_id);
2403
2404         return true;
2405 }
2406
2407 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2408 {
2409         int ret = MEDIA_CONTENT_ERROR_NONE;
2410
2411         char *media_id = NULL;
2412         media_info_h dst = NULL;
2413
2414         g_cnt++;
2415
2416         if(media == NULL)
2417         {
2418                 media_content_debug("NO Item");
2419                 return true;
2420         }
2421
2422         ret = media_info_get_media_id(media, &media_id);
2423         if(ret != MEDIA_CONTENT_ERROR_NONE)
2424                 media_content_error("media_info_get_media_id failed: %d", ret);
2425         else
2426                 media_content_debug("media_id : [%s]", media_id);
2427
2428         ret = media_info_clone(&dst, media);
2429         if(ret != MEDIA_CONTENT_ERROR_NONE)
2430                 media_content_error("media_info_clone failed: %d", ret);
2431
2432         ret = media_info_cancel_thumbnail(dst);
2433         if(ret != MEDIA_CONTENT_ERROR_NONE)
2434                 media_content_error("media_info_cancel_thumbnail failed: %d", ret);
2435
2436         ret = media_info_destroy(dst);
2437         if(ret != MEDIA_CONTENT_ERROR_NONE)
2438                         media_content_error("media_info_destroy failed: %d", ret);
2439
2440         if(g_cnt == g_media_cnt)
2441                 g_main_loop_quit(g_loop);
2442
2443         /* fix prevent: Resource leak */
2444         SAFE_FREE(media_id);
2445
2446         return true;
2447 }
2448
2449 gboolean create_thumbnail_start(gpointer data)
2450 {
2451         int ret = MEDIA_CONTENT_ERROR_NONE;
2452
2453         ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2454
2455         if(ret == MEDIA_CONTENT_ERROR_NONE)
2456                 media_content_debug("media_info_foreach_media_from_db is success");
2457         else
2458                 media_content_error("media_info_foreach_media_from_db is failed");
2459
2460         return false;
2461 }
2462
2463 gboolean cancel_thumbnail_start(gpointer data)
2464 {
2465         int ret = MEDIA_CONTENT_ERROR_NONE;
2466
2467         ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2468
2469         if(ret == MEDIA_CONTENT_ERROR_NONE)
2470                 media_content_debug("media_info_foreach_media_from_db is success");
2471         else
2472                 media_content_error("media_info_foreach_media_from_db is failed");
2473
2474         return false;
2475 }
2476
2477 int test_create_thumbnail(int cancel)
2478 {
2479         int ret = MEDIA_CONTENT_ERROR_NONE;
2480         GSource *source = NULL;
2481         GMainContext *context = NULL;
2482
2483         test_filter_create();
2484
2485         ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2486         if(ret != MEDIA_CONTENT_ERROR_NONE)
2487                 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2488         else
2489                 media_content_debug("media_count : [%d]", g_media_cnt);
2490
2491         g_loop = g_main_loop_new(NULL, FALSE);
2492         context = g_main_loop_get_context(g_loop);
2493         source = g_idle_source_new();
2494         g_source_set_callback (source, create_thumbnail_start, NULL, NULL);
2495         g_source_attach (source, context);
2496
2497         /* Logic to cancel */
2498         if (cancel) {
2499                 GSource *cancel_src = NULL;
2500                 cancel_src = g_idle_source_new();
2501                 g_source_set_callback (cancel_src, cancel_thumbnail_start, NULL, NULL);
2502                 g_source_attach (cancel_src, context);
2503         }
2504
2505         g_main_loop_run(g_loop);
2506         g_main_loop_unref(g_loop);
2507
2508         test_filter_destroy();
2509
2510         return ret;
2511 }
2512
2513 int test_disconnect_database(void)
2514 {
2515         int ret = MEDIA_CONTENT_ERROR_NONE;
2516         media_content_debug("\n============DB Disconnection Test============\n\n");
2517
2518         ret = media_content_disconnect();
2519
2520         if(ret == MEDIA_CONTENT_ERROR_NONE)
2521                 media_content_debug("disconnection is success");
2522         else
2523                 media_content_error("disconnection is failed");
2524
2525         return ret;
2526 }
2527
2528 int test_request_update_db(void)
2529 {
2530         int ret = MEDIA_CONTENT_ERROR_NONE;
2531         media_info_h media = NULL;
2532         char *content_name = NULL;
2533         bool favorite = FALSE;
2534
2535         //get the content of Over the horizon
2536         ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2537         if(ret != MEDIA_CONTENT_ERROR_NONE)
2538                 media_content_error("media_info_get_media_from_db failed: %d", ret);
2539
2540         ret = media_info_set_content_name(media, "TEST_content_name");
2541         if(ret != MEDIA_CONTENT_ERROR_NONE)
2542                 media_content_error("media_info_set_content_name failed: %d", ret);
2543
2544         ret = media_info_set_favorite(media, TRUE);
2545         if(ret != MEDIA_CONTENT_ERROR_NONE)
2546                 media_content_error("media_info_set_favorite failed: %d", ret);
2547
2548         ret = media_info_update_to_db(media);
2549         if(ret == MEDIA_CONTENT_ERROR_NONE)
2550                 media_content_debug("media_info_update_to_db is success");
2551         else
2552                 media_content_error("media_info_update_to_db is failed");
2553
2554         if(media != NULL)
2555                 media_info_destroy(media);
2556
2557         /*get the updated value*/
2558         ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2559         if(ret != MEDIA_CONTENT_ERROR_NONE)
2560                 media_content_error("media_info_get_media_from_db failed: %d", ret);
2561
2562         ret = media_info_get_content_name(media, &content_name);
2563         if(ret != MEDIA_CONTENT_ERROR_NONE)
2564                 media_content_error("media_info_get_content_name failed: %d", ret);
2565         else
2566                 media_content_debug("content name [%s]", content_name);
2567
2568         SAFE_FREE(content_name);
2569
2570         ret = media_info_get_favorite(media, &favorite);
2571         if(ret != MEDIA_CONTENT_ERROR_NONE)
2572                 media_content_error("media_info_get_favorite failed: %d", ret);
2573         else
2574                 media_content_debug("favorite [%d]", favorite);
2575
2576         ret = media_info_destroy(media);
2577
2578         return ret;
2579 }
2580
2581 int g_total_photo_size = 0;
2582 int g_total_video_size = 0;
2583 int g_total_mp3_size = 0;
2584 int g_total_voice_memo_size = 0;
2585
2586 bool dft_cb(media_info_h media, void *user_data)
2587 {
2588         unsigned long long file_size = 0;
2589         media_content_type_e media_type = -1;
2590         char *mime_type = NULL;
2591         int ret = MEDIA_CONTENT_ERROR_NONE;
2592
2593         if(media == NULL)
2594         {
2595                 return true;
2596         }
2597
2598         ret = media_info_get_media_type(media, &media_type);
2599         if(ret != MEDIA_CONTENT_ERROR_NONE)
2600                 media_content_error("media_info_get_media_type failed: %d", ret);
2601         ret = media_info_get_size(media, &file_size);
2602         if(ret != MEDIA_CONTENT_ERROR_NONE)
2603                 media_content_error("media_info_get_size failed: %d", ret);
2604         ret = media_info_get_mime_type(media, &mime_type);
2605         if(ret != MEDIA_CONTENT_ERROR_NONE)
2606                 media_content_error("media_info_get_mime_type failed: %d", ret);
2607
2608         if(media_type == MEDIA_CONTENT_TYPE_IMAGE)
2609         {
2610                 g_total_photo_size += file_size;
2611         }
2612         else if(media_type == MEDIA_CONTENT_TYPE_VIDEO)
2613         {
2614                 g_total_video_size += file_size;
2615         }
2616         else if(media_type == MEDIA_CONTENT_TYPE_SOUND)
2617         {
2618                 g_total_voice_memo_size += file_size;
2619         }
2620         else if(media_type == MEDIA_CONTENT_TYPE_MUSIC)
2621         {
2622                 if((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2623                 {
2624                         g_total_mp3_size += file_size;
2625                 }
2626                 else
2627                 {
2628                         g_total_voice_memo_size += file_size;
2629                 }
2630         }
2631         else
2632         {
2633                 media_content_debug("invalid media_type");
2634         }
2635
2636         if(mime_type != NULL)
2637                 free(mime_type);
2638
2639         return true;
2640
2641 }
2642
2643 int DFT_test(void)
2644 {
2645         int ret = MEDIA_CONTENT_ERROR_NONE;
2646         media_content_debug("\n============DFT_test============\n\n");
2647
2648         filter_h filter = NULL;
2649         int media_cnt = 0;
2650
2651         /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2652
2653         ret = media_filter_create(&filter);
2654
2655 /*Internal Memory*/
2656         media_content_debug("[Internal Memory]\n");
2657         /*1. Photo ============================================================*/
2658         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2659
2660         /*Get Photo Count*/
2661         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2662         media_content_debug("Photo count = [%d]\n", media_cnt);
2663
2664         /*Get Photo Size*/
2665         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2666         media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2667
2668         /*2. Video ============================================================*/
2669         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2670
2671         /*Get Video Count*/
2672         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2673         media_content_debug("Video count = [%d]\n", media_cnt);
2674
2675         /*Get Video Size*/
2676         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2677         media_content_debug("Video size = [%d]\n", g_total_video_size);
2678
2679         /*3. MP3 ============================================================*/
2680         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2681
2682         /*Get MP3 Count*/
2683         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2684         media_content_debug("MP3 count = [%d]\n", media_cnt);
2685
2686         /*Get MP3 Size*/
2687         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2688         media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2689
2690         /*4. Voice Memo ============================================================*/
2691         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND (MEDIA_MIME_TYPE=\"audio/AMR\" OR MEDIA_MIME_TYPE=\"audio/mp4\")", MEDIA_CONTENT_COLLATE_DEFAULT);
2692
2693         /*Get Voice Memo Count*/
2694         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2695         media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2696
2697         /*Get Voice Memo Size*/
2698         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2699         media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2700
2701         g_total_photo_size = 0;
2702         g_total_video_size = 0;
2703         g_total_mp3_size = 0;
2704         g_total_voice_memo_size = 0;
2705
2706 /*External Memory*/
2707         media_content_debug("\n[External Memory]\n");
2708         /*1. Photo ============================================================*/
2709         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2710
2711         /*Get Photo Count*/
2712         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2713         media_content_debug("Photo count = [%d]\n", media_cnt);
2714
2715         /*Get Photo Size*/
2716         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2717         media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2718
2719         /*2. Video ============================================================*/
2720         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2721
2722         /*Get Video Count*/
2723         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2724         media_content_debug("Video count = [%d]\n", media_cnt);
2725
2726         /*Get Video Size*/
2727         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2728         media_content_debug("Video size = [%d]\n", g_total_video_size);
2729
2730         /*3. MP3 ============================================================*/
2731         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2732
2733         /*Get MP3 Count*/
2734         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2735         media_content_debug("MP3 count = [%d]\n", media_cnt);
2736
2737         /*Get MP3 Size*/
2738         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2739         media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2740
2741         /*4. Voice Memo ============================================================*/
2742         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND (MEDIA_MIME_TYPE=\"audio/AMR\" OR MEDIA_MIME_TYPE=\"audio/mp4\")", MEDIA_CONTENT_COLLATE_DEFAULT);
2743
2744         /*Get Voice Memo Count*/
2745         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2746         media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2747
2748         /*Get Voice Memo Size*/
2749         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2750         media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2751         ret = media_filter_destroy(filter);
2752
2753         return ret;
2754 }
2755
2756 void insert_batch_cb(media_content_error_e error, void * user_data)
2757 {
2758         media_content_debug("media_info_insert_batch_to_db completed!\n");
2759 }
2760
2761 int test_batch_operations()
2762 {
2763         int ret = -1;
2764         int i;
2765         char *file_list[10];
2766
2767         for (i = 0; i < 10; i++) {
2768                 char filepath[255] = {0,};
2769                 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2770                 media_content_debug("File : %s\n", filepath);
2771                 file_list[i] = strdup(filepath);
2772         }
2773
2774         ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
2775         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2776                 media_content_error("media_info_insert_batch_to_db failed : %d\n", ret);
2777         }
2778
2779         filter_h filter;
2780         char *condition = "MEDIA_PATH LIKE \'";
2781         strncat (condition,  tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
2782         ret = media_filter_create(&filter);
2783         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2784                 media_content_error("Fail to create filter");
2785                 return ret;
2786         }
2787
2788         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2789         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2790                 media_filter_destroy(filter);
2791                 media_content_error("Fail to set condition");
2792                 return ret;
2793         }
2794
2795         ret = media_info_delete_batch_from_db(filter);
2796         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2797                 media_filter_destroy(filter);
2798                 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
2799                 return ret;
2800         }
2801
2802         ret = media_filter_destroy(filter);
2803
2804         return ret;
2805 }
2806
2807 void insert_burst_shot_cb(media_content_error_e error, void * user_data)
2808 {
2809         media_content_debug("media_info_insert_burst_shot_to_db completed![%d]\n", error);
2810         g_main_loop_quit(g_loop);
2811 }
2812
2813 gboolean test_insert_burst_shot_to_db_start(gpointer data)
2814 {
2815         int ret = MEDIA_CONTENT_ERROR_NONE;
2816         int i = 0;
2817         char *file_list[10];
2818
2819         for (i = 0; i < 10; i++) {
2820                 char filepath[255] = {0,};
2821                 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2822                 media_content_debug("File : %s\n", filepath);
2823                 file_list[i] = strdup(filepath);
2824         }
2825
2826         ret = media_info_insert_burst_shot_to_db((const char **)file_list, 10, insert_burst_shot_cb, NULL);
2827         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2828                 media_content_error("media_info_insert_burst_shot_to_db failed : %d\n", ret);
2829         }
2830
2831         return ret;
2832 }
2833
2834 int test_insert_burst_shot_to_db(void)
2835 {
2836         GSource *source = NULL;
2837         GMainContext *context = NULL;
2838
2839         g_loop = g_main_loop_new(NULL, FALSE);
2840         context = g_main_loop_get_context(g_loop);
2841         source = g_idle_source_new();
2842         g_source_set_callback (source, test_insert_burst_shot_to_db_start, NULL, NULL);
2843         g_source_attach (source, context);
2844
2845         g_main_loop_run(g_loop);
2846         g_main_loop_unref(g_loop);
2847
2848         return 0;
2849 }
2850
2851 void _scan_cb(media_content_error_e err, void *user_data)
2852 {
2853         media_content_debug("scan callback is called : %d\n", err);
2854         g_main_loop_quit(g_loop);
2855
2856         return;
2857 }
2858
2859 int test_scan_file()
2860 {
2861         int ret = -1;
2862
2863         const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2864         ret = media_content_scan_file(file_path);
2865         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2866                 media_content_error("Fail to media_content_scan_file : %d", ret);
2867                 return ret;
2868         }
2869
2870         return 0;
2871 }
2872
2873 gboolean test_scan_dir_start(gpointer data)
2874 {
2875         int ret = -1;
2876
2877         const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
2878
2879         ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
2880
2881         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2882                 media_content_error("Fail to test_scan_dir_start : %d", ret);
2883                 return ret;
2884         }
2885
2886         return 0;
2887 }
2888
2889 gboolean cancel_scan_dir_start(gpointer data)
2890 {
2891         int ret = MEDIA_CONTENT_ERROR_NONE;
2892
2893         const char *dir_path = "/opt/usr/media/Images";
2894
2895         ret = media_content_cancel_scan_folder(dir_path);
2896
2897         if(ret == MEDIA_CONTENT_ERROR_NONE)
2898                 media_content_debug("media_content_cancel_scan_folder is success");
2899         else
2900                 media_content_error("media_content_cancel_scan_folder is failed");
2901
2902         return false;
2903 }
2904
2905 int test_scan_dir(int cancel)
2906 {
2907         GSource *source = NULL;
2908         GMainContext *context = NULL;
2909
2910         g_loop = g_main_loop_new(NULL, FALSE);
2911         context = g_main_loop_get_context(g_loop);
2912         source = g_idle_source_new();
2913         g_source_set_callback (source, test_scan_dir_start, NULL, NULL);
2914         g_source_attach (source, context);
2915
2916         if (cancel) {
2917                 GSource *cancel_src = NULL;
2918                 cancel_src = g_idle_source_new();
2919                 g_source_set_callback (cancel_src, cancel_scan_dir_start, NULL, NULL);
2920                 g_source_attach (cancel_src, context);
2921         }
2922
2923         g_main_loop_run(g_loop);
2924         g_main_loop_unref(g_loop);
2925
2926         return 0;
2927 }
2928
2929 void _noti_cb(media_content_error_e error,
2930                                 int pid,
2931                                 media_content_db_update_item_type_e update_item,
2932                                 media_content_db_update_type_e update_type,
2933                                 media_content_type_e media_type,
2934                                 char *uuid,
2935                                 char *path,
2936                                 char *mime_type,
2937                                 void *user_data)
2938 {
2939         if (error == 0) {
2940                 media_content_debug("noti success! : %d\n", error);
2941         } else {
2942                 media_content_debug("error occured! : %d\n", error);
2943         }
2944
2945         media_content_debug("Noti from PID(%d)\n", pid);
2946
2947         if (update_item == MEDIA_ITEM_FILE) {
2948                 media_content_debug("Noti item : MEDIA_ITEM_FILE\n");
2949         } else if (update_item == MEDIA_ITEM_DIRECTORY) {
2950                 media_content_debug("Noti item : MEDIA_ITEM_DIRECTORY\n");
2951         }
2952
2953         if (update_type == MEDIA_CONTENT_INSERT) {
2954                 media_content_debug("Noti type : MEDIA_CONTENT_INSERT\n");
2955         } else if (update_type == MEDIA_CONTENT_DELETE) {
2956                 media_content_debug("Noti type : MEDIA_CONTENT_DELETE\n");
2957         } else if (update_type == MEDIA_CONTENT_UPDATE) {
2958                 media_content_debug("Noti type : MEDIA_CONTENT_UPDATE\n");
2959         }
2960
2961         media_content_debug("content type : %d\n", media_type);
2962
2963         if (path)
2964                 media_content_debug("path : %s\n", path);
2965         else
2966                 media_content_debug("path not\n");
2967
2968         if (uuid)
2969                 media_content_debug("uuid : %s\n", uuid);
2970         else
2971                 media_content_debug("uuid not\n");
2972
2973         if (mime_type)
2974                 media_content_debug("mime_type : %s\n", mime_type);
2975         else
2976                 media_content_debug("mime not\n");
2977
2978         if (user_data) media_content_debug("String : %s\n", (char *)user_data);
2979
2980         //g_main_loop_quit(g_loop);
2981         return;
2982 }
2983
2984 gboolean _send_noti_operations(gpointer data)
2985 {
2986         int ret = MEDIA_CONTENT_ERROR_NONE;
2987
2988         /* First of all, noti subscription */
2989         char *user_str = strdup("hi");
2990         media_content_set_db_updated_cb(_noti_cb, (void*)user_str);
2991
2992         /* media_info_insert_to_db */
2993         media_info_h media_item = NULL;
2994         const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2995
2996         ret = media_info_insert_to_db(path, &media_item);
2997         if (ret != MEDIA_CONTENT_ERROR_NONE) {
2998                 media_content_error("media_info_insert_to_db failed : %d", ret);
2999                 media_info_destroy(media_item);
3000                 return FALSE;
3001         }
3002
3003         media_content_debug("media_info_insert_to_db success");
3004
3005         /* media_info_delete_batch_from_db */
3006         filter_h filter;
3007         char *condition = "MEDIA_PATH LIKE \'";
3008         strncat (condition,  tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
3009
3010         ret = media_filter_create(&filter);
3011         if(ret != MEDIA_CONTENT_ERROR_NONE) {
3012                 media_content_error("Fail to create filter");
3013                 media_info_destroy(media_item);
3014                 return ret;
3015         }
3016
3017         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
3018         if(ret != MEDIA_CONTENT_ERROR_NONE) {
3019                 media_filter_destroy(filter);
3020                 media_info_destroy(media_item);
3021                 media_content_error("Fail to set condition");
3022                 return ret;
3023         }
3024         ret = media_info_delete_batch_from_db(filter);
3025         if(ret != MEDIA_CONTENT_ERROR_NONE) {
3026                 media_filter_destroy(filter);
3027                 media_info_destroy(media_item);
3028                 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
3029                 return ret;
3030         }
3031
3032         media_filter_destroy(filter);
3033
3034         /* media_info_update_to_db */
3035         ret = media_info_update_to_db(media_item);
3036         if(ret != MEDIA_CONTENT_ERROR_NONE) {
3037                 media_content_error("media_info_update_to_db failed : %d\n", ret);
3038                 media_info_destroy(media_item);
3039                 return ret;
3040         }
3041
3042         media_info_destroy(media_item);
3043
3044         return FALSE;
3045 }
3046
3047 int test_noti()
3048 {
3049         int ret = MEDIA_CONTENT_ERROR_NONE;
3050         GSource *source = NULL;
3051         GMainContext *context = NULL;
3052
3053         g_loop = g_main_loop_new(NULL, FALSE);
3054         context = g_main_loop_get_context(g_loop);
3055         source = g_idle_source_new();
3056         g_source_set_callback (source, _send_noti_operations, NULL, NULL);
3057         g_source_attach (source, context);
3058
3059         g_main_loop_run(g_loop);
3060         g_main_loop_unref(g_loop);
3061
3062         test_filter_destroy();
3063         media_content_unset_db_updated_cb();
3064
3065         return ret;
3066 }
3067
3068 int main(int argc, char *argv[])
3069 {
3070         int ret = MEDIA_CONTENT_ERROR_NONE;
3071
3072         media_content_debug("--- content manager test start ---\n\n");
3073
3074         ret = test_connect_database();
3075         if(ret != MEDIA_CONTENT_ERROR_NONE)
3076                 return MEDIA_CONTENT_ERROR_NONE;
3077
3078 #if 0
3079         ret = test_move();
3080         if(ret != MEDIA_CONTENT_ERROR_NONE)
3081                 return ret;
3082
3083         ret = test_gallery_scenario();
3084         if(ret != MEDIA_CONTENT_ERROR_NONE)
3085                 return ret;
3086
3087         ret = test_get_all_music_files();
3088         if(ret != MEDIA_CONTENT_ERROR_NONE)
3089                 return ret;
3090
3091         ret = test_media_info_operation();
3092         if(ret != MEDIA_CONTENT_ERROR_NONE)
3093                 return ret;
3094
3095         ret = test_folder_operation();
3096         if(ret != MEDIA_CONTENT_ERROR_NONE)
3097                 return ret;
3098
3099         ret = test_folder_update();
3100         if(ret != MEDIA_CONTENT_ERROR_NONE)
3101                 return ret;
3102
3103         ret = test_playlist_operation();
3104         if(ret != MEDIA_CONTENT_ERROR_NONE)
3105                 return ret;
3106
3107         ret = test_tag_operation();
3108         if(ret != MEDIA_CONTENT_ERROR_NONE)
3109                 return ret;
3110
3111         ret = test_bookmark_operation();
3112         if(ret != MEDIA_CONTENT_ERROR_NONE)
3113                 return ret;
3114
3115         ret = test_album_list();
3116         if(ret != MEDIA_CONTENT_ERROR_NONE)
3117                 return ret;
3118
3119         ret = test_group_operation();
3120         if(ret != MEDIA_CONTENT_ERROR_NONE)
3121                 return ret;
3122
3123         ret = test_update_operation();
3124         if(ret != MEDIA_CONTENT_ERROR_NONE)
3125                 return ret;
3126
3127         ret = test_insert();
3128         if(ret != MEDIA_CONTENT_ERROR_NONE)
3129                 return ret;
3130
3131         ret = test_move();
3132         if(ret != MEDIA_CONTENT_ERROR_NONE)
3133                 return ret;
3134
3135         ret = test_create_thumbnail(TRUE);
3136         if(ret != MEDIA_CONTENT_ERROR_NONE)
3137                 return ret;
3138
3139         ret = test_request_update_db();
3140         if(ret != MEDIA_CONTENT_ERROR_NONE)
3141                 return ret;
3142
3143         ret = DFT_test();
3144         if(ret != MEDIA_CONTENT_ERROR_NONE)
3145                 return ret;
3146
3147         ret = test_batch_operations();
3148         if(ret != MEDIA_CONTENT_ERROR_NONE)
3149                 return MEDIA_CONTENT_ERROR_NONE;
3150
3151         ret = test_insert_burst_shot_to_db();
3152         if(ret != MEDIA_CONTENT_ERROR_NONE)
3153                 return MEDIA_CONTENT_ERROR_NONE;
3154
3155         ret = test_scan_file();
3156         if(ret != MEDIA_CONTENT_ERROR_NONE)
3157                 return MEDIA_CONTENT_ERROR_NONE;
3158
3159         ret = test_scan_dir(true);
3160         if(ret != MEDIA_CONTENT_ERROR_NONE)
3161                 return MEDIA_CONTENT_ERROR_NONE;
3162
3163         ret = test_noti();
3164         if(ret != MEDIA_CONTENT_ERROR_NONE)
3165                 return MEDIA_CONTENT_ERROR_NONE;
3166 #endif
3167
3168         ret = test_disconnect_database();
3169         if(ret != MEDIA_CONTENT_ERROR_NONE)
3170                 return ret;
3171
3172         media_content_debug("--- content manager test end ---\n");
3173
3174         return ret;
3175 }