/*! * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved. */ package org.pentaho.platform.plugin.action.openflashchart.factory; import ofc4j.model.elements.LineChart; import org.dom4j.Node; public class LineChartFactory extends AbstractChartFactory { // line related elements private static final String LINE_WIDTH_NODE_LOC = "line-width"; //$NON-NLS-1$ private static final String DOTSTYLE_NODE_LOC = "dot-style"; //$NON-NLS-1$ private static final String DOT_WIDTH_NODE_LOC = "dot-width"; //$NON-NLS-1$ // defaults private static final LineChart.Style LINECHART_STYLE_DEFAULT = LineChart.Style.NORMAL; // line related members protected LineChart.Style linechartstyle; protected Integer linechartwidth; protected Integer dotwidth; @Override protected void createElements() { if ( CATEGORY_TYPE.equals( datasetType ) ) { int columnCount = getColumnCount(); // Create a "series" or element for each column past the first for ( int col = 0; col < columnCount; col++ ) { elements.add( getLineChartFromColumn( col ) ); } } } public LineChart getLineChartFromColumn( int col ) { LineChart lc = new LineChart( this.linechartstyle ); for ( int row = 0; row < getRowCount(); row++ ) { double d = ( (Number) getValueAt( row, col ) ).doubleValue(); LineChart.Dot dot = new LineChart.Dot( d ); if ( dotwidth != null ) { dot.setDotSize( dotwidth ); } lc.addDots( dot ); } if ( linechartwidth != null ) { lc.setWidth( linechartwidth ); } lc.setColour( getColor( col ) ); if ( tooltipText != null ) { lc.setTooltip( tooltipText ); } // set the title for this series lc.setText( getColumnHeader( col ) ); // set the onclick event to the base url template if ( null != baseURLTemplate ) { lc.setOn_click( baseURLTemplate ); } if ( alpha != null ) { lc.setAlpha( alpha ); } return lc; } @Override protected void setupStyles() { super.setupStyles(); Node temp = chartNode.selectSingleNode( DOTSTYLE_NODE_LOC ); if ( getValue( temp ) != null ) { if ( "dot".equals( getValue( temp ) ) ) { linechartstyle = LineChart.Style.DOT; } else if ( "normal".equals( getValue( temp ) ) ) { linechartstyle = LineChart.Style.NORMAL; } else if ( "hollow".equals( getValue( temp ) ) ) { linechartstyle = LineChart.Style.HOLLOW; } else { linechartstyle = LINECHART_STYLE_DEFAULT; } } else { linechartstyle = LINECHART_STYLE_DEFAULT; } temp = chartNode.selectSingleNode( LINE_WIDTH_NODE_LOC ); if ( getValue( temp ) != null ) { // parse with double so 1.0 is parsable linechartwidth = (int) Double.parseDouble( getValue( temp ) ); } temp = chartNode.selectSingleNode( DOT_WIDTH_NODE_LOC ); if ( getValue( temp ) != null ) { dotwidth = Integer.parseInt( getValue( temp ) ); } } }