X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fde%2Fdhbwloe%2Fcampusapp%2Fdatabase%2FDatabaseManager.java;h=32d7c61da4e5c3247e667cc44bd6ee2f5c5a7f48;hb=783024077bd38c4bede07ca8310fb2daf67751b5;hp=43a5fd5666c8326560a98bffd067f31cc0d510d1;hpb=a0f644715b43af1e4acf2513b972c3f980efdaca;p=DHBWCampusApp.git diff --git a/app/src/main/java/de/dhbwloe/campusapp/database/DatabaseManager.java b/app/src/main/java/de/dhbwloe/campusapp/database/DatabaseManager.java index 43a5fd5..32d7c61 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/database/DatabaseManager.java +++ b/app/src/main/java/de/dhbwloe/campusapp/database/DatabaseManager.java @@ -6,6 +6,7 @@ import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; +import net.fortuna.ical4j.model.Component; import net.fortuna.ical4j.model.DateList; import net.fortuna.ical4j.model.DateTime; import net.fortuna.ical4j.model.Period; @@ -31,7 +32,7 @@ import de.dhbwloe.campusapp.vorlesungen.CourseGroup; */ public class DatabaseManager { private static final String DATABASE_NAME = "DHBWLoe.CampusApp.DEV"; - private static final int DATABASE_VERSION = 1; + private static final int DATABASE_VERSION = 2; private CampusAppContext AppContext; private SQLiteDatabase database; private NewsDatabaseHelper newsDBHelper; @@ -43,8 +44,15 @@ public class DatabaseManager { AppContext = context; } - public void initializeDatabase() { + private void openDatabase() { + if(database != null) + return; + database = AppContext.getMainActivity().openOrCreateDatabase(DATABASE_NAME, Activity.MODE_PRIVATE, null); + } + + public void initializeDatabase() { + openDatabase(); database.execSQL("CREATE TABLE IF NOT EXISTS Version(Version INT);"); Cursor resultSet = database.rawQuery("Select * from Version", null); @@ -60,7 +68,8 @@ public class DatabaseManager { if(version < DATABASE_VERSION) upgradeTables(version, DATABASE_VERSION); - + //database.execSQL("DELETE FROM CourseCalendar"); + //database.execSQL("DELETE FROM CourseCalendarEvent"); } private void upgradeTables(int oldVersion, int newVersion) { @@ -109,7 +118,6 @@ public class DatabaseManager { "(" + "CardId INT, " + "UpdateTime INT," + - "CardData TEXT, " + "CardBalance INT, " + "CardLastTransaction INT, " + "PRIMARY KEY (CardId, UpdateTime)" + @@ -156,13 +164,18 @@ public class DatabaseManager { } if(oldVersion < 2 && newVersion >= 2) { // Version 2 + database.execSQL("ALTER TABLE CourseCalendarEvent ADD EventType INT;"); + } + if(oldVersion < 3 && newVersion >= 3) { + // Version 3 } - database.execSQL("UPDATE Version SET Version = "+Integer.toString(newVersion)); + database.execSQL("UPDATE Version SET Version = " + Integer.toString(newVersion)); } public void addSearchIndices(SearchIndices[] indices) { + openDatabase(); for(int i = 0; i < indices.length; i++) { String[] whereArgs = new String[] { indices[i].getKeyName() @@ -196,6 +209,7 @@ public class DatabaseManager { } public SearchIndices[] performSearchRequest(String query, int maxResults) { + openDatabase(); String[] whereArgs = new String[] { "%" + query + "%" }; @@ -229,6 +243,7 @@ public class DatabaseManager { } public void setRuntimeCache(String name, String value) { + openDatabase(); long now = (new Date()).getTime() / 1000; String[] whereArgs = new String[] { name @@ -262,6 +277,7 @@ public class DatabaseManager { } public String getRuntimeCache(String name) { + openDatabase(); String value = null; String[] whereArgs = new String[] { name @@ -275,17 +291,15 @@ public class DatabaseManager { } public void addNfcCardData(NfcCardData nfcCardData) { + openDatabase(); String[] whereArgs = new String[] { Integer.toString(nfcCardData.getUniqueId()), Long.toString(nfcCardData.getLastUpdate()) }; - Cursor resultSet = database.rawQuery("SELECT CardData FROM NfcCardStore WHERE CardId = ? AND UpdateTime = ?", whereArgs); + Cursor resultSet = database.rawQuery("SELECT CardBalance FROM NfcCardStore WHERE CardId = ? AND UpdateTime = ?", whereArgs); if(resultSet.moveToFirst()) { - if(resultSet.getString(0).equalsIgnoreCase(nfcCardData.getCardData())) - return; try { ContentValues updateValues = new ContentValues(); - updateValues.put("CardData", nfcCardData.getCardData()); updateValues.put("CardBalance", nfcCardData.getBalance()); updateValues.put("CardLastTransaction", nfcCardData.getLastTransaction()); @@ -298,7 +312,6 @@ public class DatabaseManager { ContentValues indexValues = new ContentValues(); indexValues.put("CardId", nfcCardData.getUniqueId()); indexValues.put("UpdateTime", nfcCardData.getLastUpdate()); - indexValues.put("CardData", nfcCardData.getCardData()); indexValues.put("CardBalance", nfcCardData.getBalance()); indexValues.put("CardLastTransaction", nfcCardData.getLastTransaction()); @@ -311,19 +324,20 @@ public class DatabaseManager { } public NfcCardData[] getNfcCardData(int lastLimit) { + openDatabase(); String value = null; Cursor resultSet; if(lastLimit > 0) { String[] whereArgs = { Integer.toString(lastLimit) }; - resultSet = database.rawQuery("SELECT CardId,UpdateTime,CardData,CardBalance,CardLastTransaction FROM NfcCardStore ORDER BY UpdateTime DESC LIMIT ?", whereArgs); + resultSet = database.rawQuery("SELECT CardId,UpdateTime,CardBalance,CardLastTransaction FROM NfcCardStore ORDER BY UpdateTime DESC LIMIT ?", whereArgs); } else - resultSet = database.rawQuery("SELECT CardId,UpdateTime,CardData,CardBalance,CardLastTransaction FROM NfcCardStore ORDER BY UpdateTime DESC", null); + resultSet = database.rawQuery("SELECT CardId,UpdateTime,CardBalance,CardLastTransaction FROM NfcCardStore ORDER BY UpdateTime DESC", null); ArrayList nfcCardDatas = new ArrayList(); if(resultSet.moveToFirst()) { do { - NfcCardData nfcCardData = new NfcCardData(resultSet.getInt(0), resultSet.getLong(1), resultSet.getString(2), resultSet.getInt(3), resultSet.getInt(4)); + NfcCardData nfcCardData = new NfcCardData(resultSet.getInt(0), resultSet.getLong(1), resultSet.getInt(2), resultSet.getInt(3)); nfcCardDatas.add(nfcCardData); } while (resultSet.moveToNext()); } @@ -333,67 +347,121 @@ public class DatabaseManager { return resultsArr; } - public void updateCourseCalendar(CourseEvent event) { + public NfcCardData getLatestNfcCardData(int cardId) { + openDatabase(); + String value = null; + String[] whereArgs = { + Integer.toString(cardId) + }; + Cursor resultSet = database.rawQuery("SELECT CardId,UpdateTime,CardBalance,CardLastTransaction FROM NfcCardStore WHERE CardId = ? ORDER BY UpdateTime DESC LIMIT 1", whereArgs); + NfcCardData nfcCardData = null; + if(resultSet.moveToFirst()) { + nfcCardData = new NfcCardData(resultSet.getInt(0), resultSet.getLong(1), resultSet.getInt(2), resultSet.getInt(3)); + } + resultSet.close(); + return nfcCardData; + } + + public void updateCourseCalendar(CourseEvent event, Component cevent) { + openDatabase(); if(vorlesungsplanDBHelper == null) vorlesungsplanDBHelper = new VorlesungsplanDatabaseHelper(AppContext, database); - vorlesungsplanDBHelper.updateCourseCalendar(event); + vorlesungsplanDBHelper.updateCourseCalendar(event, cevent); } public CourseEvent[] getCourseCalendarEvents(String coursename, long timeFrom, long timeTo) { + openDatabase(); if(vorlesungsplanDBHelper == null) vorlesungsplanDBHelper = new VorlesungsplanDatabaseHelper(AppContext, database); return vorlesungsplanDBHelper.getCourseCalendarEvents(coursename, timeFrom, timeTo); } + public CourseEvent[] getCourseEventsByGroup(CourseGroup group) { + openDatabase(); + if(vorlesungsplanDBHelper == null) + vorlesungsplanDBHelper = new VorlesungsplanDatabaseHelper(AppContext, database); + return vorlesungsplanDBHelper.getCourseEventsByGroup(group); + } + + public CourseEvent[] getCourseCalendarTimetable(String coursename, long timeFrom, int days) { + openDatabase(); + if(vorlesungsplanDBHelper == null) + vorlesungsplanDBHelper = new VorlesungsplanDatabaseHelper(AppContext, database); + return vorlesungsplanDBHelper.getCourseCalendarTimetable(coursename, timeFrom, days); + } + public CourseGroup getCourseGroup(int courseGroupId) { + openDatabase(); if(vorlesungsplanDBHelper == null) vorlesungsplanDBHelper = new VorlesungsplanDatabaseHelper(AppContext, database); return vorlesungsplanDBHelper.getCourseGroup(courseGroupId); } public CourseGroup getCourseGroup(String coursename, String groupname) { + openDatabase(); if(vorlesungsplanDBHelper == null) vorlesungsplanDBHelper = new VorlesungsplanDatabaseHelper(AppContext, database); return vorlesungsplanDBHelper.getCourseGroup(coursename, groupname); } public CourseGroup addCourseGroup(String coursename, String groupname) { + openDatabase(); if(vorlesungsplanDBHelper == null) vorlesungsplanDBHelper = new VorlesungsplanDatabaseHelper(AppContext, database); return vorlesungsplanDBHelper.addCourseGroup(coursename, groupname); } + public CourseGroup[] getCourseGroups(String coursename, Date notBefore) { + openDatabase(); + if(vorlesungsplanDBHelper == null) + vorlesungsplanDBHelper = new VorlesungsplanDatabaseHelper(AppContext, database); + return vorlesungsplanDBHelper.getCourseGroups(coursename, notBefore); + } + + public CourseEvent[] getCourseExamEvents(String coursename, long timeFrom, long timeTo) { + openDatabase(); + if(vorlesungsplanDBHelper == null) + vorlesungsplanDBHelper = new VorlesungsplanDatabaseHelper(AppContext, database); + return vorlesungsplanDBHelper.getCourseExamEvents(coursename, timeFrom, timeTo); + } + public void updateMensaTagesplan(MensaTagesplan plan) { + openDatabase(); if(mensaplanDBHelper == null) mensaplanDBHelper = new MensaplanDatabaseHelper(AppContext, database); mensaplanDBHelper.updateMensaTagesplan(plan); } public MensaTagesplan[] getMensaTagesplan(long timeFrom, long timeTo) { + openDatabase(); if(mensaplanDBHelper == null) mensaplanDBHelper = new MensaplanDatabaseHelper(AppContext, database); return mensaplanDBHelper.getMensaTagesplan(timeFrom, timeTo); } public long[] getDaysWithPlanData(long timeFrom, long timeTo) { + openDatabase(); if(mensaplanDBHelper == null) mensaplanDBHelper = new MensaplanDatabaseHelper(AppContext, database); return mensaplanDBHelper.getDaysWithPlanData(timeFrom, timeTo); } public long[] getWeeksWithPlanData(long timeFrom, long timeTo) { + openDatabase(); if(mensaplanDBHelper == null) mensaplanDBHelper = new MensaplanDatabaseHelper(AppContext, database); return mensaplanDBHelper.getWeeksWithPlanData(timeFrom, timeTo); } public void updateNewsItem(NewsItem news) { + openDatabase(); if(newsDBHelper == null) newsDBHelper = new NewsDatabaseHelper(AppContext, database); newsDBHelper.updateNewsItem(news); } public NewsItem[] getNewsItems(String source, long timeFrom, long timeTo) { + openDatabase(); if(newsDBHelper == null) newsDBHelper = new NewsDatabaseHelper(AppContext, database); return newsDBHelper.getNewsItems(source, timeFrom, timeTo);