<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=us-ascii" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18904"></HEAD>
<BODY>
<DIV><SPAN class=400445101-07042010><FONT color=#000080 size=2 
face="Lucida Sans">I agree with the 4 bundles of functionality you have 
proposed. But did you realize that the parser bundle is already present? It's in 
the org.olap4j.mdx.parser package:</FONT></SPAN></DIV>
<DIV><SPAN class=400445101-07042010><FONT color=#000080 size=2 
face="Lucida Sans"></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=400445101-07042010><A 
href="http://www.olap4j.org/api/org/olap4j/mdx/parser/package-summary.html">http://www.olap4j.org/api/org/olap4j/mdx/parser/package-summary.html</A></SPAN></DIV>
<DIV><SPAN class=400445101-07042010><FONT color=#000080 size=2 
face="Lucida Sans"></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=400445101-07042010><FONT color=#000080 size=2 
face="Lucida Sans">The GUI use case you cite is a good one. But it can be done 
today using MdxParser, MdxParserFactory, and the parse tree object model classes 
in the org.olap4j.mdx package.&nbsp;<SPAN class=400445101-07042010><FONT 
color=#000080 size=2 face="Lucida Sans">And by the way, to get a parser factory, 
you call OlapConnection.getParserFactory.</FONT></SPAN></FONT></SPAN></DIV>
<DIV><SPAN class=400445101-07042010><FONT color=#000080 size=2 
face="Lucida Sans"></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=400445101-07042010><FONT color=#000080 size=2 
face="Lucida Sans">Behind the scenes, the olap4j driver is probably using 
DefaultMdxParserImpl. (It is for both olap4j drivers that exist today.) But the 
app does not need to know about DefaultMdxParserImpl in order to do what it 
needs to do, only MdxParser.</FONT></SPAN></DIV>
<DIV><SPAN class=400445101-07042010><FONT color=#000080 size=2 
face="Lucida Sans"></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=400445101-07042010><FONT color=#000080 size=2 
face="Lucida Sans">Julian</FONT></SPAN></DIV><BR>
<BLOCKQUOTE 
style="BORDER-LEFT: #000080 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px">
  <DIV dir=ltr lang=en-us class=OutlookMessageHeader align=left>
  <HR tabIndex=-1>
  <FONT size=2 face=Tahoma><B>From:</B> Luc Boudreau 
  [mailto:lucboudreau@gmail.com] <BR><B>Sent:</B> Tuesday, April 06, 2010 6:28 
  PM<BR><B>To:</B> jhyde@pentaho.com<BR><B>Cc:</B> Mondrian developer mailing 
  list; olap4j-devel@lists.sourceforge.net<BR><B>Subject:</B> Re: [Olap4j-devel] 
  [Mondrian] Convert Connection to OlapConnection<BR></FONT><BR></DIV>
  <DIV></DIV><BR>Database drivers who implement their own parser and grammar are 
  free to not use the one provided by olap4j. An OlapConnection still has to 
  provide a parser factory to public code. Nothing should change there. Yet this 
  does not constitute an argument for not exposing the internal parser. Olap4j 
  contains the only MDX parser available as far as I know and it would be a 
  shame to bury it at the bottom of the library.<BR><BR>I agree with keeping 
  DefaultMdxParserImpl part of the SPI only. There is no need to expose it and 
  as I said in my previous email, I'd much rather see a unified standard way of 
  obtaining a MdxParser implementation. I'm not talking about core API changes. 
  Here's a very common and realistic use case for it; a syntax-aware GUI editor 
  for MDX queries which is not a query tool.<BR><BR>If your objection is related 
  to the separation of intent of the different components of olap4j, then I can 
  assure you that I am fully aware of the mixup that is already in place. Olap4j 
  includes already an four distinctive components bundled together... We talked 
  about separating those in the past and never got to doing it. Should we decide 
  to do the actual work, I believe that the natural separation of components 
  should be as follows.<BR>
  <UL>
    <LI>API (org.olap4j.* pagkages, minus the ones below)<BR>This is the bulk of 
    the olap4j code.<BR><BR>
    <LI>XML/A Generic Driver (org.olap4j.driver.xmla.*)<BR>The XML/A driver 
    depends on the API only.<BR><BR>
    <LI>Query Model (org.olap4j.query.*)<BR>The query model classes would depend 
    on the API only.<BR><BR>
    <LI>MDX Parser (some package that is non existent yet)<BR>The MDX parser 
    would be a very simplistic wrapper over the default parser SPI classes and 
    exposed as a MdxParser factory. It would depend on the API core 
    only.<BR></LI></UL>Each of those components can be part of the olap4j source 
  tree for now, but I'd like to take the opportunity to initiate a discussion 
  about their separation and get feedback about the ramifications. I don't mind 
  doing the actual work.<BR><BR clear=all>_____________________________<BR>Luc 
  Boudreau<BR><BR><BR>
  <DIV class=gmail_quote>On Tue, Apr 6, 2010 at 7:49 PM, Julian Hyde <SPAN 
  dir=ltr>&lt;<A 
  href="mailto:jhyde@pentaho.com">jhyde@pentaho.com</A>&gt;</SPAN> wrote:<BR>
  <BLOCKQUOTE 
  style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex" 
  class=gmail_quote>
    <DIV>
    <DIV><SPAN><FONT color=#000080 size=2 face="Lucida Sans">I stand by the 
    comments I made in that forum post. MdxParser is part of olap4j's public 
    API, but DefaultMdxParserImpl is not and will never be.</FONT></SPAN></DIV>
    <DIV><SPAN><FONT color=#000080 size=2 
    face="Lucida Sans"></FONT></SPAN>&nbsp;</DIV>
    <DIV><SPAN><A 
    href="http://www.olap4j.org/api/org/olap4j/mdx/parser/package-summary.html" 
    target=_blank>http://www.olap4j.org/api/org/olap4j/mdx/parser/package-summary.html</A></SPAN></DIV>
    <DIV><SPAN><FONT color=#000080 size=2 
    face="Lucida Sans"></FONT></SPAN>&nbsp;</DIV>
    <DIV><SPAN><FONT color=#000080 size=2 face="Lucida Sans">The public API, 
    remember, is for people building OLAP applications. To them, olap4j needs to 
    look like JDBC, but with one exception. JDBC drivers don't supply a SQL 
    parser, but parsing is more important to MDX applications so every olap4j 
    driver must supply an MDX parser that implements the MdxParser 
    interface.</FONT></SPAN></DIV>
    <DIV><SPAN><FONT color=#000080 size=2 
    face="Lucida Sans"></FONT></SPAN>&nbsp;</DIV>
    <DIV><SPAN><FONT color=#000080 size=2 face="Lucida Sans">The other important 
    audience is developers of drivers. To a limited extent, the olap4j code base 
    gives them an SPI to help them build drivers. <SPAN><FONT color=#000080 
    size=2 face="Lucida Sans">DefaultMdxParserImpl is part of that SPI, as are 
    the classes in org.olap4j.impl. We will try to keep the SPI stable as olap4j 
    eveolves but we won't bust a gut over it.</FONT></SPAN></FONT></SPAN></DIV>
    <DIV><SPAN><FONT color=#000080 size=2 
    face="Lucida Sans"><SPAN></SPAN></FONT></SPAN>&nbsp;</DIV>
    <DIV><SPAN><FONT color=#000080 size=2 face="Lucida Sans"><SPAN>Remember that 
    different drivers might be talking to different OLAP engines, and different 
    engines have different dialects of MDX, so naturally the driver writers 
    might want to create their own parser. They can write a parser from scratch, 
    or they can start with the default MDX parser.</SPAN></FONT></SPAN></DIV>
    <DIV><SPAN><FONT color=#000080 size=2 
    face="Lucida Sans"><SPAN></SPAN></FONT></SPAN>&nbsp;</DIV>
    <DIV><SPAN><FONT color=#000080 size=2 face="Lucida Sans"><SPAN>
    <DIV><SPAN><FONT color=#000080 size=2 face="Lucida Sans">If you want to 
    dismember the olap4j project to get the MDX parser, then go ahead. olap4j is 
    after all an open source project. But you're on your own. You are in a small 
    minority of olap4j users, and we don't intend to change the olap4j API for 
    your benefit.</FONT></SPAN></DIV>
    <DIV><SPAN></SPAN>&nbsp;</DIV>
    <DIV><SPAN>It sounds like </SPAN></DIV>
    <DIV><SPAN></SPAN>&nbsp;</DIV>
    <DIV><SPAN>Julian</SPAN></DIV>
    <DIV><SPAN><FONT color=#000080 size=2 
    face="Lucida Sans"></FONT></SPAN>&nbsp;</DIV></SPAN></FONT></SPAN></DIV><BR>
    <BLOCKQUOTE 
    style="BORDER-LEFT: rgb(0,0,128) 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px">
      <DIV dir=ltr lang=en-us align=left>
      <HR>
      <FONT size=2 face=Tahoma><B>From:</B> Luc Boudreau [mailto:<A 
      href="mailto:lucboudreau@gmail.com" 
      target=_blank>lucboudreau@gmail.com</A>] <BR><B>Sent:</B> Tuesday, April 
      06, 2010 3:58 PM<BR><B>To:</B> Mondrian developer mailing 
      list<BR><B>Cc:</B> <A href="mailto:olap4j-devel@lists.sourceforge.net" 
      target=_blank>olap4j-devel@lists.sourceforge.net</A><BR><B>Subject:</B> 
      Re: [Olap4j-devel] [Mondrian] Convert Connection to 
      OlapConnection<BR></FONT><BR></DIV>
      <DIV>
      <DIV></DIV>
      <DIV class=h5>
      <DIV></DIV><BR>As of olap4j revision 307 ( <A 
      href="http://olap4j.svn.sourceforge.net/viewvc/olap4j?view=rev&amp;revision=307" 
      target=_blank>http://olap4j.svn.sourceforge.net/viewvc/olap4j?view=rev&amp;revision=307</A> 
      ) the default MDX parser does not depend on OlapConnection. It should not 
      have been dependent on it in the first place. <BR><BR>Mondrian developers: 
      please modify the olap4j connection implementation and remove the now 
      deprecated call to DefaultMdxParserImpl(OlapConnection). Modifications to 
      the generic XML/A driver have already been performed.<BR><BR>This does not 
      mean that DefaultMdxParserImpl is part of the public API yet. There should 
      be a default parser factory exposed to developers. In the meanwhile, 
      developers can directly instantiate it, but be advised that we do not 
      provide any guarantees on this object's signature and we reserve the right 
      to modify it in the future. To create a parser, developers can call the 
      empty constructor.<BR><BR>A compiled binary which includes those changes 
      can be picked from the CI server as of now :<BR><BR><A 
      href="http://ci.pentaho.com/view/Analysis/job/olap4j/258/" 
      target=_blank>http://ci.pentaho.com/view/Analysis/job/olap4j/258/</A><BR><BR 
      clear=all>_____________________________<BR>Luc Boudreau<BR><BR><BR>
      <DIV class=gmail_quote>On Tue, Apr 6, 2010 at 5:38 PM, Luc Boudreau <SPAN 
      dir=ltr>&lt;<A href="mailto:lucboudreau@gmail.com" 
      target=_blank>lucboudreau@gmail.com</A>&gt;</SPAN> wrote:<BR>
      <BLOCKQUOTE 
      style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex" 
      class=gmail_quote><BR>This topic was discussed in olap4j 
        forums.<BR><BR><A 
        href="http://sourceforge.net/projects/olap4j/forums/forum/577988/topic/3545015" 
        target=_blank>http://sourceforge.net/projects/olap4j/forums/forum/577988/topic/3545015</A><BR><BR>Although 
        Julian's last comment mentioned that the parser is not officially part 
        of the public API, I for one would like to make it part of the public 
        API. There are many use cases for it and your request confirms 
        it.<BR><BR>I'll see what I can do to detach the parser from the 
        connection classes.<BR><BR 
        clear=all>_____________________________<BR>Luc Boudreau<BR><BR><BR>
        <DIV class=gmail_quote>
        <DIV>
        <DIV></DIV>
        <DIV>On Tue, Apr 6, 2010 at 5:32 PM, Josh Chappelle <SPAN dir=ltr>&lt;<A 
        href="mailto:jchappelle@4redi.com" 
        target=_blank>jchappelle@4redi.com</A>&gt;</SPAN> wrote:<BR></DIV></DIV>
        <BLOCKQUOTE 
        style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0pt 0pt 0pt 0.8ex; PADDING-LEFT: 1ex" 
        class=gmail_quote>
          <DIV>
          <DIV></DIV>
          <DIV>
          <DIV lang=EN-US link="blue" vlink="purple">
          <DIV>
          <P class=MsoNormal><FONT size=2 face=Arial><SPAN 
          style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">Hi,</SPAN></FONT></P>
          <P class=MsoNormal><FONT size=2 face=Arial><SPAN 
          style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
          <P class=MsoNormal><FONT size=2 face=Arial><SPAN 
          style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">We have a need to use the 
          MdxParser component from the Olap4j project. However up until this 
          point we have not been using olap4j at all. To instantiate a 
          DefaultMdxParserImpl you have to provide an org.olap4j.OlapConnection 
          object in the constructor. Our software is using a 
          mondrian.olap.Connection. Is there a way to convert between these two 
          connection objects? If not does it mean that we will have to use the 
          org.olap4j.OlapConnection in order to use the 
          MdxParser?</SPAN></FONT></P>
          <P class=MsoNormal><FONT size=2 face=Arial><SPAN 
          style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
          <P class=MsoNormal><FONT size=2 face=Arial><SPAN 
          style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">Thanks,</SPAN></FONT></P>
          <P class=MsoNormal><FONT size=2 face=Arial><SPAN 
          style="FONT-FAMILY: Arial; FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P><FONT 
          color=#888888>
          <P class=MsoNormal><FONT size=2 face=Arial><SPAN 
          style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">Josh 
          </SPAN></FONT></P></FONT></DIV></DIV><BR></DIV></DIV>_______________________________________________<BR>Mondrian 
          mailing list<BR><A href="mailto:Mondrian@pentaho.org" 
          target=_blank>Mondrian@pentaho.org</A><BR><A 
          href="http://lists.pentaho.org/mailman/listinfo/mondrian" 
          target=_blank>http://lists.pentaho.org/mailman/listinfo/mondrian</A><BR><BR></BLOCKQUOTE></DIV><BR></BLOCKQUOTE></DIV><BR></DIV></DIV></BLOCKQUOTE></DIV></BLOCKQUOTE></DIV><BR></BLOCKQUOTE></BODY></HTML>