package com.wigwamlabs.spotify; public class Track extends NativeItem { static { nativeInitClass(); } public static final int AVAILABILITY_UNAVAILABLE = 0; public static final int AVAILABILITY_AVAILABLE = 1; public static final int AVAILABILITY_NOT_STREAMABLE = 2; public static final int AVAILABILITY_BANNED_BY_ARTIST = 3; private Artist[] mArtists; Track(int handle) { super(handle); } public Track(String uri) { super(0); setHandle(nativeCreate(uri)); } private static native void nativeInitClass(); @Override public Track clone() { final int handle = nativeClone(); return new Track(handle); } private native int nativeCreate(String uri); private native int nativeClone(); @Override native void nativeDestroy(); private native String nativeGetName(); private native int nativeGetArtistCount(); private native int nativeGetArtist(int index); private native String nativeGetImageLink(int size); private native int nativeGetAvailability(Session session); @Override public void destroy() { super.destroy(); if (mArtists != null) { for (Artist artist : mArtists) { artist.destroy(); } } } public String getName() { return nativeGetName(); } public Artist[] getArtists() { if (mArtists != null) { return mArtists; } final int count = nativeGetArtistCount(); if (count == 0) { return new Artist[0]; } mArtists = new Artist[count]; for (int i = 0; i < mArtists.length; i++) { final int handle = nativeGetArtist(i); mArtists[i] = new Artist(handle); } return mArtists; } public String getArtistsString() { final Artist[] artists = getArtists(); final StringBuilder sb = new StringBuilder(); for (Artist artist : artists) { if (sb.length() > 0) { sb.append(", "); } sb.append(artist.getName()); } return sb.toString(); } public String getImageLink(int size) { return nativeGetImageLink(size); } public int getAvailability(Session session) { return nativeGetAvailability(session); } }