Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/chart/HorizontalProfileChartFactory.java @ 113:a16f5267803e
Added Basic-Support for HorizontalProfiles
gnv-artifacts/trunk@163 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Wed, 30 Sep 2009 13:42:51 +0000 |
parents | |
children | 820238357bab |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/HorizontalProfileChartFactory.java Wed Sep 30 13:42:51 2009 +0000 @@ -0,0 +1,112 @@ +/** + * Title: ChartFactory, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v 1.8 2007/12/21 12:31:15 blume Exp $ + * Source: $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v $ + * created by: Stefan Blume (blume) + * erstellt am: 06.12.2007 + * Copyright: con terra GmbH, 2005 + * + * modified by: $Author: blume $ + * modified on: $Date: 2007/12/21 12:31:15 $ + * Version: $Revision: 1.8 $ + * TAG: $Name: $ + * locked from: $Locker: $ + * CVS State: $State: Exp $ + * Project: $ProjectName$ + */ +package de.intevation.gnv.chart; + +import java.util.Collection; +import java.util.Iterator; + +import org.apache.log4j.Logger; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.data.xy.XYSeries; + +import de.intevation.gnv.chart.exception.TechnicalChartException; +import de.intevation.gnv.geobackend.base.Result; + +/** + * + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class HorizontalProfileChartFactory extends VerticalProfileChartFactory { + + /** + * Default Logging instance + */ + private static Logger sLogger = Logger.getLogger(HorizontalProfileChartFactory.class); + private static boolean sDebug = sLogger.isDebugEnabled(); + + + public HorizontalProfileChartFactory(){ + super(); + super.plotOrientation = PlotOrientation.HORIZONTAL; + } + + + /** + * + * @param seriesName + * @param resultSet + * @param lUpperCut + * @param lLowerCut + * @param pStart + * @param pEnd + * @return + * @throws TechnicalChartException + */ + @Override + protected XYSeries createXYSeries(String seriesName, Collection<Result> resultSet, + int lUpperCut, int lLowerCut,int pStart,int pEnd) throws TechnicalChartException{ + if (sDebug) + sLogger.debug("createXYSeries()"); + XYSeries series = new XYSeries(seriesName); + try { + double xValue=0; + double yValue=0; + double xStartCoord = 0; + double yStartCoord = 0; + int i = 0; + Iterator<Result> resultIterator = resultSet.iterator(); + while (resultIterator.hasNext()){ + Result lRow = resultIterator.next(); + if (i >= pStart && i <= pEnd ){ + if (xStartCoord == 0 && yStartCoord == 0){ + xStartCoord = lRow.getDouble("XORDINATE_XCOORD"); + yStartCoord = lRow.getDouble("XORDINATE_YCOORD"); + } + + double currentXCoord = lRow.getDouble("XORDINATE_XCOORD");; + double currentYCoord = lRow.getDouble("XORDINATE_YCOORD"); + + xValue = this.calculateDistance(xStartCoord, yStartCoord, currentXCoord, currentYCoord); + + yValue = lRow.getDouble("YORDINATE"); + series.add(xValue, yValue); + sLogger.debug(seriesName+" Added Value "+xValue+" / "+yValue); + + }else if (i > pEnd){ + return series; + } + i++; + } + } catch (OutOfMemoryError e) { + sLogger.error(e.getMessage(), e); + return series; + + } catch (Exception e) { //TechnicalChartException + sLogger.error(e.getMessage(), e); + } + finally { + } + + return series; + } + + private double calculateDistance(double xStartCoord, double yStartCoord, double currentXCoord, double currentYCoord){ + double dx = xStartCoord - currentXCoord; + double dy = yStartCoord - currentYCoord; + return Math.sqrt((dx*dx)+(dy*dy)); + } +}