Autocomplete Feature für Kursnamen hinzugefügt (eigene API, da von DHBW nicht bereitg...
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / database / DatabaseManager.java
index d042bd0810a3e4b6fc1f121b96deb1b2477ce56b..628d78f88ff9728d0437e61b025539c68c44e029 100644 (file)
@@ -18,23 +18,14 @@ import android.app.Activity;
 import android.content.ContentValues;
 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;
-import net.fortuna.ical4j.model.Recur;
-import net.fortuna.ical4j.model.parameter.Value;
-import net.fortuna.ical4j.model.property.RRule;
-
-import java.lang.reflect.Array;
-import java.text.ParseException;
+
 import java.util.ArrayList;
 import java.util.Date;
-import java.util.ListIterator;
 
 import de.dhbwloe.campusapp.CampusAppContext;
+import de.dhbwloe.campusapp.coursenames.CourseName;
 import de.dhbwloe.campusapp.mensaplan.MensaTagesplan;
 import de.dhbwloe.campusapp.news.NewsItem;
 import de.dhbwloe.campusapp.search.SearchIndices;
@@ -46,7 +37,7 @@ import de.dhbwloe.campusapp.vorlesungen.CourseGroup;
  */
 public class DatabaseManager {
     private static final String DATABASE_NAME = "DHBWLoe.CampusApp.db";
-    private static final int DATABASE_VERSION = 2; // Datenbank Version - muss bei strukturellen Anpassungen erhöht werden
+    private static final int DATABASE_VERSION = 3; // Datenbank Version - muss bei strukturellen Anpassungen erhöht werden
 
     private CampusAppContext AppContext;
     private SQLiteDatabase database;
@@ -189,6 +180,15 @@ public class DatabaseManager {
         }
         if(oldVersion < 3 && newVersion >= 3) {
             // Version 3
+            database.execSQL("CREATE TABLE IF NOT EXISTS CourseNames " +
+                    "(" +
+                    "CourseName TEXT, " +
+                    "Status TEXT, " +
+                    "LastUpdate INT" +
+                    ");");
+        }
+        if(oldVersion < 4 && newVersion >= 4) {
+            // Version 4
 
         }
 
@@ -386,6 +386,88 @@ public class DatabaseManager {
         return nfcCardData;
     }
 
+    public CourseName[] getCourseNames() {
+        openDatabase();
+        String value = null;
+        Cursor resultSet;
+        resultSet = database.rawQuery("SELECT CourseName, Status, LastUpdate FROM CourseNames ORDER BY CourseName ASC", null);
+
+        ArrayList<CourseName> courseNames = new ArrayList<CourseName>();
+        if(resultSet.moveToFirst()) {
+            do {
+                CourseName cname = new CourseName(resultSet.getString(0), resultSet.getString(1), resultSet.getLong(2));
+                courseNames.add(cname);
+            } while (resultSet.moveToNext());
+        }
+        resultSet.close();
+        CourseName[] resultsArr = new CourseName[courseNames.size()];
+        resultsArr = courseNames.toArray(resultsArr);
+        return resultsArr;
+    }
+
+    public CourseName getLatestCourseName() {
+        openDatabase();
+        CourseName lastCourse = null;
+        Cursor resultSet;
+        resultSet = database.rawQuery("SELECT CourseName, Status, LastUpdate FROM CourseNames ORDER BY LastUpdate DESC LIMIT 1", null);
+
+        if(resultSet.moveToFirst()) {
+            lastCourse = new CourseName(resultSet.getString(0), resultSet.getString(1), resultSet.getLong(2));
+        }
+        resultSet.close();
+        return lastCourse;
+    }
+
+    public void addCourseName(CourseName courseName) {
+        openDatabase();
+        String[] whereArgs = new String[] {
+                courseName.getName()
+        };
+        Cursor resultSet = database.rawQuery("SELECT CourseName FROM CourseNames WHERE CourseName = ?", whereArgs);
+        if(resultSet.moveToFirst()) {
+            if(courseName.isActiveCourse()) {
+                try {
+                    ContentValues updateValues = new ContentValues();
+                    updateValues.put("Status", courseName.getStatus());
+                    updateValues.put("LastUpdate", courseName.getLastUpdate());
+
+                    database.update("CourseNames", updateValues, "CourseName = ?", whereArgs);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            } else {
+                database.delete("CourseNames", "CourseName = ?", whereArgs);
+            }
+        } else if(courseName.isActiveCourse()) {
+            try {
+                ContentValues indexValues = new ContentValues();
+                indexValues.put("CourseName", courseName.getName());
+                indexValues.put("Status", courseName.getStatus());
+                indexValues.put("LastUpdate", courseName.getLastUpdate());
+
+                database.insertOrThrow("CourseNames", null, indexValues);
+            } catch(Exception e) {
+                e.printStackTrace();
+            }
+        }
+        resultSet.close();
+    }
+
+    public boolean haveCourseName(String courseName) {
+        openDatabase();
+        String[] whereArgs = new String[] {
+                courseName
+        };
+        Cursor resultSet = database.rawQuery("SELECT CourseName FROM CourseNames WHERE CourseName = ?", whereArgs);
+        boolean result;
+        if(resultSet.moveToFirst()) {
+            result = true;
+        } else {
+            result = false;
+        }
+        return result;
+    }
+
     public void updateCourseCalendar(CourseEvent event, Component cevent) {
         openDatabase();
         if(vorlesungsplanDBHelper == null)