2012-06-13 6 views
2

Краткая версия: Если вам нужно было сохранить текущую дату и время каждую минуту, перезаписав существующую запись, как бы вы это сделали?повторяется запись в db или текстовый файл

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

Мой сценарий - я хочу знать, при запуске приложения, когда последний раз приложение выполнялось.

Длинная версия:

У меня есть вопрос о производительности, и, возможно, также надлежащий стиль кодирования.

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

проблема заключается в том, что если приложение выключится и перезагрузится, предметы, устаревшие во время простоя, не будут проверены.

код для повторного метода

runeveryminute = new TimerTask() { 

     @Override 
     public void run() { 

       for (Item i : lager.getAllItems) { 

        if (i.getMinutesTillStale == 0) { 
        JOptionPane.showConfirmDialog(MainFrame.this,"WARNING", 
        "Alarm", 
        JOptionPane.OK_CANCEL_OPTION); 
        } 
       } 
      } 
     } 
    }; 

Я не согласен с этим способом проверки, если что-то пошло несвежим, но это школьный проект, так что это не так важно.

Я добавил слушателя окна на мэйнфрейм, но я не уверен, могу ли я полагаться на него, чтобы поймать неожиданные сбои, например, сбой питания.

+0

Почему бы не просто проверить при запуске? –

+0

Я думаю, что JavaFX может сэкономить вам много работы и времени. И Дейв прав! Проверьте при запуске или поместите бутон, чтобы сделать все обновление! –

+1

Считаете ли вы, что писать в файл не каждую минуту, а скорее как часть завершения вашей программы? Поэтому вы пишете один раз, когда выключаете. – Thomas

ответ

0

Это зависит от того, как определяется i.getMinutesTillStale. Будет ли getMinutesTillStale давать отрицательное значение, если элемент был устаревшим во время простоя? Тогда вы можете изменить условие на i.getMinutesTillStale <= 0.

Предложение: Вы сохраняете информацию о товарах в базе данных? например, записи, такие как itemId, datestored, expiryperiod(or dateofExpiry) Затем вы можете записать хранимую процедуру или запрос с указанием времени таймера в качестве ввода. Он будет проверять все элементы, срок действия которых истек, и отправить вам список этих элементов.

Дайте мне знать, если это поможет.

+0

Да, если они устарели, он вернет отрицательное значение. однако я хочу избегать создания аварийных сигналов для элементов, которые уже вызвали тревогу. Если я только иду по методу minutestillstale, я буду предупреждать все устаревшие продукты, независимо от предыдущих аварийных сигналов. – KristianMedK

+0

@ user744610 Указывает на элемент как «уже встревоженный» вариант? Скажем, вы всегда будете ловить каждый отдельный предмет, срок действия которого истекает, когда истекает срок его действия? Я не вижу точности '== 0', если вы просто проверяете каждую минуту. Срок действия элемента мог быть истек за 30 секунд до выполнения таймера - будет ли 'getMinutesTillStale == 0' для этого элемента? – cklab

+0

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

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