Vojtech Szocs has posted comments on this change.

Change subject: userportal,webadmin: synchronize grid refresh
......................................................................


Patch Set 3:

(8 comments)

Patch looks good overall, just some comments for possible improvement.

http://gerrit.ovirt.org/#/c/23605/3/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/refresh/AbstractRefreshManager.java
File 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/refresh/AbstractRefreshManager.java:

Line 109:                 onRefresh(modelTimer.getValue());
Line 110:             }
Line 111:         });
Line 112:         if (wasTimerActive) {
Line 113:             modelTimer.start();
If GridTimer.active == true then the timer is in one of two possible states:
* already started and running
* already started but paused

Why do we need to start the timer here? (The updateController method is invoked 
early as part of AbstractRefreshManager constructor.)

If we indeed need to start the timer here, maybe we should call 
GridTimer.resume method instead, which resets GridTimer.paused flag to false 
and invokes GridTimer.start method.
Line 114:         }
Line 115:     }
Line 116: 
Line 117:     /**


Line 165: 
Line 166:     public void setCurrentRefreshRate(int newRefreshRate) {
Line 167:         saveRefreshRate(newRefreshRate);
Line 168:         getModelTimer().setRefreshRate(readRefreshRate());
Line 169:         updateController();
Hm, I suggest to extract timer-specific code in updateController method into a 
separate method, for example:

 private void updateController() {
     this.controller = modelProvider.getModel();
 }

 private void updateModelTimer() {
     // rest of code from original updateController method
 }

If I read this correctly, we need to execute timer-specific code (i.e. 
updateModelTimer method) on each refresh rate change via GUI (i.e. 
setCurrentRefreshRate method).
Line 170:     }
Line 171: 
Line 172:     public int getCurrentRefreshRate() {
Line 173:         return getModelTimer().getRefreshRate();


Line 173:         return getModelTimer().getRefreshRate();
Line 174:     }
Line 175: 
Line 176:     String getRefreshRateItemKey() {
Line 177:         return GRID_REFRESH_RATE_PREFIX;
Since the refresh rate is now shared for all grids, I suggest to rename 
GRID_REFRESH_RATE_PREFIX to something like this:

 // Key used to store refresh rate of all data grids
 private static final String GRID_REFRESH_RATE_KEY = "GridRefreshRate";
Line 178:     }
Line 179: 
Line 180:     void saveRefreshRate(int newRefreshRate) {
Line 181:         clientStorage.setLocalItem(getRefreshRateItemKey(), 
String.valueOf(newRefreshRate));


http://gerrit.ovirt.org/#/c/23605/3/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/GridTimer.java
File 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/GridTimer.java:

Line 126:     private int repetitions;
Line 127: 
Line 128:     public GridTimer(String name, final EventBus eventBus) {
Line 129:         this.name = name;
Line 130:         assert(eventBus != null);
+1 on assert here
Line 131:         this.eventBus = eventBus;
Line 132:     }
Line 133: 
Line 134:     @Override


Line 202:         reset();
Line 203:         logger.fine("GridTimer[" + name + "]: Refresh Rate set to: " 
+ interval); //$NON-NLS-1$ //$NON-NLS-2$
Line 204:         // set the NORMAL interval
Line 205:         normalInterval = interval;
Line 206:         ValueChangeEvent.fire(this, String.valueOf(getRefreshRate()));
Hm, just a nit-picky question: shouldn't GridTimer implement

 HasValueChangeHandlers<Integer>

instead of current

 HasValueChangeHandlers<String>

?
Line 207:     }
Line 208: 
Line 209:     public void start() {
Line 210:         logger.fine("GridTimer[" + name + "].start()"); //$NON-NLS-1$ 
//$NON-NLS-2$


http://gerrit.ovirt.org/#/c/23605/3/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java
File 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java:

Line 362:                 public void onValueChange(ValueChangeEvent<String> 
event) {
Line 363:                     int newInterval;
Line 364:                     //Use the new interval, if the value is invalid 
us the old interval.
Line 365:                     try {
Line 366:                         newInterval = 
Integer.valueOf(event.getValue());
Please see my comment in GridTimer.java - we could avoid string-to-integer 
conversion with

 ValueChangeEvent<Integer>

instead of

 ValueChangeEvent<String>
Line 367:                     } catch (NumberFormatException nfe) {
Line 368:                         newInterval = timer.getRefreshRate();
Line 369:                     }
Line 370:                     if (timer.isActive()) {


Line 381:                 }
Line 382:             });
Line 383:         } else {
Line 384:             removeTimerChangeHandler(); //Make sure to remove old 
handler before adding new one.
Line 385:             addTimerChangeListener();
Hm, for better readability I'd prefer to have an extra method for replace 
handler logic, for example:

 protected void addTimerChangeListener() {
     timerChangeHandler = ...
     // no need to return timerChangeHandler field
 }

 protected void replaceTimerChangeListener() {
     if (timerChangeHandler == null) {
         addTimerChangeListener();
     } else {
         removeTimerChangeHandler();
         addTimerChangeListener();
     }
 }

This also eliminates potential bug where removeTimerChangeHandler would fail to 
nullify the timerChangeHandler reference (for whatever reason) and original 
addTimerChangeListener method would be stuck in infinite recursion loop.
Line 386:         }
Line 387:         return timerChangeHandler;
Line 388:     }
Line 389: 


http://gerrit.ovirt.org/#/c/23605/3/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/EventListModel.java
File 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/events/EventListModel.java:

Line 27
Line 28
Line 29
Line 30
Line 31
+1 on eliminating the extra timer here


-- 
To view, visit http://gerrit.ovirt.org/23605
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I8742785cb9b3d890c39859586b03cd53c64b31e5
Gerrit-PatchSet: 3
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alexander Wels <aw...@redhat.com>
Gerrit-Reviewer: Alexander Wels <aw...@redhat.com>
Gerrit-Reviewer: Einav Cohen <eco...@redhat.com>
Gerrit-Reviewer: Gilad Chaplik <gchap...@redhat.com>
Gerrit-Reviewer: Greg Sheremeta <gsher...@redhat.com>
Gerrit-Reviewer: Leonardo Bianconi <leonardo.bianc...@eldorado.org.br>
Gerrit-Reviewer: Vojtech Szocs <vsz...@redhat.com>
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to