package ca.etsmtl.applets.etsmobile.ui.fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.octo.android.robospice.persistence.exception.SpiceException;
import java.util.ArrayList;
import java.util.HashMap;
import ca.etsmtl.applets.etsmobile.ApplicationManager;
import ca.etsmtl.applets.etsmobile.http.DataManager;
import ca.etsmtl.applets.etsmobile.http.DataManager.SignetMethods;
import ca.etsmtl.applets.etsmobile.model.ListeDeCours;
import ca.etsmtl.applets.etsmobile.model.ListeDeSessions;
import ca.etsmtl.applets.etsmobile.ui.adapter.NoteAdapter;
import ca.etsmtl.applets.etsmobile.ui.adapter.NotesSessionItem;
import ca.etsmtl.applets.etsmobile.ui.adapter.SessionCoteAdapter;
import ca.etsmtl.applets.etsmobile.ui.adapter.SessionCoteItem;
import ca.etsmtl.applets.etsmobile2.R;
/**
* Created by Laurence
*/
public class NotesFragment extends HttpFragment {
private static String TAG = NotesFragment.class.getName();
private ListView mListView;
private NoteAdapter adapter;
private SessionCoteItem[] sessionCoteItemArray;
private NotesSessionItem[] notesSession;
private ListeDeCours listeDeCours;
private ListeDeSessions listeDeSessions;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup v = (ViewGroup) inflater.inflate(R.layout.fragment_note, container, false);
super.onCreateView(inflater, v, savedInstanceState);
mListView = (ListView) v.findViewById(R.id.activity_note_listview);
return v;
}
@Override
public void onStart() {
super.onStart();
loadingView.showLoadingView();
DataManager datamanager = DataManager.getInstance(getActivity());
datamanager.getDataFromSignet(SignetMethods.LIST_COURS, ApplicationManager.userCredentials, this, "");
datamanager.getDataFromSignet(SignetMethods.LIST_SESSION, ApplicationManager.userCredentials, this, "");
}
@Override
public void onRequestFailure(SpiceException e) {
super.onRequestFailure(e);
}
@Override
public void onRequestSuccess(Object o) {
super.onRequestSuccess(o);
if (o != null && getActivity() != null)
if (o instanceof ListeDeCours) {
listeDeCours = (ListeDeCours) o;
refreshList();
} else if (o instanceof ListeDeSessions) {
listeDeSessions = (ListeDeSessions) o;
refreshList();
}
}
@Override
void updateUI() {
// TODO Auto-generated method stub
}
private void refreshList() {
if (listeDeCours != null && listeDeSessions != null) {
if (listeDeCours.liste.size() != 0) {
sessionCoteItemArray = new SessionCoteItem[listeDeCours.liste.size()];
HashMap<String, ArrayList<SessionCoteItem>> mapSession = new HashMap<String, ArrayList<SessionCoteItem>>();
for (int i = 0; i < listeDeCours.liste.size(); i++) {
// Permet le regroupement par session, on ajoute le vecteur
// des cours dans la session
if (mapSession.containsKey(listeDeCours.liste.get(i).session)) {
ArrayList<SessionCoteItem> arrayList = mapSession.get(listeDeCours.liste.get(i).session);
// listeDeCours.liste.get(i).titreCours
arrayList.add(new SessionCoteItem(listeDeCours.liste.get(i).sigle, listeDeCours.liste.get(i).cote,
listeDeCours.liste.get(i).groupe,listeDeCours.liste.get(i).titreCours));
// arrayList.add(new SessionCoteItem(listeDeCours.liste.get(i).sigle, listeDeCours.liste.get(i).cote,
// listeDeCours.liste.get(i).groupe));
mapSession.put(listeDeCours.liste.get(i).session, arrayList);
} else {
ArrayList<SessionCoteItem> arrayList = new ArrayList<SessionCoteItem>();
arrayList.add(new SessionCoteItem(listeDeCours.liste.get(i).sigle, listeDeCours.liste.get(i).cote,
listeDeCours.liste.get(i).groupe,listeDeCours.liste.get(i).titreCours));
mapSession.put(listeDeCours.liste.get(i).session, arrayList);
}
}
notesSession = new NotesSessionItem[listeDeSessions.liste.size()];
int l = 0;
for (int j = listeDeSessions.liste.size() - 1; j >= 0; j--) {
ArrayList<SessionCoteItem> array = mapSession.get(listeDeSessions.liste.get(j).abrege);
SessionCoteItem[] sessionCoteItems = new SessionCoteItem[array.size()];
int k = 0;
for (SessionCoteItem sessionCote : array) {
sessionCoteItems[k] = sessionCote;
k++;
}
notesSession[l] = new NotesSessionItem(listeDeSessions.liste.get(j).auLong, new SessionCoteAdapter(getActivity(), sessionCoteItems));
l++;
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
adapter = new NoteAdapter(getActivity(), R.layout.row_note_menu, notesSession);
mListView.setAdapter(adapter);
}
});
}
}
}
}