std::vector<Album> Connection::get_albums(){ // All return parse_albums(execute_and_return("list album")); } // Tested
int DataManager::ParseAlbumsInfo(struct MemoryStruct *pJson) { Json::Reader reader; Json::Value root; bool ret; ret = reader.parse((const char*)pJson->memory, root); if (!ret) { std::cout << "Failed to parse configuration\n" << reader.getFormatedErrorMessages(); return 0; } bool isNull = root["status"].isNull(); if (isNull) { printf("get ParseAlbumsInfo null\n"); return 0; } bool flags=false; int size =0; int i=0; flags = root.isMember("collects"); if(flags) { Json::Value collects; std::string isMyCollect; const char *mine = "true"; retCollectNum=0; retFavCollectNum=0; printf("*** parse collects\n"); collects = root["collects"]; if(collects.isNull()) return 0; size = collects.size(); isMyCollect = collects[i]["ismycollect"].asString(); if(mine == isMyCollect) { retFavCollectNum = size; printf("*** favCollectNum size=%d\n", retFavCollectNum); } else { retCollectNum= size; printf("*** collectNum size=%d\n", retCollectNum); } parse_albums(collects, MyAlbums); } flags = root.isMember("albums"); if(flags) { printf("*** parse albums\n"); Json::Value albums = root["albums"]; retAlbumNum =0; artist_total_album=0; if(albums.isNull()) return 0; if(root.isMember("albums_count")) { std::string albums_cnt; albums_cnt = root["albums_count"].asString(); artist_total_album = atoi(albums_cnt.c_str()); } retAlbumNum= albums.size(); parse_albums(albums, MyAlbums); } flags = root.isMember("artists"); if(flags) { printf("*** parse artists\n"); Json::Value artists = root["artists"]; std::string alb_cnt; retArtistNum =0; if(artists.isNull()) return 0; alb_cnt = root["albums_count"].asInt(); retAlbumNum = atoi(alb_cnt.c_str()); // artist's total album number retArtistNum = artists.size(); parse_albums(artists, MyAlbums); } return 1; }
std::vector<Album> Connection::get_albums(const char* artist){ // Not happy with this as it would cause multiple local objects representing the same db objects std::stringstream command; command << "list album \"" << artist << "\""; return parse_albums(execute_and_return(command.str().c_str())); } // Tested