package com.maxiee.heartbeat.data; import android.content.Context; import android.util.Log; import com.maxiee.heartbeat.common.TimeUtils; import com.maxiee.heartbeat.database.api.GetCountByNameApi; import com.maxiee.heartbeat.database.tables.EventsTable; import com.maxiee.heartbeat.database.utils.EventUtils; import com.maxiee.heartbeat.database.utils.ImageUtils; import com.maxiee.heartbeat.database.utils.ThoughtUtils; import com.maxiee.heartbeat.model.Event; import com.maxiee.heartbeat.ui.adapter.DayCardEventAdapter; import com.maxiee.heartbeat.ui.adapter.TodayEventAdapter; /** * Created by maxiee on 15/10/28. */ public class DataManager { private static final String TAG = DataManager.class.getSimpleName(); private Context mContext; private EventManager mEventManager; private TodayManager mTodayManager; // private EventListAdapter mEventAdapter; private DayCardEventAdapter mEventAdapter; private TodayEventAdapter mTodayAdapter; private int mToday; private static DataManager mInstance; public static DataManager getInstance(Context context) { if (mInstance == null) { mInstance = new DataManager(context.getApplicationContext()); } return mInstance; } private DataManager(Context context) { mContext = context; mEventManager = new EventManager(mContext); mTodayManager = new TodayManager(mContext); // mEventAdapter = new EventListAdapter(mEventManager.getEvents()); mEventAdapter = new DayCardEventAdapter(mEventManager.getDayCardData()); mTodayAdapter = new TodayEventAdapter(mTodayManager.getEvents()); mToday = TimeUtils.getToday(); } public void reload() { mEventManager.reload(); mTodayManager.reload(); mEventAdapter.setData(mEventManager.getDayCardData()); mTodayAdapter.setData(mTodayManager.getEvents()); } public EventManager getEventManager() {return mEventManager;} // public EventListAdapter getEventAdapter() { // return mEventAdapter; // } public DayCardEventAdapter getEventAdapter() { return mEventAdapter; } public TodayEventAdapter getTodayAdapter() { return mTodayAdapter; } public static boolean isEventEmpty(Context context) { return new GetCountByNameApi(context).exec(EventsTable.NAME) == 0; } public boolean isTodayEmpty() { return mTodayManager.isEmpty(); } public int getTodayEventCount() { return mTodayManager.countTodayEvent(); } public int getTodayThoughtCount() { return mTodayManager.countTodayThought(); } public void notifyDataSetChanged() { mEventAdapter.notifyDataSetChanged(); mTodayAdapter.notifyDataSetChanged(); } public void addEvent(Event event) { // TODO move the code of DB-adding here mEventManager.addEvent(event); mTodayManager.addEvent(event); // TODO wtf mEventManager.reloadDayCardData(); } public void deleteEvent(long key) { EventUtils.deleteEvent(mContext, key); ImageUtils.deleteByEventId(mContext, key); ThoughtUtils.deleteByEventId(mContext, key); mEventManager.deleteEvent(key); mTodayManager.deleteEvent(key); // TODO wtf mEventManager.reloadDayCardData(); notifyDataSetChanged(); checkNewDay(); } public void updateEvent(long key) { Event e = EventUtils.getEvent(mContext, key); if (e == null) return; mEventManager.updateEvent(e); mTodayManager.updateEvent(e); // TODO wtf mEventManager.reloadDayCardData(); checkNewDay(); } public void checkNewDay() { int day = TimeUtils.getToday(); if (day != mToday) { mToday = day; mTodayManager.reload(); notifyDataSetChanged(); } } public void logInfo() { Log.d(TAG, "EventList size:" + String.valueOf(mEventManager.size())); Log.d(TAG, "TodayList size:" + String.valueOf(mTodayManager.size())); } }