package com.gautam.medicinetime.data.source.local; import android.content.Context; import com.gautam.medicinetime.data.source.History; import com.gautam.medicinetime.data.source.MedicineAlarm; import com.gautam.medicinetime.data.source.MedicineDataSource; import com.gautam.medicinetime.data.source.Pills; import java.net.URISyntaxException; import java.util.List; /** * Created by gautam on 13/07/17. */ public class MedicinesLocalDataSource implements MedicineDataSource { private static MedicinesLocalDataSource mInstance; private MedicineDBHelper mDbHelper; private MedicinesLocalDataSource(Context context) { mDbHelper = new MedicineDBHelper(context); } public static MedicinesLocalDataSource getInstance(Context context) { if (mInstance == null) { mInstance = new MedicinesLocalDataSource(context); } return mInstance; } @Override public void getMedicineHistory(LoadHistoryCallbacks loadHistoryCallbacks) { List<History> historyList = mDbHelper.getHistory(); loadHistoryCallbacks.onHistoryLoaded(historyList); } @Override public void getMedicineAlarmById(long id, GetTaskCallback callback) { try { MedicineAlarm medicineAlarm = getAlarmById(id); if (medicineAlarm != null) { callback.onTaskLoaded(medicineAlarm); } else { callback.onDataNotAvailable(); } } catch (URISyntaxException e) { e.printStackTrace(); callback.onDataNotAvailable(); } } @Override public void saveMedicine(MedicineAlarm medicineAlarm, Pills pill) { mDbHelper.createAlarm(medicineAlarm, pill.getPillId()); } @Override public void getMedicineListByDay(int day, LoadMedicineCallbacks callbacks) { List<MedicineAlarm> medicineAlarmList = mDbHelper.getAlarmsByDay(day); callbacks.onMedicineLoaded(medicineAlarmList); } @Override public boolean medicineExits(String pillName) { for (Pills pill : getPills()) { if (pill.getPillName().equals(pillName)) return true; } return false; } @Override public List<Long> tempIds() { return null; } @Override public void deleteAlarm(long alarmId) { deleteAlarmById(alarmId); } @Override public List<MedicineAlarm> getMedicineByPillName(String pillName) { try { return getMedicineByPill(pillName); } catch (URISyntaxException e) { e.printStackTrace(); return null; } } @Override public List<MedicineAlarm> getAllAlarms(String pillName) { try { return getAllAlarmsByName(pillName); } catch (URISyntaxException e) { e.printStackTrace(); return null; } } @Override public Pills getPillsByName(String pillName) { return getPillByName(pillName); } @Override public long savePills(Pills pills) { return savePill(pills); } @Override public void saveToHistory(History history) { mDbHelper.createHistory(history); } private List<Pills> getPills() { return mDbHelper.getAllPills(); } private long savePill(Pills pill) { long pillId = mDbHelper.createPill(pill); pill.setPillId(pillId); return pillId; } private Pills getPillByName(String pillName) { return mDbHelper.getPillByName(pillName); } private List<MedicineAlarm> getMedicineByPill(String pillName) throws URISyntaxException { return mDbHelper.getAllAlarmsByPill(pillName); } private List<MedicineAlarm> getAllAlarmsByName(String pillName) throws URISyntaxException { return mDbHelper.getAllAlarms(pillName); } public void deletePill(String pillName) throws URISyntaxException { mDbHelper.deletePill(pillName); } private void deleteAlarmById(long alarmId) { mDbHelper.deleteAlarm(alarmId); } public void addToHistory(History h) { mDbHelper.createHistory(h); } public List<History> getHistory() { return mDbHelper.getHistory(); } private MedicineAlarm getAlarmById(long alarm_id) throws URISyntaxException { return mDbHelper.getAlarmById(alarm_id); } public int getDayOfWeek(long alarm_id) throws URISyntaxException { return mDbHelper.getDayOfWeek(alarm_id); } }