Package org.pentaho.test.platform.plugin.services.connections

Source Code of org.pentaho.test.platform.plugin.services.connections.ConnectionTest

/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2002-2013 Pentaho Corporation..  All rights reserved.
*/

package org.pentaho.test.platform.plugin.services.connections;

import org.pentaho.commons.connection.IPentahoConnection;
import org.pentaho.commons.connection.IPentahoResultSet;
import org.pentaho.platform.api.engine.IPentahoSession;
import org.pentaho.platform.engine.core.system.PentahoSystem;
import org.pentaho.platform.engine.core.system.StandaloneSession;
import org.pentaho.platform.engine.services.connection.PentahoConnectionFactory;
import org.pentaho.test.platform.engine.core.BaseTest;

import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.util.Map;
import java.util.Properties;

//import org.pentaho.platform.api.engine.IRuntimeContext;
//import org.pentaho.platform.plugin.services.messages.Messages;
//import org.pentaho.platform.util.xml.dom4j.DataGrid;

/**
* @author wseyler
*
*         TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Style -
*         Code Templates
*/
@SuppressWarnings( "nls" )
public class ConnectionTest extends BaseTest {
  private static final String SOLUTION_PATH = "test-src/connections-solution";
  private static final String ALT_SOLUTION_PATH = "test-src/connections-solution";
  private static final String PENTAHO_XML_PATH = "/system/pentaho.xml";

  public String getSolutionPath() {
    File file = new File( SOLUTION_PATH + PENTAHO_XML_PATH );
    if ( file.exists() ) {
      System.out.println( "File exist returning " + SOLUTION_PATH );
      return SOLUTION_PATH;
    } else {
      System.out.println( "File does not exist returning " + ALT_SOLUTION_PATH );
      return ALT_SOLUTION_PATH;
    }

  }

  public Map getRequiredListeners() {
    Map listeners = super.getRequiredListeners();
    listeners.put( "mondrian", "mondrian" ); //$NON-NLS-1$ //$NON-NLS-2$
    return listeners;
  }

  // public void testSQLConnection() {
  // startTest();
  //        OutputStream outputStream = this.getOutputStream("ConnectionTest.testSQLConnection", ".csv"); //$NON-NLS-1$ //$NON-NLS-2$
  // IPentahoSession session = new StandaloneSession("Admin");
  //        IPentahoConnection connection = PentahoConnectionFactory.getConnection(IPentahoConnection.SQL_DATASOURCE, session, this); //$NON-NLS-1$
  // try {
  //            IPentahoResultSet results = connection.executeQuery("select * from DEPARTMENT_MANAGERS"); //$NON-NLS-1$
  // Object[][] columnHeaders = results.getMetaData().getColumnHeaders();
  // for (int row = 0; row < columnHeaders.length; row++) {
  // for (int col = 0; col < columnHeaders[0].length; col++) {
  // outputStream.write(columnHeaders[row][col].toString().getBytes());
  //                    outputStream.write(",".getBytes()); //$NON-NLS-1$
  // }
  //                outputStream.write("\n".getBytes()); //$NON-NLS-1$
  // }
  // Object[] row = results.next();
  // while (row != null) {
  // for (int i = 0; i < row.length; i++) {
  // outputStream.write(row[i].toString().getBytes());
  //                    outputStream.write(",".getBytes()); //$NON-NLS-1$
  // }
  //                outputStream.write("\n".getBytes()); //$NON-NLS-1$
  // row = results.next();
  // }
  //
  // } catch (Exception e) {
  // // TODO Auto-generated catch block
  // e.printStackTrace();
  // }
  // connection.close();
  // finishTest();
  // }

  /*
   * public void testConnectionWithPropertyName() { startTest(); OutputStream outputStream =
   * this.getOutputStream("ConnectionTest.testConnectionWithPropertyName", ".csv"); //$NON-NLS-1$ //$NON-NLS-2$
   *
   * IPentahoConnection connection = PentahoConnectionFactory.getConnection("datasource", this); //$NON-NLS-1$ // @TODO
   * Need to know how to use this getConnection method. Where does this property name comes from
   *
   * try { IPentahoResultSet results = connection.executeQuery("select * from DEPARTMENT_MANAGERS"); //$NON-NLS-1$
   * Object[][] columnHeaders = results.getMetaData().getColumnHeaders(); for (int row = 0; row < columnHeaders.length;
   * row++) { for (int col = 0; col < columnHeaders[0].length; col++) {
   * outputStream.write(columnHeaders[row][col].toString().getBytes()); outputStream.write(",".getBytes());
   * //$NON-NLS-1$ } outputStream.write("\n".getBytes()); //$NON-NLS-1$ } Object[] row = results.next(); while (row !=
   * null) { for (int i = 0; i < row.length; i++) { outputStream.write(row[i].toString().getBytes());
   * outputStream.write(",".getBytes()); //$NON-NLS-1$ } outputStream.write("\n".getBytes()); //$NON-NLS-1$ row =
   * results.next(); }
   *
   * } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } connection.close(); finishTest();
   * }
   */

  public void testMDXConnectionWithPropertiesFile() {
    startTest();
    OutputStream outputStream = this.getOutputStream( "ConnectionTest.testMDXConnectionWithPropertiesFile", ".csv" ); //$NON-NLS-1$ //$NON-NLS-2$
    IPentahoSession session = new StandaloneSession( "Admin" );
    Properties mdxProperties = new Properties();
    try {
      mdxProperties.load( new FileInputStream( "mdxConnection.properties" ) ); //$NON-NLS-1$
    } catch ( Exception e ) {
      e.printStackTrace();
    }

    IPentahoConnection connection =
        PentahoConnectionFactory.getConnection( IPentahoConnection.MDX_DATASOURCE, mdxProperties, session, this );
    // @TODO Need to know how to use this getConnection method. Where does this property name comes from

    try {
      IPentahoResultSet results = connection.executeQuery( "select * from DEPARTMENT_MANAGERS" ); //$NON-NLS-1$
      Object[][] columnHeaders = results.getMetaData().getColumnHeaders();
      for ( int row = 0; row < columnHeaders.length; row++ ) {
        for ( int col = 0; col < columnHeaders[0].length; col++ ) {
          outputStream.write( columnHeaders[row][col].toString().getBytes() );
          outputStream.write( ",".getBytes() ); //$NON-NLS-1$
        }
        outputStream.write( "\n".getBytes() ); //$NON-NLS-1$
      }
      Object[] row = results.next();
      while ( row != null ) {
        for ( int i = 0; i < row.length; i++ ) {
          outputStream.write( row[i].toString().getBytes() );
          outputStream.write( ",".getBytes() ); //$NON-NLS-1$
        }
        outputStream.write( "\n".getBytes() ); //$NON-NLS-1$
        row = results.next();
      }

    } catch ( Exception e ) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    connection.close();
    finishTest();
  }

  public void testSQLConnectionWithAllInfo() {
    startTest();
    IPentahoSession session = new StandaloneSession( "Admin" );
    OutputStream outputStream = this.getOutputStream( "ConnectionTest.testConnectionWithPropertyName", ".csv" ); //$NON-NLS-1$ //$NON-NLS-2$
    File file =
        new File( PentahoSystem.getApplicationContext().getSolutionPath( "test/datasources/SampleData.mondrian.xml" ) ); //$NON-NLS-1$
    IPentahoConnection connection =
        PentahoConnectionFactory
            .getConnection(
              IPentahoConnection.MDX_DATASOURCE,
              "jdbc:hsqldb:hsql://localhost:9001/sampledata; Catalog=" + file.toURI().toString(), "mondrian", "sa", "",
              session, this ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$

    try {
      IPentahoResultSet results = connection.executeQuery( "select * from DEPARTMENT_MANAGERS" ); //$NON-NLS-1$
      Object[][] columnHeaders = results.getMetaData().getColumnHeaders();
      for ( int row = 0; row < columnHeaders.length; row++ ) {
        for ( int col = 0; col < columnHeaders[0].length; col++ ) {
          outputStream.write( columnHeaders[row][col].toString().getBytes() );
          outputStream.write( ",".getBytes() ); //$NON-NLS-1$
        }
        outputStream.write( "\n".getBytes() ); //$NON-NLS-1$
      }
      Object[] row = results.next();
      while ( row != null ) {
        for ( int i = 0; i < row.length; i++ ) {
          outputStream.write( row[i].toString().getBytes() );
          outputStream.write( ",".getBytes() ); //$NON-NLS-1$
        }
        outputStream.write( "\n".getBytes() ); //$NON-NLS-1$
        row = results.next();
      }

    } catch ( Exception e ) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    connection.close();
    finishTest();
  }

  /**
     *
     */
  @SuppressWarnings( "deprecation" )
  public void testMDXConnection() {
    startTest();
    IPentahoSession session = new StandaloneSession( "Admin" );
    OutputStream outputStream = this.getOutputStream( "ConnectionTest.testSQLConnection", ".csv" ); //$NON-NLS-1$ //$NON-NLS-2$
    File file =
        new File( PentahoSystem.getApplicationContext().getSolutionPath( "test/datasources/SampleData.mondrian.xml" ) ); //$NON-NLS-1$
    IPentahoConnection connection =
        PentahoConnectionFactory
            .getConnection(
              IPentahoConnection.MDX_DATASOURCE,
              "jdbc:hsqldb:hsql://localhost:9001/sampledata; Catalog=" + file.toURI().toString(), "mondrian", "sa", "",
              session, null ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
    String query =
        "select {[Measures].[Actual], [Measures].[Budget]} on rows, {[Region].[All Regions]} ON columns from [Quadrant Analysis] WHERE ([Positions].[All Positions])"; //$NON-NLS-1$

    try {
      IPentahoResultSet results = connection.executeQuery( query );
      Object[][] columnHeaders = results.getMetaData().getColumnHeaders();
      for ( int row = columnHeaders.length - 1; row >= 0; row-- ) {
        for ( int col = 0; col < columnHeaders[row].length; col++ ) {
          outputStream.write( ( columnHeaders[row][col] + "\t" ).getBytes() ); //$NON-NLS-1$
        }
        outputStream.write( '\n' );
      }

      Object[][] rowHeaders = results.getMetaData().getRowHeaders();
      int rowIdx = 0;

      Object[] row = results.next();
      while ( row != null ) {
        for ( int colIdx = rowHeaders[rowIdx].length - 1; colIdx >= 0; colIdx-- ) {
          outputStream.write( ( rowHeaders[rowIdx][colIdx].toString() + "\t" ).getBytes() ); //$NON-NLS-1$
        }
        for ( int colIdx = 0; colIdx < row.length; colIdx++ ) {
          outputStream.write( ( row[colIdx] + "\t" ).getBytes() ); //$NON-NLS-1$
        }
        outputStream.write( '\n' );
        row = results.next();
        rowIdx++;
      }
      results.close();

    } catch ( Exception e ) {
      e.printStackTrace();
    }
    connection.close();
    finishTest();
  }

  /**
   * This test currently fails, due to Mondrian not understanding the catalog URL. I'm guessing we're not using the
   * latest mondrian libs that support mondrian
   */
  @SuppressWarnings( "deprecation" )
  public void testMDX_VFS_zipped_Schema() {
    startTest();

    // StandaloneSession session = new StandaloneSession(Messages.getString("BaseTest.DEBUG_JUNIT_SESSION")); //$NON-NLS-1$
    // SolutionRepositoryVfs.setSolutionRepository( PentahoSystem.getSolutionRepository( session ) );
    IPentahoSession session = new StandaloneSession( "Admin" );
    OutputStream outputStream = this.getOutputStream( "ConnectionTest.testSQLConnection", ".csv" ); //$NON-NLS-1$ //$NON-NLS-2$
    File file =
        new File( PentahoSystem.getApplicationContext().getSolutionPath( "test/datasources/SampleDataSchema.zip" ) ); //$NON-NLS-1$
    String catalog = "zip:" + file.toURI().toString() + "!/SampleData.mondrian.xml"; //$NON-NLS-1$ //$NON-NLS-2$
    catalog = "solution:/test/datasources/SampleData.mondrian.xml;vfs=true"; //$NON-NLS-1$
    IPentahoConnection connection =
        PentahoConnectionFactory.getConnection( IPentahoConnection.MDX_DATASOURCE,
            "jdbc:hsqldb:hsql://localhost:9001/sampledata; Catalog=" + catalog, "mondrian", "sa", "", session, null ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
    String query =
        "select {[Measures].[Actual], [Measures].[Budget]} on rows, {[Region].[All Regions]} ON columns from [Quadrant Analysis] WHERE ([Positions].[All Positions])"; //$NON-NLS-1$

    try {
      IPentahoResultSet results = connection.executeQuery( query );
      Object[][] columnHeaders = results.getMetaData().getColumnHeaders();
      for ( int row = columnHeaders.length - 1; row >= 0; row-- ) {
        for ( int col = 0; col < columnHeaders[row].length; col++ ) {
          outputStream.write( ( columnHeaders[row][col] + "\t" ).getBytes() ); //$NON-NLS-1$
        }
        outputStream.write( '\n' );
      }

      Object[][] rowHeaders = results.getMetaData().getRowHeaders();
      int rowIdx = 0;

      Object[] row = results.next();
      while ( row != null ) {
        for ( int colIdx = rowHeaders[rowIdx].length - 1; colIdx >= 0; colIdx-- ) {
          outputStream.write( ( rowHeaders[rowIdx][colIdx].toString() + "\t" ).getBytes() ); //$NON-NLS-1$
        }
        for ( int colIdx = 0; colIdx < row.length; colIdx++ ) {
          outputStream.write( ( row[colIdx] + "\t" ).getBytes() ); //$NON-NLS-1$
        }
        outputStream.write( '\n' );
        row = results.next();
        rowIdx++;
      }
      results.close();

    } catch ( Exception e ) {
      e.printStackTrace();
    }
    connection.close();
    finishTest();
  }

  public void testXQueryConnection() {
    startTest();
    IPentahoSession session = new StandaloneSession( "Admin" );
    OutputStream outputStream = this.getOutputStream( "ConnectionTest.testSQLConnection", ".csv" ); //$NON-NLS-1$ //$NON-NLS-2$
    try {
      IPentahoConnection connection =
          PentahoConnectionFactory.getConnection( IPentahoConnection.XML_DATASOURCE, session, this );
      String query =
          "doc(\"" + PentahoSystem.getApplicationContext().getSolutionPath( "samples/datasources/books.xml" ) + "\")/bookstore/book"; //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
      query = query.replace( '\\', '/' );
      IPentahoResultSet results = connection.executeQuery( query );
      assertNotNull( results );
      Object[][] columnHeaders = results.getMetaData().getColumnHeaders();
      for ( int row = 0; row < columnHeaders.length; row++ ) {
        for ( int col = 0; col < columnHeaders[0].length; col++ ) {
          outputStream.write( columnHeaders[row][col].toString().getBytes() );
          outputStream.write( ',' );
        }
        outputStream.write( '\n' );
      }
      Object[] row = results.next();
      while ( row != null ) {
        for ( int i = 0; i < row.length; i++ ) {
          outputStream.write( row[i].toString().getBytes() );
          outputStream.write( ',' );
        }
        outputStream.write( '\n' );
        row = results.next();
      }

    } catch ( Exception e ) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    finishTest();
  }

  public static void main( String[] args ) {
    ConnectionTest test = new ConnectionTest();
    test.setUp();
    try {
      // test.testMdx();
      // test.testSQLConnection();
      test.testMDXConnection();
      test.testMDX_VFS_zipped_Schema();
      test.testXQueryConnection();
      // test.testXQueryAction();
      // test.testRelationalGrid();
      // test.testConnectionWithPropertyName();
      test.testMDXConnectionWithPropertiesFile();
      test.testSQLConnectionWithAllInfo();

    } finally {
      test.tearDown();
      BaseTest.shutdown();
    }
  }
}
TOP

Related Classes of org.pentaho.test.platform.plugin.services.connections.ConnectionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.