/** * Converts a {@code Set} of {@code ConfigurationItem}s to a {@code Map} of {@code String} and {@code String}. * * @param configurationItems a {@code Set} of {@code ConfigurationItem}s. * @return a {@code Map} of {@code String} and {@code String}. */ private Map<String, String> toConfigurationItemMap(Set<ConfigurationItem> configurationItems) { Map<String, String> map = new HashMap<>(configurationItems.size()); for (ConfigurationItem configurationItem : configurationItems) { map.put(configurationItem.getKey(), configurationItem.getValue()); } return map; } }
/** * Converts a {@code Map} of {@code String}s and {@code String}s to a {@code Set} of {@code ConfigurationItem}s. * * @param configurationItemMap a {@code Map} of {@code String}s and {@code String}s * @return a {@code Set} of {@code ConfigurationItem}s. */ private Set<ConfigurationItem> toConfigurationItems(Map<String, String> configurationItemMap) { ImmutableSet.Builder<ConfigurationItem> configurationItemsBuilder = ImmutableSet.builder(); for (Map.Entry<String, String> item : configurationItemMap.entrySet()) { configurationItemsBuilder.add(new ConfigurationItem(item.getKey(), item.getValue())); } return configurationItemsBuilder.build(); } }
/** * {@inheritDoc} */ @Override public void handle(ChargingStationId chargingStationId, WampMessage wampMessage, Gson gson, DomainService domainService, AddOnIdentity addOnIdentity) { ChangeconfigurationResponse response = gson.fromJson(wampMessage.getPayloadAsString(), ChangeconfigurationResponse.class); switch (response.getStatus()) { case ACCEPTED: LOG.info("Configuration change of {} on {} has been accepted", configurationItem.getKey(), configurationItem.getValue()); domainService.changeConfiguration(chargingStationId, configurationItem, getCorrelationToken(), addOnIdentity); break; case REJECTED: LOG.info("Configuration change of {} on {} was rejected", configurationItem.getKey(), configurationItem.getValue()); break; case NOT_SUPPORTED: LOG.info("Configuration change of {} on {} was not supported", configurationItem.getKey(), configurationItem.getValue()); break; default: throw new AssertionError("Configuration change returned unknown response status " + response.getStatus()); } } }
/** * Converts a {@code List} of {@code ConfigurationKey}s to a {@code Set} of {@code ConfigurationItem}s. * * @param configurationItemMap a {@code List} of {@code ConfigurationKey}s. * @return a {@code Set} of {@code ConfigurationItem}s. */ private Set<ConfigurationItem> toConfigurationItems(List<ConfigurationKey> configurationItemMap) { ImmutableSet.Builder<ConfigurationItem> configurationItemsBuilder = ImmutableSet.builder(); for (ConfigurationKey key : configurationItemMap) { configurationItemsBuilder.add(new ConfigurationItem(key.getKey(), key.getValue())); } return configurationItemsBuilder.build(); } }
/** * {@inheritDoc} */ @Override public void handle(String chargingStationId, JsonObject commandObject, IdentityContext identityContext) throws UserIdentityUnauthorizedException { ChargingStationId csId = new ChargingStationId(chargingStationId); if (!commandAuthorizationService.isAuthorized(csId, identityContext.getUserIdentity(), RequestChangeConfigurationItemCommand.class)) { throw new UserIdentityUnauthorizedException(chargingStationId, identityContext.getUserIdentity(), RequestChangeConfigurationItemCommand.class); } try { ChargingStation chargingStation = repository.findOne(chargingStationId); if (chargingStation != null && chargingStation.communicationAllowed()) { ChangeConfigurationApiCommand command = gson.fromJson(commandObject, ChangeConfigurationApiCommand.class); commandGateway.send(new RequestChangeConfigurationItemCommand(csId, new ConfigurationItem(command.getKey(), command.getValue()), identityContext), new CorrelationToken()); } } catch (JsonSyntaxException ex) { throw new IllegalArgumentException("Change configuration command not able to parse the payload, is your json correctly formatted?", ex); } } }
/** * Send a request to a charging station to change a configuration item. * * @param chargingStationId the charging station's id. * @param configurationItem the configuration item to change. * @param correlationToken the token to correlate commands and events that belong together. */ public void changeConfiguration(ChargingStationId chargingStationId, ConfigurationItem configurationItem, CorrelationToken correlationToken) { Changeconfiguration changeConfigurationRequest = new Changeconfiguration(); changeConfigurationRequest.setKey(configurationItem.getKey()); changeConfigurationRequest.setValue(configurationItem.getValue()); responseHandlers.put(correlationToken.getToken(), new ChangeConfigurationResponseHandler(configurationItem, correlationToken)); WampMessage wampMessage = new WampMessage(WampMessage.CALL, correlationToken.getToken(), MessageProcUri.CHANGE_CONFIGURATION, changeConfigurationRequest); sendWampMessage(wampMessage, chargingStationId); }