Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2005 - 2008 Pentaho Corporation.  All rights reserved. 
   * This software was developed by Pentaho Corporation and is provided under the terms 
   * of the Mozilla Public License, Version 1.1, or any later version. You may not use 
   * this file except in compliance with the license. If you need a copy of the license, 
   * please go to http://www.mozilla.org/MPL/MPL-1.1.txt. The Original Code is the Pentaho 
   * BI Platform.  The Initial Developer is Pentaho Corporation.
   *
   * Software distributed under the Mozilla Public License is distributed on an "AS IS" 
  * basis, WITHOUT WARRANTY OF ANY KIND, either express or  implied. Please refer to 
  * the license for the specific language governing your rights and limitations.
  *
  * Created Sep 12, 2005 
  * @author wseyler
  */
 
 package org.pentaho.platform.plugin.services.connections.mondrian;
 
 import java.util.List;
 
 
 import  mondrian.olap.Connection;
 import  mondrian.olap.DriverManager;
 import  mondrian.olap.Query;
 import  mondrian.olap.Result;
 import  mondrian.olap.Util;
 import  mondrian.rolap.RolapConnectionProperties;
 
 import  org.pentaho.commons.connection.IPentahoConnection;
 import  org.pentaho.commons.connection.IPentahoResultSet;

Author(s):
wseyler TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Style - Code Templates
 
 public class MDXConnection implements IPentahoLoggingConnection {
  
Defines the XML element in the component-definition that holds the mondrian-specific MDX Connection string.
 
   public static final String CONNECTION_STRING_KEY = "mdx-connection-string"//$NON-NLS-1$
 
   Connection nativeConnection = null;
 
   String lastQuery = null;
 
   IPentahoResultSet resultSet = null;
 
   ILogger logger = null;
 
   public MDXConnection() {
     super();
   }
 
   public void setLogger(final ILogger logger) {
     this. = logger;
   }
 
   public void setProperties(final Properties props) {
 
     // TODO: consolidate this in the init
     String connectStr = props.getProperty(IPentahoConnection.JNDI_NAME_KEY);
     if (connectStr != null) {
       init(connectStr);
     } else {
       final String connection = props.getProperty(IPentahoConnection.CONNECTION);
       final String provider = props.getProperty(IPentahoConnection.PROVIDER);
       final String userName = props.getProperty(IPentahoConnection.USERNAME_KEY);
       final String password = props.getProperty(IPentahoConnection.PASSWORD_KEY);
       if (connection != null && provider != null) {
         init(connectionprovideruserNamepassword);
       } else {
         init(props);
       }
     }
   }

  

Deprecated:
Parameters:
driver - The name of the driver or the connection string
provider - the provider for MDX usally "mondrian"
userName - User to connect to the datasource with
password - Password for the user
See also:
MDXConnection(Properties props, ILogger logger)
 
   public MDXConnection(final String driverfinal String providerfinal String userNamefinal String password) {
    super();
    init(driverprovideruserNamepassword);
  }
  public MDXConnection(final String connectStrfinal ILogger logger) {
    super();
    this. = logger;
    init(connectStr);
  }
  protected void init(final String connectStr) {
      Util.PropertyList properties = Util.parseConnectString(connectStr);
      init(properties);
  }
  protected void init(final Properties properties) {
      Util.PropertyList pl = new Util.PropertyList();
      Enumeration enum1 = properties.keys();
      while (enum1.hasMoreElements()) {
        Object key = enum1.nextElement();
        Object value = properties.get(key);
        pl.put(key.toString(), value.toString());
      }
      init(pl);
  }
  
  protected void init(final String driverfinal String providerfinal String userNamefinal String password) {
    StringBuffer buffer = new StringBuffer();
    buffer.append("provider=" + provider); //$NON-NLS-1$
    //
    // MB - This is a hack. Should instead have either a flag or a
    // different method for specifying a datasource instead of this.
    //
    // TODO: Fix for post 1.2 RC 2
    //
    //
    // WES - This hack was fixed up to maintain backward capability.
    // In addition methods were added so that connection info can be passed
    // in via a properties map.
    if (driver.indexOf("dataSource=") >= 0) { //$NON-NLS-1$
      buffer.append("; ").append(driver); //$NON-NLS-1$
    } else {
      buffer.append("; Jdbc=" + driver); //$NON-NLS-1$
    }
    if (userName != null) {
      buffer.append("; JdbcUser=" + userName); //$NON-NLS-1$
    }
    if (password != null) {
      buffer.append("; JdbcPassword=" + password); //$NON-NLS-1$
    }
    init(buffer.toString());
  }
  protected void init(Util.PropertyList properties) {
    try {
      if ( != null) { // Assume we're open
        close();
      }
      String dataSourceName = properties.get(RolapConnectionProperties.DataSource.name());
      
      if (dataSourceName != null) {
        IDatasourceService datasourceService =  (IDatasourceService) PentahoSystem.getObjectFactory().getObject(.,null);
        DataSource dataSourceImpl = datasourceService.getDataSource(dataSourceName);      
        if (dataSourceImpl != null) {
          properties.remove(RolapConnectionProperties.DataSource.name());
           = DriverManager.getConnection(propertiesnulldataSourceImpl);
        } else {
           = DriverManager.getConnection(propertiesnull);
        }
      } else {
         = DriverManager.getConnection(propertiesnull);
      }
      
      if ( == null) {
        .error(Messages.getErrorString(
            "MDXConnection.ERROR_0002_INVALID_CONNECTION"properties != null ? properties.toString() : "null")); //$NON-NLS-1$ //$NON-NLS-2$
      }
    } catch (Throwable t) {
      if ( != null) {
        .error(Messages.getErrorString(
            "MDXConnection.ERROR_0002_INVALID_CONNECTION"properties != null ? properties.toString() : "null"), t); //$NON-NLS-1$ //$NON-NLS-2$
      } else {
        Logger.error(this.getClass().getName(), Messages.getErrorString(
            "MDXConnection.ERROR_0002_INVALID_CONNECTION"properties != null ? properties.toString() : "null"), t); //$NON-NLS-1$ //$NON-NLS-2$
      }
    }
  }
  
  public boolean initialized() {
    return  != null;
  }
  public IPentahoResultSet prepareAndExecuteQuery(final String queryfinal List parametersthrows Exception {
    throw new UnsupportedOperationException();
  }
  public boolean preparedQueriesSupported() {
    return false;
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.pentaho.connection.IPentahoConnection#close()
   */
  public void close() {
    if ( != null) {
      .close();
    }
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.pentaho.connection.IPentahoConnection#getLastQuery()
   */
  public String getLastQuery() {
    return ;
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.pentaho.connection.IPentahoConnection#executeQuery(java.lang.String)
   */
  public IPentahoResultSet executeQuery(final String query) {
    Query mdxQuery = .parseQuery(query);
    Result result = .execute(mdxQuery);
     = new MDXResultSet(result);
    return ;
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.pentaho.connection.IPentahoConnection#isClosed()
   */
  public boolean isClosed() {
    return false;
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.pentaho.connection.IPentahoConnection#isReadOnly()
   */
  public boolean isReadOnly() {
    return true;
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.pentaho.connection.IPentahoConnection#clearWarnings()
   */
  public void clearWarnings() {
    // TODO Auto-generated method stub
  }
  public IPentahoResultSet getResultSet() {
    return ;
  }
  public boolean connect(final Properties props) {
    if ( != null) { // Assume we're open
      close();
    }
    init(props);
    String query = props.getProperty(IPentahoConnection.QUERY_KEY);
    if ((query != null) && (query.length() > 0) && ( != null)) {
      executeQuery(query);
    }
    return  != null;
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.pentaho.connection.IPentahoConnection#setMaxRows(int)
   */
  public void setMaxRows(final int maxRows) {
    // TODO Auto-generated method stub
    throw new UnsupportedOperationException();
  }
  /*
   * (non-Javadoc)
   * 
   * @see org.pentaho.connection.IPentahoConnection#setFetchSize(int)
   */
  public void setFetchSize(final int fetchSize) {
    // TODO Auto-generated method stub
    throw new UnsupportedOperationException();
  }
  public Connection getConnection() {
    return ;
  }

  
return datasource type MDX

Returns:
datasource type
  public String getDatasourceType() {
    return IPentahoConnection.MDX_DATASOURCE;
  }
New to GrepCode? Check out our FAQ X