diff --git a/.gitignore b/.gitignore index 2930624..b253bbc 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /build /captures .externalNativeBuild +app/release/* diff --git a/app/src/main/java/de/sebse/fuplanner/MainActivity.java b/app/src/main/java/de/sebse/fuplanner/MainActivity.java index c0bf213..554213e 100644 --- a/app/src/main/java/de/sebse/fuplanner/MainActivity.java +++ b/app/src/main/java/de/sebse/fuplanner/MainActivity.java @@ -76,9 +76,9 @@ public class MainActivity extends AppCompatActivity private int fragmentPage = FRAGMENT_NONE; private String fragmentData = ""; private CanteenBrowser mCanteenBrowser; - private HashMap permissionListeners = new HashMap<>(); + private final HashMap permissionListeners = new HashMap<>(); private boolean mOfflineBanner; - private NewAsyncQueue mQueue = new NewAsyncQueue(); + private final NewAsyncQueue mQueue = new NewAsyncQueue(); @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/CanteensAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/CanteensAdapter.java index d9e1217..db8acb2 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/CanteensAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/CanteensAdapter.java @@ -13,7 +13,7 @@ import de.sebse.fuplanner.services.Canteen.types.Canteens; import de.sebse.fuplanner.tools.ui.ItemViewHolder; /** - * {@link RecyclerView.Adapter} that can display a {@link Modules.Module} and makes a call to the + * {@link RecyclerView.Adapter} that can display a {@link Canteen} and makes a call to the * specified {@link OnCanteensFragmentInteractionListener}. */ class CanteensAdapter extends RecyclerView.Adapter { diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealAdapter.java index 48a5365..1534f54 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/canteen/MealAdapter.java @@ -20,12 +20,12 @@ import de.sebse.fuplanner.tools.ui.MealViewHolder; import de.sebse.fuplanner.tools.ui.StringViewHolder; class MealAdapter extends RecyclerView.Adapter { - private String[] CATEGORY_KEYS = new String[]{"Essen", "Aktionen", "Beilagen", "Desserts", "Salate", "Suppen", "Vorspeisen"}; + private final String[] CATEGORY_KEYS = new String[]{"Essen", "Aktionen", "Beilagen", "Desserts", "Salate", "Suppen", "Vorspeisen"}; @StringRes - private int[] CATEGORY_VALS = new int[]{R.string.meals, R.string.special_meals, R.string.side_dishes, R.string.desserts, R.string.salads, R.string.soups, R.string.starters}; + private final int[] CATEGORY_VALS = new int[]{R.string.meals, R.string.special_meals, R.string.side_dishes, R.string.desserts, R.string.salads, R.string.soups, R.string.starters}; @StringRes - private int CATEGORY_OTHER = R.string.others; - private ArrayList matches = new ArrayList<>(); + private final int CATEGORY_OTHER = R.string.others; + private final ArrayList matches = new ArrayList<>(); private Day mDay = null; private final Context mContext; 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 b5a37f0..c416336 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 @@ -29,7 +29,7 @@ class ModDetailAnnounceAdapter extends RecyclerView.Adapter { @Nullable private Modules.Module mModule = null; private Logger log = new Logger(this); - @NonNull private Download.OnDownloadRequestInterface requestInterface; + @NonNull private final Download.OnDownloadRequestInterface requestInterface; ModDetailAnnounceAdapter(@NonNull Download.OnDownloadRequestInterface requestInterface) { this.requestInterface = requestInterface; @@ -40,7 +40,7 @@ class ModDetailAnnounceAdapter extends RecyclerView.Adapter { this.setModule(); } - public void setModule() { + private void setModule() { this.notifyDataSetChanged(); } 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 3a58e18..0e9539b 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 @@ -124,7 +124,7 @@ public class ModDetailAnnounceFragment extends Fragment implements Download.OnDo } } - Download getDownload() { + private Download getDownload() { if (download == null) download = new Download(this::getContext, () -> (MainActivity) getActivity()); return download; 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 34c49fd..7e115d4 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 @@ -29,7 +29,7 @@ class ModDetailAssignmentAdapter extends RecyclerView.Adapter @Nullable private Modules.Module mModule = null; private Logger log = new Logger(this); - @NonNull private Download.OnDownloadRequestInterface requestInterface; + @NonNull private final Download.OnDownloadRequestInterface requestInterface; ModDetailAssignmentAdapter(@NonNull Download.OnDownloadRequestInterface requestInterface) { this.requestInterface = requestInterface; @@ -40,7 +40,7 @@ class ModDetailAssignmentAdapter extends RecyclerView.Adapter this.setModule(); } - public void setModule() { + private void setModule() { this.notifyDataSetChanged(); } 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 d643389..28f2514 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 @@ -124,7 +124,7 @@ public class ModDetailAssignmentFragment extends Fragment implements Download.On } } - Download getDownload() { + private Download getDownload() { if (download == null) download = new Download(this::getContext, () -> (MainActivity) getActivity()); return download; 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 79ce984..7773664 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 @@ -18,12 +18,10 @@ 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.Triplet; import de.sebse.fuplanner.tools.UtilsDate; import de.sebse.fuplanner.tools.logging.Logger; import de.sebse.fuplanner.tools.ui.CustomViewHolder; import de.sebse.fuplanner.tools.ui.ItemViewHolder; -import de.sebse.fuplanner.tools.ui.ListViewHolder; import de.sebse.fuplanner.tools.ui.StringViewHolder; class ModDetailEventAdapter extends RecyclerView.Adapter { @@ -56,7 +54,7 @@ class ModDetailEventAdapter extends RecyclerView.Adapter { this.setModule(); } - public void setModule() { + private void setModule() { LinkedHashMap listsGrouped = new LinkedHashMap<>(); LinkedHashMap listsUngrouped = new LinkedHashMap<>(); for (String value : VALUES_GROUPED) listsGrouped.put(value, new GroupedEvents()); 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 a5ef15b..cd0bb74 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 @@ -36,20 +36,16 @@ class ModDetailGradebookAdapter extends RecyclerView.Adapter(TYPE_TOTAL, SECTION_GRADE)); - addPositionalListData(getGradesCount(), SECTION_GRADE); + for (int i = 0; i < getGradesCount(); i++) { + mPositionalData.add(new Pair<>(TYPE_GRADE, SECTION_GRADE +1024*i)); + } this.notifyDataSetChanged(); } - private void addPositionalListData(int count, int category) { - for (int i = 0; i < count; i++) { - mPositionalData.add(new Pair<>(TYPE_GRADE, category+1024*i)); - } - } - @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { @@ -131,6 +127,7 @@ class ModDetailGradebookAdapter extends RecyclerView.Adapter(TYPE_HEADER, ModulePart.DESCRIPTION)); mPositionalData.add(new Pair<>(TYPE_DESCRIPTION, null)); 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 8b5e570..ba5f006 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 @@ -21,7 +21,7 @@ class ModDetailResourceAdapter extends TreeViewAdapter { this.setModule(); } - public void setModule() { + private void setModule() { if (mValue == null || mValue.resources == null) { return; } 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 03af68a..9d23e95 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 @@ -150,7 +150,7 @@ public class ModDetailResourceFragment extends Fragment { }, forceRefresh); } - Download getDownload() { + private Download getDownload() { if (download == null) download = new Download(this::getContext, () -> (MainActivity) getActivity()); return download; diff --git a/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Canteen.java b/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Canteen.java index 83d2259..b74aa1b 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Canteen.java +++ b/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Canteen.java @@ -121,6 +121,7 @@ public class Canteen implements Serializable, Iterable { return lng; } + @NonNull @Override public String toString() { return id+": "+name+"\n"+list.toString()+"\n"; diff --git a/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Canteens.java b/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Canteens.java index b73ca28..a02cf56 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Canteens.java +++ b/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Canteens.java @@ -94,6 +94,7 @@ public class Canteens implements Serializable, Iterable { context.deleteFile(FILE_NAME); } + @NonNull @Override public String toString() { return this.list.toString(); diff --git a/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Day.java b/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Day.java index 699b752..4367d40 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Day.java +++ b/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Day.java @@ -58,6 +58,7 @@ public class Day implements Serializable, Iterable { return canteenId; } + @NonNull @Override public String toString() { return Canteen.calendarToKey(getCalendar())+"\n"+this.list+"\n"; diff --git a/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Meal.java b/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Meal.java index a9ae8c9..b265a67 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Meal.java +++ b/app/src/main/java/de/sebse/fuplanner/services/Canteen/types/Meal.java @@ -5,6 +5,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import androidx.annotation.NonNull; + public class Meal implements Serializable { private static final int LIGHT_NONE = 0; private static final int LIGHT_GREEN = 1; @@ -112,6 +114,7 @@ public class Meal implements Serializable { return certificates; } + @NonNull @Override public String toString() { return name + " (" + category + ")"; 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 index a5bd208..70c2c92 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,7 +1,6 @@ package de.sebse.fuplanner.services.KVV; import android.content.Context; -import android.util.Pair; import org.jetbrains.annotations.NotNull; @@ -11,9 +10,6 @@ import org.json.JSONObject; import java.io.FileNotFoundException; import java.io.IOException; import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -26,11 +22,11 @@ import de.sebse.fuplanner.tools.network.NetworkError; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; public class Login extends HTTPService { - private KVVListener mListener; + private final KVVListener mListener; @Nullable private LoginToken mToken; private boolean mLoginPending = false; private boolean mOnlineMode = false; - private NetworkCallbackCollector mRefreshCallbacks = new NetworkCallbackCollector<>(); + private final NetworkCallbackCollector mRefreshCallbacks = new NetworkCallbackCollector<>(); Login(KVVListener listener, Context context) { super(context); @@ -156,14 +152,13 @@ public class Login extends HTTPService { void refreshLogin(NetworkCallback success, NetworkErrorCallback error) { boolean isFirst = mRefreshCallbacks.isEmpty(); - log.d("refresh", mRefreshCallbacks.size(), isFirst); mRefreshCallbacks.add(success, error); if (!isFirst) return; mListener.getCredentials(credentials -> { doOnlineLogin(credentials.getUsername(), credentials.getPassword(), - success1 -> mRefreshCallbacks.responseResponse(success1), - error1 -> mRefreshCallbacks.responseError(error1)); + 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 index 8c8b54a..6923138 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 @@ -10,7 +10,7 @@ public class Modules { private final HashMap mAddons = new HashMap<>(); private ModulesList mList = null; private final Login mLogin; - private KVVListener mListener; + private final KVVListener mListener; private final Context context; Modules(Login login, KVVListener listener, Context context) { 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 index cc5b8f9..1c224aa 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 @@ -29,7 +29,7 @@ public class ModulesList extends HTTPService { private final Login mLogin; private final KVVListener mListener; @Nullable private Modules mModules; - private NewAsyncQueue mQueue = new NewAsyncQueue(); + private final NewAsyncQueue mQueue = new NewAsyncQueue(); ModulesList(Login login, KVVListener listener, Context context) { super(context); @@ -51,7 +51,7 @@ public class ModulesList extends HTTPService { } private void find(String moduleID, NetworkCallback moduleNetworkCallback, NetworkErrorCallback errorCallback, int retries) { - if (mModules != null && mLogin.getLoginToken() != null && !mLogin.getLoginToken().isSameUser(mModules.getUsername())) + if (mModules != null && mLogin.getLoginToken() != null && mLogin.getLoginToken().isOtherUser(mModules.getUsername())) delete(); if (retries < 0) { errorCallback.onError(new NetworkError(101107, -1, "Too many retries!")); @@ -104,7 +104,7 @@ public class ModulesList extends HTTPService { } private void recv(final NetworkCallback callback, final NetworkErrorCallback errorCallback, boolean forceRefresh, final int retries) { - if (mModules != null && mLogin.getLoginToken() != null && !mLogin.getLoginToken().isSameUser(mModules.getUsername())) + if (mModules != null && mLogin.getLoginToken() != null && mLogin.getLoginToken().isOtherUser(mModules.getUsername())) delete(); mQueue.add(() -> { if (this.mModules != null && !forceRefresh) { 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 index f26869c..ce43712 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 @@ -124,7 +124,7 @@ public class ModulesResources extends PartModules> { file(filename, url, modulename, callback, errorCallback, forceRefresh, RETRY_COUNT); } - public void file(final String filename, final String url, final String modulename, final NetworkCallback callback, final NetworkErrorCallback errorCallback, boolean forceRefresh, int retries) { + private void file(final String filename, final String url, final String modulename, final NetworkCallback callback, final NetworkErrorCallback errorCallback, boolean forceRefresh, int retries) { if (isExternalStorageReadable()){ File f = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS)+"/"+modulename+"/"+filename); 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 index 686a484..a9b11d7 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 @@ -9,8 +9,8 @@ import de.sebse.fuplanner.tools.network.NetworkErrorCallback; public abstract class Part extends HTTPService { static final int RETRY_COUNT = 1; - protected final Login mLogin; - protected final ModulesList mList; + final Login mLogin; + final ModulesList mList; Part(Login login, ModulesList list, Context context) { super(context); 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 index 0301135..8798c8c 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 @@ -11,7 +11,7 @@ import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; abstract class PartModules extends Part { - private NewAsyncQueue mQueue = new NewAsyncQueue(); + private final NewAsyncQueue mQueue = new NewAsyncQueue(); PartModules(Login login, ModulesList list, Context context) { super(login, list, context); 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 index 72941a7..9ad8656 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 @@ -5,6 +5,8 @@ import com.google.android.gms.common.internal.Objects; import java.io.Serializable; import java.util.ArrayList; +import androidx.annotation.NonNull; + public class Announcement implements Serializable { private final String id; private final String title; @@ -47,6 +49,7 @@ public class Announcement implements Serializable { return createdOn; } + @NonNull @Override public String toString() { return "ID: "+getId()+ 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 index e24f57e..2e72d00 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 @@ -5,6 +5,8 @@ import com.google.android.gms.common.internal.Objects; import java.io.Serializable; import java.util.ArrayList; +import androidx.annotation.NonNull; + public class Assignment implements Serializable { private final String id; private final String title; @@ -44,6 +46,7 @@ public class Assignment implements Serializable { return instructions; } + @NonNull @Override public String toString() { return "ID: "+getId()+ 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 index a88835d..22177d3 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 @@ -7,6 +7,7 @@ import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import androidx.annotation.NonNull; import de.sebse.fuplanner.tools.ColorRGB; public class Event implements Serializable { @@ -106,6 +107,7 @@ public class Event implements Serializable { } } + @NonNull @Override public String toString() { return "ID: "+getId()+ 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 index 11ccd81..1310429 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 @@ -4,6 +4,8 @@ import com.google.android.gms.common.internal.Objects; import java.io.Serializable; +import androidx.annotation.NonNull; + public class Grade implements Serializable { private final String itemName; private final double grade; @@ -27,6 +29,7 @@ public class Grade implements Serializable { return itemName; } + @NonNull @Override public String toString() { return "Name: "+getItemName()+ 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 index 709d0ef..08835e3 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 @@ -9,10 +9,9 @@ import java.util.Collections; import java.util.List; import androidx.annotation.NonNull; -import de.sebse.fuplanner.tools.logging.Logger; public class GroupedEvents extends EventList { - private ArrayList arrayList = new ArrayList<>(); + private final ArrayList arrayList = new ArrayList<>(); private int skippedDayCount = 0; public boolean add(Event event) { @@ -40,11 +39,11 @@ public class GroupedEvents extends EventList { public class Group { private long firstDate; private long lastDate; - private ArrayList skippedDates; + private final ArrayList skippedDates; - private int dayOfWeek; - private long startTime; - private long duration; + private final int dayOfWeek; + private final long startTime; + private final long duration; private Group(Event event) { Calendar calendar = Calendar.getInstance(); 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 index 6ceb2b6..5bacd94 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 @@ -4,6 +4,8 @@ import java.io.Serializable; import java.util.regex.Matcher; import java.util.regex.Pattern; +import androidx.annotation.NonNull; + public class Lecturer implements Serializable { private final String firstName; private final String surname; @@ -46,6 +48,7 @@ public class Lecturer implements Serializable { return getFirstName().substring(0, 1) + ". " + getSurname(); } + @NonNull @Override public String toString() { return "First name: "+ getFirstName()+ 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 index 0ebfcfd..0657069 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 @@ -11,6 +11,7 @@ import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.HashMap; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; /** @@ -85,10 +86,12 @@ public class LoginToken implements Serializable { return JSESSIONID; } + @Nullable public String getFullName() { return fullName; } + @Nullable public String getEmail() { return email; } @@ -101,10 +104,11 @@ public class LoginToken implements Serializable { return cookies; } - public boolean isSameUser(String username) { - return this.getUsername().equals(username); + public boolean isOtherUser(String username) { + return !this.getUsername().equals(username); } + @NonNull @Override public String toString() { StringBuilder result = new StringBuilder(); 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 index e4b1328..5cb7e4d 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 @@ -6,6 +6,7 @@ import java.io.Serializable; import java.util.ArrayList; import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; import de.sebse.fuplanner.R; import de.sebse.fuplanner.tools.ui.treeview.LayoutItemType; import de.sebse.fuplanner.tools.ui.treeview.TreeNode; @@ -69,6 +70,7 @@ public abstract class Resource implements Serializable { this.type = type; } + @NonNull @Override public String toString() { return "Resource{" + @@ -111,6 +113,7 @@ public abstract class Resource implements Serializable { return children.size(); } + @NonNull @Override public String toString() { return "Resource{" + 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 index 80cd58a..637d143 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 @@ -31,7 +31,7 @@ public class Download { private final ContextInterface contextInterface; private final ActivityInterface activityInterface; private RequestedDownload requestedDownload; - private Logger log = new Logger(this); + private final Logger log = new Logger(this); public Download(ContextInterface contextInterface, ActivityInterface activityInterface) { @@ -106,7 +106,7 @@ public class Download { } activity.getKVV().modules().resources().file(file.getTitle(), file.getUrl(), folderName, success -> { Context context = contextInterface.get(); - if (success.equals("")) { + if (success.equals("") || context== null) { showDownloadError(); } else { if (Regex.has("^http", success)){ @@ -116,7 +116,6 @@ public class Download { else { fileOpen(new File(success)); } - } }, log::e, downloadNew); } @@ -165,9 +164,9 @@ public class Download { } private class RequestedDownload { - Resource.File file; - String folderName; - boolean downloadNew; + final Resource.File file; + final String folderName; + final boolean downloadNew; RequestedDownload(Resource.File file, String folderName, boolean downloadNew) { this.file = file; @@ -187,7 +186,10 @@ public class Download { } private void fileOpen(File url){ - Uri uri = FileProvider.getUriForFile(contextInterface.get(), contextInterface.get().getApplicationContext().getPackageName() + ".my.provider", url); + Context context = contextInterface.get(); + if (context == null) + return; + Uri uri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".my.provider", url); Intent intent; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { @@ -242,7 +244,7 @@ public class Download { intent.setDataAndType(uri, "*/*"); } intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - contextInterface.get().startActivity(intent); + context.startActivity(intent); } diff --git a/app/src/main/java/de/sebse/fuplanner/tools/EventListener.java b/app/src/main/java/de/sebse/fuplanner/tools/EventListener.java index 42bbbcf..f7b766b 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/EventListener.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/EventListener.java @@ -3,7 +3,7 @@ package de.sebse.fuplanner.tools; import java.util.HashMap; public class EventListener { - private HashMap> list = new HashMap<>(); + private final HashMap> list = new HashMap<>(); public void add(String id,EventFunction listener) { list.put(id, listener); diff --git a/app/src/main/java/de/sebse/fuplanner/tools/SortedList.java b/app/src/main/java/de/sebse/fuplanner/tools/SortedList.java index 6eb8b33..4d8ff10 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/SortedList.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/SortedList.java @@ -120,6 +120,7 @@ public abstract class SortedList implements Iterable, Serializable { }; } + @NonNull @Override public String toString() { return this.internalList.toString(); diff --git a/app/src/main/java/de/sebse/fuplanner/tools/Triplet.java b/app/src/main/java/de/sebse/fuplanner/tools/Triplet.java deleted file mode 100644 index 84098cc..0000000 --- a/app/src/main/java/de/sebse/fuplanner/tools/Triplet.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.sebse.fuplanner.tools; - -public class Triplet { - - public final T first; - public final U second; - public final V third; - - public Triplet(T first, U second, V third) { - this.first = first; - this.second = second; - this.third = third; - } -} \ No newline at end of file diff --git a/app/src/main/java/de/sebse/fuplanner/tools/network/HTTPService.java b/app/src/main/java/de/sebse/fuplanner/tools/network/HTTPService.java index ea82635..3ae5cd5 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/network/HTTPService.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/network/HTTPService.java @@ -27,9 +27,9 @@ import de.sebse.fuplanner.tools.logging.Logger; public class HTTPService { private final RequestQueue requestQueue; private final Context mContext; - protected Logger log = new Logger(this); - private EventListener errorResponseListener = new EventListener<>(); - private EventListener successResponseListener = new EventListener<>(); + protected final Logger log = new Logger(this); + private final EventListener errorResponseListener = new EventListener<>(); + private final EventListener successResponseListener = new EventListener<>(); protected HTTPService(Context context) { this.mContext = context; diff --git a/app/src/main/java/de/sebse/fuplanner/tools/network/NetworkError.java b/app/src/main/java/de/sebse/fuplanner/tools/network/NetworkError.java index 967dc75..972e618 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/network/NetworkError.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/network/NetworkError.java @@ -1,5 +1,7 @@ package de.sebse.fuplanner.tools.network; +import androidx.annotation.NonNull; + /** * Created by sebastian on 24.10.17. */ @@ -27,6 +29,7 @@ public class NetworkError { return message; } + @NonNull public String toString() { return String.valueOf(getCode()) + " - " + getHttpStatus() + " - " + getMessage(); } diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/AnnouncementViewHolder.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/AnnouncementViewHolder.java index d8ae17b..6960dd3 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/AnnouncementViewHolder.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/AnnouncementViewHolder.java @@ -5,6 +5,7 @@ import android.widget.TextView; import com.cunoraz.tagview.TagView; +import androidx.annotation.NonNull; import de.sebse.fuplanner.R; public class AnnouncementViewHolder extends ExpandableCardViewHolder { @@ -25,6 +26,7 @@ public class AnnouncementViewHolder extends ExpandableCardViewHolder { } + @NonNull @Override public String toString() { return super.toString() + " '" + mTitle.getText() + "' '" + mSubTitle.getText() + "'"; diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/ItemViewHolder.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/ItemViewHolder.java index c1e5910..dc7fb2e 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/ItemViewHolder.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/ItemViewHolder.java @@ -3,6 +3,7 @@ package de.sebse.fuplanner.tools.ui; import android.view.View; import android.widget.TextView; +import androidx.annotation.NonNull; import de.sebse.fuplanner.R; public class ItemViewHolder extends CustomViewHolder { @@ -19,6 +20,7 @@ public class ItemViewHolder extends CustomViewHolder { mTopRight = view.findViewById(R.id.top_right); } + @NonNull @Override public String toString() { return super.toString() + " '" + mTitle.getText() + "' '" + mSubLeft.getText() + "' '" + mSubRight.getText() + "' '" + mTopRight.getText() + "'"; diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/ListViewHolder.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/ListViewHolder.java deleted file mode 100644 index 8e04b95..0000000 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/ListViewHolder.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.sebse.fuplanner.tools.ui; - -import android.view.View; - -import androidx.recyclerview.widget.RecyclerView; -import de.sebse.fuplanner.R; - -public class ListViewHolder extends StringViewHolder { - public final RecyclerView mList; - - public ListViewHolder(View view) { - super(view); - mList = view.findViewById(R.id.list); - } - - @Override - public String toString() { - return super.toString() + " '" + mString.getText() + "'"; - } -} diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/MailViewHolder.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/MailViewHolder.java index c24b47e..3f220fc 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/MailViewHolder.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/MailViewHolder.java @@ -4,7 +4,7 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; -import androidx.recyclerview.widget.RecyclerView; +import androidx.annotation.NonNull; import de.sebse.fuplanner.R; public class MailViewHolder extends StringViewHolder { @@ -19,6 +19,7 @@ public class MailViewHolder extends StringViewHolder { mIcon = view.findViewById(R.id.icon); } + @NonNull @Override public String toString() { return super.toString() + " '" + mTitle.getText() + "' '" + mSubLeft.getText() + "'"; diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/MealViewHolder.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/MealViewHolder.java index 11d7655..c484c4d 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/MealViewHolder.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/MealViewHolder.java @@ -4,6 +4,7 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; import de.sebse.fuplanner.R; public class MealViewHolder extends ExpandableCardViewHolder { @@ -30,6 +31,7 @@ public class MealViewHolder extends ExpandableCardViewHolder { mIconMsc = innerView.findViewById(R.id.icon_msc); } + @NonNull @Override public String toString() { return super.toString() + " '" + mTitle.getText() + "' '" + mSubTitle.getText() + "'"; diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/StringViewHolder.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/StringViewHolder.java index 65aa3c7..016cbcd 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/StringViewHolder.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/StringViewHolder.java @@ -3,6 +3,7 @@ package de.sebse.fuplanner.tools.ui; import android.view.View; import android.widget.TextView; +import androidx.annotation.NonNull; import de.sebse.fuplanner.R; public class StringViewHolder extends CustomViewHolder { @@ -13,6 +14,7 @@ public class StringViewHolder extends CustomViewHolder { mString = view.findViewById(R.id.string); } + @NonNull @Override public String toString() { return super.toString() + " '" + mString.getText() + "'"; diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/cardview/ExpandableCardView.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/cardview/ExpandableCardView.java index 6ecab0a..c2080c3 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/cardview/ExpandableCardView.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/cardview/ExpandableCardView.java @@ -65,11 +65,11 @@ public class ExpandableCardView extends CardView { private OnExpandedListener listener; - private OnClickListener defaultClickListener = v -> { + private final OnClickListener defaultClickListener = v -> { if(isExpanded()) collapse(); else expand(); }; - private Logger log = new Logger(this); + private final Logger log = new Logger(this); public ExpandableCardView(Context context) { super(context); 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 9a2ac9c..6257dfa 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 @@ -36,8 +36,8 @@ public class DirectoryNodeBinder extends TreeViewBinder { } public class ViewHolder extends TreeViewBinder.ViewHolder { - TextView tvName; + final TextView tvName; ViewHolder(View rootView) { super(rootView); diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/TreeNode.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/TreeNode.java index 224a3cb..ef1ed6e 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/TreeNode.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/TreeNode.java @@ -128,6 +128,7 @@ public class TreeNode implements Cloneable { return isLocked; } + @NonNull @Override public String toString() { return "TreeNode{" + @@ -138,6 +139,8 @@ public class TreeNode implements Cloneable { '}'; } + + @SuppressWarnings("CloneDoesntDeclareCloneNotSupportedException") @Override protected TreeNode clone() { TreeNode clone = new TreeNode<>(this.content); diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/TreeViewAdapter.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/TreeViewAdapter.java index ffe2a813..b2de9ed 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/TreeViewAdapter.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/treeview/TreeViewAdapter.java @@ -21,7 +21,7 @@ import androidx.recyclerview.widget.RecyclerView; public class TreeViewAdapter extends RecyclerView.Adapter { private static final String KEY_IS_EXPAND = "IS_EXPAND"; private final List viewBinders; - private List displayNodes; + private final List displayNodes; private int padding = 30; private OnTreeNodeListener onTreeNodeListener; private boolean toCollapseChild; diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekView.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekView.java index 01662e6..3be24e7 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekView.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekView.java @@ -82,7 +82,7 @@ public class WeekView extends View { private float mHeaderHeight; private GestureDetectorCompat mGestureDetector; private OverScroller mScroller; - private PointF mCurrentOrigin = new PointF(0f, 0f); + private final PointF mCurrentOrigin = new PointF(0f, 0f); private Direction mCurrentScrollDirection = Direction.NONE; private Paint mHeaderBackgroundPaint; private float mWidthPerDay; @@ -1259,8 +1259,8 @@ public class WeekView extends View { * instance will be stored in "event". */ private class EventRect { - public WeekViewEvent event; - WeekViewEvent originalEvent; + public final WeekViewEvent event; + final WeekViewEvent originalEvent; RectF rectF; public float left; public float width; diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml index e93de49..484decf 100644 --- a/app/src/main/res/layout/app_bar_main.xml +++ b/app/src/main/res/layout/app_bar_main.xml @@ -9,7 +9,6 @@ - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_startup.xml b/app/src/main/res/layout/fragment_startup.xml index 8da4531..6e4da82 100644 --- a/app/src/main/res/layout/fragment_startup.xml +++ b/app/src/main/res/layout/fragment_startup.xml @@ -4,7 +4,8 @@ android:layout_height="match_parent" android:background="@color/colorFUGreen" android:fitsSystemWindows="true" - tools:context="de.sebse.fuplanner.fragments.StartupFragment"> + tools:context="de.sebse.fuplanner.fragments.StartupFragment" + tools:ignore="Overdraw"> + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="UseCompoundDrawables"> - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/list_all_no_items.xml b/app/src/main/res/layout/list_all_no_items.xml index 8c85d35..919ec2f 100644 --- a/app/src/main/res/layout/list_all_no_items.xml +++ b/app/src/main/res/layout/list_all_no_items.xml @@ -5,7 +5,6 @@ android:orientation="horizontal"> - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/list_announcement_items.xml b/app/src/main/res/layout/list_announcement_items.xml index d5e98f3..bd5b6b5 100644 --- a/app/src/main/res/layout/list_announcement_items.xml +++ b/app/src/main/res/layout/list_announcement_items.xml @@ -1,7 +1,6 @@ Aufgaben (%1$d) Aufgaben Nächste Veranstaltungen (%1$d) - Nächste Veranstaltungen %1$s - %2$s Offen Geschlossen Starte Offline-Modus (%1$s) Keine Einträge vorhanden! - Vergangene Veranstaltungen Veranstaltungen Noten Aktuelle Prozentzahl: %1$.2f \%% @@ -74,7 +72,6 @@ Vorlesung Tutorium Klausur - Andere Abgabe Wintersemester %1$d/%2$d Sommersemester %1$d diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index f2fbbb9..98828db 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -7,6 +7,4 @@ 16dp - 50dp - 10dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9528137..5406d03 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -22,14 +22,12 @@ Assignments (%1$d) Assignments Upcoming Events (%1$d) - Upcoming Events %1$s - %2$s Open Closed Hello blank fragment Enter Offline Mode (%1$s) No items available! - Past Events Events Gradebook Current Percentage: %1$.2f \%% @@ -82,7 +80,6 @@ Lecture Tutorial Exam - Other Deadline Winter Semester %1$d/%2$d Summer Semester %1$d