У меня есть эти временные диапазоны в моей базе данных.Теперь, что я хотел сделать, если мой следующий вход находится между этими токовыми входами, он не должен быть вставлен.
Диапазоны времени внутри базы данных:
Моя проблемав том, что когда моя логика запускает даже логику, она все равно вставляет данные в мою базу данных.Что мне делать?
Входные данные между содержащимися временными диапазонами в базе данных:
Это то, что происходит в операторе else, вставляющем конфликтующее время, он также вставляет дважды

Это код для оператора else
@Override
public void saveFinalSchedule(String day, String timeStart, String timeEnd,
String venue, String department,
String lastName, String firstName, String midName,
OnSavingScheduleListener listener) {
Schedule schedule = new Schedule();
schedule.setDay(day);
schedule.setTimeStart(timeStart);
schedule.setTimeEnd(timeEnd);
schedule.setVenue(venue);
schedule.setDepartment(department);
schedule.setFacultyName(lastName + ", " + firstName + " " + midName);
schedule.setTerm("2nd Semester");
schedule.setAcademicYear("2018 - 2019");
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = firebaseDatabase.getReference(FACULTY)
.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child(CONSULTATION_SCHEDULES);
databaseReference.keepSynced(true);
databaseReference.child(day).push().setValue(schedule)
.addOnCompleteListener(((FragmentActivity) context), new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
listener.onSavingSuccess(day + " Schedule created successfully.");
} else {
listener.onSavingFailure(task.getException().getMessage());
}
}
});
}
Код для условий
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference scheduleReference = database.getReference(FACULTY).child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child(CONSULTATION_SCHEDULES);
scheduleReference.keepSynced(true);
scheduleReference.child(day).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Iterable<DataSnapshot> snapshots = dataSnapshot.getChildren();
for (DataSnapshot snapshot : snapshots) {
timeSchedStart = snapshot.child("timeStart").getValue(String.class);
timeSchedEnd = snapshot.child("timeEnd").getValue(String.class);
Date schedStart = new Date(Long.parseLong(timeSchedStart));
Date schedEnd = new Date(Long.parseLong(timeSchedEnd));
DateTime containedStartTime = new DateTime(schedStart);
DateTime containedEndTime = new DateTime(schedEnd);
DateTime inputStartTime = new DateTime(startTime);
DateTime inputEndTime = new DateTime(endTime);
Interval interval = new Interval(containedStartTime, containedEndTime);
boolean containsStartTime = interval.contains(inputStartTime);
boolean containsEndTime = interval.contains(inputEndTime);
Log.d("logContainedStartTime", String.valueOf(containedStartTime.toLocalTime()));
Log.d("logInputStartTime", String.valueOf(inputStartTime.toLocalTime()));
Log.d("logInputEndTime", String.valueOf(inputEndTime.toLocalTime()));
Log.d("logContainedEndTime", String.valueOf(containedEndTime.toLocalTime()));
//containsStartTime || containsEndTime
if (startTime.before(schedEnd) && endTime.after(schedStart)) {
listener.onSavingFailure(
"Conflict time between "
+ timeFormat12hr.format(schedStart.getTime()) + " and "
+ timeFormat12hr.format(schedEnd.getTime()));
Log.d("isTimeBetweenTwoTime", "onDataChange: this logic fires");
break;
}
else if (containsStartTime || containsEndTime) {//listener.onSavingFailure("Duplicate");
listener.onSavingFailure(
"Conflict time between "
+ timeFormat12hr.format(schedStart.getTime())
+ " and " + timeFormat12hr.format(schedEnd.getTime()));
Log.d("intervals", "onDataChange: this logic fires");
break;
}
else if (isOverlapping(schedStart, schedEnd, startTime, endTime)){
listener.onSavingFailure(
"Conflict time between "
+ timeFormat12hr.format(schedStart.getTime())
+ " and " + timeFormat12hr.format(schedEnd.getTime()));
Log.d("overlapping", "onDataChange: this logic fires");
break;
}
else {
saveFinalSchedule(day,
String.valueOf(startTime.getTime()), String.valueOf(endTime.getTime()),
venue, department, lastName, firstName, midName, listener);
}
}
} else if (!dataSnapshot.exists()){
saveFinalSchedule(day,
String.valueOf(startTime.getTime()), String.valueOf(endTime.getTime()),
venue, department, lastName, firstName, midName, listener);
}
}