tim@113: /** tim@113: * 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 $ tim@113: * Source: $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v $ tim@113: * created by: Stefan Blume (blume) tim@113: * erstellt am: 06.12.2007 tim@113: * Copyright: con terra GmbH, 2005 tim@113: * tim@113: * modified by: $Author: blume $ tim@113: * modified on: $Date: 2007/12/21 12:31:15 $ tim@113: * Version: $Revision: 1.8 $ tim@113: * TAG: $Name: $ tim@113: * locked from: $Locker: $ tim@113: * CVS State: $State: Exp $ tim@113: * Project: $ProjectName$ tim@113: */ tim@113: package de.intevation.gnv.chart; tim@113: tim@113: import java.util.Collection; tim@113: import java.util.Iterator; tim@113: tim@113: import org.apache.log4j.Logger; tim@113: import org.jfree.chart.plot.PlotOrientation; tim@113: import org.jfree.data.xy.XYSeries; tim@113: tim@113: import de.intevation.gnv.chart.exception.TechnicalChartException; tim@113: import de.intevation.gnv.geobackend.base.Result; tim@113: tim@113: /** tim@113: * tim@113: * @author Tim Englich tim@113: * tim@113: */ tim@113: public class HorizontalProfileChartFactory extends VerticalProfileChartFactory { tim@113: tim@113: /** tim@113: * Default Logging instance tim@113: */ tim@113: private static Logger sLogger = Logger.getLogger(HorizontalProfileChartFactory.class); tim@113: private static boolean sDebug = sLogger.isDebugEnabled(); tim@113: tim@113: tim@113: public HorizontalProfileChartFactory(){ tim@113: super(); tim@113: super.plotOrientation = PlotOrientation.HORIZONTAL; tim@113: } tim@113: tim@113: tim@113: /** tim@113: * tim@113: * @param seriesName tim@113: * @param resultSet tim@113: * @param lUpperCut tim@113: * @param lLowerCut tim@113: * @param pStart tim@113: * @param pEnd tim@113: * @return tim@113: * @throws TechnicalChartException tim@113: */ tim@113: @Override tim@113: protected XYSeries createXYSeries(String seriesName, Collection resultSet, tim@113: int lUpperCut, int lLowerCut,int pStart,int pEnd) throws TechnicalChartException{ tim@113: if (sDebug) tim@113: sLogger.debug("createXYSeries()"); tim@113: XYSeries series = new XYSeries(seriesName); tim@113: try { tim@113: double xValue=0; tim@113: double yValue=0; tim@113: double xStartCoord = 0; tim@113: double yStartCoord = 0; tim@113: int i = 0; tim@113: Iterator resultIterator = resultSet.iterator(); tim@113: while (resultIterator.hasNext()){ tim@113: Result lRow = resultIterator.next(); tim@113: if (i >= pStart && i <= pEnd ){ tim@113: if (xStartCoord == 0 && yStartCoord == 0){ tim@113: xStartCoord = lRow.getDouble("XORDINATE_XCOORD"); tim@113: yStartCoord = lRow.getDouble("XORDINATE_YCOORD"); tim@113: } tim@113: tim@113: double currentXCoord = lRow.getDouble("XORDINATE_XCOORD");; tim@113: double currentYCoord = lRow.getDouble("XORDINATE_YCOORD"); tim@113: tim@113: xValue = this.calculateDistance(xStartCoord, yStartCoord, currentXCoord, currentYCoord); tim@113: tim@113: yValue = lRow.getDouble("YORDINATE"); tim@113: series.add(xValue, yValue); tim@113: sLogger.debug(seriesName+" Added Value "+xValue+" / "+yValue); tim@113: tim@113: }else if (i > pEnd){ tim@113: return series; tim@113: } tim@113: i++; tim@113: } tim@113: } catch (OutOfMemoryError e) { tim@113: sLogger.error(e.getMessage(), e); tim@113: return series; tim@113: tim@113: } catch (Exception e) { //TechnicalChartException tim@113: sLogger.error(e.getMessage(), e); tim@113: } tim@113: finally { tim@113: } tim@113: tim@113: return series; tim@113: } tim@113: tim@113: private double calculateDistance(double xStartCoord, double yStartCoord, double currentXCoord, double currentYCoord){ tim@113: double dx = xStartCoord - currentXCoord; tim@113: double dy = yStartCoord - currentYCoord; tim@113: return Math.sqrt((dx*dx)+(dy*dy)); tim@113: } tim@113: }