+
+ private static class ColorBarOptionsRequest extends UnaryRead<Resource, ColorBarOptions> {
+
+ public ColorBarOptionsRequest(Resource diagram) {
+ super(diagram);
+ }
+
+ @Override
+ public ColorBarOptions perform(ReadGraph graph) throws DatabaseException {
+ DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);
+ Resource model = graph.syncRequest(new PossibleIndexRoot(parameter));
+ if (model != null) {
+ Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model);
+ if (vf != null) {
+ Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation);
+ if (activeVisualisation != null) {
+ return DynamicVisualisations.colorBarOptions(graph, activeVisualisation);
+ }
+ } else {
+ LOGGER.debug("No visualisation folder available for model {}", model);
+ }
+ }
+ return ColorBarOptions.useDefault();
+ }
+ }
+
+ private static class ColoringObjectsRequest extends UnaryRead<Resource, Map<String,DynamicColorContribution>> {
+
+ public ColoringObjectsRequest(Resource diagram) {
+ super(diagram);
+ }
+
+ @Override
+ public Map<String, DynamicColorContribution> perform(ReadGraph graph) throws DatabaseException {
+ DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);
+ Resource model = graph.syncRequest(new PossibleIndexRoot(parameter));
+ if (model != null) {
+ Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model);
+ if (vf != null) {
+ Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation);
+ if (activeVisualisation != null) {
+ return DynamicVisualisations.colorContributions(graph, activeVisualisation);
+ }
+ } else {
+ LOGGER.debug("No visualisation folder available for model {}", model);
+ }
+ }
+ return Collections.emptyMap();
+ }
+ }
+
+ private static class ColoringObjectsListener implements Listener<Map<String,DynamicColorContribution>> {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ColoringObjectsListener.class);
+
+ private Consumer<Map<String,DynamicColorContribution>> callback;
+ private Supplier<Boolean> isDisposed;
+
+ //private Map<String, DynamicColorContribution> lastResult
+
+ public ColoringObjectsListener(Consumer<Map<String,DynamicColorContribution>> callback, Supplier<Boolean> isDisposed) {
+ this.callback = callback;
+ this.isDisposed = isDisposed;
+ }
+
+ @Override
+ public void execute(Map<String,DynamicColorContribution> result) {
+ callback.accept(result);
+ }
+
+ @Override
+ public void exception(Throwable t) {
+ LOGGER.error("Could not listen ColoringObjects", t);
+ }
+
+ @Override
+ public boolean isDisposed() {
+ return isDisposed.get();
+ }
+ }
+
+ private static class ColorBarOptionsListener implements Listener<ColorBarOptions> {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ColorBarOptionsListener.class);
+
+ private Consumer<ColorBarOptions> callback;
+ private Supplier<Boolean> isDisposed;
+
+ public ColorBarOptionsListener(Consumer<ColorBarOptions> callback, Supplier<Boolean> isDisposed) {
+ this.callback = callback;
+ this.isDisposed = isDisposed;
+ }
+
+ @Override
+ public void execute(ColorBarOptions result) {
+ callback.accept(result);
+ }
+
+ @Override
+ public void exception(Throwable t) {
+ LOGGER.error("Could not listen ColorBarOptions", t);
+ }
+
+ @Override
+ public boolean isDisposed() {
+ return isDisposed.get();
+ }
+ }
+
+ private static class SizeBarOptionsRequest extends UnaryRead<Resource, SizeBarOptions> {
+
+ public SizeBarOptionsRequest(Resource diagram) {
+ super(diagram);
+ }
+
+ @Override
+ public SizeBarOptions perform(ReadGraph graph) throws DatabaseException {
+ DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);
+ Resource model = graph.syncRequest(new PossibleIndexRoot(parameter));
+ if (model != null) {
+ Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model);
+ if (vf != null) {
+ Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation);
+ if (activeVisualisation != null) {
+ return DynamicVisualisations.sizeBarOptions(graph, activeVisualisation);
+ }
+ } else {
+ LOGGER.debug("No visualisation folder available for model {}", model);
+ }
+ }
+ return SizeBarOptions.useDefault();
+ }
+ }
+
+ private static class SizeBarOptionsListener implements Listener<SizeBarOptions> {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(SizeBarOptionsListener.class);
+
+ private Consumer<SizeBarOptions> callback;
+ private Supplier<Boolean> isDisposed;
+
+ public SizeBarOptionsListener(Consumer<SizeBarOptions> callback, Supplier<Boolean> isDisposed) {
+ this.callback = callback;
+ this.isDisposed = isDisposed;
+ }
+
+ @Override
+ public void execute(SizeBarOptions result) {
+ callback.accept(result);
+ }
+
+ @Override
+ public void exception(Throwable t) {
+ LOGGER.error("Could not listen SizeBarOptions", t);
+ }
+
+ @Override
+ public boolean isDisposed() {
+ return isDisposed.get();
+ }
+ }
+
+ private static class SizingObjectsRequest extends UnaryRead<Resource, Map<String, DynamicSizeContribution>> {
+
+ public SizingObjectsRequest(Resource diagram) {
+ super(diagram);
+ }
+
+ @Override
+ public Map<String, DynamicSizeContribution> perform(ReadGraph graph) throws DatabaseException {
+ DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);
+ Resource model = graph.syncRequest(new PossibleIndexRoot(parameter));
+ if (model != null) {
+ Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model);
+ if (vf != null) {
+ Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation);
+ if (activeVisualisation != null) {
+ return DynamicVisualisations.sizeContributions(graph, activeVisualisation);
+ }
+ } else {
+ LOGGER.debug("No visualisation folder available for model {}", model);
+ }
+ }
+ return Collections.emptyMap();
+ }
+ }
+
+ private static class SizingObjectsListener implements Listener<Map<String,DynamicSizeContribution>> {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(SizingObjectsListener.class);
+
+ private Consumer<Map<String,DynamicSizeContribution>> callback;
+ private Supplier<Boolean> isDisposed;
+
+ public SizingObjectsListener(Consumer<Map<String, DynamicSizeContribution>> callback, Supplier<Boolean> isDisposed) {
+ this.callback = callback;
+ this.isDisposed = isDisposed;
+ }
+
+ @Override
+ public void execute(Map<String, DynamicSizeContribution> result) {
+ callback.accept(result);
+ }
+
+ @Override
+ public void exception(Throwable t) {
+ LOGGER.error("Could not listen SizingObjectsOptions", t);
+ }
+
+ @Override
+ public boolean isDisposed() {
+ return isDisposed.get();
+ }
+ }
+
+ private static class ShowElevationServerRequest extends UnaryRead<Resource, Boolean> {
+
+ public ShowElevationServerRequest(Resource diagram) {
+ super(diagram);
+ }
+
+ @Override
+ public Boolean perform(ReadGraph graph) throws DatabaseException {
+ DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);
+ Resource model = graph.syncRequest(new PossibleIndexRoot(parameter));
+ if (model != null) {
+ Resource vf = DynamicVisualisations.getVisualisationFolder(graph, model);
+ if (vf != null) {
+ Resource activeVisualisation = graph.getPossibleObject(vf, DN.Diagram_hasActiveVisualisation);
+ if (activeVisualisation != null) {
+ return DynamicVisualisations.showElevationServerBoundingBox(graph, activeVisualisation);
+ }
+ } else {
+ LOGGER.debug("No visualisation folder available for model {}", model);
+ }
+ }
+ return false;
+ }
+ }
+
+ private static class ShowElevationServerListener implements Listener<Boolean> {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShowElevationServerListener.class);
+
+ private Consumer<Boolean> callback;
+ private Supplier<Boolean> isDisposed;
+
+ public ShowElevationServerListener(Consumer<Boolean> callback, Supplier<Boolean> isDisposed) {
+ this.callback = callback;
+ this.isDisposed = isDisposed;
+ }
+
+ @Override
+ public void execute(Boolean result) {
+ callback.accept(result);
+ }
+
+ @Override
+ public void exception(Throwable t) {
+ LOGGER.error("Could not listen Show Elevation Server", t);
+ }
+
+ @Override
+ public boolean isDisposed() {
+ return isDisposed.get();
+ }
+ }