/* * This is the source code of DMPLayer for Android v. 1.0.0. * You should have received a copy of the license in this archive (see LICENSE). * Copyright @Dibakar_Mistry, 2015. */ package com.dmplayer.dbhandler; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteStatement; import android.util.Log; import com.dmplayer.ApplicationDMPlayer; import com.dmplayer.models.SongDetail; import java.util.ArrayList; public class MostAndRecentPlayTableHelper { public static final String TABLENAME = "MostPlay"; public static final String ID = "_id"; public static final String ALBUM_ID = "album_id"; public static final String ARTIST = "artist"; public static final String TITLE = "title"; public static final String DISPLAY_NAME = "display_name"; public static final String DURATION = "duration"; public static final String PATH = "path"; public static final String AUDIOPROGRESS = "audioProgress"; public static final String AUDIOPROGRESSSEC = "audioProgressSec"; public static final String LastPlayTime = "lastplaytime"; public static final String PLAYCOUNT = "playcount"; private static DMPLayerDBHelper dbHelper = null; private static MostAndRecentPlayTableHelper mInstance; private SQLiteDatabase sampleDB; public static synchronized MostAndRecentPlayTableHelper getInstance(Context context) { if (mInstance == null) { mInstance = new MostAndRecentPlayTableHelper(context); } return mInstance; } public Context context; public MostAndRecentPlayTableHelper(Context context_) { this.context = context_; if (dbHelper == null) { dbHelper = ((ApplicationDMPlayer) context.getApplicationContext()).DB_HELPER; } } public void inserSong(SongDetail songDetail) { try { if (isSongExist(songDetail.getId())) { return; } sampleDB = dbHelper.getDB(); sampleDB.beginTransaction(); String sql = "Insert or Replace into " + TABLENAME + " values(?,?,?,?,?,?,?,?,?,?,?);"; SQLiteStatement insert = sampleDB.compileStatement(sql); try { if (songDetail != null) { insert.clearBindings(); insert.bindLong(1, songDetail.getId()); insert.bindLong(2, songDetail.getAlbum_id()); insert.bindString(3, songDetail.getArtist()); insert.bindString(4, songDetail.getTitle()); insert.bindString(5, songDetail.getDisplay_name()); insert.bindString(6, songDetail.getDuration()); insert.bindString(7, songDetail.getPath()); insert.bindString(8, songDetail.audioProgress + ""); insert.bindString(9, songDetail.audioProgressSec + ""); insert.bindString(10, System.currentTimeMillis() + ""); insert.bindLong(11, 1); insert.execute(); } } catch (Exception e) { e.printStackTrace(); } sampleDB.setTransactionSuccessful(); } catch (Exception e) { Log.e("XML:", e.toString()); } finally { sampleDB.endTransaction(); } } private boolean isSongExist(int id_) { Cursor mCursor = null; boolean isExist = false; try { String sqlQuery = "select * from " + TABLENAME + " where " + ID + "=" + id_; sampleDB = dbHelper.getDB(); mCursor = sampleDB.rawQuery(sqlQuery, null); if (mCursor != null && mCursor.getCount() >= 1) { mCursor.moveToNext(); long count = mCursor.getLong(mCursor.getColumnIndex(PLAYCOUNT)); count++; updateStatus_(count, id_); isExist = true; } closeCurcor(mCursor); } catch (Exception e) { closeCurcor(mCursor); e.printStackTrace(); } return isExist; } public void updateStatus_(long count, int musicid) { try { ContentValues values = new ContentValues(); values.put(PLAYCOUNT, count); long success = sampleDB.update(TABLENAME, values, ID + "=?", new String[]{String.valueOf(musicid)}); } catch (Exception e) { e.printStackTrace(); } } private void closeCurcor(Cursor cursor) { if (cursor != null) { cursor.close(); cursor = null; } } public Cursor getMostPlay() { Cursor mCursor = null; try { String sqlQuery = "Select * from " + TABLENAME + " where " + PLAYCOUNT + ">=2 order by " + LastPlayTime + " ASC limit 20"; sampleDB = dbHelper.getDB(); mCursor = sampleDB.rawQuery(sqlQuery, null); } catch (Exception e) { closeCurcor(mCursor); e.printStackTrace(); } return mCursor; } }