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@176: import com.vividsolutions.jts.geom.Point; tim@176: import com.vividsolutions.jts.io.WKTReader; tim@176: tim@113: import de.intevation.gnv.chart.exception.TechnicalChartException; tim@113: import de.intevation.gnv.geobackend.base.Result; tim@179: import de.intevation.gnv.transition.describedata.KeyValueDescibeData; tim@185: import de.intevation.gnv.utils.DistanceCalculator; tim@113: tim@113: /** tim@113: * tim@113: * @author Tim Englich tim@171: * tim@113: */ tim@113: public class HorizontalProfileChartFactory extends VerticalProfileChartFactory { tim@113: tim@171: /** tim@171: * Default Logging instance tim@171: */ tim@171: private static Logger sLogger = Logger tim@171: .getLogger(HorizontalProfileChartFactory.class); tim@171: private static boolean sDebug = sLogger.isDebugEnabled(); tim@176: tim@176: private WKTReader wktReader = new WKTReader(); tim@113: tim@171: public HorizontalProfileChartFactory() { tim@171: super(); tim@171: super.plotOrientation = PlotOrientation.VERTICAL; tim@171: } tim@171: tim@171: /** tim@171: * tim@171: * @param seriesName tim@171: * @param resultSet tim@171: * @param lUpperCut tim@171: * @param lLowerCut tim@171: * @param pStart tim@171: * @param pEnd tim@171: * @return tim@171: * @throws TechnicalChartException tim@171: */ tim@171: @Override tim@171: protected XYSeries createXYSeries(String seriesName, tim@171: Collection resultSet, tim@171: int lUpperCut, int lLowerCut, int pStart, tim@232: int pEnd, double maxGap) throws TechnicalChartException { tim@171: if (sDebug) tim@171: sLogger.debug("createXYSeries()"); tim@171: XYSeries series = new XYSeries(seriesName); tim@185: DistanceCalculator dc = new DistanceCalculator(); tim@171: try { tim@176: Point lastPoint = null; tim@176: double distance = 0; tim@171: int i = 0; tim@171: Iterator resultIterator = resultSet.iterator(); tim@171: while (resultIterator.hasNext()) { tim@113: Result lRow = resultIterator.next(); tim@171: if (i >= pStart && i <= pEnd) { tim@176: Point p = (Point)wktReader.read(lRow.getString("SHAPE")); tim@176: if (lastPoint != null) { tim@185: distance = distance + dc.calculateDistance(lastPoint, p); tim@113: } tim@176: lastPoint = p; tim@176: double yValue = lRow.getDouble("YORDINATE"); tim@176: series.add(distance, yValue); tim@176: sLogger.debug(seriesName + " Added Value " + distance + " / " tim@171: + yValue); tim@171: } else if (i > pEnd) { tim@113: return series; tim@113: } tim@113: i++; tim@113: } tim@187: tim@187: if (distance > 0){ tim@187: double scaleDistance = distance * 0.05; tim@187: series.add(-scaleDistance, null); tim@187: series.add(distance+scaleDistance, null); tim@187: } tim@187: tim@171: } catch (OutOfMemoryError e) { tim@171: sLogger.error(e.getMessage(), e); tim@171: return series; tim@171: tim@171: } catch (Exception e) { // TechnicalChartException tim@171: sLogger.error(e.getMessage(), e); tim@171: } finally { tim@171: } tim@171: return series; tim@171: } tim@179: tim@179: tim@179: /** tim@179: * tim@179: * @see de.intevation.gnv.chart.VerticalProfileChartFactory#createSeriesName(java.util.Collection, java.util.Collection, java.util.Collection, java.lang.String, java.lang.String, java.lang.String) tim@179: */ tim@179: @Override tim@179: protected String createSeriesName( tim@179: Collection break1Candidates, tim@179: Collection break2Candidates, tim@179: Collection break3Candidates, tim@179: String break1, String break2, String break3) { tim@179: String seriesName = super.createSeriesName(break1Candidates, tim@179: break2Candidates, tim@179: break3Candidates, tim@179: break1, tim@179: break2, tim@179: break3) tim@179: +" " tim@179: + findValueTitle(break3Candidates, tim@179: break3); tim@179: return seriesName.trim(); tim@179: } tim@113: }