Module ID is now string, not int;Module Update function added
This commit is contained in:
@@ -13,7 +13,6 @@ import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.ActionBarDrawerToggle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.Pair;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
@@ -57,19 +56,19 @@ public class MainActivity extends AppCompatActivity
|
||||
private NavigationView mNavigationView;
|
||||
|
||||
private int fragmentPage = FRAGMENT_NONE;
|
||||
private int fragmentStatus = 0;
|
||||
private String fragmentData = "";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
int newFragmentPage = FRAGMENT_NONE;
|
||||
int newFragmentStatus = 0;
|
||||
String newFragmentData = "";
|
||||
if (savedInstanceState != null) {
|
||||
newFragmentPage = savedInstanceState.getInt(ARG_FRAGMENT_PAGE, fragmentPage);
|
||||
newFragmentStatus = savedInstanceState.getInt(ARG_FRAGMENT_STATUS, fragmentPage);
|
||||
newFragmentData = savedInstanceState.getString(ARG_FRAGMENT_STATUS, fragmentData);
|
||||
|
||||
log.d("fragmentPage", newFragmentPage);
|
||||
log.d("fragmentStatus", newFragmentStatus);
|
||||
log.d("fragmentData", newFragmentData);
|
||||
}
|
||||
|
||||
setContentView(R.layout.activity_main);
|
||||
@@ -89,7 +88,7 @@ public class MainActivity extends AppCompatActivity
|
||||
if (newFragmentPage != FRAGMENT_LOGIN && newFragmentPage != FRAGMENT_STARTUP && newFragmentPage != FRAGMENT_NONE) {
|
||||
LoginToken loginToken = getKVV().easyLogin();
|
||||
if (loginToken != null)
|
||||
toLoginState(loginToken, newFragmentPage, newFragmentStatus);
|
||||
toLoginState(loginToken, newFragmentPage, newFragmentData);
|
||||
else
|
||||
checkAndDoLogin();
|
||||
} else {
|
||||
@@ -132,7 +131,7 @@ public class MainActivity extends AppCompatActivity
|
||||
@SuppressWarnings("StatementWithEmptyBody")
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
|
||||
//log.d("ITEM SELECTED", item.getTitle());
|
||||
log.d("ITEM SELECTED", item.getTitle());
|
||||
|
||||
// Handle navigation view item clicks here.
|
||||
int id = item.getItemId();
|
||||
@@ -164,7 +163,7 @@ public class MainActivity extends AppCompatActivity
|
||||
int size = mNavigationView.getMenu().size();
|
||||
for (int k = 0; k < size; k++) {
|
||||
//mNavigationView.getMenu().getItem(k).setChecked(mNavigationView.getMenu().getItem(k).getOrder() == 101+itemPosition);
|
||||
mNavigationView.getMenu().getItem(k).setChecked(false);
|
||||
mNavigationView.getMenu().getItem(k).setChecked(mNavigationView.getMenu().getItem(k) == item);
|
||||
}
|
||||
item.setChecked(true);
|
||||
|
||||
@@ -180,7 +179,7 @@ public class MainActivity extends AppCompatActivity
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle savedInstanceState) {
|
||||
savedInstanceState.putInt(ARG_FRAGMENT_PAGE, fragmentPage);
|
||||
savedInstanceState.putInt(ARG_FRAGMENT_STATUS, fragmentStatus);
|
||||
savedInstanceState.putString(ARG_FRAGMENT_STATUS, fragmentData);
|
||||
super.onSaveInstanceState(savedInstanceState);
|
||||
}
|
||||
|
||||
@@ -210,7 +209,7 @@ public class MainActivity extends AppCompatActivity
|
||||
changeFragment(FRAGMENT_LOGIN);
|
||||
}
|
||||
|
||||
private void toLoginState(LoginToken loginToken, int newFragment, int newData) {
|
||||
private void toLoginState(LoginToken loginToken, int newFragment, String newData) {
|
||||
if (loginToken == null) {
|
||||
toLogoutState();
|
||||
} else {
|
||||
@@ -218,7 +217,7 @@ public class MainActivity extends AppCompatActivity
|
||||
}
|
||||
}
|
||||
|
||||
private void toLoginState(String fullname, String email, int newFragment, int newData) {
|
||||
private void toLoginState(String fullname, String email, int newFragment, String newData) {
|
||||
changeFragment(newFragment, newData);
|
||||
|
||||
View header = mNavigationView.getHeaderView(0);
|
||||
@@ -237,7 +236,7 @@ public class MainActivity extends AppCompatActivity
|
||||
}
|
||||
this.getKVV().login(credentials.getUsername(), credentials.getPassword(), success -> {
|
||||
this.getKVV().endUpdate();
|
||||
toLoginState(success, getDefaultFragmentAfterLogin(), 0);
|
||||
toLoginState(success, getDefaultFragmentAfterLogin(), "");
|
||||
}, error -> {
|
||||
log.e(error);
|
||||
this.getKVV().endUpdate();
|
||||
@@ -247,10 +246,10 @@ public class MainActivity extends AppCompatActivity
|
||||
}
|
||||
|
||||
private void changeFragment(int newFragment) {
|
||||
changeFragment(newFragment, 0);
|
||||
changeFragment(newFragment, "");
|
||||
}
|
||||
|
||||
private void changeFragment(int newFragment, int newData) {
|
||||
private void changeFragment(int newFragment, String newData) {
|
||||
onTitleTextChange(R.string.courses);
|
||||
Fragment fragment;
|
||||
if (newFragment == FRAGMENT_MODULES) {
|
||||
@@ -303,11 +302,11 @@ public class MainActivity extends AppCompatActivity
|
||||
log.d("Modules.get", success.size());
|
||||
//SubMenu moduleMenu = navigationView.getMenu().findItem(R.id.nav_modules).getSubMenu();
|
||||
int i = 0;
|
||||
for (Iterator<Pair<Modules.Module, Integer>> it = success.latestSemesterIterator(); it.hasNext(); ) {
|
||||
Pair<Modules.Module, Integer> module = it.next();
|
||||
MenuItem menuItem = mNavigationView.getMenu().add(Menu.NONE, Menu.NONE, 101 + i, module.first.title);
|
||||
for (Iterator<Modules.Module> it = success.latestSemesterIterator(); it.hasNext(); ) {
|
||||
Modules.Module module = it.next();
|
||||
MenuItem menuItem = mNavigationView.getMenu().add(Menu.NONE, Menu.NONE, 101 + i, module.title);
|
||||
menuItem.setOnMenuItemClickListener(item -> {
|
||||
onModulesFragmentInteraction(module.second);
|
||||
onModulesFragmentInteraction(module.getID());
|
||||
return false;
|
||||
});
|
||||
i++;
|
||||
@@ -315,14 +314,18 @@ public class MainActivity extends AppCompatActivity
|
||||
}, error -> log.e("Modules.error", error));
|
||||
}
|
||||
if (newFragment == FRAGMENT_MODULES_DETAILS) {
|
||||
getKVV().getModule(newData, success -> {
|
||||
int size = mNavigationView.getMenu().size();
|
||||
//noinspection ConstantConditions
|
||||
String title = success == null ? null : success.title;
|
||||
for (int k = 0; k < size; k++) {
|
||||
mNavigationView.getMenu().getItem(k).setChecked(mNavigationView.getMenu().getItem(k).getOrder() == 101+newData);
|
||||
mNavigationView.getMenu().getItem(k).setChecked(mNavigationView.getMenu().getItem(k).getTitle().equals(title));
|
||||
}
|
||||
}, log::e);
|
||||
}
|
||||
|
||||
this.fragmentPage = newFragment;
|
||||
this.fragmentStatus = newData;
|
||||
this.fragmentData = newData;
|
||||
}
|
||||
|
||||
|
||||
@@ -333,11 +336,11 @@ public class MainActivity extends AppCompatActivity
|
||||
|
||||
|
||||
public void onLoginFragmentInteraction(LoginToken loginToken) {
|
||||
toLoginState(loginToken.getFullname(), loginToken.getEmail(), getDefaultFragmentAfterLogin(), 0);
|
||||
toLoginState(loginToken.getFullname(), loginToken.getEmail(), getDefaultFragmentAfterLogin(), "");
|
||||
}
|
||||
|
||||
public void onModulesFragmentInteraction(final int itemPosition) {
|
||||
changeFragment(FRAGMENT_MODULES_DETAILS, itemPosition);
|
||||
public void onModulesFragmentInteraction(final String itemID) {
|
||||
changeFragment(FRAGMENT_MODULES_DETAILS, itemID);
|
||||
}
|
||||
|
||||
public void onTitleTextChange(String newTitle) {
|
||||
|
||||
@@ -42,16 +42,16 @@ public class ModulesAdapter extends RecyclerView.Adapter<ItemViewHolder> {
|
||||
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
|
||||
if (mValues == null)
|
||||
return;
|
||||
final int finalPosition = holder.getAdapterPosition();
|
||||
holder.mTitle.setText(mValues.get(finalPosition).title);
|
||||
holder.mSubLeft.setText(mValues.get(finalPosition).semester);
|
||||
holder.mSubRight.setText(mValues.get(finalPosition).type);
|
||||
Modules.Module module = mValues.getByIndex(holder.getAdapterPosition());
|
||||
holder.mTitle.setText(module.title);
|
||||
holder.mSubLeft.setText(module.semester);
|
||||
holder.mSubRight.setText(module.type);
|
||||
|
||||
holder.mView.setOnClickListener(v -> {
|
||||
if (null != mListener) {
|
||||
// Notify the active callbacks interface (the activity, if the
|
||||
// fragment is attached to one) that an item has been selected.
|
||||
mListener.onModulesFragmentInteraction(finalPosition);
|
||||
mListener.onModulesFragmentInteraction(module.getID());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -105,6 +105,6 @@ public class ModulesFragment extends Fragment {
|
||||
}
|
||||
|
||||
public interface OnModulesFragmentInteractionListener {
|
||||
void onModulesFragmentInteraction(int item);
|
||||
void onModulesFragmentInteraction(String id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,10 @@ import android.support.v4.app.FragmentStatePagerAdapter;
|
||||
import de.sebse.fuplanner.R;
|
||||
|
||||
class ModDetailAdapter extends FragmentStatePagerAdapter {
|
||||
private final int mItemPos;
|
||||
private final String mItemPos;
|
||||
private final Context mContext;
|
||||
|
||||
ModDetailAdapter(FragmentManager fm, int itemPosition, Context context) {
|
||||
ModDetailAdapter(FragmentManager fm, String itemPosition, Context context) {
|
||||
super(fm);
|
||||
this.mContext = context;
|
||||
this.mItemPos = itemPosition;
|
||||
|
||||
@@ -24,7 +24,7 @@ import de.sebse.fuplanner.tools.logging.Logger;
|
||||
public class ModDetailAnnounceFragment extends Fragment {
|
||||
private static final String ARG_POSITION = "itemPosition";
|
||||
|
||||
private int mItemPos;
|
||||
private String mItemPos;
|
||||
private Logger log = new Logger(this);
|
||||
private ModDetailAnnounceAdapter adapter;
|
||||
private SwipeRefreshLayout swipeLayout;
|
||||
@@ -41,10 +41,10 @@ public class ModDetailAnnounceFragment extends Fragment {
|
||||
* @param itemPosition Item position in module list.
|
||||
* @return A new instance of fragment ModDetailAnnounceFragment.
|
||||
*/
|
||||
public static ModDetailAnnounceFragment newInstance(int itemPosition) {
|
||||
public static ModDetailAnnounceFragment newInstance(String itemPosition) {
|
||||
ModDetailAnnounceFragment fragment = new ModDetailAnnounceFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putInt(ARG_POSITION, itemPosition);
|
||||
args.putString(ARG_POSITION, itemPosition);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
@@ -53,7 +53,7 @@ public class ModDetailAnnounceFragment extends Fragment {
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (getArguments() != null) {
|
||||
mItemPos = getArguments().getInt(ARG_POSITION);
|
||||
mItemPos = getArguments().getString(ARG_POSITION);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,8 +79,7 @@ public class ModDetailAnnounceFragment extends Fragment {
|
||||
private void refresh(boolean forceRefresh) {
|
||||
if (getActivity() != null) {
|
||||
KVV kvv = ((MainActivity) getActivity()).getKVV();
|
||||
kvv.getModuleList((Modules success) -> {
|
||||
Modules.Module module = success.get(mItemPos);
|
||||
kvv.getModule(mItemPos, (Modules.Module module) -> {
|
||||
adapter.setModule(module);
|
||||
kvv.getModuleAnnouncements(module, success1 -> {
|
||||
adapter.setModule();
|
||||
|
||||
@@ -24,7 +24,7 @@ import de.sebse.fuplanner.tools.logging.Logger;
|
||||
public class ModDetailAssignmentFragment extends Fragment {
|
||||
private static final String ARG_POSITION = "itemPosition";
|
||||
|
||||
private int mItemPos;
|
||||
private String mItemPos;
|
||||
private Logger log = new Logger(this);
|
||||
private ModDetailAssignmentAdapter adapter;
|
||||
private SwipeRefreshLayout swipeLayout;
|
||||
@@ -41,10 +41,10 @@ public class ModDetailAssignmentFragment extends Fragment {
|
||||
* @param itemPosition Item position in module list.
|
||||
* @return A new instance of fragment ModDetailAnnounceFragment.
|
||||
*/
|
||||
public static ModDetailAssignmentFragment newInstance(int itemPosition) {
|
||||
public static ModDetailAssignmentFragment newInstance(String itemPosition) {
|
||||
ModDetailAssignmentFragment fragment = new ModDetailAssignmentFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putInt(ARG_POSITION, itemPosition);
|
||||
args.putString(ARG_POSITION, itemPosition);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
@@ -53,7 +53,7 @@ public class ModDetailAssignmentFragment extends Fragment {
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (getArguments() != null) {
|
||||
mItemPos = getArguments().getInt(ARG_POSITION);
|
||||
mItemPos = getArguments().getString(ARG_POSITION);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,8 +79,7 @@ public class ModDetailAssignmentFragment extends Fragment {
|
||||
private void refresh(boolean forceRefresh) {
|
||||
if (getActivity() != null) {
|
||||
KVV kvv = ((MainActivity) getActivity()).getKVV();
|
||||
kvv.getModuleList((Modules success) -> {
|
||||
Modules.Module module = success.get(mItemPos);
|
||||
kvv.getModule(mItemPos, (Modules.Module module) -> {
|
||||
adapter.setModule(module);
|
||||
kvv.getModuleAssignments(module, success1 -> {
|
||||
adapter.setModule();
|
||||
|
||||
@@ -26,7 +26,7 @@ import de.sebse.fuplanner.tools.logging.Logger;
|
||||
public class ModDetailEventFragment extends Fragment {
|
||||
private static final String ARG_POSITION = "itemPosition";
|
||||
|
||||
private int mItemPos;
|
||||
private String mItemPos;
|
||||
private Logger log = new Logger(this);
|
||||
private ModDetailEventAdapter adapter;
|
||||
private SwipeRefreshLayout swipeLayout;
|
||||
@@ -43,10 +43,10 @@ public class ModDetailEventFragment extends Fragment {
|
||||
* @param itemPosition Item position in module list.
|
||||
* @return A new instance of fragment ModDetailAnnounceFragment.
|
||||
*/
|
||||
public static ModDetailEventFragment newInstance(int itemPosition) {
|
||||
public static ModDetailEventFragment newInstance(String itemPosition) {
|
||||
ModDetailEventFragment fragment = new ModDetailEventFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putInt(ARG_POSITION, itemPosition);
|
||||
args.putString(ARG_POSITION, itemPosition);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
@@ -55,7 +55,7 @@ public class ModDetailEventFragment extends Fragment {
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (getArguments() != null) {
|
||||
mItemPos = getArguments().getInt(ARG_POSITION);
|
||||
mItemPos = getArguments().getString(ARG_POSITION);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,8 +83,7 @@ public class ModDetailEventFragment extends Fragment {
|
||||
private void refresh(boolean forceRefresh) {
|
||||
if (getActivity() != null) {
|
||||
KVV kvv = ((MainActivity) getActivity()).getKVV();
|
||||
kvv.getModuleList((Modules success) -> {
|
||||
Modules.Module module = success.get(mItemPos);
|
||||
kvv.getModule(mItemPos, (Modules.Module module) -> {
|
||||
adapter.setModule(module);
|
||||
kvv.getModuleEvents(module, success1 -> {
|
||||
adapter.setModule();
|
||||
|
||||
@@ -25,7 +25,7 @@ public class ModDetailFragment extends Fragment {
|
||||
private static final String ARG_POSITION = "itemPosition";
|
||||
|
||||
// Parameters
|
||||
private int mItemPos;
|
||||
private String mItemPos;
|
||||
|
||||
private MainAcitivityListener mListener;
|
||||
private Logger log = new Logger(this);
|
||||
@@ -41,10 +41,10 @@ public class ModDetailFragment extends Fragment {
|
||||
* @param itemPosition Item position in module list.
|
||||
* @return A new instance of fragment ModDetailFragment.
|
||||
*/
|
||||
public static Fragment newInstance(int itemPosition) {
|
||||
public static Fragment newInstance(String itemPosition) {
|
||||
ModDetailFragment fragment = new ModDetailFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putInt(ARG_POSITION, itemPosition);
|
||||
args.putString(ARG_POSITION, itemPosition);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
@@ -53,7 +53,7 @@ public class ModDetailFragment extends Fragment {
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (getArguments() != null) {
|
||||
mItemPos = getArguments().getInt(ARG_POSITION);
|
||||
mItemPos = getArguments().getString(ARG_POSITION);
|
||||
}
|
||||
if (mListener != null) {
|
||||
mListener.onTitleTextChange(R.string.courses);
|
||||
|
||||
@@ -26,7 +26,7 @@ import de.sebse.fuplanner.tools.logging.Logger;
|
||||
public class ModDetailGradebookFragment extends Fragment {
|
||||
private static final String ARG_POSITION = "itemPosition";
|
||||
|
||||
private int mItemPos;
|
||||
private String mItemPos;
|
||||
private Logger log = new Logger(this);
|
||||
private ModDetailGradebookAdapter adapter;
|
||||
private SwipeRefreshLayout swipeLayout;
|
||||
@@ -43,10 +43,10 @@ public class ModDetailGradebookFragment extends Fragment {
|
||||
* @param itemPosition Item position in module list.
|
||||
* @return A new instance of fragment ModDetailAnnounceFragment.
|
||||
*/
|
||||
public static ModDetailGradebookFragment newInstance(int itemPosition) {
|
||||
public static ModDetailGradebookFragment newInstance(String itemPosition) {
|
||||
ModDetailGradebookFragment fragment = new ModDetailGradebookFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putInt(ARG_POSITION, itemPosition);
|
||||
args.putString(ARG_POSITION, itemPosition);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
@@ -55,7 +55,7 @@ public class ModDetailGradebookFragment extends Fragment {
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (getArguments() != null) {
|
||||
mItemPos = getArguments().getInt(ARG_POSITION);
|
||||
mItemPos = getArguments().getString(ARG_POSITION);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,8 +83,7 @@ public class ModDetailGradebookFragment extends Fragment {
|
||||
private void refresh(boolean forceRefresh) {
|
||||
if (getActivity() != null) {
|
||||
KVV kvv = ((MainActivity) getActivity()).getKVV();
|
||||
kvv.getModuleList((Modules success) -> {
|
||||
Modules.Module module = success.get(mItemPos);
|
||||
kvv.getModule(mItemPos, (Modules.Module module) -> {
|
||||
adapter.setModule(module);
|
||||
kvv.getModuleGradebook(module, success1 -> {
|
||||
adapter.setModule();
|
||||
|
||||
@@ -26,7 +26,7 @@ import de.sebse.fuplanner.tools.logging.Logger;
|
||||
public class ModDetailOverviewFragment extends Fragment {
|
||||
private static final String ARG_POSITION = "itemPosition";
|
||||
|
||||
private int mItemPos;
|
||||
private String mItemPos;
|
||||
private Logger log = new Logger(this);
|
||||
private ModDetailOverviewAdapter adapter;
|
||||
private SwipeRefreshLayout swipeLayout;
|
||||
@@ -43,10 +43,10 @@ public class ModDetailOverviewFragment extends Fragment {
|
||||
* @param itemPosition Item position in module list.
|
||||
* @return A new instance of fragment ModDetailOverviewFragment.
|
||||
*/
|
||||
public static ModDetailOverviewFragment newInstance(int itemPosition) {
|
||||
public static ModDetailOverviewFragment newInstance(String itemPosition) {
|
||||
ModDetailOverviewFragment fragment = new ModDetailOverviewFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putInt(ARG_POSITION, itemPosition);
|
||||
args.putString(ARG_POSITION, itemPosition);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
@@ -55,7 +55,7 @@ public class ModDetailOverviewFragment extends Fragment {
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (getArguments() != null) {
|
||||
mItemPos = getArguments().getInt(ARG_POSITION);
|
||||
mItemPos = getArguments().getString(ARG_POSITION);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,8 +83,7 @@ public class ModDetailOverviewFragment extends Fragment {
|
||||
private void refresh(boolean forceRefresh) {
|
||||
if (getActivity() != null) {
|
||||
KVV kvv = ((MainActivity) getActivity()).getKVV();
|
||||
kvv.getModuleList((Modules success) -> {
|
||||
Modules.Module module = success.get(mItemPos);
|
||||
kvv.getModule(mItemPos, (Modules.Module module) -> {
|
||||
adapter.setModule(module);
|
||||
kvv.getModuleDetails(module, pair -> {
|
||||
adapter.setModule();
|
||||
|
||||
@@ -10,6 +10,7 @@ import java.util.HashMap;
|
||||
|
||||
import de.sebse.fuplanner.services.KVV.types.LoginToken;
|
||||
import de.sebse.fuplanner.services.KVV.types.Modules;
|
||||
import de.sebse.fuplanner.tools.logging.Logger;
|
||||
import de.sebse.fuplanner.tools.network.NetworkCallback;
|
||||
import de.sebse.fuplanner.tools.network.NetworkErrorCallback;
|
||||
|
||||
@@ -23,6 +24,7 @@ public class KVV {
|
||||
private boolean isUpdating;
|
||||
private ArrayList<LastTokenCallback> updatingList;
|
||||
private HashMap<String, Object> addons = new HashMap<>();
|
||||
private Logger log = new Logger(this);
|
||||
|
||||
public KVV(Context context) {
|
||||
this.context = context;
|
||||
@@ -61,12 +63,28 @@ public class KVV {
|
||||
addons.clear();
|
||||
}
|
||||
|
||||
public void getModule(String id, final NetworkCallback<Modules.Module> callback, final NetworkErrorCallback error) {
|
||||
getModule(id, callback, error, false);
|
||||
}
|
||||
|
||||
public void getModule(String id, final NetworkCallback<Modules.Module> callback, final NetworkErrorCallback error, boolean forceRefresh) {
|
||||
this.getLastToken(token -> {
|
||||
KVVModuleList modules = (KVVModuleList) addons.get("modules");
|
||||
if (modules == null) {
|
||||
modules = new KVVModuleList(KVV.this.context, token);
|
||||
addons.put("modules", modules);
|
||||
}
|
||||
modules.getModule(id, callback, error, forceRefresh);
|
||||
});
|
||||
}
|
||||
|
||||
public void getModuleList(final NetworkCallback<Modules> callback, final NetworkErrorCallback error) {
|
||||
getModuleList(callback, error, false);
|
||||
}
|
||||
|
||||
public void getModuleList(final NetworkCallback<Modules> callback, final NetworkErrorCallback error, boolean forceRefresh) {
|
||||
this.getLastToken(token -> {
|
||||
log.d("token here", token);
|
||||
KVVModuleList modules = (KVVModuleList) addons.get("modules");
|
||||
if (modules == null) {
|
||||
modules = new KVVModuleList(KVV.this.context, token);
|
||||
|
||||
@@ -66,7 +66,10 @@ public class KVVModuleList extends HTTPService {
|
||||
return;
|
||||
}
|
||||
this.getModuleListUpgrade(success -> {
|
||||
if (this.moduleList == null)
|
||||
this.moduleList = success;
|
||||
else
|
||||
this.moduleList.updateList(success);
|
||||
callback.onResponse(this.moduleList);
|
||||
queueModuleDetails.next("list");
|
||||
}, queueModuleDetails.check("list", errorCallback));
|
||||
@@ -129,8 +132,8 @@ public class KVVModuleList extends HTTPService {
|
||||
this.moduleList.save(context);
|
||||
}
|
||||
|
||||
public void getModule(int index, final NetworkCallback<Modules.Module> callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) {
|
||||
this.getModuleList(success -> callback.onResponse(success.get(index)), errorCallback, forceRefresh);
|
||||
public void getModule(String id, final NetworkCallback<Modules.Module> callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) {
|
||||
this.getModuleList(success -> callback.onResponse(success.get(id)), errorCallback, forceRefresh);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ package de.sebse.fuplanner.services.KVV.types;
|
||||
import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.Pair;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
@@ -26,7 +25,7 @@ import de.sebse.fuplanner.tools.SortedModuleList;
|
||||
*/
|
||||
|
||||
public class Modules implements Iterable<Modules.Module>, Serializable {
|
||||
private final SortedModuleList list;
|
||||
private SortedModuleList list;
|
||||
private String latestSemester = null;
|
||||
private LoginToken token;
|
||||
//private transient Logger log = new Logger(this);
|
||||
@@ -86,74 +85,22 @@ public class Modules implements Iterable<Modules.Module>, Serializable {
|
||||
@NonNull
|
||||
@Override
|
||||
public Iterator<Module> iterator() {
|
||||
return new Iterator<Module>() {
|
||||
private int pos = -1;
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return pos+1 < list.size();
|
||||
return this.list.iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Module next() {
|
||||
pos++;
|
||||
if (pos < list.size())
|
||||
return list.get(pos);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
throw new UnsupportedOperationException("no changes allowed");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public Iterator<Pair<Module, Integer>> latestSemesterIterator() {
|
||||
return new Iterator<Pair<Module, Integer>>() {
|
||||
private int index = -1;
|
||||
private int next = -1;
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
if (index==next)
|
||||
predict();
|
||||
return next != -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pair<Module, Integer> next() {
|
||||
if (index == next)
|
||||
predict();
|
||||
if (next == -1)
|
||||
return null;
|
||||
index = next;
|
||||
return new Pair<>(list.get(index), index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
throw new UnsupportedOperationException("no changes allowed");
|
||||
}
|
||||
|
||||
private void predict() {
|
||||
int size = list.size();
|
||||
do {
|
||||
next++;
|
||||
} while (next < size && decline(list.get(next)));
|
||||
if (next == size)
|
||||
next = -1;
|
||||
}
|
||||
|
||||
private boolean decline(Module ob){
|
||||
return !ob.semester.equals(latestSemester);
|
||||
}
|
||||
};
|
||||
public Iterator<Module> latestSemesterIterator() {
|
||||
return this.list.semesterIterator(latestSemester);
|
||||
}
|
||||
|
||||
public int size() {
|
||||
return this.list.size();
|
||||
}
|
||||
|
||||
public Module get(int index) {
|
||||
public Module get(String id) {
|
||||
return this.list.get(id);
|
||||
}
|
||||
|
||||
public Module getByIndex(int index) {
|
||||
return this.list.get(index);
|
||||
}
|
||||
|
||||
@@ -182,6 +129,21 @@ public class Modules implements Iterable<Modules.Module>, Serializable {
|
||||
return token;
|
||||
}
|
||||
|
||||
public void updateList(Modules modules) {
|
||||
this.latestSemester = modules.latestSemester;
|
||||
SortedModuleList old = this.list;
|
||||
this.list = modules.list;
|
||||
for (Module oldModule : old) {
|
||||
Module newModule = this.list.get(oldModule.getID());
|
||||
if (newModule != null) {
|
||||
newModule.announcements = oldModule.announcements;
|
||||
newModule.assignments = oldModule.assignments;
|
||||
newModule.events = oldModule.events;
|
||||
newModule.gradebook = oldModule.gradebook;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Module implements Serializable {
|
||||
public final String semester;
|
||||
public final HashSet<String> lvNumber;
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
package de.sebse.fuplanner.tools;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.AbstractList;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
|
||||
import de.sebse.fuplanner.services.KVV.types.Modules;
|
||||
|
||||
@@ -23,14 +27,89 @@ public class SortedModuleList extends AbstractList<Modules.Module> implements Se
|
||||
});
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@Override
|
||||
public Modules.Module get(int i) {
|
||||
return internalList.get(i);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Modules.Module get(String id) {
|
||||
for (Modules.Module module : this.internalList) {
|
||||
if (module.getID().equals(id))
|
||||
return module;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int size() {
|
||||
return internalList.size();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Iterator<Modules.Module> iterator() {
|
||||
return new Iterator<Modules.Module>() {
|
||||
private int pos = -1;
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
return pos+1 < internalList.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Modules.Module next() {
|
||||
pos++;
|
||||
if (pos < internalList.size())
|
||||
return internalList.get(pos);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
throw new UnsupportedOperationException("no changes allowed");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public Iterator<Modules.Module> semesterIterator(String semester) {
|
||||
return new Iterator<Modules.Module>() {
|
||||
private int index = -1;
|
||||
private int next = -1;
|
||||
@Override
|
||||
public boolean hasNext() {
|
||||
if (index==next)
|
||||
predict();
|
||||
return next != -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Modules.Module next() {
|
||||
if (index == next)
|
||||
predict();
|
||||
if (next == -1)
|
||||
return null;
|
||||
index = next;
|
||||
return internalList.get(index);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove() {
|
||||
throw new UnsupportedOperationException("no changes allowed");
|
||||
}
|
||||
|
||||
private void predict() {
|
||||
int size = internalList.size();
|
||||
do {
|
||||
next++;
|
||||
} while (next < size && decline(internalList.get(next)));
|
||||
if (next == size)
|
||||
next = -1;
|
||||
}
|
||||
|
||||
private boolean decline(Modules.Module ob){
|
||||
return !ob.semester.equals(semester);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user