package de.saxsys.android.projectiler.app.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import de.saxsys.android.projectiler.app.generatedmodel.Comment; import de.saxsys.android.projectiler.app.generatedmodel.CommentDao; import de.saxsys.android.projectiler.app.generatedmodel.DaoMaster; import de.saxsys.android.projectiler.app.generatedmodel.DaoSession; import de.saxsys.android.projectiler.app.generatedmodel.Track; import de.saxsys.android.projectiler.app.generatedmodel.TrackDao; /** * Created by stefan.heinze on 11.04.14. */ public class DataProvider { private static final String DB_NAME = "projectiler-db"; private final Context context; private SQLiteDatabase db; private TrackDao trackDao; private CommentDao commentDao; public DataProvider(final Context context) { this.context = context; SQLiteDatabase.CursorFactory cursorFactory = null; final DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, DB_NAME, cursorFactory); db = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); DaoSession daoSession = daoMaster.newSession(); trackDao = daoSession.getTrackDao(); commentDao = daoSession.getCommentDao(); } public void saveTrack(final Track track) { trackDao.insertOrReplace(track); } public void deleteTrack(final Track track) { trackDao.delete(track); } public List<Track> getTracks() { List<Track> tracks = trackDao.loadAll(); List<Track> ret = new ArrayList<Track>(); for (Track track : tracks) { if (isToday(track.getTimestamp())) { ret.add(track); } } return ret; } public void saveComment(final Comment comment){ if(commentDao.queryBuilder().where(CommentDao.Properties.Value.eq(comment.getValue())).list().size() == 0){ commentDao.insertOrReplace(comment); } } public List<Comment> searchComments(final String searchTerm){ return commentDao.queryBuilder().where(CommentDao.Properties.Value.like("%" + searchTerm + "%")).orderDesc(CommentDao.Properties.Timestamp).list(); } private boolean isToday(Date timestamp) { Calendar cal = Calendar.getInstance(); cal.setTime(timestamp); Calendar calToday = Calendar.getInstance(); calToday.setTime(new Date()); int dayToday = calToday.get(Calendar.DAY_OF_MONTH); int monthToday = calToday.get(Calendar.MONTH); int yearToday = calToday.get(Calendar.YEAR); int day = cal.get(Calendar.DAY_OF_MONTH); int month = cal.get(Calendar.MONTH); int year = cal.get(Calendar.YEAR); if (day == dayToday && month == monthToday && year == yearToday) { return true; } return false; } }