2012-06-13 4 views
2

짧은 버전 : 매월 현재 날짜와 시간을 저장해야하는 경우 기존 항목을 덮어 쓰면 어떻게 할 수 있습니까?db 또는 텍스트 파일에 반복적으로 쓰기

텍스트 파일, 데이터베이스 또는 세 번째 옵션으로 쓰시겠습니까? 아마도 모범 사례로 간주 될 수 있습니다.

내 시나리오는 응용 프로그램 시작시 응용 프로그램이 마지막으로 실행 된 시간을 알고 싶습니다.

긴 버전 :

나는 성능의 문제를 가지고 있고, 어쩌면 또한 적절한 코딩 스타일.

나는 음식 재고를 추적하는 응용 프로그램을 가지고 있으며, 일부 항목이 오래되어 제거해야하는 경우가 있습니다. 현재 재고가있는 항목을 확인하고 오래된 것으로 간주되는 날짜와 시간을 초과 한 경우, 매분마다 실행중인 timertask가 있습니다.

문제는 응용 프로그램이 종료되었다가 다시 시작되면 가동 중지 시간 동안 오래된 항목은 확인되지 않았기 때문입니다. 반복 방법

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는 많은 시간과 작업을 절약 할 수 있다고 생각합니다. 그리고 데이브 말이 맞아! 시작을 확인하거나 모든 업데이트를 수행하려면 buton을 넣으십시오! –

+1

당신은 파일을 쓰는 것을 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