@Override public void write(StringBuilder sb, MultiAttributeData data) { final Map<String, String> map = new LinkedHashMap<>(); if (data.getLength().isPresent()) { map.put(DISTANCE, Double.toString(data.getLength().get())); } if (data.getMaxSpeed().isPresent()) { map.put(MAX_SPEED, Double.toString(data.getMaxSpeed().get())); } for (final Entry<String, Object> entry : data.getAttributes() .entrySet()) { checkArgument(!entry.getKey().equals(DISTANCE) && !entry.getKey().equals(MAX_SPEED), "Attribute key: '%s' is reserved and should not be used.", entry.getKey()); map.put(entry.getKey(), entry.getValue().toString()); } if (!map.isEmpty()) { sb.append(DATA_START); Joiner.on(LIST_ITEM_SEPARATOR).withKeyValueSeparator("=") .appendTo(sb, map); sb.append(DATA_END); } }
@Override public void write(StringBuilder sb, MultiAttributeData data) { final Map<String, String> map = new LinkedHashMap<>(); if (data.getLength().isPresent()) { map.put(DISTANCE, Double.toString(data.getLength().get())); } if (data.getMaxSpeed().isPresent()) { map.put(MAX_SPEED, Double.toString(data.getMaxSpeed().get())); } for (final Entry<String, Object> entry : data.getAttributes() .entrySet()) { checkArgument(!entry.getKey().equals(DISTANCE) && !entry.getKey().equals(MAX_SPEED), "Attribute key: '%s' is reserved and should not be used.", entry.getKey()); map.put(entry.getKey(), entry.getValue().toString()); } if (!map.isEmpty()) { sb.append(DATA_START); Joiner.on(LIST_ITEM_SEPARATOR).withKeyValueSeparator("=") .appendTo(sb, map); sb.append(DATA_END); } }
@Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof MultiAttributeData) { MultiAttributeData that = (MultiAttributeData) o; return (this.length.equals(that.getLength())) && (this.maxSpeed.equals(that.getMaxSpeed())) && (this.attributes.equals(that.getAttributes())); } return false; }
@Override public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof MultiAttributeData) { MultiAttributeData that = (MultiAttributeData) o; return (this.length.equals(that.getLength())) && (this.maxSpeed.equals(that.getMaxSpeed())) && (this.attributes.equals(that.getAttributes())); } return false; }
@Override public void handleTimedEvent(ChangeConnectionSpeedEvent event, SimulatorAPI simulator) { final Graph<MultiAttributeData> graph = (Graph<MultiAttributeData>) ((Simulator) simulator) .getModelProvider().getModel(PDPDynamicGraphRoadModel.class) .getGraph(); final MultiAttributeData data = graph.connectionData(event.getFrom(), event.getTo()).get(); graph.setConnectionData( event.getFrom(), event.getTo(), MultiAttributeData.builder() .addAllAttributes(data.getAttributes()) .setLength(data.getLength().get()) .setMaxSpeed(data.getMaxSpeed().get() * event.getFactor()) .build()); }
@Override public void handleTimedEvent(ChangeConnectionSpeedEvent event, SimulatorAPI simulator) { final Graph<MultiAttributeData> graph = (Graph<MultiAttributeData>) ((Simulator) simulator) .getModelProvider().getModel(PDPDynamicGraphRoadModel.class) .getGraph(); final MultiAttributeData data = graph.connectionData(event.getFrom(), event.getTo()).get(); graph.setConnectionData( event.getFrom(), event.getTo(), MultiAttributeData.builder() .addAllAttributes(data.getAttributes()) .setLength(data.getLength().get()) .setMaxSpeed(data.getMaxSpeed().get() * event.getFactor()) .build()); }