Vaadin Spreadsheets with Charts Serious BUGS fix required asap

Hallo,

I have huge problems with vaadin spreadsheets and charts and I urgently need your help solving them.

Please read ISSUE 1 and 2.

ISSUE 1:

Please open the attached VaadinIssue1.xls with charts enabled and you will get the following exception.
It looks like whenever I create charts that refer to cells that do not contain any value, Vaadin completely crashes (see exception below).
Also if you add 3D Charts vaadin will crash again.

EXCEPTION:

java.lang.NullPointerException
                at com.vaadin.addon.spreadsheet.charts.converter.xssfreader.AbstractSeriesReader.calculateDecimalsForTooltip(AbstractSeriesReader.java:236)
                at com.vaadin.addon.spreadsheet.charts.converter.xssfreader.AbstractSeriesReader.createSeriesDataPoints(AbstractSeriesReader.java:213)
                at com.vaadin.addon.spreadsheet.charts.converter.xssfreader.AbstractSeriesReader.fillSeriesData(AbstractSeriesReader.java:100)
                at com.vaadin.addon.spreadsheet.charts.converter.xssfreader.BarSeriesReader.fillSeriesData(BarSeriesReader.java:65)
                at com.vaadin.addon.spreadsheet.charts.converter.xssfreader.BarSeriesReader.fillSeriesData(BarSeriesReader.java:34)
                at com.vaadin.addon.spreadsheet.charts.converter.xssfreader.AbstractSeriesReader.createAndFillSeriesDataObject(AbstractSeriesReader.java:81)
                at com.vaadin.addon.spreadsheet.charts.converter.xssfreader.AbstractSeriesReader.getSeries(AbstractSeriesReader.java:73)
                at com.vaadin.addon.spreadsheet.charts.converter.xssfreader.XSSFChartReader.readPlotData(XSSFChartReader.java:153)
                at com.vaadin.addon.spreadsheet.charts.converter.xssfreader.XSSFChartReader.readXSSFChart(XSSFChartReader.java:74)
                at com.vaadin.addon.spreadsheet.charts.converter.DefaultChartCreator.createChart(DefaultChartCreator.java:29)
                at com.vaadin.addon.spreadsheet.SheetChartWrapper.initContent(SheetChartWrapper.java:105)
                at com.vaadin.addon.spreadsheet.SheetChartWrapper.getComponent(SheetChartWrapper.java:138)
                at com.vaadin.addon.spreadsheet.Spreadsheet.addOverlayData(Spreadsheet.java:3210)
                at com.vaadin.addon.spreadsheet.Spreadsheet.loadOrUpdateOverlays(Spreadsheet.java:3193)
                at com.vaadin.addon.spreadsheet.Spreadsheet.loadCells(Spreadsheet.java:2988)
                at com.vaadin.addon.spreadsheet.Spreadsheet.onSheetScroll(Spreadsheet.java:766)
                at com.vaadin.addon.spreadsheet.SpreadsheetHandlerImpl.onSheetScroll(SpreadsheetHandlerImpl.java:57)
                at sun.reflect.GeneratedMethodAccessor1479.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:606)
                at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:158)
                at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118)
                at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:408)
                at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:273)
                at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:79)
                at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
                at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1409)
                at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:364)
                at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:96)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:65)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:164)
                at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141)
                at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90)
                at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:417)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                at nomitech.ces.webapp.LocaleFilter.doFilterInternal(LocaleFilter.java:78)
                at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
                at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
                at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
                at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
                at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
                at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
                at nomitech.ces.valve.SessionFixationValve.invoke(SessionFixationValve.java:60)
                at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
                at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
                at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
                at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
                at java.lang.Thread.run(Thread.java:745)

ISSUE 2:

Open the attached file in the vaadin demo without charts and you will see that it completely destroys the colors and data is not visible. This is because it is Excel97 xls format. If I open it with Excel and save as later format it amazingly works, but if I export again from vaadin I am getting a warning in Excel.

28812.xls (10.5 KB)

Hi George,

As it’s mentioned in
Vaadin Spreadsheet Docs
support for Excel 97 (.xls) files is limited.

Regarding the issue if it’s reproducible with xlsx format please create an issue in
https://github.com/vaadin/spreadsheet/issues/
, having small and simple examples where the issue is reproducible is best usually.

Thanks

Hi Guillermo,

I can leave with the second issue, I just converted to Excel2007 before and it works.

The first issue is very easy to reproduce, you just make a chart that uses an empty cell in one of its values and it crashes. Excel97 is unrelated with the issue. See attached VaadinIssue2.xls it is latest format.

It really doesnt matter if it is xls or xlsx the error as you can see happens while generating some tooltips for empty cells.
Probably not checking if the cell has a value?

28815.xls (33.5 KB)

BUG Issue posted @ github:
https://github.com/vaadin/spreadsheet/issues/392

Hi George,

I checked issues #392 and #393 and they seem to be fixed now. You can verify them using latest version 1.3.0.alpha1.

Hi Guillermo,

There is also an NPE related to charts in the following issue:
https://github.com/vaadin/spreadsheet/issues/397

The others are ok.