2014-08-15 3 views
0

На самом деле у меня есть ситуация, и я ищу руководство. Дело в том, что у меня есть таблица, содержащая записи за дни и время, когда пользователь может получить доступ к системе.Доступ к системе

Столбцы таким образом: -

Userid день accesstimefrom accesstimeto

теперь я ищу способ, с помощью которого я могу гарантировать, что для конкретного пользователя, который получил запись в таблица, пользователь должен иметь возможность получить доступ к системе в то время и день, указанный в таблице дО значения в accesstimeto колонке моей таблицы .for если

userid =1 
day=wednesday 
accesstimefrom=02:00 
accesstimeto=04:00 

, то пользователь с идентификатором пользователя = 1 может получить доступ к системе только в среду в 02:00 в ночь до 04:00, т.е. в течение 2 часов

Просьба представить способ, как я могу добиться этого,

I am using 
Jboss 7.1 as server 
oracle 10g DB 
Java 

ответ

0

EDIT: также включает в себя соответствующий импорт,

import java.text.SimpleDateFormat; 
import java.util.Calendar; 

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

timeStamp = new SimpleDateFormat("EEEYYYYMMddHHmmss").format(Calendar.getInstance().getTime()); 

E - день недели (Пн, Вт, Ср и т. Д.), ГГГГ - год, ММ - месяц, дд - день месяца, час - час, мм - минута, секунда - секунда. Затем разобрать его в Интс, если вам нужно, как

int year = Integer.parseInt(timeStamp.substring(0, 4)); 

После этого, это простой вопрос, чтобы сравнить время доступа к значениям найденных выше код, когда пользователь пытается получить доступ к

для измерения времени, которое прошло, есть программа знает, когда программа начала

long startTime = System.currentTimeMillis(); 

, а затем проверить несколько раз с петлей, чтобы увидеть, сколько времени прошло, и

if(it's been too long) {kick them out} 

Таким образом, если пользователь получает доступ к вашей программе в 4:27:00 и нужно выгнать в 4:28:30 ...

long estimatedTime = System.currentTimeMillis() - startTime; 
if(estimatedTime/1000 > 90) //estimatedTime is in milliseconds, divide by 1000 to get seconds 
    thisMethodKicksTheUserOut(); 

Имейте в виду, что есть много способов может реализовать вашу программу, и это мой быстрый и грязный подход к ней. Есть много ресурсов на получение/измерение времени на Java в Интернете, возможно, вам стоит ознакомиться с некоторыми из них.

+0

Спасибо за ответ, но у меня есть один вопрос, как насчет автоматического выхода из системы, когда это назначенное время закончено, как я буду отслеживать продолжительность? – user3786045

+0

Существует множество способов; Я, вероятно, сделаю это, проверив время каждую минуту или около того, и посмотрим, прошло ли это в нужное время. Я добавлю что-то к своему ответу через секунду. – Kevin

+0

Спасибо, что для этого подхода вам будет сообщено ,,, если я столкнусь с любой проблемой. Недостатки для этого – user3786045

Смежные вопросы