package cn.scau.scautreasure.helper;
import android.content.Context;
import cn.scau.scautreasure.R;
import cn.scau.scautreasure.util.DateUtil;
import cn.scau.scautreasure.util.TextUtil;
import org.androidannotations.annotations.Bean;
import org.androidannotations.annotations.EBean;
import org.androidannotations.annotations.RootContext;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Date;
import java.util.HashMap;
/**
* 校历的辅助类
* User: special
* Date: 13-8-28
* Time: 上午11:47
* Mail: specialcyci@gmail.com
*/
@EBean
public class CalendarHelper {
@RootContext
Context ctx;
@Bean
TextUtil textUtil;
@Bean
DateUtil dateUtil;
public int MINMONTH;
public int MAXMONTH;
public int MINYEAR;
public int MAXYEAR;
/**
* color list of calendar events;
*/
private static int[] colors = new int[]{
R.color.calendar_item_vacation,
R.color.calendar_item_has_lesson,
R.color.calendar_item_normal
};
public String getTodayEventTitle(){
HashMap<Date, Event> eventList = getEventList();
Event event = eventList.get(dateUtil.getCurrentDate());
if (event != null){
return event.event_name;
}else{
return "";
}
}
/**
* get the school event lists,and set the settings;
* @return
*/
public HashMap<Date,Event> getEventList(){
HashMap<Date,Event> eventsMap = new HashMap<Date, Event>();
try {
JSONObject jsonArray = new JSONObject(getContent());
JSONObject settings = jsonArray.getJSONObject("settings");
JSONArray events = jsonArray.getJSONArray("data");
getSettings(settings);
eventsMap = buildEachEvent(eventsMap,events);
} catch (JSONException e) {
e.printStackTrace();
}
return eventsMap;
}
/**
* return the event day background colors;
* @param event_type
* @return
*/
private int getEventColor(String event_type){
if (event_type.equals("vacation")) return colors[0];
if (event_type.equals("has_lesson")) return colors[1];
if (event_type.equals("normal")) return colors[2];
return colors[0];
}
private void getSettings(JSONObject settings) throws JSONException {
MINMONTH = settings.getInt("min_month");
MINYEAR = settings.getInt("min_year");
MAXMONTH = settings.getInt("max_month");
MAXYEAR = settings.getInt("max_year");
}
private String getContent(){
return textUtil.getFromAssets("calendar/Calendar.json");
}
private HashMap<Date,Event> buildEachEvent(HashMap<Date,Event> eventsMap, JSONArray events)
throws JSONException {
for (int i = 0; i < events.length(); i ++){
JSONObject eventJsonObject = events.getJSONObject(i);
String[] date = eventJsonObject.getString("date").split(",");
int event_color = getEventColor(eventJsonObject.getString("type"));
Event event = new Event();
event.event_name = eventJsonObject.getString("event_name");
event.event_color = event_color;
for( String _date : date)
eventsMap.put(dateUtil.parseDate(_date),event);
}
return eventsMap;
}
/**
* entity of event;
*/
public class Event{
public String event_name;
public int event_color;
}
}