private void checkSensorState(final String providerId, final String sensorId) { if (!StringUtils.hasText(sensorId)) { return; } final SensorState sensorState = resourceService.getSensorState(providerId, sensorId); final boolean existsSensor = sensorState != null && !sensorState.equals(SensorState.ghost); if (!existsSensor) { throw new ResourceNotFoundException(sensorId, "Sensor"); } else if (SensorState.offline.equals(sensorState)) { throw new ResourceOfflineException(sensorId, "Sensor"); } }
@Override protected List<String> toRow(final Sensor sensor) { final List<String> row = new ArrayList<String>(); row.add(sensor.getId()); // checkbox row.add(sensor.getSensorId()); row.add(sensor.getProviderId()); row.add(FormatUtils.label(sensor.getType())); row.add(String.valueOf(sensor.getPublicAccess())); row.add(sensor.getState().toString()); row.add(StringUtils.hasText(sensor.getSubstate()) ? FormatUtils.substateStyleColumn(sensor, sensorSubStateService) : null); row.add(getLocalDateFormat().printAsLocalTime(sensor.getCreatedAt(), Constants.DATETIME_FORMAT)); return row; }
public SensorState getSensorState(final String providerId, final String sensorId) { final Long sid = jedisSequenceUtils.getSid(providerId, sensorId); SensorState sensorState = null; if (sid != null) { final Sensor sensor = getSensor(sid); sensorState = StringUtils.hasText(sensor.getState()) ? SensorState.valueOf(sensor.getState()) : null; } return sensorState; }
row.add(sensor.getState().toString()); row.add(StringUtils.hasText(sensor.getSubstate()) ? FormatUtils.substateStyleColumn(sensor, sensorSubstateService) : null);
private void checkSensorState(final String providerId, final String sensorId) { final SensorState sensorState = resourceService.getSensorState(providerId, sensorId); final boolean existsSensor = sensorState != null && !sensorState.equals(SensorState.ghost); if (!existsSensor) { throw new ResourceNotFoundException(sensorId, "Sensor"); } else if (SensorState.offline.equals(sensorState)) { throw new ResourceOfflineException(sensorId, "Sensor"); } }
@Override public void changeState(final String[] sensorsIds, final SensorState newState, final String newSubstate) { updateMulti(Arrays.asList(sensorsIds), Arrays.asList("state", "substate"), Arrays.asList(newState.name(), newSubstate)); notifyStatesChange(sensorsIds, newState); }
private boolean sensorStateHasChange(final Sensor newSensor, final Sensor currentSensor) { return !newSensor.getState().equals(currentSensor.getState()); }
public Long registerSensorIfNeedBe(final String providerId, final String sensorId, final SensorState state, final boolean update) { Long sid = jedisSequenceUtils.getSid(providerId, sensorId); // Sensor must be registered into Redis if its sid doesn't exist or if update is true if (sid == null || update) { if (sid == null) { final Long pid = jedisSequenceUtils.getPid(providerId); sid = jedisSequenceUtils.setSid(providerId, sensorId); // To quickly get the sensors list from a provider, a reverse lookup key is defined jedisTemplate.sAdd(keysBuilder.getProviderSensorsKey(pid), sid.toString()); // And finally, a new reverse lookup key is defined to quickly get the internal sid of a // sensor from the pair <providerId,sensorId>, so that sensor's data could be stored jedisTemplate.set(keysBuilder.getReverseSensorKey(providerId, sensorId), sid.toString()); } // Store a hash with key sid:{sid} and fields provider, sensor and state final Map<String, String> fields = new HashMap<String, String>(); fields.put(PROVIDER, providerId); fields.put(SENSOR, sensorId); fields.put(STATE, state.name()); jedisTemplate.hmSet(keysBuilder.getSensorKey(sid), fields); LOGGER.debug("Saved in Redis sensor [{}] with sid [{}] and state [{}], belonging to provider [{}]", sensorId, sid, state.name(), providerId); } return sid; }
private void checkStateChange(final Sensor newSensor) { // If sensor state has change, this change should be notified. final Sensor currentSensor = sensorService.find(newSensor); if (currentSensor != null && !newSensor.getState().equals(currentSensor.getState())) { sensorService.notifyStateChange(newSensor); } } }
public ObservationDTO(final Sensor sensor, final Observation observation) { this(observation); if (sensor != null) { this.sensor = sensor.getSensorId(); sensorType = sensor.getType(); sensorState = sensor.getState().name(); sensorSubState = sensor.getSubstate(); sensorSubstateDesc = sensor.getSubstateDesc(); unit = sensor.getUnit(); dataType = sensor.getDataType().toString(); } }
/** * Checks if the sensor exists in Redis and if it is enabled. Otherwise throws an exception. */ private void checkTargetResourceState(final Observation data) throws ResourceNotFoundException, ResourceOfflineException { final SensorState sensorState = resourceService.getSensorState(data.getProvider(), data.getSensor()); final boolean existsSensor = sensorState != null && !sensorState.equals(SensorState.ghost); if (!existsSensor && rejectUnknownSensors) { throw new ResourceNotFoundException(data.getSensor(), "Sensor"); } else if (!existsSensor) { publishGhostSensorAlarm(data); } else if (SensorState.offline.equals(sensorState)) { throw new ResourceOfflineException(data.getSensor(), "Sensor"); } }
@Override public void onApplicationEvent(final SensorsStateChangeEvent event) { if (event instanceof SensorsStateChangeEvent) { for (final CatalogDocument sensor : event.getResources()) { final SearchFilter filterParams = new SearchFilter(); filterParams.addAndParam("providerId", ((Sensor) sensor).getProviderId()); filterParams.addAndParam("sensorId", ((Sensor) sensor).getSensorId()); final boolean active = SensorState.online.equals(((Sensor) sensor).getState()); updateMulti(buildQuery(filterParams), Arrays.asList("active"), Arrays.asList(active)); LOGGER.debug("Change active field value for alerts associated with sensor [{}] and provider [{}] to: {}", ((Sensor) sensor).getSensorId(), ((Sensor) sensor).getProviderId(), active); } } }