poi-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dave Fisher <dave2w...@comcast.net>
Subject Re: Chart model in XSSF
Date Sat, 14 May 2011 16:33:33 GMT
Hi Roman,

I think these would be excellent extensions to POI. I am certain others will respond in the
next several days.

> I think proposed class names not the best ones, if you know better ones -
> welcome.

It is spelled "Scatter" and not "Scetter".

Let's see what others have to say about your proposal.

Regards,
Dave

On May 13, 2011, at 7:24 AM, Roman Kashitsyn wrote:

> 
> Hello. In my current project I have to create xlsx charts programmaticaly.
> As I can see, at the moment POI has not enought capabilities for that. So I
> want to collaborate with POI developers to teach POI to work with charts. I
> have proposed code to allow user create new charts (
> http://apache-poi.1045710.n5.nabble.com/DO-NOT-REPLY-Bug-51196-New-PATCH-Patch-to-simplify-XSSFChart-creation-tp4392907p4392907.html
> patch 51196 ), but they still have to fill chart content by themselves.
> 
> 
> The next step is to allow users to create different charts without direct
> xmlbeans library usage. ECMA-376 describes 16 chart types. So we need to
> organize classes in some rational model. I thought a lot about it and here
> is my proposal: lets add to XSSFChart factory method, say,
> plot(XSSFChartData), to plot a specific data on a chart. XSSFChartData will
> be an interface (or an abstract class) that incapsulates specific plot logic
> (i.e. working with CTPlotArea).
> 
> The implementation could be something like that:
> 
> 
> /* XSSFChartData.java */
> public interface XSSFChartData() {
>    void fillChart(CTPlotArea ctArea);
> }
> 
> /* XSSFChart.java */
> public void plot(XSSFChartData data) {
>    data.fillChart(getCTChart().getPlotArea());
> }
> 
> /* XSSFScetterChartData.java */
> public class XSSFScetterChartData implements XSSFChartData {
>    public void fillChart(CTPlotArea area) {
>        CTScetterChart scetterChart = area.addNewScetterChart();
>        /* .... */
>    }
> }
> 
> 
> Here is a code snippet illustrating the idea:
> 
> XSSFChart chart = drawing.createChart(anchor);
> XSSFScetterChartData chartData = new XSSFScetterChartData();
> XSSFScetterChartData.Serie serie = chartData.addSerie();
> serie.setXValues(range);
> serie.setYValues(anotherRange);
> chart.plot(chartData);
> 
> 
> 
> I think proposed class names not the best ones, if you know better ones -
> welcome.
> 
> 
> 
> Here is benefits of such approach:
> 
> no any if\switches: polymorphism rules;
> the same data can be plotted in multiple charts - orthogonality is always a
> plus (if you don't believe me - read "Programmatic Programmer");
> 
> I think a new package should be introduced to contain chart data classes
> (suppose, org.apache.poi.xssf.usermodel.charts).
> 
> 
> What do you think about all this?
> 
> Thank you in advance
> 
> Roman Kashitsyn
> 
> 
> 
> --
> View this message in context: http://apache-poi.1045710.n5.nabble.com/Chart-model-in-XSSF-tp4393269p4393269.html
> Sent from the POI - Dev mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


Mime
View raw message