Block playlist test code(64-bit build issue)
[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 #if 0
684         GList **list = (GList**)user_data;
685 #endif
686
687         if(playlist == NULL)
688         {
689                 media_content_debug(" playlist handle is NULL");
690                 return false;
691         }
692
693         media_playlist_get_playlist_id(playlist, &playlist_id);
694         media_content_debug("playlist_id : %d", playlist_id);
695         /* 64bit build issue */
696 #if 0
697         if(user_data != NULL)
698                 *list = g_list_append(*list, (gpointer)playlist_id);
699 #endif
700         media_playlist_get_name(playlist, &playlist_name);
701         media_content_debug("playlist_name : %s", playlist_name);
702         SAFE_FREE(playlist_name);
703
704         media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
705         media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
706         SAFE_FREE(playlist_thumbnail_path);
707
708         media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
709
710         media_playlist_destroy(playlist_h);
711
712         return true;
713 }
714
715 bool tag_list_cb(media_tag_h tag, void *user_data)
716 {
717         int tag_id = 0;
718         char *tag_name = NULL;
719         int ret = MEDIA_CONTENT_ERROR_NONE;
720
721         if(tag == NULL)
722         {
723                 media_content_debug(" tag handle is NULL");
724                 return false;
725         }
726
727         ret = media_tag_get_tag_id(tag, &tag_id);
728         if(ret != MEDIA_CONTENT_ERROR_NONE)
729                 media_content_error("error media_tag_get_tag_id : [%d]", ret);
730         else
731                 media_content_debug("tag_id : %d", tag_id);
732
733         ret = media_tag_get_name(tag, &tag_name);
734         if(ret != MEDIA_CONTENT_ERROR_NONE)
735                 media_content_error("error media_tag_get_name : [%d]", ret);
736         else
737                 media_content_debug("tag_name : %s", tag_name);
738         SAFE_FREE(tag_name);
739
740         return true;
741 }
742
743 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
744 {
745         media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark;
746         int ret = MEDIA_CONTENT_ERROR_NONE;
747
748         if(_bookmark != NULL)
749         {
750                 char *name = NULL;
751                 time_t time = 0;
752                 int bookmark_id = 0;
753
754                 ret = media_bookmark_get_bookmark_id(bookmark, &bookmark_id);
755                 if(ret != MEDIA_CONTENT_ERROR_NONE)
756                         media_content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
757                 else
758                         media_content_debug("bookmark_id : %d", bookmark_id);
759
760                 ret = media_bookmark_get_thumbnail_path(bookmark, &name);
761                 if(ret != MEDIA_CONTENT_ERROR_NONE)
762                         media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
763                 else
764                         media_content_debug("bookmark thumbnail_path : %s", name);
765                 SAFE_FREE(name);
766
767                 ret = media_bookmark_get_marked_time(bookmark, &time);
768                 if(ret != MEDIA_CONTENT_ERROR_NONE)
769                         media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
770                 else
771                         media_content_debug("bookmark marked_time : %d", time);
772         }
773
774         return true;
775 }
776
777 bool album_list_cb(media_album_h album, void *user_data)
778 {
779         int album_id = 0;
780         char *album_name = NULL;
781         char *artist = NULL;
782         char *album_art = NULL;
783         int media_count = 0;
784         int ret = MEDIA_CONTENT_ERROR_NONE;
785         filter_h filter = NULL;
786
787         /*Set Filter*/
788         char *condition = "MEDIA_TYPE=3";       /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
789
790         ret = media_filter_create(&filter);
791         if(ret != MEDIA_CONTENT_ERROR_NONE) {
792                 media_content_error("Fail to create filter");
793                 return ret;
794         }
795         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
796         if(ret != MEDIA_CONTENT_ERROR_NONE) {
797                 media_filter_destroy(filter);
798                 media_content_error("Fail to set condition");
799                 return ret;
800         }
801         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
802         if(ret != MEDIA_CONTENT_ERROR_NONE) {
803                 media_filter_destroy(filter);
804                 media_content_error("Fail to set order");
805                 return ret;
806         }
807
808         if(album != NULL)
809         {
810                 if(media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE)
811                 {
812                         media_filter_destroy(filter);
813                         return false;
814                 }
815
816                 media_content_debug("album_id : [%d]", album_id);
817
818                 if(media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE)
819                 {
820                         media_filter_destroy(filter);
821                         return false;
822                 }
823
824                 media_content_debug("album_name : [%s]", album_name);
825                 SAFE_FREE(album_name);
826
827                 if(media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE)
828                 {
829                         media_filter_destroy(filter);
830                         return false;
831                 }
832
833                 media_content_debug("artist : [%s]", artist);
834                 SAFE_FREE(artist);
835
836                 if(media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE)
837                 {
838                         media_filter_destroy(filter);
839                         return false;
840                 }
841
842                 media_content_debug("album_art : [%s]", album_art);
843                 SAFE_FREE(album_art);
844
845                 if(media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
846                 {
847                         media_filter_destroy(filter);
848                         return false;
849                 }
850
851                 media_content_debug("media_count : [%d]", media_count);
852
853                 if(media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
854                 {
855                         media_filter_destroy(filter);
856                         return false;
857                 }
858
859                 test_album_from_db(album_id);
860         }
861         else
862         {
863                 media_content_error("album item not Found!!");
864         }
865
866         media_filter_destroy(filter);
867
868         return true;
869 }
870
871 bool group_list_cb(const char *group_name, void *user_data)
872 {
873         int media_count = 0;
874         int *idx = user_data;
875
876         media_content_debug("group item : [%s] [%d]", group_name, *idx);
877
878         if(media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
879                 return false;
880
881         media_content_debug("media_count : [%d]", media_count);
882
883         if(media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
884                 return false;
885
886         return true;
887 }
888
889 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
890 {
891         media_content_debug("playlist_member_id : [%d]", playlist_member_id);
892         /* 64bit build issue */
893 #if 0
894         GList **list = (GList**)user_data;
895
896         *list = g_list_append(*list, (gpointer)playlist_member_id);
897 #endif
898         //media_item_cb(media, user_data);
899
900         return true;
901 }
902
903 int test_filter_create(void)
904 {
905         media_content_debug("\n============Filter Create============\n\n");
906
907         int ret = MEDIA_CONTENT_ERROR_NONE;
908
909         /* Filter for media */
910         char *condition = "MEDIA_TYPE=3";       /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
911         //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*/
912
913         ret = media_filter_create(&g_filter);
914
915         /* Set condition and collate
916          * Condition string : You can make where statement of sql.
917          * Colation : You can use collation when comparing.
918          * Ex) In case of FILE_NAME='Samsung' as condition string,
919          *     if you want to compare with NOCASE collation,
920          *     call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
921          *     if you want to compare in case-sensitive,
922          *     call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
923          */
924         ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
925
926         /* Collation of ordering
927          * If you want to get list, which is sorted by NOCASE,
928          * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
929          * Or,
930          * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
931          */
932         /* Able to set multi column to set order */
933         //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_MODIFIED_TIME, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_DEFAULT);
934         //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
935         //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TRACK_NUM_INT, MEDIA_CONTENT_COLLATE_DEFAULT);
936         //ret = media_filter_set_storage(g_filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
937
938         /* Filter for group */
939         //char *g_condition = "TAG_NAME like \"\%my\%\"";
940         //char *g_condition = "BOOKMARK_MARKED_TIME > 300";
941
942         ret = media_filter_create(&g_filter_g);
943
944         //ret = media_filter_set_condition(g_filter_g, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
945         ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
946
947         return ret;
948 }
949
950 int test_filter_destroy(void)
951 {
952         media_content_debug("\n============Filter Create============\n\n");
953
954         int ret = MEDIA_CONTENT_ERROR_NONE;
955
956         ret = media_filter_destroy(g_filter);
957
958         return ret;
959 }
960
961 int test_connect_database(void)
962 {
963         int ret = MEDIA_CONTENT_ERROR_NONE;
964
965         media_content_debug("\n============DB Connection Test============\n\n");
966
967         ret = media_content_connect();
968
969         if(ret == MEDIA_CONTENT_ERROR_NONE)
970         {
971                 media_content_debug("connection is success\n\n");
972         }
973         else
974                 media_content_error("connection is failed\n\n");
975
976         return ret;
977 }
978
979 int test_gallery_scenario(void)
980 {
981         int ret = MEDIA_CONTENT_ERROR_NONE;
982         int i;
983         filter_h filter = NULL;
984
985         int count;
986         GList *folder_list = NULL;
987         media_folder_h folder_handle = NULL;
988
989         /* First, Get folder list */
990         ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
991         if(ret != MEDIA_CONTENT_ERROR_NONE) {
992                 media_content_error("media_folder_foreach_folder_from_db failed: %d", ret);
993                 return -1;
994         } else {
995                 media_content_debug("media_folder_foreach_folder_from_db success!!");
996                 char *folder_id = NULL;
997                 char *folder_name = NULL;
998                 char *folder_path = NULL;
999
1000                 for(i = 0; i < g_list_length(folder_list); i++) {
1001                         folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1002
1003                         ret = media_folder_get_folder_id(folder_handle, &folder_id);
1004                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1005                                 media_content_error("media_folder_get_folder_id failed: %d", ret);
1006                         ret = media_folder_get_name(folder_handle, &folder_name);
1007                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1008                                 media_content_error("media_folder_get_name failed: %d", ret);
1009                         ret = media_folder_get_path(folder_handle, &folder_path);
1010                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1011                                 media_content_error("media_folder_get_path failed: %d", ret);
1012
1013                         media_content_debug("folder_id [%d] : %s", i, folder_id);
1014                         media_content_debug("folder_name [%d] : %s", i, folder_name);
1015                         media_content_debug("folder_path [%d] : %s", i, folder_path);
1016
1017                         ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
1018                         /* User should free these string */
1019                         SAFE_FREE(folder_id);
1020                         SAFE_FREE(folder_name);
1021                         SAFE_FREE(folder_path);
1022                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1023                                 media_content_error("media_folder_get_media_count_from_db failed: %d", ret);
1024                                 return -1;
1025                         } else {
1026                                 media_content_debug("media count [%d] : %d", i, count);
1027                         }
1028                 }
1029         }
1030
1031         /* To check performance */
1032         struct timeval start, end;
1033         gettimeofday(&start, NULL);
1034
1035         /* Second, Get all item list */
1036         media_info_h media_handle = NULL;
1037         GList *all_item_list = NULL;
1038
1039         media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
1040         media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
1041         ret = media_filter_create(&filter);
1042         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1043                 media_content_error("Fail to create filter");
1044                 return ret;
1045         }
1046         ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
1047         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1048                 media_filter_destroy(filter);
1049                 media_content_error("Fail to set condition");
1050                 return ret;
1051         }
1052         ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
1053         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1054                 media_filter_destroy(filter);
1055                 media_content_error("Fail to set order");
1056                 return ret;
1057         }
1058
1059         ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
1060         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1061                 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
1062                 media_filter_destroy(filter);
1063                 return -1;
1064         } else {
1065                 media_content_debug("media_info_foreach_media_from_db success");
1066                 media_content_type_e media_type;
1067                 char *media_id = NULL;
1068                 char *media_name = NULL;
1069                 char *media_path = NULL;
1070
1071                 for(i = 0; i < g_list_length(all_item_list); i++) {
1072                         media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1073
1074                         ret = media_info_get_media_id(media_handle, &media_id);
1075                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1076                                 media_content_error("media_info_get_media_id failed: %d", ret);
1077                         ret = media_info_get_media_type(media_handle, &media_type);
1078                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1079                                 media_content_error("media_info_get_media_type failed: %d", ret);
1080                         ret = media_info_get_display_name(media_handle, &media_name);
1081                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1082                                 media_content_error("media_info_get_display_name failed: %d", ret);
1083                         ret = media_info_get_file_path(media_handle, &media_path);
1084                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1085                                 media_content_error("media_info_get_file_path failed: %d", ret);
1086
1087                         if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1088                                 image_meta_h image_handle;
1089                                 int width = 0, height = 0;
1090                                 media_content_orientation_e orientation = 0;
1091                                 char *datetaken = NULL;
1092                                 char *burst_id = NULL;
1093
1094                                 ret = media_info_get_image(media_handle, &image_handle);
1095                                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1096                                         media_content_error("media_info_get_image failed: %d", ret);
1097                                 } else {
1098                                         ret = image_meta_get_width(image_handle, &width);
1099                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1100                                                 media_content_error("error image_meta_get_width : [%d]", ret);
1101                                         ret = image_meta_get_height(image_handle, &height);
1102                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1103                                                 media_content_error("error image_meta_get_height : [%d]", ret);
1104                                         ret = image_meta_get_orientation(image_handle, &orientation);
1105                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1106                                                 media_content_error("error image_meta_get_orientation : [%d]", ret);
1107                                         ret = image_meta_get_date_taken(image_handle, &datetaken);
1108                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1109                                                 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1110                                         ret = image_meta_get_burst_id(image_handle, &burst_id);
1111                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1112                                                 media_content_error("error image_meta_get_burst_id : [%d]", ret);
1113
1114                                         media_content_debug("This is Image");
1115                                         media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1116                                 }
1117
1118                                 SAFE_FREE(datetaken);
1119                                 SAFE_FREE(burst_id);
1120                                 ret = image_meta_destroy(image_handle);
1121                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1122                                         media_content_error("error image_meta_destroy : [%d]", ret);
1123
1124                         } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1125                                 video_meta_h video_handle;
1126                                 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;
1127                                 int duration = 0;
1128                                 time_t time_played = 0;
1129
1130                                 ret = media_info_get_video(media_handle, &video_handle);
1131                                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1132                                         media_content_error("media_info_get_video failed: %d", ret);
1133                                 } else {
1134                                         ret = video_meta_get_artist(video_handle, &artist);
1135                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1136                                                 media_content_error("error video_meta_get_artist : [%d]", ret);
1137                                         ret = video_meta_get_album(video_handle, &album);
1138                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1139                                                 media_content_error("error video_meta_get_album : [%d]", ret);
1140                                         ret = video_meta_get_album_artist(video_handle, &album_artist);
1141                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1142                                                 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1143                                         ret = video_meta_get_duration(video_handle, &duration);
1144                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1145                                                 media_content_error("error video_meta_get_duration : [%d]", ret);
1146                                         ret = video_meta_get_played_time(video_handle, &time_played);
1147                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1148                                                 media_content_error("error video_meta_get_played_time : [%d]", ret);
1149
1150                                         media_content_debug("This is Video");
1151                                         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);
1152                                 }
1153
1154                                 SAFE_FREE(title);
1155                                 SAFE_FREE(artist);
1156                                 SAFE_FREE(album);
1157                                 SAFE_FREE(album_artist);
1158
1159                                 ret = video_meta_destroy(video_handle);
1160                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1161                                         media_content_error("error video_meta_destroy : [%d]", ret);
1162                         }
1163                         //media_content_debug("media_id [%d] : %s", i, media_id);
1164                         //media_content_debug("media_name [%d] : %s", i, media_name);
1165                         //media_content_debug("media_path [%d] : %s", i, media_path);
1166
1167                         SAFE_FREE(media_id);
1168                         SAFE_FREE(media_name);
1169                         SAFE_FREE(media_path);
1170                 }
1171         }
1172
1173         media_filter_destroy(filter);
1174         filter = NULL;
1175
1176         /* To check performance */
1177         gettimeofday(&end, NULL);
1178         long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1179         media_content_debug("Time : %ld\n", time);
1180
1181         /* Third, Get item list of a folder */
1182         GList *item_list = NULL;
1183
1184         for(i = 0; i < g_list_length(folder_list); i++) {
1185                 int j = 0;
1186                 char *folder_id = NULL;
1187                 char *folder_name = NULL;
1188                 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1189
1190                 media_folder_get_folder_id(folder_handle, &folder_id);
1191                 media_folder_get_name(folder_handle, &folder_name);
1192
1193                 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1194                 SAFE_FREE(folder_id);
1195                 SAFE_FREE(folder_name);
1196
1197                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1198                         media_content_error("media_folder_foreach_media_from_db failed: %d", ret);
1199                         return -1;
1200                 } else {
1201                         media_content_error("media_folder_foreach_media_from_db success!", ret);
1202                         char *media_id = NULL;
1203                         char *media_name = NULL;
1204                         char *media_path = NULL;
1205                         media_content_type_e media_type = 0;
1206
1207                         for(j = 0; j < g_list_length(item_list); j++) {
1208                                 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1209
1210                                 ret = media_info_get_media_id(media_handle, &media_id);
1211                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1212                                         media_content_error("media_info_get_media_id failed: %d", ret);
1213                                 ret = media_info_get_display_name(media_handle, &media_name);
1214                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1215                                         media_content_error("media_info_get_display_name failed: %d", ret);
1216                                 ret = media_info_get_file_path(media_handle, &media_path);
1217                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1218                                         media_content_error("media_info_get_file_path failed: %d", ret);
1219                                 ret = media_info_get_media_type(media_handle, &media_type);
1220                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1221                                         media_content_error("media_info_get_media_type failed: %d", ret);
1222
1223                                 media_content_debug("[%s] media_id [%d] : %s", folder_name, j, media_id);
1224                                 media_content_debug("[%s] media_type [%d] : %d", folder_name, j, media_type);
1225                                 media_content_debug("[%s] media_name [%d] : %s", folder_name, j, media_name);
1226                                 media_content_debug("[%s] media_path [%d] : %s", folder_name, j, media_path);
1227
1228                                 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1229                                         image_meta_h image_handle;
1230                                         int width = 0, height = 0;
1231                                         media_content_orientation_e orientation = 0;
1232                                         char *datetaken = NULL;
1233
1234                                         ret = media_info_get_image(media_handle, &image_handle);
1235                                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1236                                                 media_content_error("media_info_get_image failed: %d", ret);
1237                                         } else {
1238                                                 ret = image_meta_get_width(image_handle, &width);
1239                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1240                                                         media_content_error("error image_meta_get_width : [%d]", ret);
1241                                                 ret = image_meta_get_height(image_handle, &height);
1242                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1243                                                         media_content_error("error image_meta_get_height : [%d]", ret);
1244                                                 ret = image_meta_get_orientation(image_handle, &orientation);
1245                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1246                                                         media_content_error("error image_meta_get_orientation : [%d]", ret);
1247                                                 ret = image_meta_get_date_taken(image_handle, &datetaken);
1248                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1249                                                         media_content_error("error image_meta_get_date_taken : [%d]", ret);
1250
1251                                                 media_content_debug("This is Image");
1252                                                 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1253                                         }
1254
1255                                         SAFE_FREE(datetaken);
1256                                         ret = image_meta_destroy(image_handle);
1257                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1258                                                 media_content_error("error image_meta_destroy : [%d]", ret);
1259
1260                                 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1261                                         video_meta_h video_handle;
1262                                         char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;;
1263                                         int duration = 0;
1264                                         time_t time_played;
1265
1266                                         ret = media_info_get_video(media_handle, &video_handle);
1267                                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1268                                                 media_content_error("media_info_get_video failed: %d", ret);
1269                                         } else {
1270                                                 ret = video_meta_get_artist(video_handle, &artist);
1271                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1272                                                         media_content_error("error video_meta_get_artist : [%d]", ret);
1273                                                 ret = video_meta_get_album(video_handle, &album);
1274                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1275                                                         media_content_error("error video_meta_get_album : [%d]", ret);
1276                                                 ret = video_meta_get_album_artist(video_handle, &album_artist);
1277                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1278                                                         media_content_error("error video_meta_get_album_artist : [%d]", ret);
1279                                                 ret = video_meta_get_duration(video_handle, &duration);
1280                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1281                                                         media_content_error("error video_meta_get_duration : [%d]", ret);
1282                                                 ret = video_meta_get_played_time(video_handle, &time_played);
1283                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1284                                                         media_content_error("error video_meta_get_played_time : [%d]", ret);
1285
1286                                                 media_content_debug("This is Video");
1287                                                 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);
1288                                         }
1289
1290                                         SAFE_FREE(title);
1291                                         SAFE_FREE(artist);
1292                                         SAFE_FREE(album);
1293                                         SAFE_FREE(album_artist);
1294
1295                                         ret = video_meta_destroy(video_handle);
1296                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1297                                                 media_content_error("error video_meta_destroy : [%d]", ret);
1298
1299                                         /* Get bookmar list in case of video */
1300                                         media_bookmark_h bm_handle;
1301                                         GList *bm_list = NULL;
1302
1303                                         ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list);
1304                                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1305                                                 media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret);
1306                                         } else {
1307                                                 media_content_debug("media_info_foreach_bookmark_from_db success");
1308
1309                                                 int k = 0;
1310
1311                                                 for(k = 0; k < g_list_length(bm_list); k++) {
1312                                                         bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k);
1313                                                         time_t marked_time;
1314                                                         char *thumb_path = NULL;
1315
1316                                                         ret = media_bookmark_get_marked_time(bm_handle, &marked_time);
1317                                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1318                                                                 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
1319                                                         ret = media_bookmark_get_thumbnail_path(bm_handle, &thumb_path);
1320                                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1321                                                                 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
1322
1323                                                         media_content_debug("Bookmark time : %d\nBookmar thumb: %s", marked_time, thumb_path);
1324                                                         SAFE_FREE(thumb_path);
1325                                                 }
1326
1327                                                 /* Remove bookmark list */
1328                                                 int l = 0;
1329                                                 if(bm_list) {
1330                                                         for(l = 0; l < g_list_length(bm_list); l++) {
1331                                                                 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l);
1332                                                                 ret = media_bookmark_destroy(bm_handle);
1333                                                                 if(ret != MEDIA_CONTENT_ERROR_NONE)
1334                                                                         media_content_error("error media_bookmark_destroy : [%d]", ret);
1335                                                         }
1336
1337                                                         g_list_free(bm_list);
1338                                                 }
1339
1340                                         }
1341                                 }
1342
1343                                 SAFE_FREE(media_id);
1344                                 SAFE_FREE(media_name);
1345                                 SAFE_FREE(media_path);
1346                         }
1347                 }
1348         }
1349
1350         /* Get tag list */
1351         media_tag_h tag_handle = NULL;
1352         GList *tag_list = NULL;
1353         GList *media_list_in_tag = NULL;
1354
1355         ret = media_tag_foreach_tag_from_db (filter, gallery_tag_item_cb, &tag_list);
1356
1357         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1358                 media_content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1359                 return -1;
1360         } else {
1361                 media_content_error("media_tag_foreach_tag_from_db success");
1362                 char *tag_name = NULL;
1363                 int tag_id;
1364
1365                 for(i = 0; i < g_list_length(tag_list); i++) {
1366                         tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1367                         media_tag_get_tag_id(tag_handle, &tag_id);
1368                         media_tag_get_name(tag_handle, &tag_name);
1369
1370                         media_content_debug("[%d] %s", tag_id, tag_name);
1371
1372                         ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1373                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1374                                 media_content_error("media_tag_foreach_media_from_db failed: %d", ret);
1375                                 return -1;
1376                         } else {
1377                                 media_content_error("media_tag_foreach_media_from_db success");
1378                                 int j = 0;
1379                                 media_info_h tag_media_handle;
1380                                 char *media_id = NULL;
1381                                 char *media_name = NULL;
1382                                 char *media_path = NULL;
1383                                 media_content_type_e media_type = 0;
1384
1385                                 for(j = 0; j < g_list_length(media_list_in_tag); j++) {
1386                                         tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1387                                         ret = media_info_get_media_id(tag_media_handle, &media_id);
1388                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1389                                                 media_content_error("media_info_get_media_id failed: %d", ret);
1390                                         ret = media_info_get_display_name(tag_media_handle, &media_name);
1391                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1392                                                 media_content_error("media_info_get_display_name failed: %d", ret);
1393                                         ret = media_info_get_file_path(tag_media_handle, &media_path);
1394                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1395                                                 media_content_error("media_info_get_file_path failed: %d", ret);
1396                                         ret = media_info_get_media_type(tag_media_handle, &media_type);
1397                                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1398                                                 media_content_error("media_info_get_media_type failed: %d", ret);
1399
1400                                         media_content_debug("[%s] media_id [%d] : %s", tag_name, j, media_id);
1401                                         media_content_debug("[%s] media_type [%d] : %d", tag_name, j, media_type);
1402                                         media_content_debug("[%s] media_name [%d] : %s", tag_name, j, media_name);
1403                                         media_content_debug("[%s] media_path [%d] : %s", tag_name, j, media_path);
1404                                 }
1405                                 SAFE_FREE(media_id);
1406                                 SAFE_FREE(media_name);
1407                                 SAFE_FREE(media_path);
1408                         }
1409                         SAFE_FREE(tag_name);
1410                 }
1411         }
1412
1413         /* Remove folder list */
1414         if(folder_list) {
1415                 for(i = 0; i < g_list_length(folder_list); i++) {
1416                         folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1417                         media_folder_destroy(folder_handle);
1418                 }
1419
1420                 g_list_free(folder_list);
1421         }
1422
1423         /* Remove all items list */
1424         if(all_item_list) {
1425                 for(i = 0; i < g_list_length(all_item_list); i++) {
1426                         media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1427                         ret = media_info_destroy(media_handle);
1428                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1429                                 media_content_error("media_info_destroy failed: %d", ret);
1430                 }
1431
1432                 g_list_free(all_item_list);
1433         }
1434
1435         /* Remove items list */
1436         if(item_list) {
1437                 for(i = 0; i < g_list_length(item_list); i++) {
1438                         media_handle = (media_info_h)g_list_nth_data(item_list, i);
1439                         ret = media_info_destroy(media_handle);
1440                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1441                                 media_content_error("media_info_destroy failed: %d", ret);
1442                 }
1443
1444                 g_list_free(item_list);
1445         }
1446
1447         /* Remove tag list */
1448         if(tag_list) {
1449                 for(i = 0; i < g_list_length(tag_list); i++) {
1450                         tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1451                         ret = media_tag_destroy(tag_handle);
1452                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1453                                 media_content_error("error media_tag_destroy : [%d]", ret);
1454                 }
1455
1456                 g_list_free(tag_list);
1457         }
1458
1459         /* Remove media list in a tag */
1460         if(media_list_in_tag) {
1461                 for(i = 0; i < g_list_length(media_list_in_tag); i++) {
1462                         media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1463                         ret = media_info_destroy(media_handle);
1464                         if(ret != MEDIA_CONTENT_ERROR_NONE)
1465                                 media_content_error("media_info_destroy failed: %d", ret);
1466                 }
1467
1468                 g_list_free(media_list_in_tag);
1469         }
1470
1471         return MEDIA_CONTENT_ERROR_NONE;
1472 }
1473
1474 /*Get All Music file. sort by Title and not case sensitive*/
1475 int test_get_all_music_files(void)
1476 {
1477         int ret = MEDIA_CONTENT_ERROR_NONE;
1478         int media_count = 0;
1479         filter_h filter;
1480
1481         /*Set Filter*/
1482         char *condition = "MEDIA_TYPE=3";       /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1483
1484         ret = media_filter_create(&filter);
1485         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1486                 media_content_error("Fail to create filter");
1487                 return ret;
1488         }
1489         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_LOCALIZED);
1490         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1491                 media_filter_destroy(filter);
1492                 media_content_error("Fail to set condition");
1493                 return ret;
1494         }
1495         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_LOCALIZED);
1496         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1497                 media_filter_destroy(filter);
1498                 media_content_error("Fail to set order");
1499                 return ret;
1500         }
1501
1502         /*Get Media Count*/
1503         ret = media_info_get_media_count_from_db(filter, &media_count);
1504         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1505                 media_filter_destroy(filter);
1506                 media_content_error("Fail to get media count");
1507                 return ret;
1508         }
1509
1510         media_content_debug("media_count : [%d]", media_count);
1511
1512         ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1513         if(ret != MEDIA_CONTENT_ERROR_NONE) {
1514                 media_filter_destroy(filter);
1515                 media_content_error("Fail to get media");
1516                 return ret;
1517         }
1518
1519         ret = media_filter_destroy(filter);
1520
1521         return ret;
1522 }
1523
1524 int test_media_info_operation(void)
1525 {
1526         int ret = MEDIA_CONTENT_ERROR_NONE;
1527         int media_count = 0;
1528
1529         media_content_debug("\n============Media info Test============\n\n");
1530
1531         test_filter_create();
1532
1533         ret = media_info_get_media_count_from_db(g_filter, &media_count);
1534         if(ret != MEDIA_CONTENT_ERROR_NONE)
1535                 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
1536         else
1537                 media_content_debug("media_count : [%d]", media_count);
1538
1539         ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1540         if(ret == MEDIA_CONTENT_ERROR_NONE)
1541                 media_content_debug("media_info_foreach_media_from_db is success");
1542         else
1543                 media_content_error("media_info_foreach_media_from_db is failed");
1544
1545         test_filter_destroy();
1546
1547         return ret;
1548 }
1549
1550 int test_media_info_operation_2(void)
1551 {
1552         int ret = MEDIA_CONTENT_ERROR_NONE;
1553         int bookmark_count = 0;
1554
1555         media_content_debug("\n============Media info Test 2============\n\n");
1556
1557         test_filter_create();
1558
1559 #if 0
1560         /* Bookmark */
1561         char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg"));
1562         media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1563         media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1564
1565         media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1566
1567         media_content_debug("bookmark_count : [%d]", bookmark_count);
1568
1569         ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1570 #endif
1571
1572         /* Tag */
1573         ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1574         if(ret != MEDIA_CONTENT_ERROR_NONE)
1575                 media_content_error("media_info_get_tag_count_from_db failed: %d", ret);
1576         else
1577                 media_content_debug("tag_count : [%d]", bookmark_count);
1578
1579         ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1580         if(ret != MEDIA_CONTENT_ERROR_NONE)
1581                 media_content_error("media_info_foreach_tag_from_db failed: %d", ret);
1582
1583         test_filter_destroy();
1584
1585         return ret;
1586 }
1587
1588 int test_folder_operation(void)
1589 {
1590         int ret = MEDIA_CONTENT_ERROR_NONE;
1591         filter_h filter = NULL;
1592         media_folder_h folder = NULL;
1593         char *folder_id = NULL;
1594         int count = 0;
1595
1596         media_content_debug("\n============Folder Test============\n\n");
1597
1598         test_filter_create();
1599
1600         ret = media_filter_create(&filter);
1601         if(ret != MEDIA_CONTENT_ERROR_NONE)
1602         {
1603                 media_content_error("[ERROR] media_folder_filter_create is failed");
1604                 return ret;
1605         }
1606
1607         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*/
1608         media_filter_set_offset(filter, 0,5);
1609         media_filter_set_order(filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1610         media_filter_set_storage(filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
1611
1612         ret = media_folder_get_folder_count_from_db(filter, &count);
1613         media_content_debug("Folder count : [%d]", count);
1614
1615         ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1616
1617         //test.3 get the media list in first folder
1618         filter_h m_filter = NULL;
1619
1620         ret = media_filter_create(&m_filter);
1621         if(ret != MEDIA_CONTENT_ERROR_NONE)
1622         {
1623                 test_filter_destroy();
1624                 media_filter_destroy(filter);
1625                 media_content_error("[ERROR] media_info_filter_create is failed");
1626                 return ret;
1627         }
1628
1629         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*/
1630         media_filter_set_offset(m_filter, 0,5);
1631         media_filter_set_order(m_filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1632
1633         ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1634         if(ret != MEDIA_CONTENT_ERROR_NONE)
1635                 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1636
1637         media_filter_destroy(filter);
1638         media_filter_destroy(m_filter);
1639
1640         test_filter_destroy();
1641
1642         /* fix prevent: Resource Leak */
1643         SAFE_FREE(folder_id);
1644
1645         return ret;
1646 }
1647
1648 bool folder_update_cb(media_folder_h folder, void *user_data)
1649 {
1650         char *folder_id = NULL;
1651         char *folder_path = NULL;
1652         char *folder_name = NULL;
1653         int folder_order = -1;
1654         bool ret = true;
1655
1656         if(folder != NULL)
1657         {
1658                 ret = media_folder_get_folder_id(folder, &folder_id);
1659                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1660                 media_content_debug("folder_id = [%s]", folder_id);
1661                 SAFE_FREE(folder_id);
1662
1663                 ret = media_folder_get_path(folder, &folder_path);
1664                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1665                 media_content_debug("folder_path = [%s]", folder_path);
1666                 SAFE_FREE(folder_path);
1667
1668                 ret = media_folder_get_name(folder, &folder_name);
1669                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1670                 media_content_debug("folder_name = [%s]", folder_name);
1671                 SAFE_FREE(folder_name);
1672
1673                 ret = media_folder_get_order(folder, &folder_order);
1674                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1675                 media_content_debug("folder_order = [%d]", folder_order);
1676
1677                 ret = media_folder_clone(&g_folder, folder);
1678                 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1679
1680                 ret = true;
1681         }
1682         else
1683         {
1684                 ret = false;
1685         }
1686
1687         return ret;
1688 }
1689
1690
1691 int test_folder_update(void)
1692 {
1693         int ret = MEDIA_CONTENT_ERROR_NONE;
1694         filter_h filter;
1695         int folder_count = 0;
1696
1697         media_content_debug("\n============Folder Update Test============\n\n");
1698
1699         ret = media_filter_create(&filter);
1700         media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1701
1702         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*/
1703         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, FOLDER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
1704
1705         ret = media_folder_get_folder_count_from_db(filter, &folder_count);
1706
1707         media_content_debug("Folder count : %d", folder_count);
1708
1709         ret = media_folder_foreach_folder_from_db(filter, folder_update_cb, NULL);
1710
1711         media_filter_destroy(filter);
1712
1713         ret = media_folder_set_name(g_folder, "test_folder");
1714
1715         ret = media_folder_set_order(g_folder, 200);
1716
1717         ret = media_folder_update_to_db(g_folder);
1718
1719         ret = media_folder_destroy(g_folder);
1720
1721         return ret;
1722 }
1723
1724 int test_playlist_operation(void)
1725 {
1726         int ret = MEDIA_CONTENT_ERROR_NONE;
1727         media_playlist_h playlist_1 = NULL;
1728         media_playlist_h playlist_2 = NULL;
1729         media_playlist_h playlist_3 = NULL;
1730         media_playlist_h playlist_4 = NULL;
1731         int playlist_id_1 = 0;
1732         int playlist_id_2 = 0;
1733         int playlist_id_3 = 0;
1734         char *playlist_name_1 = "myPlaylist_1";
1735         char *playlist_name_2 = "myPlaylist_2";
1736         char *playlist_name_3 = "myPlaylist_3";
1737         int playlist_count = 0;
1738         int media_count = 0;
1739         int order_1 = 0;
1740         int order_2 = 0;
1741         int order_3 = 0;
1742         int order_4 = 0;
1743         int order_5 = 0;
1744         filter_h filter = NULL;
1745         filter_h m_filter = NULL;
1746
1747         media_content_debug("\n============Playlist Test============\n\n");
1748
1749         /* Filter for playlist */
1750
1751         char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)";     /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1752
1753         ret = media_filter_create(&filter);
1754         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1755         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1756
1757         /* Create Playlist */
1758         media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1759         media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1760         media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1761
1762         if(playlist_1 != NULL)
1763         {
1764                 /* Add media to Playlist */
1765                 media_playlist_add_media(playlist_1, test_audio_id);
1766                 media_playlist_add_media(playlist_1, test_audio_id);
1767                 media_playlist_add_media(playlist_1, test_video_id);
1768
1769                 #if 0
1770                 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/Default.jpg"));
1771                 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1772                 #endif
1773
1774                 media_playlist_update_to_db(playlist_1);
1775         }
1776
1777         if(playlist_2 != NULL)
1778         {
1779                 media_playlist_add_media(playlist_2, test_audio_id);
1780                 media_playlist_add_media(playlist_2, test_audio_id);
1781                 media_playlist_update_to_db(playlist_2);
1782         }
1783
1784         /* Get Playlist Count*/
1785         ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1786         if (ret == 0)
1787                 media_content_debug("playlist_count [%d]", playlist_count);
1788
1789         /* Get Playlist*/
1790         GList *playlist_id_list = NULL;
1791         media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1792         /* 64bit build issue */
1793 #if 0
1794         /* Get Playlist id*/
1795         playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1796         playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1797         playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1798 #endif
1799         media_content_debug("playlist_id_1 [%d]", playlist_id_1);
1800         media_content_debug("playlist_id_2 [%d]", playlist_id_2);
1801         media_content_debug("playlist_id_3 [%d]", playlist_id_3);
1802
1803         /* Export and import playlist */
1804         media_playlist_export_to_file(playlist_3, "/opt/usr/media/Music/playlist.m3u");
1805         media_playlist_import_from_file( "/opt/usr/media/Music/playlist.m3u", "playlist_4", &playlist_4);
1806
1807         /* Filter for media*/
1808         ret = media_filter_create(&m_filter);
1809
1810         ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1811
1812         ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1813
1814         /* Get media count */
1815         media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1816         media_content_debug("playlist_1_media_count [%d]", media_count);
1817
1818         media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1819         media_content_debug("playlist_2_media_count [%d]", media_count);
1820
1821         media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1822         media_content_debug("playlist_3_media_count [%d]", media_count);
1823
1824         /* Get media of playlist */
1825         GList *playlist_member_id_list = NULL;
1826         GList *playlist_member_id_list_1 = NULL;
1827
1828         media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1829         media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1830
1831         int playlist_member_id_1_1 =0;
1832         int playlist_member_id_1_2 =0;
1833         int playlist_member_id_1_3 =0;
1834         int playlist_member_id_2_1 =0;
1835         int playlist_member_id_2_2 =0;
1836         /* 64bit build issue */
1837 #if 0
1838         playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1839         playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1840         playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1841         playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1842         playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1843 #endif
1844         media_content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1845         media_content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1846         media_content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1847         media_content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1848         media_content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1849
1850         media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1851         media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1852         media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1853         media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1854         media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1855         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);
1856
1857         /* Update Playlist */
1858         media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1859         media_playlist_add_media(playlist_2, test_video_id);
1860         media_playlist_set_name(playlist_2, "test_playlist");
1861         media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1862         media_playlist_update_to_db(playlist_2);
1863
1864         /* Get Updated Playlist*/
1865         media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1866
1867         /* deletes the playlist */
1868         //media_playlist_delete_from_db(playlist_id_1);
1869         //media_playlist_delete_from_db(playlist_id_2);
1870
1871         if(playlist_1 != NULL)
1872                 media_playlist_destroy(playlist_1);
1873         if(playlist_2 != NULL)
1874                 media_playlist_destroy(playlist_2);
1875         if(playlist_3 != NULL)
1876                 media_playlist_destroy(playlist_3);
1877         if(playlist_4 != NULL)
1878                 media_playlist_destroy(playlist_4);
1879
1880         g_list_free(playlist_id_list);
1881         g_list_free(playlist_member_id_list);
1882         g_list_free(playlist_member_id_list_1);
1883
1884         if(filter != NULL)
1885                 ret = media_filter_destroy(filter);
1886         if(m_filter != NULL)
1887                 ret = media_filter_destroy(m_filter);
1888
1889         return ret;
1890 }
1891
1892 int test_tag_operation(void)
1893 {
1894         int ret = MEDIA_CONTENT_ERROR_NONE;
1895         media_tag_h tag_1;
1896         media_tag_h tag_2;
1897         media_tag_h tag_3;
1898         int tag_id_1 = 0;
1899         int tag_id_2 = 0;
1900         int tag_id_3 = 0;
1901         char *tag_name_1 = "myTag_1";
1902         char *tag_name_2 = "myTag_2";
1903         char *tag_name_3 = "myTag_3";
1904         int tag_count = 0;
1905         int media_count = 0;
1906         filter_h filter;
1907
1908         media_content_debug("\n============Tag Test============\n\n");
1909
1910         char *g_condition = "TAG_NAME like \"%%my%%\"";
1911
1912         ret = media_filter_create(&filter);
1913
1914         ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1915
1916         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1917
1918         /* Create Tag */
1919         ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1920         if(ret != MEDIA_CONTENT_ERROR_NONE)
1921                 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1922         ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1923         if(ret != MEDIA_CONTENT_ERROR_NONE)
1924                 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1925         ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1926         if(ret != MEDIA_CONTENT_ERROR_NONE)
1927                 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1928
1929         /* Add media to Tag */
1930         ret = media_tag_add_media(tag_1, test_audio_id);
1931         if(ret != MEDIA_CONTENT_ERROR_NONE)
1932                 media_content_error("error media_tag_add_media : [%d]", ret);
1933         ret = media_tag_add_media(tag_1, test_video_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_1);
1937         if(ret != MEDIA_CONTENT_ERROR_NONE)
1938                 media_content_error("error media_tag_update_to_db : [%d]", ret);
1939
1940         ret = media_tag_add_media(tag_2, test_audio_id);
1941         if(ret != MEDIA_CONTENT_ERROR_NONE)
1942                 media_content_error("error media_tag_add_media : [%d]", ret);
1943         ret = media_tag_update_to_db(tag_2);
1944         if(ret != MEDIA_CONTENT_ERROR_NONE)
1945                 media_content_error("error media_tag_update_to_db : [%d]", ret);
1946
1947         /* Get Tag Count*/
1948         ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1949         if(ret != MEDIA_CONTENT_ERROR_NONE)
1950                 media_content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1951         else
1952                 media_content_debug("tag_count [%d]", tag_count);
1953
1954         /* Get Tag*/
1955         ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1956         if(ret != MEDIA_CONTENT_ERROR_NONE)
1957                 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1958
1959         /* Get Tag id*/
1960         ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1961         if(ret != MEDIA_CONTENT_ERROR_NONE)
1962                 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1963         else
1964                 media_content_debug("tag_id_1 [%d]", tag_id_1);
1965
1966         ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1967         if(ret != MEDIA_CONTENT_ERROR_NONE)
1968                 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1969         else
1970                 media_content_debug("tag_id_2 [%d]", tag_id_2);
1971
1972         ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1973         if(ret != MEDIA_CONTENT_ERROR_NONE)
1974                 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1975         else
1976                 media_content_debug("tag_id_3 [%d]", tag_id_3);
1977
1978         /* Get media count */
1979         ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1980         if(ret != MEDIA_CONTENT_ERROR_NONE)
1981                 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1982         else
1983                 media_content_debug("tag_1_media_count [%d]", media_count);
1984
1985         ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
1986         if(ret != MEDIA_CONTENT_ERROR_NONE)
1987                 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1988         else
1989                 media_content_debug("tag_2_media_count [%d]", media_count);
1990
1991         /* Get media of Tag */
1992         ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
1993         if(ret != MEDIA_CONTENT_ERROR_NONE)
1994                 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1995
1996         ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
1997         if(ret != MEDIA_CONTENT_ERROR_NONE)
1998                 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1999
2000         /* Update Tag */
2001         ret = media_tag_add_media(tag_2, test_video_id);
2002         if(ret != MEDIA_CONTENT_ERROR_NONE)
2003                 media_content_error("error media_tag_add_media : [%d]", ret);
2004         ret = media_tag_set_name(tag_2, "test_tag");
2005         if(ret != MEDIA_CONTENT_ERROR_NONE)
2006                 media_content_error("error media_tag_set_name : [%d]", ret);
2007         ret = media_tag_update_to_db(tag_2);
2008         if(ret != MEDIA_CONTENT_ERROR_NONE)
2009                 media_content_error("error media_tag_update_to_db : [%d]", ret);
2010
2011         /* Get Updated Tag*/
2012         ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
2013         if(ret != MEDIA_CONTENT_ERROR_NONE)
2014                 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
2015
2016         /* deletes the tag */
2017         ret = media_tag_delete_from_db(tag_id_1);
2018         if(ret != MEDIA_CONTENT_ERROR_NONE)
2019                 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2020         ret = media_tag_delete_from_db(tag_id_2);
2021         if(ret != MEDIA_CONTENT_ERROR_NONE)
2022                 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2023
2024         ret = media_tag_destroy(tag_1);
2025         if(ret != MEDIA_CONTENT_ERROR_NONE)
2026                 media_content_error("error media_tag_destroy : [%d]", ret);
2027         ret = media_tag_destroy(tag_2);
2028         if(ret != MEDIA_CONTENT_ERROR_NONE)
2029                 media_content_error("error media_tag_destroy : [%d]", ret);
2030         ret = media_filter_destroy(filter);
2031         if(ret != MEDIA_CONTENT_ERROR_NONE)
2032                 media_content_error("error media_filter_destroy : [%d]", ret);
2033
2034         return ret;
2035 }
2036
2037
2038 int test_bookmark_operation(void)
2039 {
2040         //bookmark is only supported for video information.
2041         int ret = MEDIA_CONTENT_ERROR_NONE;
2042         int bookmark_count = 0;
2043         filter_h filter;
2044
2045         media_content_debug("\n============Bookmark Test============\n\n");
2046
2047         char *g_condition = "BOOKMARK_MARKED_TIME > 300";
2048
2049         ret = media_filter_create(&filter);
2050         if(ret != MEDIA_CONTENT_ERROR_NONE)
2051                 media_content_error("error media_filter_create : [%d]", ret);
2052
2053         ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2054         if(ret != MEDIA_CONTENT_ERROR_NONE)
2055                 media_content_error("error media_filter_set_condition : [%d]", ret);
2056
2057         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
2058         if(ret != MEDIA_CONTENT_ERROR_NONE)
2059                 media_content_error("error media_filter_set_order : [%d]", ret);
2060
2061         //insert bookmark to video
2062         const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg");
2063         ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
2064         if(ret != MEDIA_CONTENT_ERROR_NONE)
2065                 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2066
2067         ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
2068         if(ret != MEDIA_CONTENT_ERROR_NONE)
2069                 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2070
2071         ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
2072         if(ret != MEDIA_CONTENT_ERROR_NONE)
2073                 media_content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
2074         else
2075                 media_content_debug("bookmark_count = [%d]", bookmark_count);
2076
2077         ret = media_filter_destroy(filter);
2078         if(ret != MEDIA_CONTENT_ERROR_NONE)
2079                 media_content_error("error media_filter_destroy : [%d]", ret);
2080
2081         return ret;
2082 }
2083
2084 int test_album_list(void)
2085 {
2086         media_content_debug("\n============Album Test============\n\n");
2087
2088         int ret = MEDIA_CONTENT_ERROR_NONE;
2089         int album_count = 0;
2090         filter_h filter;
2091
2092         /*Set Filter*/
2093         char *condition = "MEDIA_TYPE=3";       /*0-image, 1-video, 2-sound, 3-music, 4-other*/
2094
2095         ret = media_filter_create(&filter);
2096         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2097                 media_content_error("Fail to create filter");
2098                 return ret;
2099         }
2100         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2101         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2102                 media_filter_destroy(filter);
2103                 media_content_error("Fail to set condition");
2104                 return ret;
2105         }
2106         ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
2107         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2108                 media_filter_destroy(filter);
2109                 media_content_error("Fail to set order");
2110                 return ret;
2111         }
2112
2113         ret = media_album_get_album_count_from_db(filter, &album_count);
2114         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2115                 media_filter_destroy(filter);
2116                 return ret;
2117         } else {
2118                 media_content_debug("album_count [%d]", album_count);
2119         }
2120
2121         ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
2122         if(ret != MEDIA_CONTENT_ERROR_NONE)
2123                 media_content_error("error media_album_foreach_album_from_db : [%d]", ret);
2124
2125         ret = media_filter_destroy(filter);
2126         if(ret != MEDIA_CONTENT_ERROR_NONE)
2127                 media_content_error("error media_filter_destroy : [%d]", ret);
2128
2129         return ret;
2130 }
2131
2132 int test_group_operation(void)
2133 {
2134         media_content_debug("\n============Group Test============\n\n");
2135
2136         int ret = MEDIA_CONTENT_ERROR_NONE;
2137         int group_count = 0;
2138         int idx = 0;
2139
2140         ret = test_filter_create();
2141         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2142                 media_content_error("[error(0x%08x)", ret);
2143                 return ret;
2144         }
2145
2146         for(idx = 0; idx < MEDIA_CONTENT_GROUP_MAX; idx++)
2147         {
2148                 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
2149                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2150                         test_filter_destroy();
2151                         media_content_error("media_group_get_group_count_from_db fail. idx=[%d]", ret, idx);
2152                         return ret;
2153                 } else {
2154                         media_content_debug("[%2d]group_count [%d]", idx, group_count);
2155                 }
2156
2157                 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
2158         }
2159         ret = test_filter_destroy();
2160
2161         return ret;
2162 }
2163
2164 int test_update_operation()
2165 {
2166         int ret = MEDIA_CONTENT_ERROR_NONE;
2167         int i;
2168         media_info_h media_handle = NULL;
2169         GList *all_item_list = NULL;
2170
2171         /* Get all item list */
2172         ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
2173         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2174                 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
2175                 return -1;
2176         } else {
2177                 media_content_debug("media_info_foreach_media_from_db success");
2178                 char *media_id = NULL;
2179                 char *media_path = NULL;
2180                 media_content_type_e media_type = 0;
2181
2182                 for(i = 0; i < g_list_length(all_item_list); i++) {
2183                         media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2184
2185                         ret = media_info_get_media_id(media_handle, &media_id);
2186                         if(ret != MEDIA_CONTENT_ERROR_NONE)
2187                                 media_content_error("media_info_get_media_id failed: %d", ret);
2188                         ret = media_info_get_file_path(media_handle, &media_path);
2189                         if(ret != MEDIA_CONTENT_ERROR_NONE)
2190                                 media_content_error("media_info_get_file_path failed: %d", ret);
2191                         ret = media_info_get_media_type(media_handle, &media_type);
2192                         if(ret != MEDIA_CONTENT_ERROR_NONE)
2193                                 media_content_error("media_info_get_media_type failed: %d", ret);
2194
2195                         media_content_debug("media_id [%d] : %s", i, media_id);
2196                         media_content_debug("media_type [%d] : %d", i, media_type);
2197                         media_content_debug("media_path [%d] : %s", i, media_path);
2198 #if 0
2199                         if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
2200                                 image_meta_h image_handle;
2201                                 media_content_orientation_e orientation;
2202
2203                                 ret = media_info_get_image(media_handle, &image_handle);
2204                                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2205                                         media_content_error("media_info_get_image failed: %d", ret);
2206                                 } else {
2207                                         media_content_debug("media_info_get_image success");
2208
2209                                         //update image meta
2210                                         orientation = MEDIA_CONTENT_ORIENTATION_ROT_180;
2211                                         image_meta_set_orientation(image_handle, orientation);
2212
2213                                         ret = image_meta_update_to_db(image_handle);
2214                                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2215                                                 media_content_error("image_meta_update_to_db failed: %d", ret);
2216                                         } else {
2217                                                 media_content_debug("image_meta_update_to_db success");
2218                                         }
2219                                 }
2220
2221                         } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
2222                                 video_meta_h video_handle;
2223
2224                                 ret = media_info_get_video(media_handle, &video_handle);
2225                                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2226                                         media_content_error("media_info_get_video failed: %d", ret);
2227                                 } else {
2228                                         media_content_debug("media_info_get_video success");
2229
2230                                         //update video meta
2231                                         video_meta_set_played_count(video_handle,5);
2232                                         video_meta_set_played_time(video_handle,5);
2233                                         video_meta_set_played_position(video_handle,5);
2234                                         video_meta_update_to_db(video_handle);
2235
2236                                         ret = video_meta_update_to_db(video_handle);
2237                                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2238                                                 media_content_error("video_meta_update_to_db failed: %d", ret);
2239                                         } else {
2240                                                 media_content_debug("video_meta_update_to_db success");
2241                                         }
2242                                 }
2243                         } else if(media_type == MEDIA_CONTENT_TYPE_MUSIC) {//update audio meta
2244                                 audio_meta_h audio_handle = NULL;
2245                                 ret = media_info_get_audio(media_handle, &audio_handle);
2246                                 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2247                                         media_content_error("media_info_get_audio failed: %d", ret);
2248                                 } else {
2249                                         media_content_debug("media_info_get_audio success");
2250
2251                                         audio_meta_set_played_count(audio_handle,5);
2252                                         audio_meta_set_played_time(audio_handle,1000);
2253                                         audio_meta_set_played_position(audio_handle,180);
2254
2255                                         ret = audio_meta_update_to_db(audio_handle);
2256                                         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2257                                                 media_content_error("audio_meta_update_to_db failed: %d", ret);
2258                                         } else {
2259                                                 media_content_debug("audio_meta_update_to_db success");
2260                                         }
2261                                 }
2262
2263                         }
2264 #endif
2265                 }
2266
2267                 /* fix prevent: Resource Leak */
2268                 SAFE_FREE(media_id);
2269                 SAFE_FREE(media_path);
2270         }
2271
2272         return MEDIA_CONTENT_ERROR_NONE;
2273 }
2274
2275 int test_insert(void)
2276 {
2277         int ret = MEDIA_CONTENT_ERROR_NONE;
2278         char *path = "/opt/usr/media/Images/Default.jpg";
2279         //char *path = "/opt/usr/media/Others/other.txt";
2280         //char *path = NULL;
2281         media_info_h media_item = NULL;
2282         media_content_debug("\n============DB Insert Test============\n\n");
2283
2284         ret = media_info_insert_to_db(path, &media_item);
2285
2286         if((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL))
2287         {
2288                 media_content_debug("Insertion is success");
2289         }
2290         else
2291         {
2292                 media_content_error("Insertion is failed");
2293                 ret = media_info_destroy(media_item);
2294                 return ret;
2295         }
2296
2297         char *media_id = NULL;
2298
2299         ret = media_info_get_media_id(media_item, &media_id);
2300         if(ret != MEDIA_CONTENT_ERROR_NONE)
2301                 media_content_error("media_info_get_media_id failed: %d", ret);
2302         else
2303                 media_content_debug("Media ID: %s", media_id);
2304
2305         SAFE_FREE(media_id);
2306
2307         ret = media_info_update_to_db(media_item);
2308         if(ret == MEDIA_CONTENT_ERROR_NONE)
2309                 media_content_debug("media_info_update_to_db is success");
2310         else
2311                 media_content_error("media_info_update_to_db is failed");
2312
2313         ret = media_info_destroy(media_item);
2314         if(ret != MEDIA_CONTENT_ERROR_NONE)
2315                 media_content_error("media_info_destroy failed: %d", ret);
2316
2317         return ret;
2318 }
2319
2320 int test_move(void)
2321 {
2322         int ret = MEDIA_CONTENT_ERROR_NONE;
2323         const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2324         const char *dst_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/XX/Default1.jpg");
2325         media_info_h move_media = NULL;
2326
2327         ret = media_info_get_media_from_db(move_media_id, &move_media);
2328         if(ret == MEDIA_CONTENT_ERROR_NONE)
2329                 media_content_debug("media_info_get_media_from_db success");
2330         else
2331                 media_content_error("media_info_get_media_from_db failed: %d", ret);
2332
2333         media_content_debug("\n============DB Move Test============\n\n");
2334
2335         if(move_media) {
2336                 ret = media_info_move_to_db(move_media, dst_path);
2337
2338                 if(ret == MEDIA_CONTENT_ERROR_NONE)
2339                         media_content_debug("Move is success");
2340                 else
2341                         media_content_error("Move is failed");
2342
2343                 ret = media_info_destroy(move_media);
2344         } else {
2345                 media_content_debug("There is no item : %s", move_media_id);
2346         }
2347
2348         return ret;
2349 }
2350
2351 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2352 {
2353         char *thumbnail_path = NULL;
2354         int ret = MEDIA_CONTENT_ERROR_NONE;
2355         g_cnt++;
2356
2357         media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2358         media_content_debug("error_code [%d]", error);
2359         media_content_debug("thumbnail_path [%s]", path);
2360         if(user_data != NULL)
2361         {
2362                 media_info_h media = (media_info_h)user_data;
2363                 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2364                 if(ret != MEDIA_CONTENT_ERROR_NONE)
2365                         media_content_error("media_info_get_thumbnail_path failed: %d", ret);
2366                 else
2367                         media_content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2368                 SAFE_FREE(thumbnail_path);
2369                 ret = media_info_destroy(media);
2370                 if(ret != MEDIA_CONTENT_ERROR_NONE)
2371                         media_content_error("media_info_destroy failed: %d", ret);
2372         }
2373
2374         if(g_cnt == g_media_cnt)
2375                 g_main_loop_quit(g_loop);
2376
2377         return;
2378 }
2379
2380 bool thumbnail_create_cb(media_info_h media, void *user_data)
2381 {
2382         char *media_id = NULL;
2383         media_info_h dst = NULL;
2384         int ret = MEDIA_CONTENT_ERROR_NONE;
2385
2386         if(media == NULL)
2387         {
2388                 media_content_debug("NO Item");
2389                 return true;
2390         }
2391
2392         ret = media_info_get_media_id(media, &media_id);
2393         if(ret != MEDIA_CONTENT_ERROR_NONE)
2394                 media_content_error("media_info_get_media_id failed: %d", ret);
2395         else
2396                 media_content_debug("media_id : [%s]", media_id);
2397
2398         ret = media_info_clone(&dst, media);
2399         if(ret != MEDIA_CONTENT_ERROR_NONE)
2400                 media_content_error("media_info_clone failed: %d", ret);
2401         else
2402         {
2403                 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2404                 if(ret != MEDIA_CONTENT_ERROR_NONE)
2405                         media_content_error("media_info_create_thumbnail failed: %d", ret);
2406         }
2407
2408         /* fix prevent: Resource leak */
2409         SAFE_FREE(media_id);
2410
2411         return true;
2412 }
2413
2414 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2415 {
2416         int ret = MEDIA_CONTENT_ERROR_NONE;
2417
2418         char *media_id = NULL;
2419         media_info_h dst = NULL;
2420
2421         g_cnt++;
2422
2423         if(media == NULL)
2424         {
2425                 media_content_debug("NO Item");
2426                 return true;
2427         }
2428
2429         ret = media_info_get_media_id(media, &media_id);
2430         if(ret != MEDIA_CONTENT_ERROR_NONE)
2431                 media_content_error("media_info_get_media_id failed: %d", ret);
2432         else
2433                 media_content_debug("media_id : [%s]", media_id);
2434
2435         ret = media_info_clone(&dst, media);
2436         if(ret != MEDIA_CONTENT_ERROR_NONE)
2437                 media_content_error("media_info_clone failed: %d", ret);
2438
2439         ret = media_info_cancel_thumbnail(dst);
2440         if(ret != MEDIA_CONTENT_ERROR_NONE)
2441                 media_content_error("media_info_cancel_thumbnail failed: %d", ret);
2442
2443         ret = media_info_destroy(dst);
2444         if(ret != MEDIA_CONTENT_ERROR_NONE)
2445                         media_content_error("media_info_destroy failed: %d", ret);
2446
2447         if(g_cnt == g_media_cnt)
2448                 g_main_loop_quit(g_loop);
2449
2450         /* fix prevent: Resource leak */
2451         SAFE_FREE(media_id);
2452
2453         return true;
2454 }
2455
2456 gboolean create_thumbnail_start(gpointer data)
2457 {
2458         int ret = MEDIA_CONTENT_ERROR_NONE;
2459
2460         ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2461
2462         if(ret == MEDIA_CONTENT_ERROR_NONE)
2463                 media_content_debug("media_info_foreach_media_from_db is success");
2464         else
2465                 media_content_error("media_info_foreach_media_from_db is failed");
2466
2467         return false;
2468 }
2469
2470 gboolean cancel_thumbnail_start(gpointer data)
2471 {
2472         int ret = MEDIA_CONTENT_ERROR_NONE;
2473
2474         ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2475
2476         if(ret == MEDIA_CONTENT_ERROR_NONE)
2477                 media_content_debug("media_info_foreach_media_from_db is success");
2478         else
2479                 media_content_error("media_info_foreach_media_from_db is failed");
2480
2481         return false;
2482 }
2483
2484 int test_create_thumbnail(int cancel)
2485 {
2486         int ret = MEDIA_CONTENT_ERROR_NONE;
2487         GSource *source = NULL;
2488         GMainContext *context = NULL;
2489
2490         test_filter_create();
2491
2492         ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2493         if(ret != MEDIA_CONTENT_ERROR_NONE)
2494                 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2495         else
2496                 media_content_debug("media_count : [%d]", g_media_cnt);
2497
2498         g_loop = g_main_loop_new(NULL, FALSE);
2499         context = g_main_loop_get_context(g_loop);
2500         source = g_idle_source_new();
2501         g_source_set_callback (source, create_thumbnail_start, NULL, NULL);
2502         g_source_attach (source, context);
2503
2504         /* Logic to cancel */
2505         if (cancel) {
2506                 GSource *cancel_src = NULL;
2507                 cancel_src = g_idle_source_new();
2508                 g_source_set_callback (cancel_src, cancel_thumbnail_start, NULL, NULL);
2509                 g_source_attach (cancel_src, context);
2510         }
2511
2512         g_main_loop_run(g_loop);
2513         g_main_loop_unref(g_loop);
2514
2515         test_filter_destroy();
2516
2517         return ret;
2518 }
2519
2520 int test_disconnect_database(void)
2521 {
2522         int ret = MEDIA_CONTENT_ERROR_NONE;
2523         media_content_debug("\n============DB Disconnection Test============\n\n");
2524
2525         ret = media_content_disconnect();
2526
2527         if(ret == MEDIA_CONTENT_ERROR_NONE)
2528                 media_content_debug("disconnection is success");
2529         else
2530                 media_content_error("disconnection is failed");
2531
2532         return ret;
2533 }
2534
2535 int test_request_update_db(void)
2536 {
2537         int ret = MEDIA_CONTENT_ERROR_NONE;
2538         media_info_h media = NULL;
2539         char *content_name = NULL;
2540         bool favorite = FALSE;
2541
2542         //get the content of Over the horizon
2543         ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2544         if(ret != MEDIA_CONTENT_ERROR_NONE)
2545                 media_content_error("media_info_get_media_from_db failed: %d", ret);
2546
2547         ret = media_info_set_content_name(media, "TEST_content_name");
2548         if(ret != MEDIA_CONTENT_ERROR_NONE)
2549                 media_content_error("media_info_set_content_name failed: %d", ret);
2550
2551         ret = media_info_set_favorite(media, TRUE);
2552         if(ret != MEDIA_CONTENT_ERROR_NONE)
2553                 media_content_error("media_info_set_favorite failed: %d", ret);
2554
2555         ret = media_info_update_to_db(media);
2556         if(ret == MEDIA_CONTENT_ERROR_NONE)
2557                 media_content_debug("media_info_update_to_db is success");
2558         else
2559                 media_content_error("media_info_update_to_db is failed");
2560
2561         if(media != NULL)
2562                 media_info_destroy(media);
2563
2564         /*get the updated value*/
2565         ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2566         if(ret != MEDIA_CONTENT_ERROR_NONE)
2567                 media_content_error("media_info_get_media_from_db failed: %d", ret);
2568
2569         ret = media_info_get_content_name(media, &content_name);
2570         if(ret != MEDIA_CONTENT_ERROR_NONE)
2571                 media_content_error("media_info_get_content_name failed: %d", ret);
2572         else
2573                 media_content_debug("content name [%s]", content_name);
2574
2575         SAFE_FREE(content_name);
2576
2577         ret = media_info_get_favorite(media, &favorite);
2578         if(ret != MEDIA_CONTENT_ERROR_NONE)
2579                 media_content_error("media_info_get_favorite failed: %d", ret);
2580         else
2581                 media_content_debug("favorite [%d]", favorite);
2582
2583         ret = media_info_destroy(media);
2584
2585         return ret;
2586 }
2587
2588 int g_total_photo_size = 0;
2589 int g_total_video_size = 0;
2590 int g_total_mp3_size = 0;
2591 int g_total_voice_memo_size = 0;
2592
2593 bool dft_cb(media_info_h media, void *user_data)
2594 {
2595         unsigned long long file_size = 0;
2596         media_content_type_e media_type = -1;
2597         char *mime_type = NULL;
2598         int ret = MEDIA_CONTENT_ERROR_NONE;
2599
2600         if(media == NULL)
2601         {
2602                 return true;
2603         }
2604
2605         ret = media_info_get_media_type(media, &media_type);
2606         if(ret != MEDIA_CONTENT_ERROR_NONE)
2607                 media_content_error("media_info_get_media_type failed: %d", ret);
2608         ret = media_info_get_size(media, &file_size);
2609         if(ret != MEDIA_CONTENT_ERROR_NONE)
2610                 media_content_error("media_info_get_size failed: %d", ret);
2611         ret = media_info_get_mime_type(media, &mime_type);
2612         if(ret != MEDIA_CONTENT_ERROR_NONE)
2613                 media_content_error("media_info_get_mime_type failed: %d", ret);
2614
2615         if(media_type == MEDIA_CONTENT_TYPE_IMAGE)
2616         {
2617                 g_total_photo_size += file_size;
2618         }
2619         else if(media_type == MEDIA_CONTENT_TYPE_VIDEO)
2620         {
2621                 g_total_video_size += file_size;
2622         }
2623         else if(media_type == MEDIA_CONTENT_TYPE_SOUND)
2624         {
2625                 g_total_voice_memo_size += file_size;
2626         }
2627         else if(media_type == MEDIA_CONTENT_TYPE_MUSIC)
2628         {
2629                 if((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2630                 {
2631                         g_total_mp3_size += file_size;
2632                 }
2633                 else
2634                 {
2635                         g_total_voice_memo_size += file_size;
2636                 }
2637         }
2638         else
2639         {
2640                 media_content_debug("invalid media_type");
2641         }
2642
2643         if(mime_type != NULL)
2644                 free(mime_type);
2645
2646         return true;
2647
2648 }
2649
2650 int DFT_test(void)
2651 {
2652         int ret = MEDIA_CONTENT_ERROR_NONE;
2653         media_content_debug("\n============DFT_test============\n\n");
2654
2655         filter_h filter = NULL;
2656         int media_cnt = 0;
2657
2658         /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2659
2660         ret = media_filter_create(&filter);
2661
2662 /*Internal Memory*/
2663         media_content_debug("[Internal Memory]\n");
2664         /*1. Photo ============================================================*/
2665         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2666
2667         /*Get Photo Count*/
2668         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2669         media_content_debug("Photo count = [%d]\n", media_cnt);
2670
2671         /*Get Photo Size*/
2672         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2673         media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2674
2675         /*2. Video ============================================================*/
2676         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2677
2678         /*Get Video Count*/
2679         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2680         media_content_debug("Video count = [%d]\n", media_cnt);
2681
2682         /*Get Video Size*/
2683         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2684         media_content_debug("Video size = [%d]\n", g_total_video_size);
2685
2686         /*3. MP3 ============================================================*/
2687         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2688
2689         /*Get MP3 Count*/
2690         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2691         media_content_debug("MP3 count = [%d]\n", media_cnt);
2692
2693         /*Get MP3 Size*/
2694         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2695         media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2696
2697         /*4. Voice Memo ============================================================*/
2698         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);
2699
2700         /*Get Voice Memo Count*/
2701         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2702         media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2703
2704         /*Get Voice Memo Size*/
2705         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2706         media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2707
2708         g_total_photo_size = 0;
2709         g_total_video_size = 0;
2710         g_total_mp3_size = 0;
2711         g_total_voice_memo_size = 0;
2712
2713 /*External Memory*/
2714         media_content_debug("\n[External Memory]\n");
2715         /*1. Photo ============================================================*/
2716         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2717
2718         /*Get Photo Count*/
2719         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2720         media_content_debug("Photo count = [%d]\n", media_cnt);
2721
2722         /*Get Photo Size*/
2723         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2724         media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2725
2726         /*2. Video ============================================================*/
2727         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2728
2729         /*Get Video Count*/
2730         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2731         media_content_debug("Video count = [%d]\n", media_cnt);
2732
2733         /*Get Video Size*/
2734         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2735         media_content_debug("Video size = [%d]\n", g_total_video_size);
2736
2737         /*3. MP3 ============================================================*/
2738         ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2739
2740         /*Get MP3 Count*/
2741         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2742         media_content_debug("MP3 count = [%d]\n", media_cnt);
2743
2744         /*Get MP3 Size*/
2745         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2746         media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2747
2748         /*4. Voice Memo ============================================================*/
2749         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);
2750
2751         /*Get Voice Memo Count*/
2752         ret = media_info_get_media_count_from_db(filter, &media_cnt);
2753         media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2754
2755         /*Get Voice Memo Size*/
2756         ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2757         media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2758         ret = media_filter_destroy(filter);
2759
2760         return ret;
2761 }
2762
2763 void insert_batch_cb(media_content_error_e error, void * user_data)
2764 {
2765         media_content_debug("media_info_insert_batch_to_db completed!\n");
2766 }
2767
2768 int test_batch_operations()
2769 {
2770         int ret = -1;
2771         int i;
2772         char *file_list[10];
2773
2774         for (i = 0; i < 10; i++) {
2775                 char filepath[255] = {0,};
2776                 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2777                 media_content_debug("File : %s\n", filepath);
2778                 file_list[i] = strdup(filepath);
2779         }
2780
2781         ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
2782         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2783                 media_content_error("media_info_insert_batch_to_db failed : %d\n", ret);
2784         }
2785
2786         filter_h filter;
2787         char *condition = "MEDIA_PATH LIKE \'";
2788         strncat (condition,  tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
2789         ret = media_filter_create(&filter);
2790         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2791                 media_content_error("Fail to create filter");
2792                 return ret;
2793         }
2794
2795         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2796         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2797                 media_filter_destroy(filter);
2798                 media_content_error("Fail to set condition");
2799                 return ret;
2800         }
2801
2802         ret = media_info_delete_batch_from_db(filter);
2803         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2804                 media_filter_destroy(filter);
2805                 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
2806                 return ret;
2807         }
2808
2809         ret = media_filter_destroy(filter);
2810
2811         return ret;
2812 }
2813
2814 void insert_burst_shot_cb(media_content_error_e error, void * user_data)
2815 {
2816         media_content_debug("media_info_insert_burst_shot_to_db completed![%d]\n", error);
2817         g_main_loop_quit(g_loop);
2818 }
2819
2820 gboolean test_insert_burst_shot_to_db_start(gpointer data)
2821 {
2822         int ret = MEDIA_CONTENT_ERROR_NONE;
2823         int i = 0;
2824         char *file_list[10];
2825
2826         for (i = 0; i < 10; i++) {
2827                 char filepath[255] = {0,};
2828                 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2829                 media_content_debug("File : %s\n", filepath);
2830                 file_list[i] = strdup(filepath);
2831         }
2832
2833         ret = media_info_insert_burst_shot_to_db((const char **)file_list, 10, insert_burst_shot_cb, NULL);
2834         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2835                 media_content_error("media_info_insert_burst_shot_to_db failed : %d\n", ret);
2836         }
2837
2838         return ret;
2839 }
2840
2841 int test_insert_burst_shot_to_db(void)
2842 {
2843         GSource *source = NULL;
2844         GMainContext *context = NULL;
2845
2846         g_loop = g_main_loop_new(NULL, FALSE);
2847         context = g_main_loop_get_context(g_loop);
2848         source = g_idle_source_new();
2849         g_source_set_callback (source, test_insert_burst_shot_to_db_start, NULL, NULL);
2850         g_source_attach (source, context);
2851
2852         g_main_loop_run(g_loop);
2853         g_main_loop_unref(g_loop);
2854
2855         return 0;
2856 }
2857
2858 void _scan_cb(media_content_error_e err, void *user_data)
2859 {
2860         media_content_debug("scan callback is called : %d\n", err);
2861         g_main_loop_quit(g_loop);
2862
2863         return;
2864 }
2865
2866 int test_scan_file()
2867 {
2868         int ret = -1;
2869
2870         const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2871         ret = media_content_scan_file(file_path);
2872         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2873                 media_content_error("Fail to media_content_scan_file : %d", ret);
2874                 return ret;
2875         }
2876
2877         return 0;
2878 }
2879
2880 gboolean test_scan_dir_start(gpointer data)
2881 {
2882         int ret = -1;
2883
2884         const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
2885
2886         ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
2887
2888         if(ret != MEDIA_CONTENT_ERROR_NONE) {
2889                 media_content_error("Fail to test_scan_dir_start : %d", ret);
2890                 return ret;
2891         }
2892
2893         return 0;
2894 }
2895
2896 gboolean cancel_scan_dir_start(gpointer data)
2897 {
2898         int ret = MEDIA_CONTENT_ERROR_NONE;
2899
2900         const char *dir_path = "/opt/usr/media/Images";
2901
2902         ret = media_content_cancel_scan_folder(dir_path);
2903
2904         if(ret == MEDIA_CONTENT_ERROR_NONE)
2905                 media_content_debug("media_content_cancel_scan_folder is success");
2906         else
2907                 media_content_error("media_content_cancel_scan_folder is failed");
2908
2909         return false;
2910 }
2911
2912 int test_scan_dir(int cancel)
2913 {
2914         GSource *source = NULL;
2915         GMainContext *context = NULL;
2916
2917         g_loop = g_main_loop_new(NULL, FALSE);
2918         context = g_main_loop_get_context(g_loop);
2919         source = g_idle_source_new();
2920         g_source_set_callback (source, test_scan_dir_start, NULL, NULL);
2921         g_source_attach (source, context);
2922
2923         if (cancel) {
2924                 GSource *cancel_src = NULL;
2925                 cancel_src = g_idle_source_new();
2926                 g_source_set_callback (cancel_src, cancel_scan_dir_start, NULL, NULL);
2927                 g_source_attach (cancel_src, context);
2928         }
2929
2930         g_main_loop_run(g_loop);
2931         g_main_loop_unref(g_loop);
2932
2933         return 0;
2934 }
2935
2936 void _noti_cb(media_content_error_e error,
2937                                 int pid,
2938                                 media_content_db_update_item_type_e update_item,
2939                                 media_content_db_update_type_e update_type,
2940                                 media_content_type_e media_type,
2941                                 char *uuid,
2942                                 char *path,
2943                                 char *mime_type,
2944                                 void *user_data)
2945 {
2946         if (error == 0) {
2947                 media_content_debug("noti success! : %d\n", error);
2948         } else {
2949                 media_content_debug("error occured! : %d\n", error);
2950         }
2951
2952         media_content_debug("Noti from PID(%d)\n", pid);
2953
2954         if (update_item == MEDIA_ITEM_FILE) {
2955                 media_content_debug("Noti item : MEDIA_ITEM_FILE\n");
2956         } else if (update_item == MEDIA_ITEM_DIRECTORY) {
2957                 media_content_debug("Noti item : MEDIA_ITEM_DIRECTORY\n");
2958         }
2959
2960         if (update_type == MEDIA_CONTENT_INSERT) {
2961                 media_content_debug("Noti type : MEDIA_CONTENT_INSERT\n");
2962         } else if (update_type == MEDIA_CONTENT_DELETE) {
2963                 media_content_debug("Noti type : MEDIA_CONTENT_DELETE\n");
2964         } else if (update_type == MEDIA_CONTENT_UPDATE) {
2965                 media_content_debug("Noti type : MEDIA_CONTENT_UPDATE\n");
2966         }
2967
2968         media_content_debug("content type : %d\n", media_type);
2969
2970         if (path)
2971                 media_content_debug("path : %s\n", path);
2972         else
2973                 media_content_debug("path not\n");
2974
2975         if (uuid)
2976                 media_content_debug("uuid : %s\n", uuid);
2977         else
2978                 media_content_debug("uuid not\n");
2979
2980         if (mime_type)
2981                 media_content_debug("mime_type : %s\n", mime_type);
2982         else
2983                 media_content_debug("mime not\n");
2984
2985         if (user_data) media_content_debug("String : %s\n", (char *)user_data);
2986
2987         //g_main_loop_quit(g_loop);
2988         return;
2989 }
2990
2991 gboolean _send_noti_operations(gpointer data)
2992 {
2993         int ret = MEDIA_CONTENT_ERROR_NONE;
2994
2995         /* First of all, noti subscription */
2996         char *user_str = strdup("hi");
2997         media_content_set_db_updated_cb(_noti_cb, (void*)user_str);
2998
2999         /* media_info_insert_to_db */
3000         media_info_h media_item = NULL;
3001         const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
3002
3003         ret = media_info_insert_to_db(path, &media_item);
3004         if (ret != MEDIA_CONTENT_ERROR_NONE) {
3005                 media_content_error("media_info_insert_to_db failed : %d", ret);
3006                 media_info_destroy(media_item);
3007                 return FALSE;
3008         }
3009
3010         media_content_debug("media_info_insert_to_db success");
3011
3012         /* media_info_delete_batch_from_db */
3013         filter_h filter;
3014         char *condition = "MEDIA_PATH LIKE \'";
3015         strncat (condition,  tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
3016
3017         ret = media_filter_create(&filter);
3018         if(ret != MEDIA_CONTENT_ERROR_NONE) {
3019                 media_content_error("Fail to create filter");
3020                 media_info_destroy(media_item);
3021                 return ret;
3022         }
3023
3024         ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
3025         if(ret != MEDIA_CONTENT_ERROR_NONE) {
3026                 media_filter_destroy(filter);
3027                 media_info_destroy(media_item);
3028                 media_content_error("Fail to set condition");
3029                 return ret;
3030         }
3031         ret = media_info_delete_batch_from_db(filter);
3032         if(ret != MEDIA_CONTENT_ERROR_NONE) {
3033                 media_filter_destroy(filter);
3034                 media_info_destroy(media_item);
3035                 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
3036                 return ret;
3037         }
3038
3039         media_filter_destroy(filter);
3040
3041         /* media_info_update_to_db */
3042         ret = media_info_update_to_db(media_item);
3043         if(ret != MEDIA_CONTENT_ERROR_NONE) {
3044                 media_content_error("media_info_update_to_db failed : %d\n", ret);
3045                 media_info_destroy(media_item);
3046                 return ret;
3047         }
3048
3049         media_info_destroy(media_item);
3050
3051         return FALSE;
3052 }
3053
3054 int test_noti()
3055 {
3056         int ret = MEDIA_CONTENT_ERROR_NONE;
3057         GSource *source = NULL;
3058         GMainContext *context = NULL;
3059
3060         g_loop = g_main_loop_new(NULL, FALSE);
3061         context = g_main_loop_get_context(g_loop);
3062         source = g_idle_source_new();
3063         g_source_set_callback (source, _send_noti_operations, NULL, NULL);
3064         g_source_attach (source, context);
3065
3066         g_main_loop_run(g_loop);
3067         g_main_loop_unref(g_loop);
3068
3069         test_filter_destroy();
3070         media_content_unset_db_updated_cb();
3071
3072         return ret;
3073 }
3074
3075 int main(int argc, char *argv[])
3076 {
3077         int ret = MEDIA_CONTENT_ERROR_NONE;
3078
3079         media_content_debug("--- content manager test start ---\n\n");
3080
3081         ret = test_connect_database();
3082         if(ret != MEDIA_CONTENT_ERROR_NONE)
3083                 return MEDIA_CONTENT_ERROR_NONE;
3084
3085 #if 0
3086         ret = test_move();
3087         if(ret != MEDIA_CONTENT_ERROR_NONE)
3088                 return ret;
3089
3090         ret = test_gallery_scenario();
3091         if(ret != MEDIA_CONTENT_ERROR_NONE)
3092                 return ret;
3093
3094         ret = test_get_all_music_files();
3095         if(ret != MEDIA_CONTENT_ERROR_NONE)
3096                 return ret;
3097
3098         ret = test_media_info_operation();
3099         if(ret != MEDIA_CONTENT_ERROR_NONE)
3100                 return ret;
3101
3102         ret = test_folder_operation();
3103         if(ret != MEDIA_CONTENT_ERROR_NONE)
3104                 return ret;
3105
3106         ret = test_folder_update();
3107         if(ret != MEDIA_CONTENT_ERROR_NONE)
3108                 return ret;
3109
3110         ret = test_playlist_operation();
3111         if(ret != MEDIA_CONTENT_ERROR_NONE)
3112                 return ret;
3113
3114         ret = test_tag_operation();
3115         if(ret != MEDIA_CONTENT_ERROR_NONE)
3116                 return ret;
3117
3118         ret = test_bookmark_operation();
3119         if(ret != MEDIA_CONTENT_ERROR_NONE)
3120                 return ret;
3121
3122         ret = test_album_list();
3123         if(ret != MEDIA_CONTENT_ERROR_NONE)
3124                 return ret;
3125
3126         ret = test_group_operation();
3127         if(ret != MEDIA_CONTENT_ERROR_NONE)
3128                 return ret;
3129
3130         ret = test_update_operation();
3131         if(ret != MEDIA_CONTENT_ERROR_NONE)
3132                 return ret;
3133
3134         ret = test_insert();
3135         if(ret != MEDIA_CONTENT_ERROR_NONE)
3136                 return ret;
3137
3138         ret = test_move();
3139         if(ret != MEDIA_CONTENT_ERROR_NONE)
3140                 return ret;
3141
3142         ret = test_create_thumbnail(TRUE);
3143         if(ret != MEDIA_CONTENT_ERROR_NONE)
3144                 return ret;
3145
3146         ret = test_request_update_db();
3147         if(ret != MEDIA_CONTENT_ERROR_NONE)
3148                 return ret;
3149
3150         ret = DFT_test();
3151         if(ret != MEDIA_CONTENT_ERROR_NONE)
3152                 return ret;
3153
3154         ret = test_batch_operations();
3155         if(ret != MEDIA_CONTENT_ERROR_NONE)
3156                 return MEDIA_CONTENT_ERROR_NONE;
3157
3158         ret = test_insert_burst_shot_to_db();
3159         if(ret != MEDIA_CONTENT_ERROR_NONE)
3160                 return MEDIA_CONTENT_ERROR_NONE;
3161
3162         ret = test_scan_file();
3163         if(ret != MEDIA_CONTENT_ERROR_NONE)
3164                 return MEDIA_CONTENT_ERROR_NONE;
3165
3166         ret = test_scan_dir(true);
3167         if(ret != MEDIA_CONTENT_ERROR_NONE)
3168                 return MEDIA_CONTENT_ERROR_NONE;
3169
3170         ret = test_noti();
3171         if(ret != MEDIA_CONTENT_ERROR_NONE)
3172                 return MEDIA_CONTENT_ERROR_NONE;
3173 #endif
3174
3175         ret = test_disconnect_database();
3176         if(ret != MEDIA_CONTENT_ERROR_NONE)
3177                 return ret;
3178
3179         media_content_debug("--- content manager test end ---\n");
3180
3181         return ret;
3182 }