diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ca1fede..542b57a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,6 +18,8 @@ + + + + + - + + + + + + + + diff --git a/app/src/main/java/de/sebse/fuplanner/MainActivity.java b/app/src/main/java/de/sebse/fuplanner/MainActivity.java index 21043a4..ffccf8b 100644 --- a/app/src/main/java/de/sebse/fuplanner/MainActivity.java +++ b/app/src/main/java/de/sebse/fuplanner/MainActivity.java @@ -39,14 +39,13 @@ import de.sebse.fuplanner.fragments.moddetails.ModDetailFragment; import de.sebse.fuplanner.services.Canteen.CanteenBrowser; import de.sebse.fuplanner.services.Canteen.types.Canteen; import de.sebse.fuplanner.services.Canteen.types.CanteenListener; -import de.sebse.fuplanner.services.GoogleAuth.Credentials; import de.sebse.fuplanner.services.GoogleAuth.GoogleAuth; -import de.sebse.fuplanner.services.KVV.KVV; -import de.sebse.fuplanner.services.KVV.KVVListener; -import de.sebse.fuplanner.services.KVV.types.LoginToken; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.KVV; +import de.sebse.fuplanner.services.kvv.KVVListener; +import de.sebse.fuplanner.services.kvv.types.LoginToken; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.services.News.NewsManager; -import de.sebse.fuplanner.services.newkvv.AccountGeneral; +import de.sebse.fuplanner.services.fulogin.AccountGeneral; import de.sebse.fuplanner.tools.CustomAccountManager; import de.sebse.fuplanner.tools.MainActivityListener; import de.sebse.fuplanner.tools.NewAsyncQueue; @@ -54,9 +53,6 @@ import de.sebse.fuplanner.tools.Preferences; import de.sebse.fuplanner.tools.Regex; import de.sebse.fuplanner.tools.RequestPermissionsResultListener; import de.sebse.fuplanner.tools.logging.Logger; -import de.sebse.fuplanner.tools.network.NetworkCallback; -import de.sebse.fuplanner.tools.network.NetworkError; -import de.sebse.fuplanner.tools.network.NetworkErrorCallback; import de.sebse.fuplanner.tools.types.News; public class MainActivity extends AppCompatActivity @@ -669,16 +665,6 @@ public class MainActivity extends AppCompatActivity - @Override - public void getCredentials(NetworkCallback callback, NetworkErrorCallback error) { - getGoogleAuth().getLoginState(credentials -> { - if (credentials == null || credentials.getUsername() == null || credentials.getPassword() == null) { - error.onError(new NetworkError(200100, 403, "No Google Login available!")); - } else { - callback.onResponse(credentials); - } - }); - } @Override public void onLogin(LoginToken token, boolean enteringOnlineMode) { diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/ModulesAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/ModulesAdapter.java index 3d770ea..01b5916 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/ModulesAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/ModulesAdapter.java @@ -11,9 +11,9 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import de.sebse.fuplanner.R; import de.sebse.fuplanner.fragments.ModulesFragment.OnModulesFragmentInteractionListener; -import de.sebse.fuplanner.services.KVV.types.Lecturer; -import de.sebse.fuplanner.services.KVV.types.Modules; -import de.sebse.fuplanner.services.KVV.types.Semester; +import de.sebse.fuplanner.services.kvv.types.Lecturer; +import de.sebse.fuplanner.services.kvv.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Semester; import de.sebse.fuplanner.tools.ui.CustomViewHolder; import de.sebse.fuplanner.tools.ui.ItemViewHolder; import de.sebse.fuplanner.tools.ui.StringViewHolder; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/NewsAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/NewsAdapter.java index a454958..cdebef9 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/NewsAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/NewsAdapter.java @@ -8,7 +8,7 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import de.sebse.fuplanner.R; import de.sebse.fuplanner.fragments.ModulesFragment.OnModulesFragmentInteractionListener; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.UtilsDate; import de.sebse.fuplanner.tools.types.News; import de.sebse.fuplanner.tools.types.NewsList; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java index 01329b2..703c172 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java @@ -16,8 +16,8 @@ import java.util.List; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.types.Event; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Event; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.UtilsDate; import de.sebse.fuplanner.tools.MainActivityListener; import de.sebse.fuplanner.tools.logging.Logger; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceAdapter.java index c416336..1e26f9d 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceAdapter.java @@ -16,9 +16,9 @@ import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.ui.Download; -import de.sebse.fuplanner.services.KVV.types.Announcement; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.ui.Download; +import de.sebse.fuplanner.services.kvv.types.Announcement; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.Regex; import de.sebse.fuplanner.tools.UtilsDate; import de.sebse.fuplanner.tools.logging.Logger; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceFragment.java index 102ee62..fcbd7cf 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAnnounceFragment.java @@ -14,8 +14,8 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import de.sebse.fuplanner.MainActivity; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.types.Modules; -import de.sebse.fuplanner.services.KVV.ui.Download; +import de.sebse.fuplanner.services.kvv.types.Modules; +import de.sebse.fuplanner.services.kvv.ui.Download; import de.sebse.fuplanner.tools.MainActivityListener; import de.sebse.fuplanner.tools.logging.Logger; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentAdapter.java index 7e115d4..d2fc2a9 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentAdapter.java @@ -16,9 +16,9 @@ import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.ui.Download; -import de.sebse.fuplanner.services.KVV.types.Assignment; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.ui.Download; +import de.sebse.fuplanner.services.kvv.types.Assignment; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.Regex; import de.sebse.fuplanner.tools.UtilsDate; import de.sebse.fuplanner.tools.logging.Logger; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentFragment.java index 28f2514..19b4af6 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailAssignmentFragment.java @@ -14,8 +14,8 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import de.sebse.fuplanner.MainActivity; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.ui.Download; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.ui.Download; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.MainActivityListener; import de.sebse.fuplanner.tools.logging.Logger; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailEventAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailEventAdapter.java index 7773664..6de6a20 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailEventAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailEventAdapter.java @@ -14,10 +14,10 @@ import java.util.Map; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.types.Event; -import de.sebse.fuplanner.services.KVV.types.EventList; -import de.sebse.fuplanner.services.KVV.types.GroupedEvents; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Event; +import de.sebse.fuplanner.services.kvv.types.EventList; +import de.sebse.fuplanner.services.kvv.types.GroupedEvents; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.UtilsDate; import de.sebse.fuplanner.tools.logging.Logger; import de.sebse.fuplanner.tools.ui.CustomViewHolder; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailFragment.java index b673cb2..7bc80fa 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailFragment.java @@ -10,7 +10,7 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.viewpager.widget.ViewPager; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.MainActivityListener; import de.sebse.fuplanner.tools.logging.Logger; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailGradebookAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailGradebookAdapter.java index cd0bb74..8a1e3c9 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailGradebookAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailGradebookAdapter.java @@ -12,8 +12,8 @@ import java.util.ArrayList; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.types.Grade; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Grade; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.ui.StringViewHolder; class ModDetailGradebookAdapter extends RecyclerView.Adapter { diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewAdapter.java index 6b616d4..1f444cd 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailOverviewAdapter.java @@ -15,11 +15,11 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.types.Announcement; -import de.sebse.fuplanner.services.KVV.types.Assignment; -import de.sebse.fuplanner.services.KVV.types.Event; -import de.sebse.fuplanner.services.KVV.types.Lecturer; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Announcement; +import de.sebse.fuplanner.services.kvv.types.Assignment; +import de.sebse.fuplanner.services.kvv.types.Event; +import de.sebse.fuplanner.services.kvv.types.Lecturer; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.UtilsDate; import de.sebse.fuplanner.tools.logging.Logger; import de.sebse.fuplanner.tools.ui.CustomViewHolder; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailResourceAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailResourceAdapter.java index ba5f006..b91ef2a 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailResourceAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailResourceAdapter.java @@ -3,8 +3,8 @@ package de.sebse.fuplanner.fragments.moddetails; import java.util.ArrayList; import java.util.List; -import de.sebse.fuplanner.services.KVV.types.Modules; -import de.sebse.fuplanner.services.KVV.types.Resource; +import de.sebse.fuplanner.services.kvv.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Resource; import de.sebse.fuplanner.tools.ui.treeview.TreeNode; import de.sebse.fuplanner.tools.ui.treeview.TreeViewAdapter; import de.sebse.fuplanner.tools.ui.treeview.TreeViewBinder; diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailResourceFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailResourceFragment.java index 9d23e95..56f5249 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailResourceFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/moddetails/ModDetailResourceFragment.java @@ -18,9 +18,9 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import de.sebse.fuplanner.MainActivity; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.ui.Download; -import de.sebse.fuplanner.services.KVV.types.Modules; -import de.sebse.fuplanner.services.KVV.types.Resource; +import de.sebse.fuplanner.services.kvv.ui.Download; +import de.sebse.fuplanner.services.kvv.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Resource; import de.sebse.fuplanner.tools.MainActivityListener; import de.sebse.fuplanner.tools.logging.Logger; import de.sebse.fuplanner.tools.ui.treeview.DirectoryNodeBinder; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVListener.java b/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVListener.java deleted file mode 100644 index 9747f7f..0000000 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVListener.java +++ /dev/null @@ -1,23 +0,0 @@ -package de.sebse.fuplanner.services.KVV; - -import com.android.volley.NetworkResponse; - -import de.sebse.fuplanner.services.GoogleAuth.Credentials; -import de.sebse.fuplanner.services.KVV.types.LoginToken; -import de.sebse.fuplanner.tools.CustomAccountManager; -import de.sebse.fuplanner.tools.network.NetworkCallback; -import de.sebse.fuplanner.tools.network.NetworkErrorCallback; - -public interface KVVListener { - void getCredentials(NetworkCallback callback, NetworkErrorCallback error); - - void onLogin(LoginToken token, boolean enteringOnlineMode); - - void onLogout(); - - void onModuleListChange(); - - void onKVVNetworkResponse(NetworkResponse error); - - CustomAccountManager getAccountManager(); -} diff --git a/app/src/main/java/de/sebse/fuplanner/services/newkvv/AccountGeneral.java b/app/src/main/java/de/sebse/fuplanner/services/fulogin/AccountGeneral.java similarity index 84% rename from app/src/main/java/de/sebse/fuplanner/services/newkvv/AccountGeneral.java rename to app/src/main/java/de/sebse/fuplanner/services/fulogin/AccountGeneral.java index 2d98253..7c15881 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/newkvv/AccountGeneral.java +++ b/app/src/main/java/de/sebse/fuplanner/services/fulogin/AccountGeneral.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.newkvv; +package de.sebse.fuplanner.services.fulogin; public class AccountGeneral { public static final String ACCOUNT_TYPE = "de.sebse.fuplanner.fuauth"; diff --git a/app/src/main/java/de/sebse/fuplanner/services/newkvv/FUAuthenticator.java b/app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticator.java similarity index 98% rename from app/src/main/java/de/sebse/fuplanner/services/newkvv/FUAuthenticator.java rename to app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticator.java index 6dfba9c..ae8e79d 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/newkvv/FUAuthenticator.java +++ b/app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticator.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.newkvv; +package de.sebse.fuplanner.services.fulogin; import android.accounts.AbstractAccountAuthenticator; import android.accounts.Account; diff --git a/app/src/main/java/de/sebse/fuplanner/services/newkvv/FUAuthenticatorActivity.java b/app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticatorActivity.java similarity index 95% rename from app/src/main/java/de/sebse/fuplanner/services/newkvv/FUAuthenticatorActivity.java rename to app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticatorActivity.java index 03ee6cd..79b6e14 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/newkvv/FUAuthenticatorActivity.java +++ b/app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticatorActivity.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.newkvv; +package de.sebse.fuplanner.services.fulogin; import android.accounts.Account; import android.accounts.AccountAuthenticatorActivity; @@ -27,7 +27,7 @@ import android.widget.EditText; import androidx.annotation.NonNull; import de.sebse.fuplanner.R; -import static de.sebse.fuplanner.services.newkvv.UserLoginTask.PARAM_USER_PASS; +import static de.sebse.fuplanner.services.fulogin.UserLoginTask.PARAM_USER_PASS; /** * A login screen that offers login via email/password. @@ -169,10 +169,6 @@ public class FUAuthenticatorActivity extends AccountAuthenticatorActivity implem mEmailView.setError(getString(R.string.error_field_required)); focusView = mEmailView; cancel = true; - } else if (!isEmailValid(email)) { - mEmailView.setError(getString(R.string.error_invalid_email)); - focusView = mEmailView; - cancel = true; } if (cancel) { @@ -188,11 +184,6 @@ public class FUAuthenticatorActivity extends AccountAuthenticatorActivity implem } } - private boolean isEmailValid(String email) { - //TODO: Replace this with your own logic - return true;//email.contains("@"); - } - private boolean isPasswordValid(String password) { //TODO: Replace this with your own logic return password.length() > 4; diff --git a/app/src/main/java/de/sebse/fuplanner/services/newkvv/FUAuthenticatorService.java b/app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticatorService.java similarity index 87% rename from app/src/main/java/de/sebse/fuplanner/services/newkvv/FUAuthenticatorService.java rename to app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticatorService.java index a6f1516..62519a6 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/newkvv/FUAuthenticatorService.java +++ b/app/src/main/java/de/sebse/fuplanner/services/fulogin/FUAuthenticatorService.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.newkvv; +package de.sebse.fuplanner.services.fulogin; import android.app.Service; import android.content.Intent; diff --git a/app/src/main/java/de/sebse/fuplanner/services/newkvv/UserLoginTask.java b/app/src/main/java/de/sebse/fuplanner/services/fulogin/UserLoginTask.java similarity index 96% rename from app/src/main/java/de/sebse/fuplanner/services/newkvv/UserLoginTask.java rename to app/src/main/java/de/sebse/fuplanner/services/fulogin/UserLoginTask.java index 3338106..50f0e34 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/newkvv/UserLoginTask.java +++ b/app/src/main/java/de/sebse/fuplanner/services/fulogin/UserLoginTask.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.newkvv; +package de.sebse.fuplanner.services.fulogin; import android.accounts.AccountManager; import android.annotation.SuppressLint; @@ -14,8 +14,8 @@ import java.util.concurrent.atomic.AtomicReference; import androidx.annotation.Nullable; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.types.LoginToken; -import de.sebse.fuplanner.services.newkvv.network.Login; +import de.sebse.fuplanner.services.kvv.types.LoginToken; +import de.sebse.fuplanner.services.kvv.sync.Login; import de.sebse.fuplanner.tools.logging.Logger; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/KVV.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/KVV.java similarity index 96% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/KVV.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/KVV.java index 076947f..3a0770b 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/KVV.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/KVV.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV; +package de.sebse.fuplanner.services.kvv; import android.content.Context; diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/KVVListener.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/KVVListener.java new file mode 100644 index 0000000..ffe2a81c --- /dev/null +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/KVVListener.java @@ -0,0 +1,18 @@ +package de.sebse.fuplanner.services.kvv; + +import com.android.volley.NetworkResponse; + +import de.sebse.fuplanner.services.kvv.types.LoginToken; +import de.sebse.fuplanner.tools.CustomAccountManager; + +public interface KVVListener { + void onLogin(LoginToken token, boolean enteringOnlineMode); + + void onLogout(); + + void onModuleListChange(); + + void onKVVNetworkResponse(NetworkResponse error); + + CustomAccountManager getAccountManager(); +} diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/Login.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/Login.java similarity index 69% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/Login.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/Login.java index ca47f2e..cda072c 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/Login.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/Login.java @@ -1,14 +1,12 @@ -package de.sebse.fuplanner.services.KVV; +package de.sebse.fuplanner.services.kvv; import android.content.Context; import org.jetbrains.annotations.NotNull; -import org.json.JSONException; -import org.json.JSONObject; import androidx.annotation.Nullable; -import de.sebse.fuplanner.services.KVV.types.LoginToken; -import de.sebse.fuplanner.services.newkvv.AccountGeneral; +import de.sebse.fuplanner.services.kvv.types.LoginToken; +import de.sebse.fuplanner.services.fulogin.AccountGeneral; import de.sebse.fuplanner.tools.CustomAccountManager; import de.sebse.fuplanner.tools.NetworkCallbackCollector; import de.sebse.fuplanner.tools.network.HTTPService; @@ -35,18 +33,6 @@ public class Login extends HTTPService { mOnlineMode = false; } - public void doOnlineLogin(@NotNull String username, @NotNull String password, NetworkCallback callback, NetworkErrorCallback errorCallback) { - - } - - //public boolean restoreOnlineLogin() { - // return restoreLogin(true); - //} - - //public boolean doOfflineLogin() { - // return restoreLogin(false); - //} - public void restoreOnlineLogin(BooleanInterface callback) { if (mLoginPending) { callback.run(false); @@ -103,22 +89,7 @@ public class Login extends HTTPService { } private void testLoginToken(@NotNull LoginToken token, @NotNull NetworkCallback callback, @NotNull NetworkErrorCallback errorCallback) { - get(String.format("https://kvv.imp.fu-berlin.de/direct/profile/%s.json", token.getUsername()), token.getCookies(), response -> { - String body = response.getParsed(); - if (body == null) { - errorCallback.onError(new NetworkError(100172, 403, "Testing login failed!")); - return; - } - try { - JSONObject json = new JSONObject(body); - String displayName = json.getString("displayName"); - String email = json.getString("email"); - token.setAdditionals(displayName, email); - callback.onResponse(token); - } catch (JSONException e) { - errorCallback.onError(new NetworkError(100171, 403, "Cannot parse profile!")); - } - }, error -> errorCallback.onError(new NetworkError(100170, error.networkResponse.statusCode, "Testing login failed!"))); + new de.sebse.fuplanner.services.kvv.sync.Login(getContext()).testLoginToken(token, callback, errorCallback); } @Nullable public LoginToken getLoginToken() { @@ -132,9 +103,7 @@ public class Login extends HTTPService { return; CustomAccountManager manager = mListener.getAccountManager(); manager.doInvalidateToken(AccountGeneral.ACCOUNT_TYPE, AccountGeneral.AUTHTOKEN_TYPE_KVV, ignored -> { - log.d("try restore", ignored); restoreOnlineLogin(isRestored -> { - log.d("restore", isRestored, mToken); if (isRestored) testLoginToken(mRefreshCallbacks::responseResponse, mRefreshCallbacks::responseError); else { @@ -143,14 +112,6 @@ public class Login extends HTTPService { } }); }); - /* mListener.getCredentials(credentials -> { - doOnlineLogin(credentials.getUsername(), credentials.getPassword(), - mRefreshCallbacks::responseResponse, - mRefreshCallbacks::responseError); - }, e -> { - logout(false); - mRefreshCallbacks.responseError(e); - });*/ } diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/Modules.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/Modules.java similarity index 98% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/Modules.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/Modules.java index 6923138..f2e8868 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/Modules.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/Modules.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV; +package de.sebse.fuplanner.services.kvv; import android.content.Context; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesAnnouncements.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAnnouncements.java similarity index 96% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesAnnouncements.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAnnouncements.java index b13df13..d6b4877 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesAnnouncements.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAnnouncements.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV; +package de.sebse.fuplanner.services.kvv; import android.content.Context; @@ -8,8 +8,8 @@ import org.json.JSONObject; import java.util.ArrayList; -import de.sebse.fuplanner.services.KVV.types.Announcement; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Announcement; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkError; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesAssignments.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAssignments.java similarity index 94% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesAssignments.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAssignments.java index 357be2c..c7948a5 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesAssignments.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAssignments.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV; +package de.sebse.fuplanner.services.kvv; import android.content.Context; @@ -8,9 +8,9 @@ import org.json.JSONObject; import java.util.ArrayList; -import de.sebse.fuplanner.services.KVV.types.Assignment; -import de.sebse.fuplanner.services.KVV.types.AssignmentList; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Assignment; +import de.sebse.fuplanner.services.kvv.types.AssignmentList; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkError; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesDetails.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesDetails.java similarity index 94% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesDetails.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesDetails.java index a08fda4..ffc491c 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesDetails.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesDetails.java @@ -1,11 +1,11 @@ -package de.sebse.fuplanner.services.KVV; +package de.sebse.fuplanner.services.kvv; import android.content.Context; import android.util.Pair; import java.util.concurrent.atomic.AtomicReference; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkError; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesEvents.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesEvents.java similarity index 94% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesEvents.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesEvents.java index 66ba5c1..13417f9 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesEvents.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesEvents.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV; +package de.sebse.fuplanner.services.kvv; import android.content.Context; @@ -6,9 +6,9 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -import de.sebse.fuplanner.services.KVV.types.Event; -import de.sebse.fuplanner.services.KVV.types.EventList; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Event; +import de.sebse.fuplanner.services.kvv.types.EventList; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkError; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesGradebook.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesGradebook.java similarity index 95% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesGradebook.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesGradebook.java index d346289..74672d9 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesGradebook.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesGradebook.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV; +package de.sebse.fuplanner.services.kvv; import android.content.Context; @@ -8,8 +8,8 @@ import org.json.JSONObject; import java.util.ArrayList; -import de.sebse.fuplanner.services.KVV.types.Grade; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Grade; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkError; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesList.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java similarity index 96% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesList.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java index 7c1d279..b21635a 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesList.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV; +package de.sebse.fuplanner.services.kvv; import android.content.Context; @@ -13,9 +13,9 @@ import java.util.HashSet; import java.util.LinkedHashSet; import java.util.regex.MatchResult; -import de.sebse.fuplanner.services.KVV.types.Lecturer; -import de.sebse.fuplanner.services.KVV.types.Modules; -import de.sebse.fuplanner.services.KVV.types.Semester; +import de.sebse.fuplanner.services.kvv.types.Lecturer; +import de.sebse.fuplanner.services.kvv.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Semester; import de.sebse.fuplanner.tools.NewAsyncQueue; import de.sebse.fuplanner.tools.Regex; import de.sebse.fuplanner.tools.network.HTTPService; @@ -23,7 +23,7 @@ import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkError; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; -import static de.sebse.fuplanner.services.KVV.PartModules.RETRY_COUNT; +import static de.sebse.fuplanner.services.kvv.PartModules.RETRY_COUNT; public class ModulesList extends HTTPService { private final Login mLogin; @@ -139,6 +139,7 @@ public class ModulesList extends HTTPService { } private void upgrade(final NetworkCallback callback, final NetworkErrorCallback errorCallback) { + log.d(mLogin.isInOnlineMode(), mLogin.getLoginToken()); if (!mLogin.isInOnlineMode() || mLogin.getLoginToken() == null) { errorCallback.onError(new NetworkError(101105, 500, "Currently running in offline mode!")); return; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesResources.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesResources.java similarity index 98% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesResources.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesResources.java index 5250ed9..4c86b2a 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/ModulesResources.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesResources.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV; +package de.sebse.fuplanner.services.kvv; import android.content.Context; import android.os.Environment; @@ -11,8 +11,8 @@ import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; -import de.sebse.fuplanner.services.KVV.types.Modules; -import de.sebse.fuplanner.services.KVV.types.Resource; +import de.sebse.fuplanner.services.kvv.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Resource; import de.sebse.fuplanner.tools.Regex; import de.sebse.fuplanner.tools.UtilsDate; import de.sebse.fuplanner.tools.network.NetworkCallback; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/Part.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/Part.java similarity index 93% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/Part.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/Part.java index a9b11d7..763af76 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/Part.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/Part.java @@ -1,8 +1,8 @@ -package de.sebse.fuplanner.services.KVV; +package de.sebse.fuplanner.services.kvv; import android.content.Context; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.network.HTTPService; import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/PartModules.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/PartModules.java similarity index 96% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/PartModules.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/PartModules.java index 8798c8c..eae3b53 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/PartModules.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/PartModules.java @@ -1,11 +1,11 @@ -package de.sebse.fuplanner.services.KVV; +package de.sebse.fuplanner.services.kvv; import android.content.Context; import android.os.Build; import android.text.Html; import android.text.Spanned; -import de.sebse.fuplanner.services.KVV.types.Modules; +import de.sebse.fuplanner.services.kvv.types.Modules; import de.sebse.fuplanner.tools.NewAsyncQueue; import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVContentProvider.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVContentProvider.java new file mode 100644 index 0000000..2ea6c78 --- /dev/null +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVContentProvider.java @@ -0,0 +1,67 @@ +package de.sebse.fuplanner.services.kvv.sync; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.content.UriMatcher; +import android.database.Cursor; +import android.net.Uri; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +public class KVVContentProvider extends ContentProvider { + + private static final String PROVIDER_NAME = "de.sebse.fuplanner.contentprovider.kvv.modules"; + private static final Uri CONTENT_URI = Uri.parse("content://" + PROVIDER_NAME + "/modules"); + private static final int MODULE = 1; + private static final int MODULE_ID = 2; + private static final UriMatcher uriMatcher = getUriMatcher(); + + private static UriMatcher getUriMatcher() { + UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); + uriMatcher.addURI(PROVIDER_NAME, "modules", MODULE); + uriMatcher.addURI(PROVIDER_NAME, "modules/#", MODULE_ID); + return uriMatcher; + } + + + @Override + public boolean onCreate() { + return true; + } + + @Nullable + @Override + public Cursor query(@NonNull Uri uri, @Nullable String[] strings, @Nullable String s, @Nullable String[] strings1, @Nullable String s1) { + return null; + } + + @Nullable + @Override + public String getType(@NonNull Uri uri) { + switch (uriMatcher.match(uri)) { + case MODULE: + return "vnd.android.cursor.dir/vnd.com."+PROVIDER_NAME; + case MODULE_ID: + return "vnd.android.cursor.item/vnd.com."+PROVIDER_NAME; + + } + return null; + } + + @Nullable + @Override + public Uri insert(@NonNull Uri uri, @Nullable ContentValues contentValues) { + return null; + } + + @Override + public int delete(@NonNull Uri uri, @Nullable String s, @Nullable String[] strings) { + return 0; + } + + @Override + public int update(@NonNull Uri uri, @Nullable ContentValues contentValues, @Nullable String s, @Nullable String[] strings) { + return 0; + } +} diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVSyncAdapter.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVSyncAdapter.java new file mode 100644 index 0000000..e9e3d51 --- /dev/null +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVSyncAdapter.java @@ -0,0 +1,107 @@ +package de.sebse.fuplanner.services.kvv.sync; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.content.AbstractThreadedSyncAdapter; +import android.content.ContentProviderClient; +import android.content.ContentResolver; +import android.content.Context; +import android.content.SyncResult; +import android.os.Bundle; + +import com.android.volley.NetworkResponse; + +import java.util.Iterator; +import java.util.concurrent.CountDownLatch; + +import de.sebse.fuplanner.services.kvv.KVV; +import de.sebse.fuplanner.services.kvv.KVVListener; +import de.sebse.fuplanner.services.kvv.types.LoginToken; +import de.sebse.fuplanner.services.kvv.types.Modules; +import de.sebse.fuplanner.tools.CustomAccountManager; +import de.sebse.fuplanner.tools.logging.Logger; + +public class KVVSyncAdapter extends AbstractThreadedSyncAdapter { + private KVV mKVV; + private Logger log = new Logger(this); + + /** + * Set up the sync adapter + */ + public KVVSyncAdapter(Context context, boolean autoInitialize) { + super(context, autoInitialize); + init(context); + } + /** + * Set up the sync adapter. This form of the + * constructor maintains compatibility with Android 3.0 + * and later platform versions + */ + public KVVSyncAdapter( + Context context, + boolean autoInitialize, + boolean allowParallelSyncs) { + super(context, autoInitialize, allowParallelSyncs); + init(context); + } + + private void init(Context context) { + CountDownLatch latch = new CountDownLatch(1); + mKVV = new KVV(new KVVListener() { + @Override + public void onLogin(LoginToken token, boolean enteringOnlineMode) { + + } + + @Override + public void onLogout() { + + } + + @Override + public void onModuleListChange() { + + } + + @Override + public void onKVVNetworkResponse(NetworkResponse error) { + + } + + @Override + public CustomAccountManager getAccountManager() { + return new CustomAccountManager(AccountManager.get(context), () -> null); + } + }, context); + mKVV.account().restoreOnlineLogin(bool -> {}); + } + + /* + * Specify the code you want to run in the sync adapter. The entire + * sync adapter runs in a background thread, so you don't have to set + * up your own background processing. + */ + @Override + public void onPerformSync( + Account account, + Bundle extras, + String authority, + ContentProviderClient provider, + SyncResult syncResult) { + log.d("start syncing"); + /* + * Put the data transfer code here. + */ + mKVV.modules().list().recv(success -> { + Iterator iterator = success.latestSemesterIterator(); + while (iterator.hasNext()) { + Modules.Module module = iterator.next(); + log.d("sync module", module.title); + mKVV.modules().details().recv(module, success1 -> { + if (success1.second) + log.d("Sync Successful for Module '"+module.title+"'!"); + }, log::e, true); + } + }, log::e, true); + } +} diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVSyncService.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVSyncService.java new file mode 100644 index 0000000..8000812 --- /dev/null +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/KVVSyncService.java @@ -0,0 +1,24 @@ +package de.sebse.fuplanner.services.kvv.sync; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; + +public class KVVSyncService extends Service { + + private static final Object sSyncAdapterLock = new Object(); + private static KVVSyncAdapter sSyncAdapter = null; + + @Override + public void onCreate() { + synchronized (sSyncAdapterLock) { + if (sSyncAdapter == null) + sSyncAdapter = new KVVSyncAdapter(getApplicationContext(), true); + } + } + + @Override + public IBinder onBind(Intent intent) { + return sSyncAdapter.getSyncAdapterBinder(); + } +} diff --git a/app/src/main/java/de/sebse/fuplanner/services/newkvv/network/Login.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/Login.java similarity index 99% rename from app/src/main/java/de/sebse/fuplanner/services/newkvv/network/Login.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/sync/Login.java index 5c67b22..52bd73f 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/newkvv/network/Login.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/sync/Login.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.newkvv.network; +package de.sebse.fuplanner.services.kvv.sync; import android.content.Context; @@ -10,7 +10,7 @@ import java.util.HashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; -import de.sebse.fuplanner.services.KVV.types.LoginToken; +import de.sebse.fuplanner.services.kvv.types.LoginToken; import de.sebse.fuplanner.tools.network.HTTPService; import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkError; @@ -46,6 +46,15 @@ public class Login extends HTTPService { + + + + + + + + + public void doLogin(String username, String password, NetworkCallback callback, NetworkErrorCallback error) { startKVVSession(success -> { String kvvJSESSIONID = success.get("JSESSIONID"); diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Announcement.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Announcement.java similarity index 97% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/Announcement.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/Announcement.java index 9ad8656..c4b96be 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Announcement.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Announcement.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import com.google.android.gms.common.internal.Objects; @@ -16,7 +16,6 @@ public class Announcement implements Serializable { private final ArrayList urls; public Announcement(String id, String title, String body, String createdBy, long createdOn, ArrayList urls) { - this.id = id; this.title = title; this.body = body; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Assignment.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Assignment.java similarity index 97% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/Assignment.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/Assignment.java index 2e72d00..b5e3ac3 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Assignment.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Assignment.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import com.google.android.gms.common.internal.Objects; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/AssignmentList.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/AssignmentList.java similarity index 86% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/AssignmentList.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/AssignmentList.java index 0516b60..4600f8f 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/AssignmentList.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/AssignmentList.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import de.sebse.fuplanner.tools.DateSortedList; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Event.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Event.java similarity index 98% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/Event.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/Event.java index 22177d3..8a6005c 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Event.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Event.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import com.google.android.gms.common.internal.Objects; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/EventList.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/EventList.java similarity index 85% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/EventList.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/EventList.java index 5957c0e..a0ce825 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/EventList.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/EventList.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import de.sebse.fuplanner.tools.DateSortedList; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Grade.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Grade.java similarity index 95% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/Grade.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/Grade.java index 1310429..fefba7f 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Grade.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Grade.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import com.google.android.gms.common.internal.Objects; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/GroupedEvents.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/GroupedEvents.java similarity index 98% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/GroupedEvents.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/GroupedEvents.java index 08835e3..7e4409b 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/GroupedEvents.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/GroupedEvents.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import android.annotation.SuppressLint; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Lecturer.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Lecturer.java similarity index 96% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/Lecturer.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/Lecturer.java index 5bacd94..48842c5 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Lecturer.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Lecturer.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import java.io.Serializable; import java.util.regex.Matcher; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/LoginToken.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/LoginToken.java similarity index 97% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/LoginToken.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/LoginToken.java index 544729f..1c4a1da 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/LoginToken.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/LoginToken.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import android.content.Context; @@ -11,7 +11,7 @@ import java.util.HashMap; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import de.sebse.fuplanner.services.newkvv.AccountGeneral; +import de.sebse.fuplanner.services.fulogin.AccountGeneral; import de.sebse.fuplanner.tools.CustomAccountManager; import de.sebse.fuplanner.tools.logging.Logger; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Modules.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Modules.java similarity index 99% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/Modules.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/Modules.java index 9e5b6d7..8ca426b 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Modules.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Modules.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import android.content.Context; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Resource.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Resource.java similarity index 98% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/Resource.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/Resource.java index 5cb7e4d..829e53f 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Resource.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Resource.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import com.google.android.gms.common.internal.Objects; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Semester.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Semester.java similarity index 97% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/Semester.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/Semester.java index 76605aa..80823cb 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Semester.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/Semester.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import java.io.Serializable; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/SortedListModule.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/SortedListModule.java similarity index 97% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/types/SortedListModule.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/types/SortedListModule.java index 5c226f4..b85f862 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/SortedListModule.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/SortedListModule.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.types; +package de.sebse.fuplanner.services.kvv.types; import androidx.annotation.Nullable; import de.sebse.fuplanner.tools.SortedList; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/ui/Download.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ui/Download.java similarity index 99% rename from app/src/main/java/de/sebse/fuplanner/services/KVV/ui/Download.java rename to app/src/main/java/de/sebse/fuplanner/services/kvv/ui/Download.java index 637d143..47b8898 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/ui/Download.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ui/Download.java @@ -1,4 +1,4 @@ -package de.sebse.fuplanner.services.KVV.ui; +package de.sebse.fuplanner.services.kvv.ui; import android.Manifest; import android.app.AlertDialog; @@ -18,7 +18,7 @@ import androidx.core.app.ActivityCompat; import androidx.core.content.FileProvider; import de.sebse.fuplanner.MainActivity; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.types.Resource; +import de.sebse.fuplanner.services.kvv.types.Resource; import de.sebse.fuplanner.tools.Regex; import de.sebse.fuplanner.tools.RequestPermissionsResultListener; import de.sebse.fuplanner.tools.UtilsDate; diff --git a/app/src/main/java/de/sebse/fuplanner/tools/CustomAccountManager.java b/app/src/main/java/de/sebse/fuplanner/tools/CustomAccountManager.java index 25d13d9..782f637 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/CustomAccountManager.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/CustomAccountManager.java @@ -2,16 +2,17 @@ package de.sebse.fuplanner.tools; import android.accounts.Account; import android.accounts.AccountManager; +import android.accounts.AccountManagerCallback; import android.accounts.AuthenticatorException; import android.accounts.OperationCanceledException; +import android.app.Activity; import android.os.Build; import android.os.Bundle; import java.io.IOException; import androidx.annotation.Nullable; -import de.sebse.fuplanner.MainActivity; -import de.sebse.fuplanner.services.KVV.Login; +import de.sebse.fuplanner.services.kvv.Login; import de.sebse.fuplanner.tools.logging.Logger; public class CustomAccountManager { @@ -77,8 +78,8 @@ public class CustomAccountManager { } public void getTokenByType(String accountType, String authTokenType, @Nullable StringInterface callback) { - //Account account = mAccountManager.getAccountsByType(accountType)[0]; - mAccountManager.getAuthTokenByFeatures(accountType, authTokenType, null, mActivityInterface.get(), null, null, accountManagerFuture -> { + Activity activity = mActivityInterface.get(); + AccountManagerCallback cb = (accountManagerFuture -> { try { Bundle bnd = accountManagerFuture.getResult(); final String authtoken = bnd.getString(AccountManager.KEY_AUTHTOKEN); @@ -94,22 +95,25 @@ public class CustomAccountManager { } if (callback != null) callback.run(null); - }, null); + }); + if (activity != null) { + mAccountManager.getAuthTokenByFeatures(accountType, authTokenType, null, mActivityInterface.get(), null, null, cb, null); + } else { + Account account = mAccountManager.getAccountsByType(accountType)[0]; + mAccountManager.getAuthToken(account, authTokenType, null, true, cb, null); + } } public String getTokenByTypeSync(String accountType, String authTokenType) { Account account = mAccountManager.getAccountsByType(accountType)[0]; - MainActivity activity = this.mActivityInterface.get(); - if (activity != null) { - try { - return mAccountManager.blockingGetAuthToken(account, authTokenType, true); - } catch (AuthenticatorException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (OperationCanceledException e) { - e.printStackTrace(); - } + try { + return mAccountManager.blockingGetAuthToken(account, authTokenType, true); + } catch (AuthenticatorException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (OperationCanceledException e) { + e.printStackTrace(); } return null; } @@ -121,7 +125,7 @@ public class CustomAccountManager { @FunctionalInterface public interface ActivityInterface { @Nullable - MainActivity get(); + Activity get(); } public interface StringInterface { diff --git a/app/src/main/java/de/sebse/fuplanner/tools/MainActivityListener.java b/app/src/main/java/de/sebse/fuplanner/tools/MainActivityListener.java index c37daa2..f4d0e38 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/MainActivityListener.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/MainActivityListener.java @@ -4,7 +4,7 @@ import androidx.annotation.StringRes; import de.sebse.fuplanner.services.Canteen.CanteenBrowser; import de.sebse.fuplanner.services.GoogleAuth.GoogleAuth; -import de.sebse.fuplanner.services.KVV.KVV; +import de.sebse.fuplanner.services.kvv.KVV; import de.sebse.fuplanner.services.News.NewsManager; public interface MainActivityListener { diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/DirectoryNodeBinder.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/DirectoryNodeBinder.java index b086207..2b14360 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/DirectoryNodeBinder.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/DirectoryNodeBinder.java @@ -5,7 +5,7 @@ import android.widget.ImageView; import android.widget.TextView; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.types.Resource; +import de.sebse.fuplanner.services.kvv.types.Resource; /** * Created by tlh on 2016/10/1 :) diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/FileNodeBinder.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/FileNodeBinder.java index dbb592b..53653fb 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/FileNodeBinder.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/FileNodeBinder.java @@ -4,7 +4,7 @@ import android.view.View; import android.widget.TextView; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.KVV.types.Resource; +import de.sebse.fuplanner.services.kvv.types.Resource; /** * Created by tlh on 2016/10/1 :) diff --git a/app/src/main/res/layout/activity_fu_authenticator.xml b/app/src/main/res/layout/activity_fu_authenticator.xml index 6cae445..9c170d4 100644 --- a/app/src/main/res/layout/activity_fu_authenticator.xml +++ b/app/src/main/res/layout/activity_fu_authenticator.xml @@ -9,7 +9,7 @@ android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingBottom="@dimen/activity_vertical_margin" - tools:context=".services.newkvv.FUAuthenticatorActivity"> + tools:context=".services.fulogin.FUAuthenticatorActivity"> + tools:context="de.sebse.fuplanner.services.fulogin.FUAuthenticatorActivity"> + tools:context="de.sebse.fuplanner.services.fulogin.FUAuthenticatorActivity"> Update-News Tipps/Tricks Klicke ZURÜCK erneut zum Beenden! + Sign in + + Benutzername + Passwort (optional) + Log in + Log in + Das Passwort ist zu kurz. + Das Passwort ist nicht korrekt. + Pflichtfeld + KVV-Synchronisation \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f750d1e..47efe37 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -92,15 +92,12 @@ Please click BACK again to exit! Sign in - Email + Username Password (optional) Sign in or register Sign in - This email address is invalid This password is too short This password is incorrect This field is required - "Contacts permissions are needed for providing email - completions." - + KVV Synchronization diff --git a/app/src/main/res/xml/syncadapter_kvv.xml b/app/src/main/res/xml/syncadapter_kvv.xml new file mode 100644 index 0000000..1dbe851 --- /dev/null +++ b/app/src/main/res/xml/syncadapter_kvv.xml @@ -0,0 +1,8 @@ + +