Реализация периода времени (окна) с использованием Java + Spring - PullRequest
1 голос
/ 23 марта 2012

Мне нужно реализовать временное окно для 5 пользователей. Согласно выражению cron

  1. 1-й пользователь будет работать с 8:00 до 10:00.
  2. Второй пользователь будет работать с 9:00до 17:00.

аналогично.

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

Мне нужно знать, когда в конкретное время пользователи, у которых запущено окно.

Я посмотрел на

org.springframework.scheduling.quartz.SchedulerFactoryBean

для достижения этой цели.Есть ли лучший вариант для этого?

Пожалуйста, совет.

Заранее спасибо.

1 Ответ

1 голос
/ 23 марта 2012

Используйте org.quartz.CronExpression из кварцевого фреймворка, у него есть метод: getNextValidTimeAfter(Date date), который возвращает время следующего / данных после заданного времени данных.

Таким образом, решение может выглядеть следующим образом:

Date now = new Date();   
Date earlyesPossibleLogin = now - maxLoginDuration //This is psydo code, I can subtact something from a date
CronExpression cron = new CronExpression("....");
Date allowedLoginSinceEarlyestLogin = cron.getNextValidTimeAfter(earlyesPossibleLogin);
if(allowedLoginSinceEarlyestLogin > now) {
   throw new LoginDeniedException("you are out of your window.");
} 
...