Revision: 4184
Author: janne.t.harkonen
Date: Wed Sep 29 15:37:24 2010
Log: Notice outside changes to db file
http://code.google.com/p/robotframework/source/detail?r=4184

Modified:
 /trunk/proto/atdd-tutorial-berlin-2010/src/vacalc/employeestore.py
 /trunk/proto/atdd-tutorial-berlin-2010/src/vacalc/ui.py
 /trunk/proto/atdd-tutorial-berlin-2010/src/vacalc/vacalcapp.py

=======================================
--- /trunk/proto/atdd-tutorial-berlin-2010/src/vacalc/employeestore.py Wed Sep 29 14:48:01 2010 +++ /trunk/proto/atdd-tutorial-berlin-2010/src/vacalc/employeestore.py Wed Sep 29 15:37:24 2010
@@ -7,6 +7,7 @@
 class VacalcError(RuntimeError): pass


+
 class EmployeeStore(object):

     def __init__(self, db_file):
@@ -24,6 +25,9 @@
                 employees[employee.name] = employee
         return employees

+    def refresh(self):
+        self.__init__(self._db_file)
+
     def get_employee(self, name):
         try:
             return self._employees[name]
=======================================
--- /trunk/proto/atdd-tutorial-berlin-2010/src/vacalc/ui.py Wed Sep 29 14:48:01 2010 +++ /trunk/proto/atdd-tutorial-berlin-2010/src/vacalc/ui.py Wed Sep 29 15:37:24 2010
@@ -40,6 +40,9 @@
     def show(self):
         self._frame.setVisible(True)

+    def employees_changed(self):
+        self._employee_list.refresh()
+

 class EmployeeList(object):

@@ -65,6 +68,12 @@
     def adding_employee_failed(self, error):
         pass

+    def refresh(self):
+        idx = self._list.getSelectedIndex()
+        self._populate_list()
+        if idx < self._list.getModel().getSize():
+            self._list.setSelectedIndex(idx)
+
     @property
     def widget(self):
         return self._list
=======================================
--- /trunk/proto/atdd-tutorial-berlin-2010/src/vacalc/vacalcapp.py Wed Sep 29 14:48:01 2010 +++ /trunk/proto/atdd-tutorial-berlin-2010/src/vacalc/vacalcapp.py Wed Sep 29 15:37:24 2010
@@ -1,5 +1,8 @@
 import os
 import tempfile
+from java.util import Timer, TimerTask
+from java.lang import Runnable
+from javax.swing import SwingUtilities

 from org.robotframework.vacalc import VacationCalculator

@@ -11,11 +14,33 @@

     def create(self):
         default_db = os.path.join(tempfile.gettempdir(), 'vacalcdb.csv')
-        db_file = os.environ.get('VACALC_DB', default_db)
-        store = EmployeeStore(db_file)
-        self._frame = VacalcFrame(EmployeeController(store))
+        self._db_file= os.environ.get('VACALC_DB', default_db)
+ self._size = os.stat(self._db_file).st_size if os.path.exists(self._db_file) else 0
+        self._store = EmployeeStore(self._db_file)
+        self._frame = VacalcFrame(EmployeeController(self._store))
+        self._timer = Timer()
+        self._timer.scheduleAtFixedRate(DbModificationTask(self), 0, 500)
         self._frame.show()

+    def check_modified_time(self):
+ if not os.path.exists(self._db_file) or os.stat(self._db_file).st_size != self._size:
+            self._store.refresh()
+ SwingUtilities.invokeLater(UpdateAction(self._frame.employees_changed))
+
+
+class UpdateAction(Runnable):
+    def __init__(self, action):
+        self._action = action
+    def run(self):
+        self._action()
+
+
+class DbModificationTask(TimerTask):
+    def __init__(self, app):
+        self._app = app
+    def run(self):
+        self._app.check_modified_time()
+

 class EmployeeController(object):

Reply via email to