I am creating events. I am storing events in database. I want to check if events dose overlap each other.
For this I have created a function in database to check current event with other events.
But now its creating a problem. The event is getting added first. Then if I try to add new event at same time it shows event exists.
But If I update the first event and then try to add new event at same time then it gets added though it should show event exists and should not be added.
I am unable to get the problem. Is anything wrong in my if statements logic? Can anyone help with this please?
save code:
save.setOnClickListener(new View.OnClickListener() {
String log;
@Override
public void onClick(View v) {
eventTitle = title.getText().toString();
location = mAutocompleteView.getText().toString();
List<EventData> events = db.getAllEvents();
for (EventData cn : events) {
log = "Id: " + cn.getId() + " ,Title: " + cn.getTitle() +
"Date: " + cn.getFromDate() + ",Todate: " + cn.getToDate() + "Location:" + cn.getLocation() + "Day of week"
+ cn.getDayOfWeek() + "Notifiction time" + cn.getNotificationTime();
Log.i("data",log);
}
if (eventTitle.length() == 0) {
showAlert("Title can not be empty.");
}
else if (startTime.equals(endTime)) {
showAlert("End Time can not be same as Start Time.");
}
if (db.doesEventOverlap(startTime,endTime,dayOfWeek)) {
showAlert("Event Exists");
}
else
{
if (editMode) {
// db.deleteEvent(eventData);
eventData.setTitle(title.getText().toString());
eventData.setFromDate(startTime);
eventData.setToDate(endTime);
eventData.setDayOfWeek(selectDay.getText().toString());
eventData.setLocation(mAutocompleteView.getText().toString());
eventData.setNotificationTime(notificationTime);
eventData.setColor(mColor);
// if(db.doesEventOverlap(startTime,endTime,dayOfWeek))
// {
// showAlert("Event Exists.");
// }
// db.addEvent(new EventData(eventTitle, startTime, endTime, dayOfWeek, location, notificationTime, mColor));
db.updateEvent(eventData);
showAlert("Event Updated.");
List<EventData> event = db.getAllEvents();
for (EventData cn : event) {
log = "Id: " + cn.getId() + " ,Title: " + cn.getTitle() +
"Date: " + cn.getFromDate() + ",Todate: " + cn.getToDate() + "Location:" + cn.getLocation() + "Day of week"
+ cn.getDayOfWeek() + "Notifiction time" + cn.getNotificationTime();
Log.i("data",log);
}
// setResult(RESULT_OK, i);
// finish();
}
else if (!editMode){
List<EventData> e = db.getAllEvents();
for (EventData cn : e) {
log = "Id: " + cn.getId() + " ,Title: " + cn.getTitle() +
"Date: " + cn.getFromDate() + ",Todate: " + cn.getToDate() + "Location:" + cn.getLocation() + "Day of week"
+ cn.getDayOfWeek() + "Notifiction time" + cn.getNotificationTime();
Log.i("data",log);
}
// Writing Contacts to log
db.addEvent(new EventData(eventTitle, startTime, endTime, dayOfWeek, location, notificationTime, mColor));
showAlert("Event Added.");
}
}
}
});
Dose event overlap function:
boolean doesEventOverlap(String startTime, String endTime, String day) {
String selectQuery = "SELECT COUNT(*) FROM " + TABLE + " WHERE " + KEY_DAY_OF_WEEK + " = '" + day + "'" + " AND "
+ "(" + KEY_FROM_DATE + " < '" + startTime
+ "' AND '" + startTime + "' < " + KEY_TO_DATE + ") OR "
+ " (" + KEY_FROM_DATE + " < '" + endTime
+ "' AND '" + endTime + "' < " + KEY_TO_DATE + ") OR "
+ " (" + KEY_FROM_DATE + " < '" + startTime
+ "' AND '" + endTime + "' < " + KEY_TO_DATE + ") OR "
+ " ('" + startTime + "' < " + KEY_FROM_DATE
+ " AND " + KEY_TO_DATE + " < '" + endTime + "')";
Log.i("query",selectQuery);
// + KEY_DAY_OF_WEEK + " = '" + day + "'";;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
EventData event = new EventData();
return cursor.getInt(0) > 0;
} while (cursor.moveToNext());
}
return false;
}
create table :
public void createTable(SQLiteDatabase db){
String CREATE_EVENTS_TABLE = "CREATE TABLE " + TABLE_EVENTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ KEY_TITLE + " TEXT,"
+ KEY_FROM_DATE + " DATE,"
+ KEY_TO_DATE + " DATE,"
+ KEY_DAY_OF_WEEK + " TEXT,"
+ KEY_LOCATION + " TEXT,"
+ KEY_NOTIFICATION_TIME + " DATE,"
+ KEY_COLOR + " TEXT" + ")";
db.execSQL(CREATE_EVENTS_TABLE);
}
Aucun commentaire:
Enregistrer un commentaire