1 /*
2  * JasperReports - Free Java Reporting Library.
3  * Copyright (C) 2001 - 2019 TIBCO Software Inc. All rights reserved.
4  * http://www.jaspersoft.com
5  *
6  * Unless you have purchased a commercial license agreement from Jaspersoft,
7  * the following license terms apply:
8  *
9  * This program is part of JasperReports.
10  *
11  * JasperReports is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License as published by
13  * the Free Software Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  *
16  * JasperReports is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
23  */

24 package net.sf.jasperreports.components.spiderchart;
25
26 import net.sf.jasperreports.components.charts.ChartSettings;
27 import net.sf.jasperreports.engine.JRChart;
28 import net.sf.jasperreports.engine.JRComponentElement;
29 import net.sf.jasperreports.engine.JRPrintElement;
30 import net.sf.jasperreports.engine.JRPropertiesUtil;
31 import net.sf.jasperreports.engine.base.JRBasePrintImage;
32 import net.sf.jasperreports.engine.component.ComponentDesignConverter;
33 import net.sf.jasperreports.engine.convert.ReportConverter;
34 import net.sf.jasperreports.engine.type.OnErrorTypeEnum;
35 import net.sf.jasperreports.engine.type.ScaleImageEnum;
36 import net.sf.jasperreports.engine.util.JRExpressionUtil;
37
38 /**
39  * Spider Chart preview converter.
40  * 
41  * @author Sanda Zaharia (shertage@users.sourceforge.net)
42  */

43 public class SpiderChartDesignConverter implements ComponentDesignConverter
44 {
45
46     @Override
47     public JRPrintElement convert(ReportConverter reportConverter, JRComponentElement element)
48     {
49         SpiderChartComponent chartComponent = (SpiderChartComponent) element.getComponent();
50         if (chartComponent == null)
51         {
52             return null;
53         }
54         JRBasePrintImage printImage = new JRBasePrintImage(reportConverter.getDefaultStyleProvider());
55         ChartSettings chartSettings = chartComponent.getChartSettings();
56
57         reportConverter.copyBaseAttributes(element, printImage);
58         
59         //TODO: spiderchart box
60 //        printImage.copyBox(element.getLineBox());
61         
62         printImage.setAnchorName(JRExpressionUtil.getExpressionText(chartSettings.getAnchorNameExpression()));
63         printImage.setBookmarkLevel(chartSettings.getBookmarkLevel());
64         printImage.setLinkType(chartSettings.getLinkType());
65         printImage.setOnErrorType(OnErrorTypeEnum.ICON);
66         printImage.setScaleImage(ScaleImageEnum.CLIP);
67         SpiderChartSharedBean spiderchartBean = 
68             new SpiderChartSharedBean(
69                 chartSettings.getRenderType(),
70                 SpiderChartRendererEvaluator.SAMPLE_MAXVALUE,
71                 JRExpressionUtil.getExpressionText(chartSettings.getTitleExpression()),
72                 JRExpressionUtil.getExpressionText(chartSettings.getSubtitleExpression()),
73                 null,
74                 null
75                 );
76         
77         printImage.setRenderer(
78             SpiderChartRendererEvaluator.evaluateRenderable(
79                 reportConverter.getJasperReportsContext(),
80                 element,
81                 spiderchartBean,
82                 null,
83                 JRPropertiesUtil.getInstance(reportConverter.getJasperReportsContext()).getProperty(reportConverter.getReport(), JRChart.PROPERTY_CHART_RENDER_TYPE),
84                 SpiderChartRendererEvaluator.SAMPLE_DATASET)
85                 );
86         
87         return printImage;
88     }
89 }
90