package org.simantics.district.network.profile; import java.util.Collection; import java.util.Map; import java.util.stream.Collectors; import org.simantics.databoard.Bindings; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.request.ResourceRead; import org.simantics.db.exception.DatabaseException; import org.simantics.district.network.ontology.DistrictNetworkResource; import org.simantics.district.network.visualisations.DynamicVisualisations; import org.simantics.district.network.visualisations.DynamicVisualisationsContributions; import org.simantics.district.network.visualisations.DynamicVisualisationsContributions.DynamicArrowObject; import org.simantics.district.network.visualisations.DynamicVisualisationsContributions.DynamicColoringObject; import org.simantics.district.network.visualisations.DynamicVisualisationsContributions.DynamicSizingObject; import org.simantics.district.network.visualisations.DynamicVisualisationsContributions.DynamicSymbolContributionObject; import org.simantics.district.network.visualisations.DynamicVisualisationsContributions.StaticInformationContributionObject; import org.simantics.district.network.visualisations.model.ColorBarOptions; import org.simantics.district.network.visualisations.model.DynamicArrowContribution; import org.simantics.district.network.visualisations.model.DynamicColorContribution; import org.simantics.district.network.visualisations.model.DynamicSizeContribution; import org.simantics.district.network.visualisations.model.DynamicVisualisation; import org.simantics.district.network.visualisations.model.SizeBarOptions; import org.simantics.layer0.Layer0; /** * @author Jani Simomaa */ public class ActiveDynamicVisualisationsRequest extends ResourceRead { public ActiveDynamicVisualisationsRequest(Resource parent) { super(parent); } @Override public DynamicVisualisation perform(ReadGraph graph) throws DatabaseException { DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph); Resource visualisationFolder = DynamicVisualisations.getVisualisationFolder(graph, resource); if (visualisationFolder != null) { Resource visualisationResource = graph.getPossibleObject(visualisationFolder, DN.Diagram_hasActiveVisualisation); if (visualisationResource != null) { String name = graph.getRelatedValue(visualisationResource, Layer0.getInstance(graph).HasName); Long interval = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_Interval, Bindings.LONG); Boolean disabledUpdates = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_DisabledUpdates, Bindings.BOOLEAN); Boolean resetVisualisation = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_ResetVisualisation, Bindings.BOOLEAN); Collection dynamicColoringObjects = DynamicVisualisationsContributions.dynamicColoringObjects(graph); Map defaultColoringObjects = dynamicColoringObjects.stream().collect(Collectors.toMap(dcc -> dcc.getColoringObject().getName(), dcc -> dcc)); Collection dynamicSizingObjects = DynamicVisualisationsContributions.dynamicSizingObjects(graph); Map defaultSizingObjects = dynamicSizingObjects.stream().collect(Collectors.toMap(dcc -> dcc.getSizingObject().getName(), dcc -> dcc)); Collection dynamicArrowObjects = DynamicVisualisationsContributions.dynamicEdgeArrowObjects(graph); Map defaultArrowObjects = dynamicArrowObjects.stream().collect(Collectors.toMap(dac -> dac.getArrowObject().getName(), dac -> dac)); Map colorContributions = DynamicVisualisations.colorContributions(graph, visualisationResource); ColorBarOptions colorBarOptions = DynamicVisualisations.colorBarOptions(graph, visualisationResource); Map sizeContributions = DynamicVisualisations.sizeContributions(graph, visualisationResource); SizeBarOptions sizeBarOptions = DynamicVisualisations.sizeBarOptions(graph, visualisationResource); Map arrowContributions = DynamicVisualisations.arrowContributions(graph, visualisationResource); Collection staticInformationContributions = DynamicVisualisationsContributions.staticInformationContributionObjects(graph); Map staticInformationContributionObjects = staticInformationContributions.stream().collect(Collectors.toMap(dcc -> dcc.getStaticInformationContributionObject().getName(), dcc -> dcc)); Collection dynamicSymbolContributions = DynamicVisualisationsContributions.dynamicSymbolContributionObjects(graph); Map dynamicSymbolContributionObjects = dynamicSymbolContributions.stream().map(dsc -> { // here we resolve the symbol map with the help of readgraph dsc.resolveSymbols(graph); return dsc; }).collect(Collectors.toMap(dcc -> dcc.getDynamicSymbolContributionObject().getName(), dcc -> dcc)); Boolean hideEdges = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_HideEdges, Bindings.BOOLEAN); Boolean hidePoints = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_HidePoints, Bindings.BOOLEAN); Boolean hideConsumers = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_HideConsumers, Bindings.BOOLEAN); Boolean hideProducers = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_HideProducers, Bindings.BOOLEAN); Boolean hideValves = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_HideValves, Bindings.BOOLEAN); Boolean hidePumpingStations = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_HidePumpingStations, Bindings.BOOLEAN); Boolean staticPropertiesNetworkBranch = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_StaticPropertiesNetworkBranches, Bindings.BOOLEAN); Boolean staticProperiesPoints = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_StaticPropertiesPoints, Bindings.BOOLEAN); Boolean staticPropertiesConsumers = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_StaticPropertiesConsumers, Bindings.BOOLEAN); Boolean dynamicSymbolsProducers = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_DynamicSymbolsProducers, Bindings.BOOLEAN); Boolean dynamicSymbolsShutoffValves = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_DynamicSymbolsShutoffValves, Bindings.BOOLEAN); Boolean dynamicSymbolsValves = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_DynamicSymbolsValves, Bindings.BOOLEAN); Boolean dynamicSymbolsPumpingStations = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_DynamicSymbolsPumpingStations, Bindings.BOOLEAN); Boolean keyVariablesVertexHover = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_KeyVariableVertexHover, Bindings.BOOLEAN); Boolean keyVariablesEdgesHover = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_KeyVariableEdgeHover, Bindings.BOOLEAN); Boolean showElevationServerBoundingBox = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_ShowElevationServerBoundingBox, Bindings.BOOLEAN); Boolean notInSimulation = graph.getPossibleRelatedValue(visualisationResource, DN.Diagram_Visualisations_NotInSimulation, Bindings.BOOLEAN); DynamicVisualisation visualisation = new DynamicVisualisation(name, visualisationResource, interval != null ? interval : 2000, disabledUpdates != null ? disabledUpdates : false, resetVisualisation != null ? resetVisualisation : false, colorContributions, defaultColoringObjects, colorBarOptions, sizeContributions, defaultSizingObjects, sizeBarOptions, defaultArrowObjects, arrowContributions, staticInformationContributionObjects, dynamicSymbolContributionObjects, hideEdges != null ? hideEdges : false, hidePoints != null ? hidePoints : false, hideConsumers != null ? hideConsumers : false, hideProducers != null ? hideProducers : false, hideValves != null ? hideValves : false, hidePumpingStations != null ? hidePumpingStations : false, staticPropertiesNetworkBranch != null ? staticPropertiesNetworkBranch : false, staticProperiesPoints != null ? staticProperiesPoints : false, staticPropertiesConsumers != null ? staticPropertiesConsumers : false, dynamicSymbolsProducers != null ? dynamicSymbolsProducers : false, dynamicSymbolsShutoffValves != null ? dynamicSymbolsShutoffValves : false, dynamicSymbolsValves != null ? dynamicSymbolsValves : false, dynamicSymbolsPumpingStations != null ? dynamicSymbolsPumpingStations : false, keyVariablesVertexHover != null ? keyVariablesVertexHover : false, keyVariablesEdgesHover != null ? keyVariablesEdgesHover : false, showElevationServerBoundingBox != null ? showElevationServerBoundingBox : false, notInSimulation != null ? notInSimulation : false ); return visualisation; } } return null; } }