From af33fc904a4efc56ab4a64001523edd3ce975069 Mon Sep 17 00:00:00 2001 From: Julian Hyde Date: Fri, 14 Mar 2008 08:09:19 +0000 Subject: [PATCH] Various fixes contributed by Tomek Grabon. Include DefaultMdxParser.cup in source distro; add xercesImpl.jar to path; in XMLA driver, explicitly pass ; encode characters <, >, single and double quote in XML strings. git-svn-id: https://olap4j.svn.sourceforge.net/svnroot/olap4j/trunk@80 c6a108a4-781c-0410-a6c6-c2d559e19af0 --- build.xml | 2 ++ .../driver/xmla/XmlaOlap4jConnection.java | 31 ++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/build.xml b/build.xml index 0e03c51..6941f43 100644 --- a/build.xml +++ b/build.xml @@ -57,6 +57,7 @@ ${jar-jdk14.file}"/> + @@ -197,6 +198,7 @@ ${jar-jdk14.file}"/> prefix="${dist.name}" includes=" ${src.dir}/**/*.java, +${src.dir}/**/*.cup, ${testsrc.dir}/**/*.java, doc/**/*.css, doc/**/*.png, diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java index ebd1955..efad2cb 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java @@ -505,6 +505,8 @@ public String generateRequest( { final String dataSourceInfo = context.olap4jConnection.getDataSourceInfo(); + final String catalog = + context.olap4jConnection.getCatalog(); final String content = "Data"; final String encoding = proxy.getEncodingCharsetName(); final StringBuilder buf = new StringBuilder( @@ -551,6 +553,9 @@ public String generateRequest( + " "); buf.append(dataSourceInfo); buf.append("\n" + + " "); + buf.append(catalog); + buf.append("\n" + " " + content + "\n" + " \n" + " \n" @@ -563,22 +568,26 @@ public String generateRequest( /** * Encodes a string for use in an XML CDATA section. * - *

TODO use an XML serialiser or handle these too: - * quote (") " - * apostrophe (') ' - * ampersand (&) & - * less than (<) < - * greater than (>) > - * * @param value to be xml encoded * @return an XML encode string or the value is not required. */ private static String xmlEncode(String value){ - if (value.indexOf('&') == -1) { - return value; - } else { - return value.replace("&", "&"); + if (value.indexOf('&') >= 0) { + value = value.replace("&", "&"); + } + if (value.indexOf('<') >= 0) { + value = value.replace("<", "<"); + } + if (value.indexOf('>') >= 0) { + value = value.replace(">", ">"); + } + if (value.indexOf('"') >= 0) { + value = value.replace("\"", """); + } + if (value.indexOf('\'') >= 0) { + value = value.replace("'", "'"); } + return value; } // ~ inner classes --------------------------------------------------------