Дни и заказы Java - PullRequest
       4

Дни и заказы Java

0 голосов
/ 16 ноября 2011

Хорошо, это продолжение вопроса, который я задавал ранее, но это следующий шаг, который мне не ясен.Все остальное будет готово, и эта часть сводит меня с ума!некоторые участники оказали большую помощь, и я уже продвинулся в этой информации, но это еще одно препятствие.

Я создаю объект бронирования (как было предложено), который будет иметь дату начала и дату окончания.с каждым бронированием также будет связан ряд мест (которые мне необходимо зарезервировать).Общее доступное количество мест в любой заданный день 46 (так как общая вместимость зала составляет 46 мест).

, так что при условии, что у меня есть резервирование в системе, дата начала - 1 января, а дата окончания - 10 января. Вопрос в том, как я могу проверить оставшиеся места за все эти промежутки времени между диапазонами, чтобы узнать, может ли запрошенный номер быть размещен или нет? и затем, когда будет сделано второе бронирование, он должен будет увидеть, чтоКоличество дней в этом диапазоне уже меньше 46 и уменьшается, если это возможно, для размещения бронирования.

один из участников, и я ценю его усилия, с радостью предоставил метод для сравнения, если это бронирование после или до существующих бронирований.Код здесь:

public boolean overlapsWithExisting(Booking booking) {
final Date early = booking.getStart();
final Date late = booking.getEnd();
for(Booking existing : existingBookings) {
    if(!(early.isAfter(existing.getEnd() || late.isBefore(existing.getStart()))
        return true;
}
return false;
}

Я просто хочу знать, как связать 46 с каждым днем ​​и вести учет дней, которые уменьшаются в результате бронирований.

Спасибо и очень признателен: D

Ответы [ 2 ]

0 голосов
/ 16 ноября 2011

В SQL можно сделать следующее, чтобы найти блокирующие заказы:

SELECT *
FROM bookings
WHERE startt < :end AND endt >= :start
LIMIT 0, 1

Это можно сделать и в Java;сортировка заказов по дате поможет.

0 голосов
/ 16 ноября 2011

Я бы предложил обернуть объект Date в тип структуры данных, характерной для вашего приложения: я полагаю, что у вас есть конкретный тип информации для вашей бизнес-логики, который можно выразить в карте.

Таким образом, вы можете создать TreeMap.

TreeMap<Date,Integer> myBookings = new TreeMap<Date,Integer>();

И установите все даты на 46:

for(Date d : allDates)
   myBookings.put(d,46); 

Теперь, когда вы добавляете человека в комнату в определенный день, вы просто редактируете карту:

* * 1010

Таким образом, структура данных карты охватывает все даты в диапазоне и сохраняет количество доступных мест.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...