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 83d773fa2d775d35ccfa73d973d32e4454217263..445a6082260f6b92f7efb724ab65c31d5e1b65cb 100644 (file)
@@ -1,6 +1,19 @@
+/* SplashScreen.java
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
 package de.dhbwloe.campusapp.fragments;
-
-
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.Point;
@@ -13,12 +26,16 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.ProgressBar;
+import android.widget.TextView;
 
 import java.util.Date;
 
 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;
@@ -56,6 +73,9 @@ public class SplashScreen extends CampusAppFragment {
                              Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.fragment_splashscreen, container, false);
 
+        TextView versionView = (TextView) view.findViewById(R.id.version);
+        versionView.setText(CampusAppContext.APPVERSION);
+
         splashProgress = (ProgressBar)view.findViewById(R.id.splashProgress);
         splashProgress.setMax(20);
         splashProgress.setProgress(0);
@@ -93,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);
@@ -100,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;
@@ -113,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);
@@ -122,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));
@@ -142,7 +195,7 @@ public class SplashScreen extends CampusAppFragment {
                                     indices.setDescription("Vorlesung " + event.getEventTitle());
                                     indices.addKeyWord(event.getGroupTitle());
                                     indices.addKeyWord(event.getEventLocation());
-                                    return null;
+                                    return indices;
                                 }
                             });
                         }
@@ -150,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);
@@ -164,18 +222,18 @@ public class SplashScreen extends CampusAppFragment {
                                     SearchIndices indices = new SearchIndices("Vorlesungsplan#Group"+group.getGroupId(), false);
                                     indices.setUpdateTime(event.getEventFrom());
                                     indices.setTarget("#Vorlesungsplan#groupid=" + group.getGroupId());
-                                    indices.setTitle("Vorlesungsplan " + event.getCourseName());
-                                    indices.setDescription("Vorlesung " + event.getEventTitle());
+                                    indices.setTitle(AppContext.getResString(R.string.search_vorlesungsplan_group_title, event.getCourseName()));
+                                    indices.setDescription(event.getEventTitle());
                                     indices.addKeyWord(event.getGroupTitle());
                                     indices.addKeyWord(event.getEventLocation());
-                                    return null;
+                                    return indices;
                                 }
                             });
                         }
                         else
                             break;
                         return;
-                    case 5:
+                    case 6:
                         String lastMPMSyncStr = AppContext.getDatabaseManager().getRuntimeCache("LastMPSync");
                         long lastMPMSync;
                         if(lastMPMSyncStr != null)
@@ -203,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)
@@ -233,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)