Autocomplete Feature für Kursnamen hinzugefügt (eigene API, da von DHBW nicht bereitg...
[DHBWCampusApp.git] / app / src / main / java / de / dhbwloe / campusapp / fragments / SplashScreen.java
index e94ddb3712e8f608efc7b184365a1a377364ad51..445a6082260f6b92f7efb724ab65c31d5e1b65cb 100644 (file)
@@ -34,6 +34,8 @@ import de.dhbwloe.campusapp.CampusApp;
 import de.dhbwloe.campusapp.CampusAppContext;
 import de.dhbwloe.campusapp.CampusAppFragment;
 import de.dhbwloe.campusapp.R;
+import de.dhbwloe.campusapp.coursenames.CourseNameManager;
+import de.dhbwloe.campusapp.coursenames.CourseNameManagerInterface;
 import de.dhbwloe.campusapp.mensaplan.MensaplanManager;
 import de.dhbwloe.campusapp.mensaplan.MensaplanManagerInterface;
 import de.dhbwloe.campusapp.news.NewsManager;
@@ -111,6 +113,34 @@ public class SplashScreen extends CampusAppFragment {
                         AppContext.addDefaultSearchIndexes();
                         break;
                     case 3:
+                        String lastCNSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastCNSync");
+                        long lastCNSync;
+                        if(lastCNSyncStr != null)
+                            lastCNSync = Long.parseLong(lastCNSyncStr);
+                        else
+                            lastCNSync = 0;
+
+                        CourseNameManager cnm = new CourseNameManager();
+
+                        if(lastCNSync == 0 || now - lastCNSync > (86400 * 7)) { //sync every 7 days
+                            cnm.synchronizeCourseNames(new CourseNameManagerInterface() {
+                                @Override
+                                public void onCourseNamesSynchronized() {
+                                    long now = (new Date()).getTime() / 1000;
+                                    AppContext.getDatabaseManager().setRuntimeCache("LastCNSync", Long.toString(now));
+                                    timerHandler.postDelayed(timerRunnable, 100);
+                                }
+
+                                @Override
+                                public void onCourseNamesFailed(String errorMessage) {
+                                    timerHandler.postDelayed(timerRunnable, 100);
+                                }
+                            });
+                        }
+                        else
+                            break;
+                        return;
+                    case 4:
                         String startCounter = AppContext.getDatabaseManager().getRuntimeCache("AppStartCounter");
                         if(startCounter == null || Integer.parseInt(startCounter) == 0) {
                             AppContext.getNavigationManager().navigatePage("FirstRun", null, false);
@@ -118,7 +148,7 @@ public class SplashScreen extends CampusAppFragment {
                         }
                         AppContext.getDatabaseManager().setRuntimeCache("AppStartCounter", Integer.toString(Integer.parseInt(startCounter) + 1));
                         break;
-                    case 4:
+                    case 5:
                         String lastVLMFullSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastVLMFullSync");
                         String lastVLMPartialSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastVLMPartialSync");
                         long lastVLMFullSync, lastVLMPartialSync;
@@ -131,7 +161,7 @@ public class SplashScreen extends CampusAppFragment {
                         else
                             lastVLMPartialSync = 0;
 
-                        String kursTag = AppContext.getDatabaseManager().getRuntimeCache("CourseName");
+                        final String kursTag = AppContext.getDatabaseManager().getRuntimeCache("CourseName");
                         if(kursTag == null || kursTag.isEmpty())
                             break;
                         CalendarManager vpm = new CalendarManager(AppContext, kursTag);
@@ -140,6 +170,11 @@ public class SplashScreen extends CampusAppFragment {
                             vpm.performFullSynchronisation(new CalendarManagerInterface() {
                                 @Override
                                 public void onCalendarUpdateDone() {
+                                    if(!AppContext.getDatabaseManager().haveCourseName(kursTag)) {
+                                        CourseNameManager cnm = new CourseNameManager();
+                                        cnm.addCourseName(kursTag);
+                                    }
+
                                     long now = (new Date()).getTime() / 1000;
                                     AppContext.getDatabaseManager().setRuntimeCache("LastVLMFullSync", Long.toString(now));
                                     AppContext.getDatabaseManager().setRuntimeCache("LastVLMPartialSync", Long.toString(now));
@@ -168,6 +203,11 @@ public class SplashScreen extends CampusAppFragment {
                             vpm.performFastSynchronisation(new CalendarManagerInterface() {
                                 @Override
                                 public void onCalendarUpdateDone() {
+                                    if(!AppContext.getDatabaseManager().haveCourseName(kursTag)) {
+                                        CourseNameManager cnm = new CourseNameManager();
+                                        cnm.addCourseName(kursTag);
+                                    }
+
                                     long now = (new Date()).getTime()/1000;
                                     AppContext.getDatabaseManager().setRuntimeCache("LastVLMPartialSync", Long.toString(now));
                                     timerHandler.postDelayed(timerRunnable, 100);
@@ -193,7 +233,7 @@ public class SplashScreen extends CampusAppFragment {
                         else
                             break;
                         return;
-                    case 5:
+                    case 6:
                         String lastMPMSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastMPSync");
                         long lastMPMSync;
                         if(lastMPMSyncStr != null)
@@ -221,9 +261,9 @@ public class SplashScreen extends CampusAppFragment {
                         else
                             break;
                         return;
-                    case 6:
                     case 7:
-                        final String syncSource = (progressCounter == 6 ? "DHBW" : "STUV");
+                    case 8:
+                        final String syncSource = (progressCounter == 7 ? "DHBW" : "STUV");
                         String lastNewsSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastNewsSync_"+syncSource);
                         long lastNewsSync;
                         if(lastNewsSyncStr != null)
@@ -251,7 +291,7 @@ public class SplashScreen extends CampusAppFragment {
                         else
                             break;
                         return;
-                    case 8:
+                    case 9:
                         String lastStuvSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastStuvSync");
                         long lastStuvSync;
                         if(lastStuvSyncStr != null)