package cn.scau.scautreasure.ui;
import android.widget.AbsListView;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Background;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.Extra;
import org.androidannotations.annotations.UiThread;
import org.androidannotations.annotations.rest.RestService;
import org.springframework.web.client.HttpStatusCodeException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import cn.scau.scautreasure.AppContext;
import cn.scau.scautreasure.R;
import cn.scau.scautreasure.adapter.GoalAdapter;
import cn.scau.scautreasure.api.EdusysApi;
import cn.scau.scautreasure.helper.UIHelper;
import cn.scau.scautreasure.model.GoalModel;
import cn.scau.scautreasure.util.StringUtil;
import static cn.scau.scautreasure.helper.UIHelper.LISTVIEW_EFFECT_MODE.EXPANDABLE_ALPHA;
/**
* 成绩查询;
* User: Special Leung
* Date: 13-8-15
* Time: 下午2:23
* Mail: specialcyci@gmail.com
*/
@EActivity(R.layout.goal)
public class Goal extends CommonQueryActivity{
@RestService
EdusysApi api;
@Extra("value")
ArrayList<String> value;
@AfterViews
void init(){
setTitle(R.string.title_goal);
tips_empty = R.string.tips_goal_null;
cacheHelper.setCacheKey("goal_" + StringUtil.join(value, "_"));
list = cacheHelper.loadListFromCache();
buildAndShowListViewAdapter();
}
void calculateGPA(){
if ( list == null )
return;
double total_credit_point = 0;
double total_credit = 0;
for (GoalModel g : (List<GoalModel>) list) {
double credit = Double.parseDouble(g.getCredit());
double grade_point = Double.parseDouble(g.getGrade_point());
total_credit += credit;
total_credit_point += (double) credit * grade_point;
}
// 一学期(学年)的平均绩点=该学期(学年)全部学分绩点之和÷该学期(学年)所修学分之和
double gpa = (double)total_credit_point / total_credit;
showGPAInformation(gpa,total_credit_point);
}
@UiThread
void showGPAInformation(double gpa,double total_credit_point){
StringBuilder subTitle = new StringBuilder();
DecimalFormat df = new DecimalFormat("#.00");
subTitle.append(getString(R.string.tv_gpa) + df.format(gpa));
subTitle.append(" ");
subTitle.append(getString(R.string.total_credit_point)+ df.format(total_credit_point));
getSherlockActivity().getSupportActionBar().setSubtitle(subTitle.toString());
}
@Background( id = UIHelper.CANCEL_FLAG )
void loadData(Object... params) {
beforeLoadData();
try{
ArrayList<String> param = value;
list = api.getGoal(AppContext.userName, app.getEncodeEduSysPassword(), AppContext.server, param.get(0), param.get(1)).getGoals();
cacheHelper.writeListToCache(list);
buildAndShowListViewAdapter();
}catch (HttpStatusCodeException e){
showErrorResult(getSherlockActivity(), e.getStatusCode().value(),this);
}catch (Exception e){
handleNoNetWorkError(getSherlockActivity());
}
afterLoadData();
}
private void buildAndShowListViewAdapter(){
GoalAdapter listadapter = new GoalAdapter(getSherlockActivity(), R.layout.goal_listitem, list);
adapter = UIHelper.buildEffectAdapter(listadapter, (AbsListView) listView,EXPANDABLE_ALPHA);
showSuccessResult();
calculateGPA();
}
}