Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java @ 7076:7f600001c807 generator-refactoring
Add LTR inversion code to diagram generator.
This code is used in serveral diagrams and as it modifies a
whole diagram it should be central. (This should also make
maintenance easier). This function can be called by processors
to make sure that their data is plotted with an LTR waterflow.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Fri, 20 Sep 2013 16:33:22 +0200 |
parents | 726d998dce29 |
children | 3c4efd4b2c19 |
comparison
equal
deleted
inserted
replaced
7075:253d80af5b7f | 7076:7f600001c807 |
---|---|
40 import org.json.JSONException; | 40 import org.json.JSONException; |
41 | 41 |
42 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; | 42 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; |
43 import org.dive4elements.artifactdatabase.state.Facet; | 43 import org.dive4elements.artifactdatabase.state.Facet; |
44 import org.dive4elements.river.artifacts.D4EArtifact; | 44 import org.dive4elements.river.artifacts.D4EArtifact; |
45 import org.dive4elements.river.artifacts.model.WKms; | |
45 import org.dive4elements.river.exports.process.Processor; | 46 import org.dive4elements.river.exports.process.Processor; |
46 import org.dive4elements.river.jfree.AxisDataset; | 47 import org.dive4elements.river.jfree.AxisDataset; |
47 import org.dive4elements.river.jfree.AnnotationHelper; | 48 import org.dive4elements.river.jfree.AnnotationHelper; |
48 import org.dive4elements.river.jfree.Bounds; | 49 import org.dive4elements.river.jfree.Bounds; |
49 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation; | 50 import org.dive4elements.river.jfree.CollisionFreeXYTextAnnotation; |
50 import org.dive4elements.river.jfree.DoubleBounds; | 51 import org.dive4elements.river.jfree.DoubleBounds; |
51 import org.dive4elements.river.jfree.RiverAnnotation; | 52 import org.dive4elements.river.jfree.RiverAnnotation; |
52 import org.dive4elements.river.jfree.StyledAreaSeriesCollection; | 53 import org.dive4elements.river.jfree.StyledAreaSeriesCollection; |
53 import org.dive4elements.river.jfree.StyledXYSeries; | 54 import org.dive4elements.river.jfree.StyledXYSeries; |
54 import org.dive4elements.river.themes.ThemeDocument; | 55 import org.dive4elements.river.themes.ThemeDocument; |
56 import org.dive4elements.river.utils.DataUtil; | |
55 | 57 |
56 import org.w3c.dom.Element; | 58 import org.w3c.dom.Element; |
57 | 59 |
58 /** | 60 /** |
59 * The main diagram creation class. | 61 * The main diagram creation class. |
1079 | 1081 |
1080 protected String axisIndexToName(int index) { | 1082 protected String axisIndexToName(int index) { |
1081 return diagramAttributes.getAxisName(index); | 1083 return diagramAttributes.getAxisName(index); |
1082 } | 1084 } |
1083 | 1085 |
1086 /** Guess if the axis should be inverted to ensure ltr diagram water flow. | |
1087 * | |
1088 * A processor should decide if it is appropiate to activate this | |
1089 * handling in a diagram by calling this function. | |
1090 * | |
1091 * Merke: In Deutschland fliesst Wasser in Diagrammen immer von | |
1092 * links nach rechts!!! | |
1093 */ | |
1094 public void handleLTRWaterFlowInversion(WKms wkms) | |
1095 { | |
1096 boolean wsUp = wkms.guessWaterIncreasing(); | |
1097 boolean kmUp = DataUtil.guessWaterIncreasing(wkms.allKms()); | |
1098 int size = wkms.size(); | |
1099 boolean inv = ((wsUp && kmUp) || (!wsUp && !kmUp)) && size > 1; | |
1100 | |
1101 if (logger.isDebugEnabled()) { | |
1102 logger.debug("handleLTRWaterFlowInversion: (Wkms)Values : " + size); | |
1103 if (size > 0) { | |
1104 logger.debug("Start km: " + wkms.getKm(0)); | |
1105 logger.debug("End km: " + wkms.getKm(size-1)); | |
1106 } | |
1107 logger.debug("wsUp: " + wsUp); | |
1108 logger.debug("kmUp: " + kmUp); | |
1109 if (size == 1) { | |
1110 logger.debug("Not inverting because we have just one km"); | |
1111 } | |
1112 logger.debug("inv: " + inv); | |
1113 } | |
1114 setInverted(inv); | |
1115 } | |
1116 | |
1084 /** Add the acutal data to the diagram according to the processors. | 1117 /** Add the acutal data to the diagram according to the processors. |
1085 * For every outable facets, this function is | 1118 * For every outable facets, this function is |
1086 * called and handles the data accordingly. */ | 1119 * called and handles the data accordingly. */ |
1087 @Override | 1120 @Override |
1088 public void doOut( | 1121 public void doOut( |