/** * Update a device based on a status message from the system * * @param status */ protected void updateDeviceStatus(Status status) { logger.debug("updateDeviceStatus {} {}", status.getNumber(), status.getClass()); Integer number = new Integer(status.getNumber()); if (status instanceof UnitStatus && unitMap.containsKey(number)) { Unit unit = unitMap.get(number); unit.getProperties().updateUnit((UnitStatus) status); updateItemsForDevice(unit); } else if (status instanceof ThermostatStatus && thermostatMap.containsKey(number)) { logger.debug("Updating thermo " + number); Thermostat thermo = thermostatMap.get(number); thermo.getProperties().updateThermostat((ThermostatStatus) status); updateItemsForDevice(thermo); } else if (status instanceof AudioZoneStatus && audioZoneMap.containsKey(number)) { logger.debug("Updating audioZone " + number); AudioZone az = audioZoneMap.get(number); az.getProperties().updateAudioZone((AudioZoneStatus) status); updateItemsForDevice(az); } else if (status instanceof AreaStatus && areaMap.containsKey(number)) { logger.debug("Updating area " + number); Area area = areaMap.get(number); area.getProperties().updateArea((AreaStatus) status); updateItemsForDevice(area); } else if (status instanceof ZoneStatus && zoneMap.containsKey(number)) { logger.debug("Updating zone " + number); Zone zone = zoneMap.get(number); zone.getProperties().updateZone((ZoneStatus) status); updateItemsForDevice(zone); } }
/** * Updates a AudioZone's source text fields when a AudioSource changes * * @param as the audio source that has been updated */ private void updateAudioZoneText(AudioSource as) { for (OmniLinkBindingProvider provider : providers) { for (String itemName : provider.getItemNames()) { OmniLinkBindingConfig config = provider.getOmniLinkBindingConfig(itemName); if (config != null) { switch (config.getObjectType()) { case AUDIOZONE_TEXT: case AUDIOZONE_TEXT_FIELD1: case AUDIOZONE_TEXT_FIELD2: case AUDIOZONE_TEXT_FIELD3: { AudioZone az = (AudioZone) config.getDevice(); az.setAudioSource(audioSourceMap); if (az.getProperties().getSource() == as.getProperties().getNumber()) { az.updateItem(provider.getItem(itemName), config, eventPublisher); } } break; default: break; } } } } }