[Media Content] bug fixed for TCT
authorDongyoung Kim <dydot1.kim@samsung.com>
Wed, 11 Mar 2015 04:53:47 +0000 (13:53 +0900)
committerDongyoung Kim <dydot1.kim@samsung.com>
Wed, 11 Mar 2015 04:53:47 +0000 (13:53 +0900)
Change-Id: I1c528eeac0f07b683b700852b0b40006cbd61ee2

src/content/content_api.js
src/content/content_instance.cc
src/content/content_manager.cc
src/content/content_manager.h

index c173839a2af4acec242a0b17e1ef8b34f1458ccc..c18671f01355700b882b556abc548259d7716033 100755 (executable)
@@ -90,7 +90,7 @@ function PlaylistItem(content,playlist_member_id) {
   var member_id = playlist_member_id;
   Object.defineProperties(this, {
     'content': { writable: false, value: content, enumerable: true },
-    'member_id': {
+    'member_id': {enumerable: false,
       set: function(v) { if (v != null) member_id = v},
       get: function() { return member_id; }
     }
@@ -102,7 +102,6 @@ Playlist.prototype.add = function(item) {
   var args = validator_.validateArgs(arguments, [
     {'name' : 'item', 'type': types_.PLATFORM_OBJECT, 'values': Content, 'optional' : false, 'nullable' : false}
   ]);
-  console.log("[dykim]Playlist add entered1");
   var nativeParam = {
     'playlist_id': this.id
   };
@@ -137,7 +136,7 @@ Playlist.prototype.remove = function(item) {
 Playlist.prototype.removeBatch = function(items) {
   var args = validator_.validateArgs(arguments, [
     {'name' : 'items', 'type': types_.ARRAY},
-    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},  
+    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},
     {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true}
   ]);
 
@@ -149,16 +148,13 @@ Playlist.prototype.removeBatch = function(items) {
   if (args['items']) {
     for (var i = 0; i < args.items.length; i++) {
       var c = args.items[i];
-      console.log("member_id:" + c.member_id);
       nativeParam.members.push(c.member_id);
     }
-    console.log("nativeParam['members']:" + nativeParam["members"]);
   }
 
   try {
     var syncResult = callNativeWithCallback('ContentPlaylist_removeBatch', nativeParam, function(result) {
       if (result.status == 'success') {
-        console.log("[dykim]ContentPlaylist_removeBatch successCallback entered");
         args.successCallback();
       }
       else if(result.status == 'error') {
@@ -201,14 +197,10 @@ Playlist.prototype.get = function() {
     var syncResult = callNativeWithCallback('ContentPlaylist_get', nativeParam, function(result) {
       if (result.status == 'success') {
         var items = [];
-        console.log("successCallback Playlist get:%d",result.value.length);
         for (var i = 0; i < result.value.length; i++) {
           var c = result.value[i];
-          console.log("name:" + c.name);
-          console.log("playlist_member_id:" + c.playlist_member_id);
-          var content = new Content(c.id, c.name);
+          var content = createContent(c);
           var item = new PlaylistItem(content,c.playlist_member_id);
-          console.log("item :" + item.member_id);
           items.push(item);
         }
         args.successCallback(items);
@@ -227,8 +219,8 @@ Playlist.prototype.get = function() {
 Playlist.prototype.addBatch = function() {
   var args = validator_.validateArgs(arguments, [
     {'name' : 'items', 'type': types_.ARRAY},
-    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},  
-    {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true} 
+    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},
+    {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true}
   ]);
 
   var nativeParam = {
@@ -255,8 +247,8 @@ Playlist.prototype.addBatch = function() {
 Playlist.prototype.setOrder  = function() {
   var args = validator_.validateArgs(arguments, [
     {'name' : 'items', 'type': types_.ARRAY},
-    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},  
-    {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true} 
+    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},
+    {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true}
   ]);
 
   var nativeParam = {
@@ -267,7 +259,6 @@ Playlist.prototype.setOrder  = function() {
   if (args['items']) {
     for (var i = 0; i < args.items.length; i++) {
       var c = args.items[i];
-      console.log("member_id:" + c.member_id);
       nativeParam.members.push(c.member_id);
     }
   }
@@ -291,23 +282,20 @@ Playlist.prototype.move  = function(item, delta) {
   var args = validator_.validateArgs(arguments, [
     {'name' : 'item', 'type': types_.PLATFORM_OBJECT, 'values': PlaylistItem},
     {'name' : 'delta', 'type': types_.LONG},
-    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},  
-    {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true} 
+    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},
+    {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true}
   ]);
 
   var nativeParam = {
     'playlist_id': this.id,
-    'member_id': args.item.member_id
+    'member_id': args.item.member_id,
+    'delta' : args.delta
   };
-
-  if (args['delta']) {
-    nativeParam['delta'] = delta;
-  }
-
+  
   try {
+
     var syncResult = callNativeWithCallback('ContentPlaylist_move', nativeParam, function(result) {
       if (result.status == 'success') {
-          console.log("[dykim]ContentPlaylist_move successCallback entered");
           args.successCallback();
       }
       else if(result.status == 'error') {
@@ -428,7 +416,7 @@ function AudioContentLyrics(type, timestamps, texts) {
 
 function AudioContent(obj, album, genres, artists, composers, copyright,
   bitrate, trackNumber, duration) {
-  var lyrics_ = undefined;
+  var lyrics_ = null;
   function getLyrics(contentURI) {
     var nativeParam = {
       'contentURI': contentURI
@@ -467,6 +455,9 @@ function AudioContent(obj, album, genres, artists, composers, copyright,
                if(lyrics_ === undefined) {
                        getLyrics(obj.contentURI);
                }
+          else if(lyrics_ === null) {
+            lyrics_ = undefined;
+          }
                return lyrics_;
         }
       }
@@ -498,7 +489,7 @@ function createContent(c) {
   }
   else if (c.type === "VIDEO") {
     var video = new VideoContent(content,
-      c.geo,
+      c.geolocation,
       c.album,
       c.artists,
       c.duration,
@@ -526,14 +517,12 @@ function ContentManager() {
     // constructor of ContentManager
 }
 
-
+//void update (Content content)
 ContentManager.prototype.update = function(content) {
   var args = validator_.validateArgs(arguments, [
-    {'name' : 'content', 'type': types_.PLATFORM_OBJECT}
+    {'name' : 'content', 'type': types_.PLATFORM_OBJECT, 'values': Content}
   ]);
-  console.log("[dykim]update entered1 id:" + content.id);
-  var nativeParam = {
-  };
+  var nativeParam = {};
   if (args['content']) {
       nativeParam['content'] = args.content;
   }
@@ -547,8 +536,8 @@ ContentManager.prototype.update = function(content) {
 ContentManager.prototype.updateBatch = function(contents) {
   var args = validator_.validateArgs(arguments, [
     {'name' : 'contents', 'type': types_.ARRAY},  
-    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},  
-    {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true} 
+    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},
+    {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true}
   ]);
 
   var nativeParam = {
@@ -571,7 +560,6 @@ ContentManager.prototype.updateBatch = function(contents) {
 }
 
 ContentManager.prototype.getDirectories = function(successCallback) {
-  console.log("[dykim]getDirectories entered");
   var args = validator_.validateArgs(arguments, [
       {'name' : 'successCallback', 'type': types_.FUNCTION, optional : false, nullable : false},  
       {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true} 
@@ -583,7 +571,6 @@ ContentManager.prototype.getDirectories = function(successCallback) {
   try {
     var syncResult = callNativeWithCallback('ContentManager_getDirectories', nativeParam, function(result) {
       if (result.status == 'success') {
-        console.log("[dykim]getDirectories successCallback entered");
         var dirs = [];
 
         for (var i = 0; i < result.value.length; i++) {
@@ -619,8 +606,8 @@ ContentManager.prototype.find = function(successCallback) {
       {'name' : 'directoryId', 'type': types_.STRING, optional : true, nullable : true},  
       {'name' : 'filter', 'type': types_.DICTIONARY, optional : true, nullable : true},  
       {'name' : 'sortMode', 'type': types_.DICTIONARY, optional : true, nullable : true},  
-      {'name' : 'count', 'type': types_.LONG, optional : true},  
-      {'name' : 'offset', 'type': types_.LONG, optional : true} 
+      {'name' : 'count', 'type': types_.UNSIGNED_LONG, optional : true},
+      {'name' : 'offset', 'type': types_.UNSIGNED_LONG, optional : true}
   ]);
 
   var nativeParam = {
@@ -645,7 +632,6 @@ ContentManager.prototype.find = function(successCallback) {
     var syncResult = callNativeWithCallback('ContentManager_find', nativeParam, function(result) {
       if (result.status == 'success') {
         var contents = [];
-        console.log("successCallback find:%d",result.value.length);
         for ( var i = 0; i < result.value.length; i++) {
           var c = result.value[i];
 
@@ -668,11 +654,10 @@ ContentManager.prototype.find = function(successCallback) {
 }
 
 ContentManager.prototype.scanFile = function(contentURI) {
-  console.log("[dykim]scanFile entered");
   var args = validator_.validateArgs(arguments, [
     {'name' : 'contentURI', 'type': types_.STRING},  
-    {'name' : 'successCallback', 'type': types_.FUNCTION, 'values' : ['onsuccess'], optional : true, nullable : true},  
-    {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true} 
+    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},
+    {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true}
   ]);
 
   var nativeParam = {
@@ -699,7 +684,6 @@ ContentManager.prototype.scanFile = function(contentURI) {
 }
 
 ContentManager.prototype.setChangeListener = function(changeCallback) {
-  console.log("[dykim]setChangeListener entered");
   var args = validator_.validateArgs(arguments, [
       {'name' : 'changeCallback', 'type': types_.LISTENER, 'values' : ['oncontentadded', 'oncontentupdated', 'oncontentremoved']} 
   ]);
@@ -709,19 +693,16 @@ ContentManager.prototype.setChangeListener = function(changeCallback) {
   try {
     var syncResult = callNativeWithCallback('ContentManager_setChangeListener', nativeParam, function(result) {
       if (result.status == 'oncontentadded') {
-        console.log("[dykim]setChangeListener oncontentadded");
         var c = result['value'];
         var content = createContent(c);
         args.changeCallback.oncontentadded(content);
       }
       if (result.status == 'oncontentupdated') {
-        console.log("[dykim]setChangeListener oncontentupdated");
         var c = result['value'];
         var content = createContent(c);
         args.changeCallback.oncontentupdated(content);
       }
       if (result.status == 'oncontentremoved') {
-        console.log("[dykim]setChangeListener oncontentremoved");
         var contentId = result['value'];
         args.changeCallback.oncontentremoved(contentId);
       }
@@ -730,7 +711,6 @@ ContentManager.prototype.setChangeListener = function(changeCallback) {
   } catch(e) {
       throw e;
   }
-  console.log("[dykim]setChangeListener ended");
 }
 
 ContentManager.prototype.unsetChangeListener = function() {
@@ -744,7 +724,6 @@ ContentManager.prototype.unsetChangeListener = function() {
 }
 
 ContentManager.prototype.getPlaylists = function(successCallback) {
-  console.log("[dykim]getPlaylists start");
   var args = validator_.validateArgs(arguments, [
     {'name' : 'successCallback', 'type': types_.FUNCTION},  
     {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true} 
@@ -772,11 +751,9 @@ ContentManager.prototype.getPlaylists = function(successCallback) {
   } catch(e) {
     throw e;
   }
-  console.log("[dykim]getPlaylists end");
 }
 
 ContentManager.prototype.createPlaylist = function(name, successCallback) {
-  console.log("[dykim]createPlaylist start");
   var args = validator_.validateArgs(arguments, [
     {'name' : 'name', 'type': types_.STRING},  
     {'name' : 'successCallback', 'type': types_.FUNCTION},  
@@ -810,11 +787,10 @@ ContentManager.prototype.createPlaylist = function(name, successCallback) {
 }
 
 ContentManager.prototype.removePlaylist = function(id) {
-  console.log("[dykim]removePlaylist start");
   var args = validator_.validateArgs(arguments, [
     {'name' : 'id', 'type': types_.STRING},  
-    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},  
-    {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true} 
+    {'name' : 'successCallback', 'type': types_.FUNCTION, optional : true, nullable : true},
+    {'name' : 'errorCallback', 'type': types_.FUNCTION, optional : true, nullable : true}
   ]);
 
   var nativeParam = {
@@ -834,8 +810,6 @@ ContentManager.prototype.removePlaylist = function(id) {
   } catch(e) {
     throw e;
   }
-
-  console.log("[dykim]removePlaylist end");
 }
 
 
index 361111942ae93f15405fea72930154fc5430da69..ed6cf97db40b297d571a3cb77f9e8d26e506a98f 100755 (executable)
@@ -77,7 +77,6 @@ static gboolean CompletedCallback(const std::shared_ptr<ReplyCallbackData>& user
 
   picojson::value::object reply;
   reply["value"] = user_data->result;
-  LoggerE("CompletedCallback...(%d)" , user_data->isSuccess);
   ReplyAsync(user_data->instance,user_data->cbType,user_data->callbackId,user_data->isSuccess,reply);
 
   return false;  
@@ -89,18 +88,15 @@ static void* WorkThread(const std::shared_ptr<ReplyCallbackData>& user_data) {
   ContentCallbacks cbType = user_data->cbType;
   switch(cbType) {
     case ContentManagerUpdatebatchCallback: {
-      LoggerE("ContentManagerUpdatebatchCallback...");
       ContentManager::getInstance()->updateBatch(user_data->args);
       break;
     }
     case ContentManagerGetdirectoriesCallback: {
-      LoggerE("ContentManagerGetdirectoriesCallback...");
       ContentManager::getInstance()->getDirectories(user_data);
       break;
     }
     case ContentManagerFindCallback: {
       ContentManager::getInstance()->find(user_data);        
-      LoggerE("ContentManagerFindCallback...:%s", user_data->result.serialize().c_str());
       break;
     }
     case ContentManagerScanfileCallback: {
@@ -109,12 +105,10 @@ static void* WorkThread(const std::shared_ptr<ReplyCallbackData>& user_data) {
       break;
     }
     case ContentManagerGetplaylistsCallback: {
-      LoggerE("ContentManagerGetplaylistsCallback...");
       ContentManager::getInstance()->getPlaylists(user_data);
       break;
     }
     case ContentManagerCreateplaylistCallback: {
-      LoggerE("ContentManagerCreateplaylistCallback...");
       if (user_data->args.contains("sourcePlaylist")) {
         picojson::object playlist = user_data->args.get("sourcePlaylist").get<picojson::object>();
         user_data->isSuccess = true;
@@ -134,28 +128,26 @@ static void* WorkThread(const std::shared_ptr<ReplyCallbackData>& user_data) {
       break;
     }
     case ContentManagerPlaylistAddbatchCallback: {
-      LoggerE("ContentManagerPlaylistAddBatchCallback...");
       ContentManager::getInstance()->playlistAddbatch(user_data);
       break;
     }
     case ContentManagerPlaylistGetCallback: {
-      LoggerE("ContentManagerPlaylistGetCallback...");
       ContentManager::getInstance()->playlistGet(user_data);
       break;
     }
     case ContentManagerPlaylistRemovebatchCallback: {
-      LoggerE("ContentManagerPlaylistGetCallback...");
       ContentManager::getInstance()->playlistRemovebatch(user_data);
       break;
     }
     case ContentManagerPlaylistSetOrderCallback: {
-      LoggerE("ContentManagerPlaylistSetOrderCallback...");
       ContentManager::getInstance()->playlistSetOrder(user_data);
       break;
       //ContentManagerPlaylistSetOrderCallback
     }
     case ContentManagerPlaylistMoveCallback: {
-      LoggerE("ContentManagerPlaylistMove...");
+      std::string playlist_id = user_data->args.get("playlist_id").get<std::string>();   
+      double member_id = user_data->args.get("member_id").get<double>();
+      double delta = user_data->args.get("delta").get<double>();  
       ContentManager::getInstance()->playlistMove(user_data);
       break;
     }
@@ -178,8 +170,7 @@ static void changedContentCallback(media_content_error_e error, int pid, media_c
   char *uuid, char *path, char *mime_type, void* user_data) {
 
   int ret;
-  std::shared_ptr<ReplyCallbackData> *cbData = (std::shared_ptr<ReplyCallbackData>*)(user_data);
-  LoggerE("ContentInstance::ContentManagerScanfile");
+  ReplyCallbackData *cbData = static_cast<ReplyCallbackData*>(user_data);
   picojson::object reply;
   
   picojson::object o;
@@ -190,7 +181,7 @@ static void changedContentCallback(media_content_error_e error, int pid, media_c
         std::string id(uuid);
         ret = media_info_get_media_from_db(id.c_str(), &media);
         if (ret == MEDIA_CONTENT_ERROR_NONE && media != NULL) {
-          ContentManager::getInstance()->contentToJson(media, o);
+          contentToJson(media, o);
           reply["value"] = picojson::value(o);
           if (update_type == MEDIA_CONTENT_INSERT) {
             reply["status"] = picojson::value("oncontentadded");
@@ -209,9 +200,10 @@ static void changedContentCallback(media_content_error_e error, int pid, media_c
   else {
     return;
   }
-  reply["callbackId"] = picojson::value(static_cast<double>((*cbData)->callbackId));
+  reply["callbackId"] = picojson::value(static_cast<double>(cbData->callbackId));
   picojson::value result = picojson::value(reply);
-  (*cbData)->instance->PostMessage(result.serialize().c_str());
+  cbData->instance->PostMessage(result.serialize().c_str());
+  delete cbData;
 }
 
 
@@ -223,7 +215,6 @@ static void changedContentCallback(media_content_error_e error, int pid, media_c
 
 
 void ContentInstance::ContentManagerUpdate(const picojson::value& args, picojson::object& out) {
-  LoggerE("ContentInstance::ContentManagerUpdate");
   int ret;
   if(ContentManager::getInstance()->isConnected()) {
     ret = ContentManager::getInstance()->update(args);
@@ -253,7 +244,6 @@ void ContentInstance::ContentManagerUpdatebatch(const picojson::value& args, pic
   common::TaskQueue::GetInstance().Queue<ReplyCallbackData>(WorkThread, CompletedCallback, cbData);
 }
 void ContentInstance::ContentManagerGetdirectories(const picojson::value& args, picojson::object& out) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentInstance::getDirectories started");
   CHECK_EXIST(args, "callbackId", out)
 
   double callbackId = args.get("callbackId").get<double>();
@@ -271,19 +261,10 @@ void ContentInstance::ContentManagerGetdirectories(const picojson::value& args,
   }
   common::TaskQueue::GetInstance().Queue<ReplyCallbackData>(WorkThread, CompletedCallback, cbData);
 
-  // call ReplyAsync in later (Asynchronously)
-  
-  // if success
-  //ReportSuccess(out);
-  // if error
-  // ReportError(out);
 }
 void ContentInstance::ContentManagerFind(const picojson::value& args, picojson::object& out) {
   CHECK_EXIST(args, "callbackId", out)
 
-  //double count = args.get("count").get<double>();
-  //double offset = args.get("offset").get<double>();
-
   double callbackId = args.get("callbackId").get<double>();
   
   auto cbData = std::shared_ptr<ReplyCallbackData>(new ReplyCallbackData);
@@ -298,17 +279,9 @@ void ContentInstance::ContentManagerFind(const picojson::value& args, picojson::
   }
 
   common::TaskQueue::GetInstance().Queue<ReplyCallbackData>(WorkThread, CompletedCallback, cbData);
-  // implement it
-
-  // call ReplyAsync in later (Asynchronously)
-
-  // if success
-  // ReportSuccess(out);
-  // if error
-  // ReportError(out);
+  
 }
 void ContentInstance::ContentManagerScanfile(const picojson::value& args, picojson::object& out) {
-  LoggerE("ContentInstance::ContentManagerScanfile");
   CHECK_EXIST(args, "callbackId", out)
   CHECK_EXIST(args, "contentURI", out)
 
@@ -324,20 +297,14 @@ void ContentInstance::ContentManagerScanfile(const picojson::value& args, picojs
     cbData->cbType = ContentManagerErrorCallback;
   }
   common::TaskQueue::GetInstance().Queue<ReplyCallbackData>(WorkThread, CompletedCallback, cbData);
-  // implement it
-  // call ReplyAsync in later (Asynchronously)
-
-  // if success
-  // ReportSuccess(out);
-  // if error
-  // ReportError(out);
 }
 void ContentInstance::ContentManagerSetchangelistener(const picojson::value& args, picojson::object& out) {
   CHECK_EXIST(args, "callbackId", out)
 
   double callbackId = args.get("callbackId").get<double>();
+//  std::shared_ptr<ReplyCallbackData>cbData(new ReplyCallbackData);
 
-  std::shared_ptr<ReplyCallbackData>cbData(new ReplyCallbackData);
+  ReplyCallbackData *cbData = new ReplyCallbackData();
   
   cbData->callbackId = callbackId;
   cbData->instance = this;
@@ -349,28 +316,15 @@ void ContentInstance::ContentManagerSetchangelistener(const picojson::value& arg
     cbData->cbType = ContentManagerErrorCallback;
   }
 
-  ContentManager::getInstance()->setChangeListener(changedContentCallback,static_cast<void*>(&cbData));
-  
-  // implement it
-
-  // call ReplyAsync in later (Asynchronously)
+  ContentManager::getInstance()->setChangeListener(changedContentCallback,static_cast<void*>(cbData));
 
-  // if success
-  // ReportSuccess(out);
-  // if error
-  // ReportError(out);
 }
 void ContentInstance::ContentManagerUnsetchangelistener(const picojson::value& args, picojson::object& out) {
 
   ContentManager::getInstance()->unSetChangeListener();
 
-  // if success
-  // ReportSuccess(out);
-  // if error
-  // ReportError(out);
 }
 void ContentInstance::ContentManagerGetplaylists(const picojson::value& args, picojson::object& out) {
-  LoggerE("ContentInstance::ContentManagerGetplaylists");
   CHECK_EXIST(args, "callbackId", out)
 
   double callbackId = args.get("callbackId").get<double>();
@@ -392,7 +346,6 @@ void ContentInstance::ContentManagerGetplaylists(const picojson::value& args, pi
   
 }
 void ContentInstance::ContentManagerCreateplaylist(const picojson::value& args, picojson::object& out) {
-  LoggerE("ContentInstance::ContentManagerCreateplaylist");
   CHECK_EXIST(args, "callbackId", out)
   CHECK_EXIST(args, "name", out)
 
@@ -414,8 +367,6 @@ void ContentInstance::ContentManagerCreateplaylist(const picojson::value& args,
   common::TaskQueue::GetInstance().Queue<ReplyCallbackData>(WorkThread, CompletedCallback, cbData);
 }
 void ContentInstance::ContentManagerRemoveplaylist(const picojson::value& args, picojson::object& out) {
-  LoggerE("ContentInstance::ContentManagerRemoveplaylist");
-
   double callbackId = args.get("callbackId").get<double>();
 
   auto cbData = std::shared_ptr<ReplyCallbackData>(new ReplyCallbackData);
@@ -433,20 +384,13 @@ void ContentInstance::ContentManagerRemoveplaylist(const picojson::value& args,
   // implement it
   common::TaskQueue::GetInstance().Queue<ReplyCallbackData>(WorkThread, CompletedCallback, cbData);
 
-
-  // if success
-  // ReportSuccess(out);
-  // if error
-  // ReportError(out);
 }
 
 void ContentInstance::ContentManagerPlaylistAdd(const picojson::value& args, picojson::object& out) {
-  LoggerE("ContentInstance::ContentManagerPlaylistAdd");
   int ret;
   if(ContentManager::getInstance()->isConnected()) {
     std::string playlist_id = args.get("playlist_id").get<std::string>();
     std::string content_id = args.get("content_id").get<std::string>();
-    LoggerE("playlist:%s / content:%s", playlist_id.c_str() , content_id.c_str());
     ret = ContentManager::getInstance()->playlistAdd(playlist_id, content_id);
     if(ret != MEDIA_CONTENT_ERROR_NONE) {
       ReportError(ContentManager::getInstance()->convertError(ret),out);
@@ -495,12 +439,10 @@ void ContentInstance::ContentManagerPlaylistGet(const picojson::value& args, pic
 }
 
 void ContentInstance::ContentManagerPlaylistRemove(const picojson::value& args, picojson::object& out) {
-  LoggerE("ContentInstance::ContentManagerPlaylistRemove");
   int ret;
   if(ContentManager::getInstance()->isConnected()) {
     std::string playlist_id = args.get("playlist_id").get<std::string>();
     int member_id = args.get("member_id").get<double>();
-    LoggerE("playlist:%s / member_id:%d", playlist_id.c_str() , member_id);
     ret = ContentManager::getInstance()->playlistRemove(playlist_id, member_id);
     if(ret != MEDIA_CONTENT_ERROR_NONE) {
       ReportError(ContentManager::getInstance()->convertError(ret),out);
@@ -556,7 +498,7 @@ void ContentInstance::ContentManagerPlaylistMove(const picojson::value& args, pi
   cbData->callbackId = callbackId;
   cbData->instance = this;
   cbData->args = args;
-  
+
   if(ContentManager::getInstance()->isConnected()) {
     cbData->cbType = ContentManagerPlaylistMoveCallback;
   }
@@ -567,7 +509,6 @@ void ContentInstance::ContentManagerPlaylistMove(const picojson::value& args, pi
 }
 
 void ContentInstance::ContentManagerAudioGetLyrics(const picojson::value& args, picojson::object& out) {
-  LoggerE("ContentInstance::ContentManagerAudioGetLyrics");
   int ret;
   picojson::object lyrics;
   if(ContentManager::getInstance()->isConnected()) {
index 4ea9cc92357920be1310d36c050ef965333572c7..df77c4b7ce89d4ace64c6369b7decc70e9e21e04 100755 (executable)
@@ -105,7 +105,7 @@ static std::string convertPathToUri(const string str) {
 }
 
 
-static void contentToJson(media_info_h info, picojson::object& o) {
+void contentToJson(media_info_h info, picojson::object& o) {
   int ret;
   int tmpInt = 0;
   bool tmpBool = false;
@@ -113,7 +113,6 @@ static void contentToJson(media_info_h info, picojson::object& o) {
   time_t tmpDate;
   double tmpDouble;
   long long unsigned int tmpLong;
-  
   media_content_type_e type;
   ret == media_info_get_media_type(info, &type);
   if(ret != MEDIA_CONTENT_ERROR_NONE) {
@@ -141,7 +140,6 @@ static void contentToJson(media_info_h info, picojson::object& o) {
         if(MEDIA_CONTENT_ERROR_NONE == image_meta_get_width(img, &tmpInt) ) {
           o["width"] = picojson::value(static_cast<double>(tmpInt));
         }
-
         if(MEDIA_CONTENT_ERROR_NONE == image_meta_get_height(img, &tmpInt) ) {
           o["height"] = picojson::value(static_cast<double>(tmpInt));          
         }
@@ -154,9 +152,7 @@ static void contentToJson(media_info_h info, picojson::object& o) {
         if(MEDIA_CONTENT_ERROR_NONE == media_info_get_longitude(info, &tmpDouble) ) {
           geo["longitude"] = picojson::value(tmpDouble);
         }
-        
         o["geolocation"] = picojson::value(geo);
-
         std::string ori;
         media_content_orientation_e orientation;
         if(MEDIA_CONTENT_ERROR_NONE == image_meta_get_orientation(img, &orientation) ) {
@@ -299,17 +295,19 @@ static void contentToJson(media_info_h info, picojson::object& o) {
         if (MEDIA_CONTENT_ERROR_NONE == audio_meta_get_bit_rate(audio, &tmpInt)){
           o["bitrate"] = picojson::value(static_cast<double>(tmpInt));
         }
-        if (MEDIA_CONTENT_ERROR_NONE == audio_meta_get_track_num (audio, &tmpStr)){
+        if (MEDIA_CONTENT_ERROR_NONE == audio_meta_get_track_num(audio, &tmpStr)){
           if(tmpStr) {
-            o["trackNumber"] = picojson::value(static_cast<double>(std::stoi(tmpStr)));
+            o["trackNumber"] = picojson::value(static_cast<double>(std::atoi(tmpStr)));
             free(tmpStr);
             tmpStr = NULL;
           }
+          else {
+            o["trackNumber"] = picojson::value();
+          }
         }
         if (MEDIA_CONTENT_ERROR_NONE == audio_meta_get_duration(audio, &tmpInt) ) {
           o["duration"] = picojson::value(static_cast<double>(tmpInt));          
         }
-        
       }
     }
     else {
@@ -325,7 +323,6 @@ static void contentToJson(media_info_h info, picojson::object& o) {
       tmpStr = NULL;
     }
   }
-  
   ret = media_info_get_display_name(info, &tmpStr);
   if(ret == MEDIA_CONTENT_ERROR_NONE) {
     if(tmpStr) {
@@ -334,7 +331,7 @@ static void contentToJson(media_info_h info, picojson::object& o) {
       tmpStr = NULL;
     }
   }
-
   ret = media_info_get_mime_type(info, &tmpStr);
   if(ret == MEDIA_CONTENT_ERROR_NONE) {
     if(tmpStr) {
@@ -343,7 +340,6 @@ static void contentToJson(media_info_h info, picojson::object& o) {
       tmpStr = NULL;
     }
   }    
-
   ret = media_info_get_title(info, &tmpStr);
   if(ret == MEDIA_CONTENT_ERROR_NONE) {
     if(tmpStr) {
@@ -360,7 +356,6 @@ static void contentToJson(media_info_h info, picojson::object& o) {
       tmpStr = NULL;
     }
   }
-  //dykim. thumbnailURIs
   ret = media_info_get_thumbnail_path(info, &tmpStr);
   if(ret == MEDIA_CONTENT_ERROR_NONE) {
     if(tmpStr) {
@@ -370,7 +365,6 @@ static void contentToJson(media_info_h info, picojson::object& o) {
       tmpStr = NULL;
     }
   }
-
   ret = media_info_get_description(info, &tmpStr);
   if(ret == MEDIA_CONTENT_ERROR_NONE) {
     if(tmpStr) {
@@ -379,22 +373,18 @@ static void contentToJson(media_info_h info, picojson::object& o) {
       tmpStr = NULL;
     }
   }
-
   ret = media_info_get_rating(info, &tmpInt);
   if(ret == MEDIA_CONTENT_ERROR_NONE) {
     o["rating"] = picojson::value(static_cast<double>(tmpInt));
   }
-
   ret = media_info_get_size(info, &tmpLong);
   if(ret == MEDIA_CONTENT_ERROR_NONE) {
     o["size"] = picojson::value(static_cast<double>(tmpLong));
   }
-
   ret = media_info_get_favorite(info, &tmpBool);
   if(ret == MEDIA_CONTENT_ERROR_NONE) {
     o["isFavorite"] = picojson::value(tmpBool);    
   }
-
   ret = media_info_get_modified_time(info, &tmpDate);
   if(ret == MEDIA_CONTENT_ERROR_NONE) {
     std::stringstream str_date;
@@ -404,7 +394,6 @@ static void contentToJson(media_info_h info, picojson::object& o) {
 }
 
 static int setContent(media_info_h media, picojson::value content) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::setContent start");
   
   int ret;
   std::string name = content.get("name").to_str();
@@ -443,7 +432,6 @@ static int setContent(media_info_h media, picojson::value content) {
     }
     if (type == MEDIA_CONTENT_TYPE_IMAGE || type == MEDIA_CONTENT_TYPE_VIDEO) {
       picojson::value geo = content.get("geolocation");
-
       double latitude = atof(geo.get("latitude").to_str().c_str());
       double longitude = atof(geo.get("longitude ").to_str().c_str());
       ret = media_info_set_latitude(media, latitude);
@@ -464,17 +452,13 @@ static int setContent(media_info_h media, picojson::value content) {
 }
 
 static bool media_foreach_directory_cb(media_folder_h folder, void *user_data) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::media_foreach_directory_cb start");
   std::vector<media_folder_h> *dir = static_cast<std::vector<media_folder_h>*>(user_data);
   media_folder_h nfolder = NULL;
   media_folder_clone (&nfolder, folder);
   dir->push_back(nfolder);
-
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::media_foreach_directory_cb end");  
 }
 
 static bool media_foreach_content_cb(media_info_h media, void *user_data) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::media_foreach_content_cb start.");
   picojson::value::array *contents = static_cast<picojson::value::array*>(user_data);
   picojson::value::object o;
 
@@ -484,7 +468,6 @@ static bool media_foreach_content_cb(media_info_h media, void *user_data) {
 }
 
 static bool playlist_foreach_cb(media_playlist_h playlist, void *user_data) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlist_foreach_cb start");
 
   picojson::value::array *playlists = static_cast<picojson::value::array*>(user_data);
   picojson::value::object o;
@@ -499,7 +482,7 @@ static bool playlist_foreach_cb(media_playlist_h playlist, void *user_data) {
       o["id"] = picojson::value(std::to_string(id));
     }
     else {
-      dlog_print(DLOG_INFO, "DYKIM", "Invalid ID for playlist.");
+      LoggerD("Invalid ID for playlist.");
     }
     if( media_playlist_get_thumbnail_path(playlist, &thumb_path) == MEDIA_CONTENT_ERROR_NONE) {
       if (thumb_path != NULL) {
@@ -511,41 +494,36 @@ static bool playlist_foreach_cb(media_playlist_h playlist, void *user_data) {
       }
     }
     else {
-      dlog_print(DLOG_INFO, "DYKIM", "Invalid thumbnail path for playlist.");
+      LoggerD("Invalid thumbnail path for playlist.");
     }
     if( media_playlist_get_name(playlist, &name) == MEDIA_CONTENT_ERROR_NONE) {
       o["name"] = picojson::value(std::string(name));
       free(name);
     }
     else {
-      dlog_print(DLOG_INFO, "DYKIM", "Invalid name for playlist.");
+      LoggerD("Invalid name for playlist.");
     }
 
-//    media_filter_create(&filter);
-//    if( media_playlist_get_media_count_from_db(id, filter, &cnt) == MEDIA_CONTENT_ERROR_NONE) {
-//      std::stringstream str_cnd;
-//      str_cnd << cnt;
-      o["numberOfTracks"] = picojson::value(static_cast<double>(0));
-//    }
-//    else {
-//      dlog_print(DLOG_INFO, "DYKIM", "Invalid count for playlist.");
-//    }
+    media_filter_create(&filter);
+    if( media_playlist_get_media_count_from_db(id, filter, &cnt) == MEDIA_CONTENT_ERROR_NONE) {
+      o["numberOfTracks"] = picojson::value(static_cast<double>(cnt));
+    }
+    else {
+      LoggerD("Invalid count for playlist.");
+    }
     playlists->push_back(picojson::value(o));
 
   }
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlist_foreach_cb end.");
   return true;
 }
 
 static bool playlist_content_member_cb(int playlist_member_id, media_info_h media, void *user_data) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlist_content_member_cb start.");
   
   picojson::value::array *contents = static_cast<picojson::value::array*>(user_data);
   picojson::value::object o;
   char *name = NULL;
   
   media_info_get_display_name(media, &name);
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlist_content_member_cb %s.",name);
   o["playlist_member_id"] = picojson::value(static_cast<double>(playlist_member_id));
   contentToJson(media, o);
   contents->push_back(picojson::value(o));
@@ -580,7 +558,6 @@ bool ContentManager::isConnected() {
 }
 
 void ContentManager::getDirectories(const std::shared_ptr<ReplyCallbackData>& user_data) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::getDirectories start");
   
   picojson::value::array pico_dirs;
   
@@ -636,7 +613,6 @@ void ContentManager::getDirectories(const std::shared_ptr<ReplyCallbackData>& us
 }
 
 void ContentManager::find(const std::shared_ptr<ReplyCallbackData>& user_data) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::find start");
   int ret;
   double count, offset;
   std::string dirId, attributeName, matchFlag, matchValue;
@@ -645,7 +621,6 @@ void ContentManager::find(const std::shared_ptr<ReplyCallbackData>& user_data) {
 
   picojson::value::array arrayContent;
   filter_h filter = NULL;
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::find start1");
   ret = media_filter_create(&filter);
 
   if(ret != MEDIA_CONTENT_ERROR_NONE) {
@@ -655,7 +630,7 @@ void ContentManager::find(const std::shared_ptr<ReplyCallbackData>& user_data) {
     return;    
   }
   if(user_data->args.contains("filter")) {
-    //dykim. filter
+    //to be implemented. dykim.
     picojson::value vfilter = user_data->args.get("filter");
     if (!vfilter.is<picojson::null>() && vfilter.is<picojson::object>()) {
       attributeName = vfilter.get("attributeName").to_str();
@@ -724,17 +699,15 @@ int ContentManager::scanFile(std::string& uri) {
 }
 
 int ContentManager::setChangeListener(media_content_db_update_cb callback, void *user_data) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::setChangeListener start");
 
   int ret = media_content_set_db_updated_cb(callback, user_data);
   if(ret != MEDIA_CONTENT_ERROR_NONE) {
     throw UnknownException("registering the listener is failed.");
   }
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::media_content_db_update_cb end");
+
 }
 
 void ContentManager::unSetChangeListener() {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::unSetChangeListener start");
   int ret = media_content_unset_db_updated_cb();
   if(ret != MEDIA_CONTENT_ERROR_NONE) {
     throw UnknownException("unSetChangeListener is failed.");
@@ -744,9 +717,8 @@ void ContentManager::unSetChangeListener() {
 void ContentManager::createPlaylist(std::string name, 
   const std::shared_ptr<ReplyCallbackData>& user_data) {
   
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::createPlaylist start");
   media_playlist_h     playlist = NULL;
-
+  
   int ret = media_playlist_insert_to_db(name.c_str(),&playlist);
   if(ret != MEDIA_CONTENT_ERROR_NONE) { 
     UnknownException err("creation of playlist is failed.");
@@ -779,21 +751,21 @@ void ContentManager::createPlaylist(std::string name,
       }
     }
     else {
-      dlog_print(DLOG_INFO, "DYKIM", "Invalid thumbnail path for playlist.");
+      LoggerD("Invalid thumbnail path for playlist.");
     }
     if( media_playlist_get_name(playlist, &name) == MEDIA_CONTENT_ERROR_NONE) {
       o["name"] = picojson::value(std::string(name));      
       free(name);
     }
     else {
-      dlog_print(DLOG_INFO, "DYKIM", "Invalid name for playlist.");
+      LoggerD("Invalid name for playlist.");
     }
     media_filter_create(&filter);
     if( media_playlist_get_media_count_from_db(id, filter, &cnt) == MEDIA_CONTENT_ERROR_NONE) {
       o["numberOfTracks"] = picojson::value(static_cast<double>(cnt));
     }
     else {
-      dlog_print(DLOG_INFO, "DYKIM", "Invalid count for playlist.");
+      LoggerD("Invalid count for playlist.");
     }
   }
   user_data->isSuccess = true;
@@ -802,7 +774,7 @@ void ContentManager::createPlaylist(std::string name,
 }
 
 void ContentManager::getPlaylists(const std::shared_ptr<ReplyCallbackData>& user_data) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::getPlaylist start");
+
   int ret;
   filter_h     filter;
   media_filter_create(&filter);
@@ -822,10 +794,15 @@ void ContentManager::getPlaylists(const std::shared_ptr<ReplyCallbackData>& user
 void ContentManager::removePlaylist(std::string playlistId, 
   const std::shared_ptr<ReplyCallbackData>& user_data) {
   
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::removePlaylist start");
-  int id = std::stoi(playlistId);
-  int ret = media_playlist_delete_from_db(id);
+  int id = std::atoi(playlistId.c_str());
+  if(id == 0) {
+    UnknownException err("PlaylistId is wrong.");
+    user_data->isSuccess = false;
+    user_data->result = err.ToJSON();
+    return;
+  }
 
+  int ret = media_playlist_delete_from_db(id);
   if(ret != MEDIA_CONTENT_ERROR_NONE) {
     UnknownException err("Removal of playlist is failed.");
     user_data->isSuccess = false;
@@ -834,8 +811,6 @@ void ContentManager::removePlaylist(std::string playlistId,
 }
 
 int ContentManager::update(picojson::value args) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::update start");
-
   int ret;
   picojson::value content = args.get("content");
   std::string id = content.get("id").to_str();
@@ -855,8 +830,6 @@ int ContentManager::update(picojson::value args) {
 
 
 int ContentManager::updateBatch(picojson::value args) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::updateBatch start");
-
   int ret;
   std::vector<picojson::value> contents = args.get("contents").get<picojson::array>();
   for (picojson::value::array::iterator it = contents.begin(); it != contents.end(); it++) {
@@ -864,6 +837,7 @@ int ContentManager::updateBatch(picojson::value args) {
     std::string id = content.get("id").to_str();
     media_info_h media = NULL;
     ret = media_info_get_media_from_db (id.c_str(), &media);
+    dlog_print(DLOG_INFO, "DYKIM", "ContentManager::update id:%s",id.c_str());          
     if (media != NULL && ret == MEDIA_CONTENT_ERROR_NONE) {
       setContent(media, content);
       ret = media_info_update_to_db(media);
@@ -878,7 +852,6 @@ int ContentManager::updateBatch(picojson::value args) {
 
 
 int ContentManager::playlistAdd(std::string playlist_id, std::string content_id) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlistAdd start");
   int ret = MEDIA_CONTENT_ERROR_NONE;
 
   media_playlist_h playlist = NULL;
@@ -904,12 +877,10 @@ int ContentManager::playlistAdd(std::string playlist_id, std::string content_id)
 }
 
 int ContentManager::playlistRemove(std::string playlist_id, int member_id) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlistRemove start");
   int ret = MEDIA_CONTENT_ERROR_NONE;
 
   media_playlist_h playlist = NULL;
   ret = media_playlist_get_playlist_from_db(std::stoi(playlist_id), &playlist);
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlistRemove member_id(%d)", member_id);
   if (playlist != NULL && ret == MEDIA_CONTENT_ERROR_NONE) {
     ret = media_playlist_remove_media(playlist, member_id);
     if (ret != MEDIA_CONTENT_ERROR_NONE) {
@@ -931,7 +902,6 @@ int ContentManager::playlistRemove(std::string playlist_id, int member_id) {
 
 
 void ContentManager::playlistAddbatch(const std::shared_ptr<ReplyCallbackData>& user_data) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlistAddbatch start");
   
   int ret = MEDIA_CONTENT_ERROR_NONE;
   std::string playlist_id = user_data->args.get("playlist_id").get<std::string>();
@@ -950,10 +920,9 @@ void ContentManager::playlistAddbatch(const std::shared_ptr<ReplyCallbackData>&
   for (picojson::value::array::iterator it = contents.begin(); it != contents.end(); it++) {
     picojson::value content = *it;
     std::string id = content.get("id").to_str();
-    dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlistAddbatch id(%s)",id.c_str());
     ret = media_playlist_add_media(playlist, id.c_str());
     if (ret != MEDIA_CONTENT_ERROR_NONE) {
-      dlog_print(DLOG_INFO, "DYKIM", "Adding Content(id:%s) is failed.", id.c_str());
+      LoggerD("Adding Content(id:%s) is failed.", id.c_str());
     }
   }
 
@@ -967,7 +936,6 @@ void ContentManager::playlistAddbatch(const std::shared_ptr<ReplyCallbackData>&
 }
 
 void ContentManager::playlistGet(const std::shared_ptr<ReplyCallbackData>& user_data) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlistGet start");
   
   int ret = MEDIA_CONTENT_ERROR_NONE;
   media_playlist_h playlist = NULL;  
@@ -1010,13 +978,10 @@ void ContentManager::playlistGet(const std::shared_ptr<ReplyCallbackData>& user_
     user_data->isSuccess = false;
     user_data->result = err.ToJSON();
   }
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlistGet start7");  
 }
 
 void ContentManager::playlistRemovebatch(const std::shared_ptr<ReplyCallbackData>& user_data) {
-
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlistRemovebatch start");
-  
   int ret = MEDIA_CONTENT_ERROR_NONE;
   media_playlist_h playlist = NULL;  
 
@@ -1052,8 +1017,6 @@ void ContentManager::playlistRemovebatch(const std::shared_ptr<ReplyCallbackData
 
 void ContentManager::playlistSetOrder(const std::shared_ptr<ReplyCallbackData>& user_data) {
 
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlistSetOrder start");
-  
   int ret = MEDIA_CONTENT_ERROR_NONE;
   media_playlist_h playlist = NULL;
 
@@ -1098,11 +1061,8 @@ void ContentManager::playlistSetOrder(const std::shared_ptr<ReplyCallbackData>&
 }
 
 void ContentManager::playlistMove(const std::shared_ptr<ReplyCallbackData>& user_data) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::playlistMove start");
-  
   int ret = MEDIA_CONTENT_ERROR_NONE;
   media_playlist_h playlist = NULL;
-
   std::string playlist_id = user_data->args.get("playlist_id").get<std::string>();
   ret = media_playlist_get_playlist_from_db(std::stoi(playlist_id), &playlist);
   if(ret != MEDIA_CONTENT_ERROR_NONE && playlist == NULL) {
@@ -1113,7 +1073,7 @@ void ContentManager::playlistMove(const std::shared_ptr<ReplyCallbackData>& user
   }
   int old_order;
   double member_id = user_data->args.get("member_id").get<double>();
-  long delta = user_data->args.get("delta").get<long>();  
+  double delta = user_data->args.get("delta").get<double>();
   ret = media_playlist_get_play_order(playlist, static_cast<int>(member_id), &old_order);
   if (ret != MEDIA_CONTENT_ERROR_NONE) {
     UnknownException err("The content can't find form playlist.");
@@ -1121,7 +1081,6 @@ void ContentManager::playlistMove(const std::shared_ptr<ReplyCallbackData>& user
     user_data->result = err.ToJSON();
     return;
   }
-
   int new_order = static_cast<int>(old_order) + static_cast<int>(delta);
   ret = media_playlist_set_play_order(playlist, static_cast<int>(member_id), new_order);
   if (ret != MEDIA_CONTENT_ERROR_NONE) {
@@ -1130,7 +1089,6 @@ void ContentManager::playlistMove(const std::shared_ptr<ReplyCallbackData>& user
     user_data->result = err.ToJSON();
     return;
   }
-
   ret = media_playlist_update_to_db(playlist);
   if (ret != MEDIA_CONTENT_ERROR_NONE) {
     UnknownException err("Updateing play_order is failed.");
@@ -1143,11 +1101,10 @@ void ContentManager::playlistMove(const std::shared_ptr<ReplyCallbackData>& user
 }
 
 int ContentManager::getLyrics(const picojson::value& args, picojson::object& result) {
-
   int ret = METADATA_EXTRACTOR_ERROR_NONE;
   std::string contentURI = convertUriToPath(args.get("contentURI").get<std::string>());
   metadata_extractor_h extractor;
-  
+  metadata_extractor_create(&extractor);
   if (!(contentURI.empty())) {
     ret = metadata_extractor_set_path(extractor, contentURI.c_str());
     if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
@@ -1196,7 +1153,6 @@ int ContentManager::getLyrics(const picojson::value& args, picojson::object& res
 
 
 common::PlatformException ContentManager::convertError(int err) {
-  dlog_print(DLOG_INFO, "DYKIM", "ContentManager::convertError start");
   switch (err) {
     case MEDIA_CONTENT_ERROR_INVALID_PARAMETER :
       return common::InvalidValuesException("Invalid parameter.");
index ce27ee4512c936a309816c6dd629b2376356e459..412aac9e36ae7090dc81463929e8796314945676 100755 (executable)
@@ -19,6 +19,8 @@
 namespace extension {
 namespace content {
 
+void contentToJson(media_info_h info, picojson::object& o);
+  
 class ContentManager {
  public:
   virtual ~ContentManager();
@@ -29,8 +31,6 @@ class ContentManager {
   void find(const std::shared_ptr<ReplyCallbackData>& user_data);
   int update(picojson::value args);
   int updateBatch(picojson::value args);
-  void contentToJson(media_info_h media, picojson::object& o);
-  //directorytoJson
   
   int scanFile(std::string& uri);
   int setChangeListener(media_content_db_update_cb callback, void *user_data);