[Schmitzm-commits] r818 - in trunk/src_junit/schmitzm/jfree/feature/style: . testLineChartShape
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Fri Apr 23 16:57:55 CEST 2010
Author: alfonx
Date: 2010-04-23 16:57:54 +0200 (Fri, 23 Apr 2010)
New Revision: 818
Modified:
trunk/src_junit/schmitzm/jfree/feature/style/FeatureChartStyleTest.java
trunk/src_junit/schmitzm/jfree/feature/style/testLineChartShape/testKreiseLineChart2.dbf
trunk/src_junit/schmitzm/jfree/feature/style/testLineChartShape/testKreiseLineChart2.shp
trunk/src_junit/schmitzm/jfree/feature/style/testLineChartShape/testKreiseLineChart2.shx
Log:
FeatureChartStyleTest testet viel und gut
Modified: trunk/src_junit/schmitzm/jfree/feature/style/FeatureChartStyleTest.java
===================================================================
--- trunk/src_junit/schmitzm/jfree/feature/style/FeatureChartStyleTest.java 2010-04-23 14:54:57 UTC (rev 817)
+++ trunk/src_junit/schmitzm/jfree/feature/style/FeatureChartStyleTest.java 2010-04-23 14:57:54 UTC (rev 818)
@@ -1,48 +1,169 @@
package schmitzm.jfree.feature.style;
import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import java.awt.Color;
+import java.awt.GraphicsEnvironment;
import java.awt.image.BufferedImage;
+import java.io.File;
import java.io.IOException;
import java.net.URL;
import org.apache.log4j.Logger;
+import org.geotools.data.DataUtilities;
import org.geotools.feature.FeatureCollection;
+import org.geotools.filter.text.cql2.CQLException;
+import org.jfree.chart.ChartFrame;
+import org.jfree.chart.JFreeChart;
import org.junit.Test;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import schmitzm.geotools.io.GeoImportUtil;
+import schmitzm.io.IOUtil;
+import schmitzm.jfree.chart.style.ChartAxisStyle;
+import schmitzm.jfree.chart.style.ChartLabelStyle;
+import schmitzm.jfree.chart.style.ChartRendererStyle;
+import schmitzm.jfree.chart.style.ChartStyleUtil;
+import schmitzm.jfree.chart.style.ChartType;
+import schmitzm.xml.XMLUtil;
public class FeatureChartStyleTest {
private static Logger log = Logger.getLogger(FeatureChartStyleTest.class);
-
+
+ boolean INTERACTIVE = !GraphicsEnvironment.isHeadless();
+
@Test
- public void testLineChart() throws IOException {
-
+ public void testLineChart() throws IOException, CQLException, InterruptedException {
+
// Testdatenshape einlesen
- URL resourceUrl = getClass().getResource("/schmitzm/jfree/feature/style/testLineChartShape/testKreiseLineChart2.shp");
- assertNotNull("testKreiseLineChart2.shp wurde nicht gefunden!", resourceUrl);
- FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = GeoImportUtil.readFeaturesFromShapeURL( resourceUrl);
- assertNotNull("Testfeatures konnten nicht aus "+resourceUrl+" gelesen werden", testFeatures);
-
+ URL resourceUrl = getClass()
+ .getResource(
+ "/schmitzm/jfree/feature/style/testLineChartShape/testKreiseLineChart2.shp");
+ assertNotNull("testKreiseLineChart2.shp wurde nicht gefunden!",
+ resourceUrl);
+ FeatureCollection<SimpleFeatureType, SimpleFeature> testFeatures = GeoImportUtil
+ .readFeaturesFromShapeURL(resourceUrl);
+
+ assertNotNull("Testfeatures konnten nicht aus " + resourceUrl
+ + " gelesen werden", testFeatures);
+
// Daten auf korrektheit überprüfen
- assertEquals("Testfeatures muss 2x3 Features enthalten",2*3,testFeatures.size());
+ assertEquals("Testfeatures muss 2x3 Features enthalten", 2 * 3,
+ testFeatures.size());
String groupAttribName = "kgs5"; // KreisZahl
SimpleFeatureType testDatenSchema = testFeatures.getSchema();
assertNotNull(testDatenSchema.getDescriptor(groupAttribName));
- String variablenAttribName = "dm_u3"; // Deutsche "Männer" unter 3 Jahren
+ String variablenAttribName = "dm_u3"; // Deutsche "Männer" unter 3
+ // Jahren
assertNotNull(testDatenSchema.getDescriptor(variablenAttribName));
String labelAttribName = "krs_name"; // Attribute mit Label für Series
assertNotNull(testDatenSchema.getDescriptor(labelAttribName));
- String rangeAttribName = "jahr"; // Diese Variable soll auf der X-Achse angezeigt werden
- assertNotNull(testDatenSchema.getDescriptor(rangeAttribName));
+ String domainAttribName = "jahr"; // Diese Variable soll auf der X-Achse
+ // angezeigt werden
+ assertNotNull(testDatenSchema.getDescriptor(domainAttribName));
+ ChartAxisStyle domainAxisStyle = new ChartAxisStyle("jahreszahlen",
+ Color.red, 0., 0.);
+ ChartAxisStyle rangeAxisStyle = new ChartAxisStyle("deut. maenner",
+ Color.green, 0., 0.);
+
+ FeatureBasicChartStyle lineChartStyle = new FeatureBasicChartStyle(
+ "testLineChart", ChartType.LINE);
+ lineChartStyle.setAxisStyle(0, domainAxisStyle);
+ lineChartStyle.setAxisStyle(1, rangeAxisStyle);
+
+ // Jahreszahlen sollen nicht als zahlen interpretiert werden
+ lineChartStyle.setForceCategories(true);
+
+ lineChartStyle.setAttributeName(0, domainAttribName);
+ lineChartStyle.setAttributeName(1, variablenAttribName);
+
+ lineChartStyle.setTooltips(true);
+
+ lineChartStyle.setSeriesAttributeName(groupAttribName);
+
+ assertNull("Wenn nicht explizit gesetzt wird null geliefert",
+ lineChartStyle.getRendererStyle(0));
+
+ ChartRendererStyle chartRendererStyle = new ChartRendererStyle();
+
+ chartRendererStyle.setSeriesLegendLabel(0, new ChartLabelStyle(
+ "test 1. label"));
+
+ chartRendererStyle.setSeriesPaint(0, Color.green);
+ chartRendererStyle.setSeriesPaint(1, Color.red);
+ chartRendererStyle.setSeriesPaint(2, Color.GRAY);
+ lineChartStyle.setRendererStyle(0, chartRendererStyle);
+
+ assertEquals(3, chartRendererStyle.getSeriesCount());
+
+ JFreeChart lineChart = lineChartStyle
+ .applyToFeatureCollection(testFeatures);
+ assertNotNull("applyToFeatureCollection liefte null!", lineChart);
+
+ BufferedImage chartpng = lineChart.createBufferedImage(600, 400);
+ assertNotNull("Es konnte kein PNG aus dem Chart erstellt werden!",
+ chartpng);
+
+ if (INTERACTIVE) {
+ ChartFrame chartFrame = new ChartFrame(
+ "test line chart: sollen drei linien sein!", lineChart);
+ chartFrame.pack();
+ chartFrame.setVisible(true);
+ while (chartFrame.isVisible()) {
+ Thread.sleep(100);
+ }
+ }
+
+ // Jetzt nur soll noch eine Line kommen:
+ chartRendererStyle.setSeriesLegendLabel(0, null);
+ lineChartStyle.addSeriesAttributeNoDataValue("06532");
+ lineChartStyle.addSeriesAttributeNoDataValue("06531");
+ lineChart = lineChartStyle.applyToFeatureCollection(testFeatures);
+ assertNotNull("applyToFeatureCollection liefte null!", lineChart);
+ if (INTERACTIVE) {
+ ChartFrame chartFrame = new ChartFrame(
+ "test line chart: soll nur line 06533 existieren!",
+ lineChart);
+ chartFrame.pack();
+ chartFrame.setVisible(true);
+ while (chartFrame.isVisible()) {
+ Thread.sleep(100);
+ }
+ }
+
+ FeatureChartStyleXMLFactory xmlFactory = new FeatureChartStyleXMLFactory();
+ File testFile = File.createTempFile("testLineChart", ".xml");
+ xmlFactory.writeStyleToFile(lineChartStyle, "testLineChart", testFile);
+
+ assertTrue(testFile.getAbsolutePath() + " wurde nicht geschrieben!",
+ testFile.exists());
+
+ String writtenXML = IOUtil.readFileAsString(testFile);
+ System.out.println(writtenXML);
+ assertTrue(
+ "<seriesAttr name=\"kgs5\" nullAliases=\"06531;06532\" /> fehlt!",
+ writtenXML
+ .contains("<seriesAttr name=\"kgs5\" nullAliases=\"06531;06532\" />"));
+
+ assertTrue("Nodatawerte wurden mehr als einmal in das XML geschrieben",
+ writtenXML.indexOf("06531;06532") == writtenXML
+ .lastIndexOf("06531;06532"));
+
+ // XML wieder einlesen
+ FeatureChartStyle lineChartAUsXMLgelesen = xmlFactory.readStyleFromFile(testFile);
- BufferedImage chartpng = null;
-
- // TODO Linehcart erstellen
-
- assertNotNull("Es konnte kein PNG aus dem Chart erstellt werden!", chartpng);
+ // Nochmal in XML schreiben
+ File testFile2 = File.createTempFile("testLineChart", ".xml");
+ xmlFactory.writeStyleToFile(lineChartAUsXMLgelesen, "testLineChart",
+ testFile2);
+ assertEquals(
+ "Nachdem das Style geschrieben, gelesen und wieder geschrieben wurde ist das XML nicht gleich!",
+ writtenXML, IOUtil.readFileAsString(testFile2));
}
+
}
Modified: trunk/src_junit/schmitzm/jfree/feature/style/testLineChartShape/testKreiseLineChart2.dbf
===================================================================
(Binary files differ)
Modified: trunk/src_junit/schmitzm/jfree/feature/style/testLineChartShape/testKreiseLineChart2.shp
===================================================================
(Binary files differ)
Modified: trunk/src_junit/schmitzm/jfree/feature/style/testLineChartShape/testKreiseLineChart2.shx
===================================================================
(Binary files differ)
More information about the Schmitzm-commits
mailing list