Fixed issue where new devices was not showing up in the gui as selections
This commit is contained in:
parent
0cf4909df4
commit
ed04b687ed
2 changed files with 41 additions and 8 deletions
|
|
@ -2,6 +2,7 @@ package se.hal.util;
|
|||
|
||||
import se.hal.HalContext;
|
||||
import se.hal.struct.Event;
|
||||
import zutil.Timer;
|
||||
import zutil.db.DBConnection;
|
||||
import zutil.log.LogUtil;
|
||||
import zutil.ui.conf.Configurator;
|
||||
|
|
@ -20,12 +21,20 @@ import java.util.logging.Logger;
|
|||
public class ConfigEventValueProvider implements Configurator.ConfigValueProvider<Event> {
|
||||
private static final Logger logger = LogUtil.getLogger();
|
||||
|
||||
private Event currentValue;
|
||||
protected static int DEVICE_REFRESH_TIME_IN_SECONDS = 30;
|
||||
|
||||
private Map<String, Event> events = new HashMap<>();
|
||||
private Timer updateTimer = new Timer(DEVICE_REFRESH_TIME_IN_SECONDS * 1000);
|
||||
|
||||
|
||||
public ConfigEventValueProvider(Class<Enum> fieldType, Object fieldValue) {
|
||||
this.currentValue = (Event) fieldValue;
|
||||
public ConfigEventValueProvider() {
|
||||
refreshEventMap();
|
||||
}
|
||||
|
||||
|
||||
private void refreshEventMap() {
|
||||
if (!updateTimer.hasTimedOut())
|
||||
return;
|
||||
|
||||
try {
|
||||
DBConnection db = HalContext.getDB();
|
||||
|
|
@ -33,11 +42,14 @@ public class ConfigEventValueProvider implements Configurator.ConfigValueProvide
|
|||
for (Event event : Event.getLocalEvents(db)) {
|
||||
events.put(getValue(event), event);
|
||||
}
|
||||
|
||||
updateTimer.start();
|
||||
} catch (SQLException e) {
|
||||
logger.log(Level.SEVERE, "Unable to retrieve local events.", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getValue(Event event) {
|
||||
return (event != null ?
|
||||
|
|
@ -47,6 +59,7 @@ public class ConfigEventValueProvider implements Configurator.ConfigValueProvide
|
|||
|
||||
@Override
|
||||
public List<String> getPossibleValues() {
|
||||
refreshEventMap();
|
||||
return new ArrayList<>(events.keySet());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
package se.hal.util;
|
||||
|
||||
import se.hal.HalContext;
|
||||
import se.hal.struct.Event;
|
||||
import se.hal.struct.Sensor;
|
||||
import zutil.Timer;
|
||||
import zutil.db.DBConnection;
|
||||
import zutil.log.LogUtil;
|
||||
import zutil.ui.conf.Configurator;
|
||||
|
||||
import java.sql.SQLException;
|
||||
|
|
@ -10,29 +13,45 @@ import java.util.ArrayList;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import static se.hal.util.ConfigEventValueProvider.DEVICE_REFRESH_TIME_IN_SECONDS;
|
||||
|
||||
/**
|
||||
* A value provider that will give all Enum values
|
||||
*/
|
||||
public class ConfigSensorValueProvider implements Configurator.ConfigValueProvider<Sensor> {
|
||||
private Sensor currentValue;
|
||||
private static final Logger logger = LogUtil.getLogger();
|
||||
|
||||
private Timer updateTimer = new Timer(DEVICE_REFRESH_TIME_IN_SECONDS * 1000);
|
||||
private Map<String, Sensor> sensors = new HashMap<>();
|
||||
|
||||
|
||||
public ConfigSensorValueProvider(Class<Enum> fieldType, Object fieldValue) {
|
||||
this.currentValue = (Sensor) fieldValue;
|
||||
public ConfigSensorValueProvider() {
|
||||
refreshEventMap();
|
||||
}
|
||||
|
||||
|
||||
private synchronized void refreshEventMap() {
|
||||
if (!updateTimer.hasTimedOut())
|
||||
return;
|
||||
|
||||
try {
|
||||
DBConnection db = HalContext.getDB();
|
||||
|
||||
sensors.clear();
|
||||
for (Sensor sensor : Sensor.getLocalSensors(db)) {
|
||||
sensors.put(getValue(sensor), sensor);
|
||||
}
|
||||
|
||||
updateTimer.start();
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("Unable to collect Event objects.", e);
|
||||
logger.log(Level.SEVERE, "Unable to retrieve Sensor devices.", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getValue(Sensor sensor) {
|
||||
return sensor.getName() + " (id: " + sensor.getId() + ")";
|
||||
|
|
@ -40,7 +59,8 @@ public class ConfigSensorValueProvider implements Configurator.ConfigValueProvid
|
|||
|
||||
@Override
|
||||
public List<String> getPossibleValues() {
|
||||
return new ArrayList<String>(sensors.keySet());
|
||||
refreshEventMap();
|
||||
return new ArrayList<>(sensors.keySet());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue