Package org.pentaho.reporting.engine.classic.core.modules.misc.connections

Source Code of org.pentaho.reporting.engine.classic.core.modules.misc.connections.ConnectionDefinitionIOTest

package org.pentaho.reporting.engine.classic.core.modules.misc.connections;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.UUID;

import junit.framework.TestCase;
import org.pentaho.database.model.DatabaseAccessType;
import org.pentaho.database.model.DatabaseConnection;
import org.pentaho.database.model.IDatabaseConnection;
import org.pentaho.database.service.IDatabaseDialectService;
import org.pentaho.database.util.DatabaseTypeHelper;
import org.pentaho.reporting.engine.classic.core.ClassicEngineBoot;
import org.pentaho.reporting.engine.classic.core.modules.misc.connections.parser.DatabaseConnectionCollection;
import org.pentaho.reporting.engine.classic.core.modules.misc.connections.writer.FileDataSourceMgmtWriter;
import org.pentaho.reporting.libraries.base.boot.ObjectFactory;
import org.pentaho.reporting.libraries.resourceloader.Resource;
import org.pentaho.reporting.libraries.resourceloader.ResourceException;
import org.pentaho.reporting.libraries.resourceloader.ResourceManager;

public class ConnectionDefinitionIOTest extends TestCase
{
  public ConnectionDefinitionIOTest()
  {
  }

  protected void setUp() throws Exception
  {
    ClassicEngineBoot.getInstance().start();
  }

  public void testWriteAndLoad() throws IOException, ResourceException
  {
    // only a limited set of properties is actually persisted. We follow the lead of the platform,
    // which seems to cut out all kettle-specific stuff that has not been abstracted out.
    final IDatabaseConnection connection1 = generateDatabaseConnection();
    final IDatabaseConnection connection2 = generateDatabaseConnection();


    final FileDataSourceMgmtWriter writer = new FileDataSourceMgmtWriter();
    final ByteArrayOutputStream bout = new ByteArrayOutputStream();
    writer.write(new IDatabaseConnection[]{connection1, connection2}, bout);

    final ResourceManager mgr = new ResourceManager();
    mgr.registerDefaults();
    final Resource directly = mgr.createDirectly(bout.toByteArray(), DatabaseConnectionCollection.class);
    final DatabaseConnectionCollection resource = (DatabaseConnectionCollection) directly.getResource();
    final IDatabaseConnection[] connections = resource.getConnections();
    assertEquals(2, connections.length);
    assertEquals(connection1, connections[0]);
    assertEquals(connection2, connections[1]);
  }

  private void assertEquals(final IDatabaseConnection connection1, final IDatabaseConnection connection2)
  {
    assertEquals(connection1.getName(), connection2.getName());
    assertEquals(connection1.getId(), connection2.getId());
    assertEquals(connection1.getAccessType(), connection2.getAccessType());
    assertEquals(connection1.getDataTablespace(), connection2.getDataTablespace());
    assertEquals(connection1.getDatabaseName(), connection2.getDatabaseName());
    assertEquals(connection1.getDatabasePort(), connection2.getDatabasePort());
    assertEquals(connection1.getHostname(), connection2.getHostname());
    assertEquals(connection1.getIndexTablespace(), connection2.getIndexTablespace());
    assertEquals(connection1.getInformixServername(), connection2.getInformixServername());
    assertEquals(connection1.getUsername(), connection2.getUsername());
    assertEquals(connection1.getPassword(), connection2.getPassword());
  }

  public static IDatabaseConnection generateDatabaseConnection()
  {
    final IDatabaseConnection connection = new DatabaseConnection();
    connection.setName(UUID.randomUUID().toString());
    connection.setId(UUID.randomUUID().toString());
    connection.setAccessType(DatabaseAccessType.NATIVE);
    connection.setDataTablespace(UUID.randomUUID().toString());
    connection.setDatabaseName(UUID.randomUUID().toString());
    connection.setDatabasePort("12345");
    connection.setHostname(UUID.randomUUID().toString());
    connection.setIndexTablespace(UUID.randomUUID().toString());
    connection.setInformixServername(UUID.randomUUID().toString());
    connection.setUsername(UUID.randomUUID().toString());
    connection.setPassword(UUID.randomUUID().toString());

    final ObjectFactory objectFactory = ClassicEngineBoot.getInstance().getObjectFactory();
    final IDatabaseDialectService dialectService = objectFactory.get(IDatabaseDialectService.class);
    final DatabaseTypeHelper databaseTypeHelper = new DatabaseTypeHelper(dialectService.getDatabaseTypes());

    connection.setDatabaseType(databaseTypeHelper.getDatabaseTypeByShortName("GENERIC"));
    return connection;
  }
}
TOP

Related Classes of org.pentaho.reporting.engine.classic.core.modules.misc.connections.ConnectionDefinitionIOTest

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.