/* * Copyright (C) 2009 Teleca Poland Sp. z o.o. <android@teleca.com> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.teleca.jamendo.other; import java.util.Arrays; import org.json.JSONArray; import org.json.JSONException; import android.util.Log; import com.teleca.jamendo.activity.playview.PlayMethod; import com.teleca.jamendo.api_impl.ServerApiImpl; import com.teleca.jamendo.model.Album; import com.teleca.jamendo.model.Track; import com.teleca.jamendo.model.ErrorMsg; /** * @author Lukasz Wisniewski */ public class TrackFunctions { public static Track[] getTracks(JSONArray jsonArrayTracks, boolean sort) throws JSONException { int n = jsonArrayTracks.length(); Track[] tracks = new Track[n]; TrackBuilder trackBuilder = new TrackBuilder(); for(int i=0; i < n; i++){ tracks[i] = trackBuilder.build(jsonArrayTracks.getJSONObject(i)); } if(sort){ // sort by track no Arrays.sort(tracks, new TrackComparator()); } return tracks; } public static PlayMethod getPlaylist(JSONArray jsonArrayTracks) throws JSONException, ErrorMsg { int n = jsonArrayTracks.length(); PlayMethod playlist = new PlayMethod(); TrackBuilder trackBuilder = new TrackBuilder(); Track[] tracks = new Track[n]; int[] tracks_id = new int[n]; // building tracks and getting tracks_id for(int i=0; i < n; i++){ tracks[i] = trackBuilder.build(jsonArrayTracks.getJSONObject(i)); tracks_id[i] = tracks[i].getId(); } /* * This could be done with one request if only artist_track relation did * exist :'( */ Album[] albums = new ServerApiImpl().getAlbumsByTracksId(tracks_id); // FIXME tracks id may repeat and webservice will trim results Log.i("jamendroid", ""+tracks.length+" tracks & "+albums.length+" albums"); // adding everything to the playlist for(int i=0; i < n; i++){ Log.i("jamendroid", tracks[i].getName() +" by "+albums[i].getArtistName()); playlist.addTrack(tracks[i], albums[i]); } return playlist; } public static int[] getRadioPlaylist(JSONArray jsonArrayTracks) throws JSONException { int n = jsonArrayTracks.length(); int[] tracks_id = new int[n]; for(int i=0; i<n; i++){ tracks_id[i] = jsonArrayTracks.getInt(i); } return tracks_id; } }