[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