diff --git a/vlc-android/src/org/videolan/vlc/DatabaseManager.java b/vlc-android/src/org/videolan/vlc/DatabaseManager.java index 9ecd551cc2fee9421d73d142e7a46a4d04afa365..024b3547f333469fbf2173cef5ff171a38c9fc03 100644 --- a/vlc-android/src/org/videolan/vlc/DatabaseManager.java +++ b/vlc-android/src/org/videolan/vlc/DatabaseManager.java @@ -44,7 +44,7 @@ public class DatabaseManager { private SQLiteDatabase mDb; private final String DB_NAME = "vlc_database"; - private final int DB_VERSION = 5; + private final int DB_VERSION = 6; private final int CHUNK_SIZE = 50; private final String DIR_TABLE_NAME = "directories_table"; @@ -60,6 +60,8 @@ public class DatabaseManager { private final String MEDIA_ARTIST = "artist"; private final String MEDIA_GENRE = "genre"; private final String MEDIA_ALBUM = "album"; + private final String MEDIA_WIDTH = "width"; + private final String MEDIA_HEIGHT = "height"; private final String PLAYLIST_TABLE_NAME = "playlist_table"; private final String PLAYLIST_NAME = "name"; @@ -75,7 +77,8 @@ public class DatabaseManager { public enum mediaColumn { MEDIA_TABLE_NAME, MEDIA_PATH, MEDIA_TIME, MEDIA_LENGTH, - MEDIA_TYPE, MEDIA_PICTURE, MEDIA_TITLE, MEDIA_ARTIST, MEDIA_GENRE, MEDIA_ALBUM + MEDIA_TYPE, MEDIA_PICTURE, MEDIA_TITLE, MEDIA_ARTIST, MEDIA_GENRE, MEDIA_ALBUM, + MEDIA_WIDTH, MEDIA_HEIGHT } /** @@ -102,18 +105,13 @@ public class DatabaseManager { super(context, DB_NAME, null, DB_VERSION); } - @Override - public void onCreate(SQLiteDatabase db) { - - String createDirTabelQuery = "CREATE TABLE IF NOT EXISTS " - + DIR_TABLE_NAME + " (" - + DIR_ROW_PATH + " TEXT PRIMARY KEY NOT NULL" - + ");"; - - // Create the directories table - db.execSQL(createDirTabelQuery); + public void dropMediaTabelQuery(SQLiteDatabase db) { + String query = "DROP TABLE " + MEDIA_TABLE_NAME + ";"; + db.execSQL(query); + } - String createMediaTabelQuery = "CREATE TABLE IF NOT EXISTS " + public void createMediaTabelQuery(SQLiteDatabase db) { + String query = "CREATE TABLE IF NOT EXISTS " + MEDIA_TABLE_NAME + " (" + MEDIA_LOCATION + " TEXT PRIMARY KEY NOT NULL, " + MEDIA_TIME + " INTEGER, " @@ -123,11 +121,26 @@ public class DatabaseManager { + MEDIA_TITLE + " VARCHAR(200), " + MEDIA_ARTIST + " VARCHAR(200), " + MEDIA_GENRE + " VARCHAR(200), " - + MEDIA_ALBUM + " VARCHAR(200)" + + MEDIA_ALBUM + " VARCHAR(200), " + + MEDIA_WIDTH + " INTEGER, " + + MEDIA_HEIGHT + " INTEGER" + + ");"; + db.execSQL(query); + } + + @Override + public void onCreate(SQLiteDatabase db) { + + String createDirTabelQuery = "CREATE TABLE IF NOT EXISTS " + + DIR_TABLE_NAME + " (" + + DIR_ROW_PATH + " TEXT PRIMARY KEY NOT NULL" + ");"; + // Create the directories table + db.execSQL(createDirTabelQuery); + // Create the media table - db.execSQL(createMediaTabelQuery); + createMediaTabelQuery(db); String createPlaylistTableQuery = "CREATE TABLE IF NOT EXISTS " + PLAYLIST_TABLE_NAME + " (" + @@ -154,9 +167,11 @@ public class DatabaseManager { } @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, - int newVersion) { - // TODO ?? + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + if (oldVersion == 5 && newVersion == 6) { + dropMediaTabelQuery(db); + createMediaTabelQuery(db); + } } } @@ -227,6 +242,8 @@ public class DatabaseManager { values.put(MEDIA_ARTIST, media.getArtist()); values.put(MEDIA_GENRE, media.getGenre()); values.put(MEDIA_ALBUM, media.getAlbum()); + values.put(MEDIA_WIDTH, media.getWidth()); + values.put(MEDIA_HEIGHT, media.getHeight()); mDb.replace(MEDIA_TABLE_NAME, "NULL", values); @@ -284,7 +301,7 @@ public class DatabaseManager { do { count = 0; - cursor = mDb.rawQuery(String.format("SELECT %s,%s,%s,%s,%s,%s,%s,%s,%s FROM %s LIMIT %d OFFSET %d", + cursor = mDb.rawQuery(String.format("SELECT %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s FROM %s LIMIT %d OFFSET %d", MEDIA_TIME, //0 long MEDIA_LENGTH, //1 long MEDIA_TYPE, //2 int @@ -293,7 +310,9 @@ public class DatabaseManager { MEDIA_ARTIST, //5 string MEDIA_GENRE, //6 string MEDIA_ALBUM, //7 string - MEDIA_LOCATION, //8 string + MEDIA_WIDTH, //8 int + MEDIA_HEIGHT, //9 int + MEDIA_LOCATION, //10 string MEDIA_TABLE_NAME, CHUNK_SIZE, chunk_count * CHUNK_SIZE), null); @@ -304,12 +323,18 @@ public class DatabaseManager { if (blob != null) { picture = BitmapFactory.decodeByteArray(blob, 0, blob.length); } - String location = cursor.getString(8); + String location = cursor.getString(10); Media media = new Media(context, location, - cursor.getLong(0), cursor.getLong(1), cursor.getInt(2), - picture, cursor.getString(4), - cursor.getString(5), cursor.getString(6), - cursor.getString(7)); + cursor.getLong(0), + cursor.getLong(1), + cursor.getInt(2), + picture, + cursor.getString(4), + cursor.getString(5), + cursor.getString(6), + cursor.getString(7), + cursor.getInt(8), + cursor.getInt(9)); medias.put(media.getLocation(), media); picture = null; @@ -341,7 +366,9 @@ public class DatabaseManager { MEDIA_TITLE, //4 string MEDIA_ARTIST, //5 string MEDIA_GENRE, //6 string - MEDIA_ALBUM //7 string + MEDIA_ALBUM, //7 string + MEDIA_WIDTH, //8 int + MEDIA_HEIGHT, //9 int }, MEDIA_LOCATION + "=?", new String[] { location }, @@ -353,10 +380,16 @@ public class DatabaseManager { picture = BitmapFactory.decodeByteArray(blob, 0, blob.length); } media = new Media(context, location, - cursor.getLong(0), cursor.getLong(1), cursor.getInt(2), - picture, cursor.getString(4), - cursor.getString(5), cursor.getString(6), - cursor.getString(7)); + cursor.getLong(0), + cursor.getLong(1), + cursor.getInt(2), + picture, + cursor.getString(4), + cursor.getString(5), + cursor.getString(6), + cursor.getString(7), + cursor.getInt(8), + cursor.getInt(9)); } cursor.close(); return media; diff --git a/vlc-android/src/org/videolan/vlc/Media.java b/vlc-android/src/org/videolan/vlc/Media.java index c8369dfa26416cc2c3d686328e9d668a08b8d890..fb7caf1e217ad25a3f12b5c9edb77f2f8dc1428c 100644 --- a/vlc-android/src/org/videolan/vlc/Media.java +++ b/vlc-android/src/org/videolan/vlc/Media.java @@ -141,13 +141,16 @@ public class Media implements Comparable { } public Media(Context context, String location, long time, long length, int type, - Bitmap picture, String title, String artist, String genre, String album) { + Bitmap picture, String title, String artist, String genre, String album, + int width, int height) { mLocation = location; mFilename = null; mTime = time; mLength = length; mType = type; mPicture = picture; + mWidth = width; + mHeight = height; mTitle = title; mArtist = Util.getValue(context, artist, R.string.unknown_artist);