Datenbankname angepasst
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / database / DatabaseManager.java
index 326b914be070117ff8548e7413812ae4734e12f6..6a515b42a3c97ed0d6676c42928ab1d9bcf85f9a 100644 (file)
@@ -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;
@@ -30,8 +31,8 @@ import de.dhbwloe.campusapp.vorlesungen.CourseGroup;
  * Created by pk910 on 19.01.2016.
  */
 public class DatabaseManager {
-    private static final String DATABASE_NAME = "DHBWLoe.CampusApp.DEV";
-    private static final int DATABASE_VERSION = 1;
+    private static final String DATABASE_NAME = "DHBWLoe.CampusApp.db";
+    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) {
@@ -155,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()
@@ -195,6 +209,7 @@ public class DatabaseManager {
     }
 
     public SearchIndices[] performSearchRequest(String query, int maxResults) {
+        openDatabase();
         String[] whereArgs = new String[] {
                 "%" + query + "%"
         };
@@ -228,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
@@ -261,6 +277,7 @@ public class DatabaseManager {
     }
 
     public String getRuntimeCache(String name) {
+        openDatabase();
         String value = null;
         String[] whereArgs = new String[] {
                 name
@@ -274,6 +291,7 @@ public class DatabaseManager {
     }
 
     public void addNfcCardData(NfcCardData nfcCardData) {
+        openDatabase();
         String[] whereArgs = new String[] {
                 Integer.toString(nfcCardData.getUniqueId()),
                 Long.toString(nfcCardData.getLastUpdate())
@@ -306,6 +324,7 @@ public class DatabaseManager {
     }
 
     public NfcCardData[] getNfcCardData(int lastLimit) {
+        openDatabase();
         String value = null;
         Cursor resultSet;
         if(lastLimit > 0) {
@@ -329,6 +348,7 @@ public class DatabaseManager {
     }
 
     public NfcCardData getLatestNfcCardData(int cardId) {
+        openDatabase();
         String value = null;
         String[] whereArgs = {
                 Integer.toString(cardId)
@@ -342,67 +362,106 @@ public class DatabaseManager {
         return nfcCardData;
     }
 
-    public void updateCourseCalendar(CourseEvent event) {
+    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);