package com.architjn.acjmusicplayer.utils.handlers;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.architjn.acjmusicplayer.task.FetchArtist;
import java.io.File;
import java.util.Arrays;
import java.util.Collections;
/**
* Created by architjn on 15/12/15.
*/
public abstract class ArtistImgHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "ArtistDB";
private static final String TABLE_PLAYBACK = "artist";
private static final String ARTIST_KEY_ID = "artist_id";
private static final String ARTIST_KEY_NAME = "artist_name";
private static final String ARTIST_KEY_URL = "artist_img";
private final Integer[] randomNumbers;
private int pos = 0;
private Context context;
public ArtistImgHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
randomNumbers = randomNumbers(1000);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String CREATE_PLAYBACK_SONG_TABLE = "CREATE TABLE " + TABLE_PLAYBACK + " (" +
ARTIST_KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
ARTIST_KEY_NAME + " TEXT," +
ARTIST_KEY_URL + " TEXT)";
sqLiteDatabase.execSQL(CREATE_PLAYBACK_SONG_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_PLAYBACK);
}
public String getArtistArtWork(final String name, int pos) {
String url = getArtistImgFromDB(name);
if (url != null) {
if ((new File(url)).exists())
return url;
else
removeArtistImgFromDB(name);
} else {
new FetchArtist(context, name, randomNumbers[pos], this);
// new FetchArtistArtWork(context, name, randomNumbers[pos]) {
// @Override
// public void onDownloadComplete(String url) {
// updateArtistArtWorkInDB(name, url);
// ArtistImgHandler.this.onDownloadComplete(url);
// }
// }.execute();
}
return null;
}
public abstract void onDownloadComplete(String url);
public void updateArtistArtWorkInDB(String name, String url) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.putNull(ARTIST_KEY_ID);
values.put(ARTIST_KEY_NAME, name);
values.put(ARTIST_KEY_URL, url);
db.insert(TABLE_PLAYBACK, null, values);
db.close();
}
public String getArtistImgFromDB(String name) {
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM " + TABLE_PLAYBACK + " WHERE "
+ ARTIST_KEY_NAME + "='" + name.replace("'", "''") + "'";
Cursor cursor = db.rawQuery(query, null);
if (cursor.moveToFirst()) {
return cursor.getString(2);
}
db.close();
cursor.close();
return null;
}
public void removeArtistImgFromDB(String name) {
SQLiteDatabase db = this.getWritableDatabase();
String query = "DELETE FROM " + TABLE_PLAYBACK + " WHERE "
+ ARTIST_KEY_NAME + "='" + name + "'";
db.rawQuery(query, null);
db.close();
}
public Integer[] randomNumbers(int range) {
Integer[] arr = new Integer[range];
for (int i = 0; i < arr.length; i++) {
arr[i] = i;
}
Collections.shuffle(Arrays.asList(arr));
return arr;
}
}