Mercurial > forge
changeset 6972:5b035b8cebe9 octave-forge
Added warning (when odfdom 0.8 is found) that odfdom 0.7.5 is 7 times faster.
author | prnienhuis |
---|---|
date | Tue, 06 Apr 2010 19:00:16 +0000 |
parents | 4f232cd89aaa |
children | 9f560f231d48 |
files | main/io/inst/ods2oct.m |
diffstat | 1 files changed, 15 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/main/io/inst/ods2oct.m Tue Apr 06 18:58:43 2010 +0000 +++ b/main/io/inst/ods2oct.m Tue Apr 06 19:00:16 2010 +0000 @@ -91,23 +91,32 @@ ## 2009-12-30 First working version ## 2010-03-19 Added check for odfdom version (should be 0.7.5 until further notice) ## 2010-03-20 Works for odfdom v 0.8 too. Added subfunction ods3jotk2oct for that -## -## Latest update of subfunctions below: 2010-03-20 +## 2010-04-06 Benchmarked odfdom versions. v0.7.5 is up to 7 times faster than v0.8! +## So I added a warning for users using odfdom 0.8. +## (Latest update of subfunctions below: 2010-03-20) function [ rawarr, ods, rstatus ] = ods2oct (ods, wsh=1, datrange=[]) + persistent odf08; + if (strcmp (ods.xtype, 'OTK')) # Read ods file tru Java & ODF toolkit # Get odf toolkit .jar version. Versions 0.7.5. & 0.8 have a different API... versn = java_invoke ('org.odftoolkit.odfdom.Version', 'getApplicationVersion'); # Each odfdom version has a different subfunction to avoid performance issues - # due to many "if .... else .... endif" statements + # otherwise caused by too many "if .... else .... endif" statements if (strcmp (versn, '0.7.5')) [rawarr, ods, rstatus] = ods2jotk2oct (ods, wsh, datrange); elseif (strcmp (versn, '0.8')) + if (isempty (odf08)) + # This works OK, but slow.... + printf ("Warning: you have odfdom v. 0.8 installed;\n"); + printf ("better use odfdom v. 0.7.5 ) (~ 7 times faster!)\n"); + odf08 = 1; + endif [rawarr, ods, rstatus] = ods3jotk2oct (ods, wsh, datrange); else - error ('Unsupported ODF Toolkit version - only odfdom 0.7.5 or 0.8 work!'); + error ('Unsupported ODF Toolkit version - only odfdom.jar v. 0.7.5 or 0.8 work!'); endif elseif (strcmp (ods.xtype, 'JOD')) @@ -152,7 +161,7 @@ ## 2010-03-18 Fixed many bugs with wrong row references in case of empty upper rows ## "" Fixed reference to upper row in case of nr-rows-repeated top tablerow ## "" Tamed down memory usage for rawarr when desired data range is given -## "" Added call to getusedrange() for cases when o range was specified +## "" Added call to getusedrange() for cases when no range was specified ## 2010-03-19 More code cleanup & fixes for bugs introduced 18/3/2010 8-() function [ rawarr, ods, rstatus ] = ods2jotk2oct (ods, wsh=1, crange = []) @@ -203,7 +212,7 @@ # Get table-rows in sheet no. wsh. Sheet count = 1-based (!) str = sprintf ("//table:table[%d]/table:table-row", wsh); sh = xpath.evaluate (str, odfcont, NODESET); - nr_of_rows = sh.getLength(); + nr_of_rows = sh.getLength (); # Either parse (given cell range) or prepare (unknown range) help variables if (isempty (crange))