super(runtimeDiagram);
}
- @Override
+ @SuppressWarnings("unchecked")
+ @Override
public DiagramSettings perform(ReadGraph graph) throws DatabaseException {
DiagramResource DIA = DiagramResource.getInstance(graph);
DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);
+ Function1<Resource, Double> elementColoringFunction = null;
+ float elementColoringGradientHue = 0;
+ float elementColoringGradientSaturation = 1;
Function1<Resource, Double> edgeThicknessProperty = null;
Function1<Resource, Double> nodeScaleProperty = null;
double edgeThicknessGain = 1;
Resource diagram = graph.getPossibleObject(resource, DIA.RuntimeDiagram_HasConfiguration);
if (diagram != null) {
+ Variable dv = Variables.getPossibleVariable(graph, diagram);
+ if (dv != null) {
+ Object obj = dv.getPossiblePropertyValue(graph, DN.Diagram_elementColoringFunction);
+ if (obj instanceof Function1<?,?>) {
+ elementColoringFunction = (Function1<Resource, Double>) obj;
+ }
+ }
+ elementColoringGradientHue =
+ limit(0, 360, safeFloatProperty(graph, diagram, DN.Diagram_elementColoringGradientHue, 0.0f))
+ / 360.0f;
+ elementColoringGradientSaturation =
+ limit(0, 100, safeFloatProperty(graph, diagram, DN.Diagram_elementColoringGradientSaturation, 0.0f))
+ / 100.0f;
+
Resource etp = graph.getPossibleObject(diagram, DN.Diagram_edgeThicknessProperty);
//System.out.println("etp: " + NameUtils.getURIOrSafeNameInternal(graph, etp));
if (etp != null) {
DiagramSettings ds = new DiagramSettings(
nodeScaleProperty, nodeScaleGain, nodeScaleBias,
- edgeThicknessProperty, edgeThicknessGain, edgeThicknessBias);
+ edgeThicknessProperty, edgeThicknessGain, edgeThicknessBias,
+ elementColoringFunction,
+ elementColoringGradientHue,
+ elementColoringGradientSaturation);
//System.out.println("new diagram settings: " + ds);
return ds;
}
+ private static float safeFloatProperty(ReadGraph graph, Resource r, Resource property, float defaultValue) throws DatabaseException {
+ Float d = graph.getPossibleRelatedValue(r, property, Bindings.FLOAT);
+ return d != null ? d : defaultValue;
+ }
+
private static double safeDoubleProperty(ReadGraph graph, Resource r, Resource property, double defaultValue) throws DatabaseException {
Double d = graph.getPossibleRelatedValue(r, property, Bindings.DOUBLE);
return d != null ? d : defaultValue;
}
+ private static float limit(float min, float max, float value) {
+ return Math.max(min, Math.min(value, max));
+ }
+
+ @SuppressWarnings("unused")
+ private static double limit(double min, double max, double value) {
+ return Math.max(min, Math.min(value, max));
+ }
+
}