// Path: app/src/main/java/com/github/istin/schedule/manager/ConfigurationManager.java
// public class ConfigurationManager {
// 
//     public static final String KEY_CONFIG = "_config";
// 
//     public static final String APP_SERVICE_KEY = "config:manager";
// 
//     public static ConfigurationManager get(Context pContext) {
//         return CoreApplication.get(pContext, APP_SERVICE_KEY);
//     }
// 
//     public boolean isConfigured() {
//         return getConfig() != null;
//     }
// 
//     public static class Config implements Serializable {
// 
//         @SerializedName("l")
//         private Lecturer mLecturer;
// 
//         @SerializedName("u")
//         private University mUniversity;
// 
//         public Config(University pUniversity, Lecturer pLecturer) {
//             mLecturer = pLecturer;
//             mUniversity = pUniversity;
//         }
// 
//         public Lecturer getLecturer() {
//             return mLecturer;
//         }
// 
//         public University getUniversity() {
//             return mUniversity;
//         }
// 
//     }
// 
//     private Config mConfig;
// 
//     private Context mContext;
// 
//     private Object mLock = new Object();
// 
//     private boolean isInited = false;
// 
//     public ConfigurationManager(Context pContext) {
//         mContext = pContext;
//         new Thread(new Runnable() {
//             @Override
//             public void run() {
//                 if (isInited) {
//                     return;
//                 }
//                 firstInitialization();
//             }
//         }).start();
//     }
// 
//     protected void firstInitialization() {
//         synchronized (mLock) {
//             if (isInited) {
//                 return;
//             }
//             final SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
//             final String value = defaultSharedPreferences.getString(KEY_CONFIG, null);
//             if (value != null) {
//                 mConfig = new Gson().fromJson(value, Config.class);
//             }
//             isInited = true;
//         }
//     }
// 
//     public void setConfig(Config pConfig) {
//         mConfig = pConfig;
//         final SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
//         final String value = new Gson().toJson(mConfig, Config.class);
//         defaultSharedPreferences.edit().putString(KEY_CONFIG, value).apply();
//     }
// 
//     public Config getConfig() {
//         if (isInited) {
//             return mConfig;
//         }
//         firstInitialization();
//         return mConfig;
//     }
// }


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.github.istin.schedule.manager.ConfigurationManager;
package com.github.istin.schedule;



/**
 * Created by uladzimir_klyshevich on 10/6/15.
 */
public class StartActivity extends Activity {

    private static final String CONFIG_STATE = "config_state";

    private boolean isConfigurationProcessStarted = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState != null) {
            isConfigurationProcessStarted = savedInstanceState.getBoolean(CONFIG_STATE);
            if (isConfigurationProcessStarted) {
                return;
            }
        }
        checkAndRedirect();
    }

    private void checkAndRedirect() {
// Path: app/src/main/java/com/github/istin/schedule/manager/ConfigurationManager.java
// public class ConfigurationManager {
// 
//     public static final String KEY_CONFIG = "_config";
// 
//     public static final String APP_SERVICE_KEY = "config:manager";
// 
//     public static ConfigurationManager get(Context pContext) {
//         return CoreApplication.get(pContext, APP_SERVICE_KEY);
//     }
// 
//     public boolean isConfigured() {
//         return getConfig() != null;
//     }
// 
//     public static class Config implements Serializable {
// 
//         @SerializedName("l")
//         private Lecturer mLecturer;
// 
//         @SerializedName("u")
//         private University mUniversity;
// 
//         public Config(University pUniversity, Lecturer pLecturer) {
//             mLecturer = pLecturer;
//             mUniversity = pUniversity;
//         }
// 
//         public Lecturer getLecturer() {
//             return mLecturer;
//         }
// 
//         public University getUniversity() {
//             return mUniversity;
//         }
// 
//     }
// 
//     private Config mConfig;
// 
//     private Context mContext;
// 
//     private Object mLock = new Object();
// 
//     private boolean isInited = false;
// 
//     public ConfigurationManager(Context pContext) {
//         mContext = pContext;
//         new Thread(new Runnable() {
//             @Override
//             public void run() {
//                 if (isInited) {
//                     return;
//                 }
//                 firstInitialization();
//             }
//         }).start();
//     }
// 
//     protected void firstInitialization() {
//         synchronized (mLock) {
//             if (isInited) {
//                 return;
//             }
//             final SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
//             final String value = defaultSharedPreferences.getString(KEY_CONFIG, null);
//             if (value != null) {
//                 mConfig = new Gson().fromJson(value, Config.class);
//             }
//             isInited = true;
//         }
//     }
// 
//     public void setConfig(Config pConfig) {
//         mConfig = pConfig;
//         final SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
//         final String value = new Gson().toJson(mConfig, Config.class);
//         defaultSharedPreferences.edit().putString(KEY_CONFIG, value).apply();
//     }
// 
//     public Config getConfig() {
//         if (isInited) {
//             return mConfig;
//         }
//         firstInitialization();
//         return mConfig;
//     }
// }


// Path: app/src/main/java/com/github/istin/schedule/StartActivity.java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.github.istin.schedule.manager.ConfigurationManager;

package com.github.istin.schedule;



/**
 * Created by uladzimir_klyshevich on 10/6/15.
 */
public class StartActivity extends Activity {

    private static final String CONFIG_STATE = "config_state";

    private boolean isConfigurationProcessStarted = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState != null) {
            isConfigurationProcessStarted = savedInstanceState.getBoolean(CONFIG_STATE);
            if (isConfigurationProcessStarted) {
                return;
            }
        }
        checkAndRedirect();
    }

    private void checkAndRedirect() {
        if (ConfigurationManager.get(this).isConfigured()) {