view 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 source
/**
 * 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));
	}
}

http://dive4elements.wald.intevation.org