Package org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql

Examples of org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SQLReportDataFactory


    if (xmlWriter == null)
    {
      throw new NullPointerException();
    }

    final SQLReportDataFactory sqlDataFactory = (SQLReportDataFactory) dataFactory;

    final AttributeList rootAttrs = new AttributeList();
    if (xmlWriter.isNamespaceDefined(SQLDataFactoryModule.NAMESPACE) == false)
    {
      rootAttrs.addNamespaceDeclaration("data", SQLDataFactoryModule.NAMESPACE);
    }
    xmlWriter.writeTag(SQLDataFactoryModule.NAMESPACE, "sql-datasource", rootAttrs, XmlWriterSupport.OPEN);

    writeConnectionInfo(reportWriter, xmlWriter, sqlDataFactory.getConnectionProvider());

    final String[] queryNames = sqlDataFactory.getQueryNames();
    for (int i = 0; i < queryNames.length; i++)
    {
      final String queryName = queryNames[i];
      final String query = sqlDataFactory.getQuery(queryName);
      xmlWriter.writeTag(SQLDataFactoryModule.NAMESPACE, "query", "name", queryName, XmlWriterSupport.OPEN);
      xmlWriter.writeTextNormalized(query, false);
      xmlWriter.writeCloseTag();
    }
    xmlWriter.writeCloseTag();
View Full Code Here


    {
      throw new NullPointerException();
    }


    final SQLReportDataFactory df = (SQLReportDataFactory) dataFactory;

    final String fileName = BundleUtilities.getUniqueName(bundle, state.getFileName(), "datasources/sql-ds{0}.xml");
    if (fileName == null)
    {
      throw new IOException("Unable to generate unique name for SQL-Data-Source");
    }

    final OutputStream outputStream = bundle.createEntry(fileName, "text/xml");
   
    final DefaultTagDescription tagDescription = new DefaultTagDescription();
    tagDescription.setNamespaceHasCData(SQLDataFactoryModule.NAMESPACE, false);
    tagDescription.setElementHasCData(SQLDataFactoryModule.NAMESPACE, "driver", true);
    tagDescription.setElementHasCData(SQLDataFactoryModule.NAMESPACE, "password", true);
    tagDescription.setElementHasCData(SQLDataFactoryModule.NAMESPACE, "path", true);
    tagDescription.setElementHasCData(SQLDataFactoryModule.NAMESPACE, "property", true);
    tagDescription.setElementHasCData(SQLDataFactoryModule.NAMESPACE, "static-query", true);
    tagDescription.setElementHasCData(SQLDataFactoryModule.NAMESPACE, "script", true);
    tagDescription.setElementHasCData(SQLDataFactoryModule.NAMESPACE, "global-script", true);
    tagDescription.setElementHasCData(SQLDataFactoryModule.NAMESPACE, "url", true);
    tagDescription.setElementHasCData(SQLDataFactoryModule.NAMESPACE, "username", true);

    final XmlWriter xmlWriter = new XmlWriter(new OutputStreamWriter(outputStream, "UTF-8"), tagDescription, "  ",
        "\n");
    final AttributeList rootAttrs = new AttributeList();
    rootAttrs.addNamespaceDeclaration("data", SQLDataFactoryModule.NAMESPACE);
    xmlWriter.writeTag(SQLDataFactoryModule.NAMESPACE, "sql-datasource", rootAttrs, XmlWriterSupport.OPEN);

    final AttributeList configAttrs = new AttributeList();
    configAttrs.setAttribute(SQLDataFactoryModule.NAMESPACE, "user-field", df.getUserField());
    configAttrs.setAttribute(SQLDataFactoryModule.NAMESPACE, "password-field", df.getPasswordField());
    xmlWriter.writeTag(SQLDataFactoryModule.NAMESPACE, "config", configAttrs, XmlWriterSupport.CLOSE);

    writeConnectionInfo(bundle, state, xmlWriter, df.getConnectionProvider());

    final String globalScript = df.getGlobalScript();
    final String globalScriptLanguage = df.getGlobalScriptLanguage();
    if (StringUtils.isEmpty(globalScript) == false && StringUtils.isEmpty(globalScriptLanguage) == false)
    {
      xmlWriter.writeTag
          (SQLDataFactoryModule.NAMESPACE, "global-script", "language", globalScriptLanguage, XmlWriterSupport.OPEN);
      xmlWriter.writeTextNormalized(globalScript, false);
      xmlWriter.writeCloseTag();
    }

    xmlWriter.writeTag(SQLDataFactoryModule.NAMESPACE, "query-definitions", XmlWriterSupport.OPEN);
    final String[] queryNames = df.getQueryNames();
    for (int i = 0; i < queryNames.length; i++)
    {
      final String queryName = queryNames[i];
      final String query = df.getQuery(queryName);
      xmlWriter.writeTag(SQLDataFactoryModule.NAMESPACE, "query", "name", queryName, XmlWriterSupport.OPEN);

      xmlWriter.writeTag(SQLDataFactoryModule.NAMESPACE, "static-query", XmlWriterSupport.OPEN);
      xmlWriter.writeTextNormalized(query, false);
      xmlWriter.writeCloseTag();

      final String queryScriptLanguage = df.getScriptingLanguage(queryName);
      final String queryScript = df.getScript(queryName);

      if (StringUtils.isEmpty(queryScript) == false &&
          (StringUtils.isEmpty(queryScriptLanguage) == false || StringUtils.isEmpty(globalScriptLanguage) == false))
      {
        if (StringUtils.isEmpty(queryScriptLanguage))
View Full Code Here

    {
      throw new SAXException(
          "Unable to create SQL Factory: No connection provider specified or recognized.");
    }

    final SQLReportDataFactory dataFactory = new SQLReportDataFactory(provider);
    for (int i = 0; i < queries.size(); i++)
    {
      final PropertyReadHandler handler = queries.get(i);
      dataFactory.setQuery(handler.getName(), handler.getResult(), null, null);
    }

    if (globalScriptReadHandler != null)
    {
      dataFactory.setGlobalScript(globalScriptReadHandler.getResult());
      dataFactory.setGlobalScriptLanguage(globalScriptReadHandler.getName());
    }

    if (queryDefinitionsReadHandler != null)
    {
      final ArrayList<QueryDefinitionReadHandler> scriptedQueries = queryDefinitionsReadHandler.getScriptedQueries();
      for (final QueryDefinitionReadHandler scriptedQuery : scriptedQueries)
      {
        dataFactory.setQuery(scriptedQuery.getName(), scriptedQuery.getQuery(),
            scriptedQuery.getScriptLanguage(), scriptedQuery.getScript());
      }
    }

    this.dataFactory = dataFactory;
View Full Code Here

    final DriverConnectionProvider drc = new DriverConnectionProvider();
    drc.setDriver("org.hsqldb.jdbcDriver");
    drc.setUrl("jdbc:hsqldb:mem:SampleData");
    drc.setProperty("user", "sa");
    drc.setProperty("password", "");
    final SQLReportDataFactory sqlReportDataFactory = new SQLReportDataFactory(drc);
    final DataFactoryMetaData metaData = sqlReportDataFactory.getMetaData();
    assertNull("No name property set, so display-name must be null",
        metaData.getDisplayConnectionName(sqlReportDataFactory));
    drc.setProperty("::pentaho-reporting::name", "test");
    assertEquals("Name property set, so display name must be test",
        "test", metaData.getDisplayConnectionName(sqlReportDataFactory));
    sqlReportDataFactory.setQuery("test", "SELECT * FROM TABLE");

    assertNotNull("QueryHash must exist",
        metaData.getQueryHash(sqlReportDataFactory, "test", new StaticDataRow()));

    final SQLReportDataFactory sqlReportDataFactory2 = new SQLReportDataFactory(drc);
    sqlReportDataFactory2.setQuery("test", "SELECT * FROM TABLE2");

    assertNotEquals("Physical Queries do not match, so query hash must be different",
        metaData.getQueryHash(sqlReportDataFactory, "test", new StaticDataRow()),
        (metaData.getQueryHash(sqlReportDataFactory2, "test", new StaticDataRow())));


    sqlReportDataFactory2.setQuery("test2", "SELECT * FROM TABLE");
    final Object qh1 = metaData.getQueryHash(sqlReportDataFactory, "test", new StaticDataRow());
    final Object qh2 = metaData.getQueryHash(sqlReportDataFactory2, "test2", new StaticDataRow());
    assertEquals("Physical Queries match, so queries are considered the same", qh1, qh2);

    final DriverConnectionProvider drc2 = new DriverConnectionProvider();
    drc.setDriver("org.hsqldb.jdbcDriver");
    drc.setUrl("jdbc:hsqldb:mem:SampleData2");
    drc.setProperty("user", "sa");
    drc.setProperty("password", "");
    final SQLReportDataFactory sqlReportDataFactory3 = new SQLReportDataFactory(drc2);
    sqlReportDataFactory3.setQuery("test", "SELECT * FROM TABLE2");
    assertNotEquals("Connections do not match, so query hash must be different",
        metaData.getQueryHash(sqlReportDataFactory, "test", new StaticDataRow()),
        (metaData.getQueryHash(sqlReportDataFactory3, "test", new StaticDataRow())));

    sqlReportDataFactory3.setQuery("test2", "SELECT * FROM TABLE");
    assertNotEquals("Connections do not match, so queries are considered the same",
        metaData.getQueryHash(sqlReportDataFactory, "test", new StaticDataRow()),
        metaData.getQueryHash(sqlReportDataFactory3, "test2", new StaticDataRow()));
  }
View Full Code Here

    final DriverConnectionProvider drc = new DriverConnectionProvider();
    drc.setDriver("org.hsqldb.jdbcDriver");
    drc.setUrl("jdbc:hsqldb:mem:SampleData");
    drc.setProperty("user", "sa");
    drc.setProperty("password", "");
    final SQLReportDataFactory sqlReportDataFactory = new SQLReportDataFactory(drc);
    initializeDataFactory(sqlReportDataFactory);
    final DataFactoryMetaData metaData = sqlReportDataFactory.getMetaData();
    sqlReportDataFactory.setQuery("test", "SELECT * FROM TABLE WHERE p=${x}");
    String[] fields = metaData.getReferencedFields(sqlReportDataFactory, "test", new StaticDataRow());
    assertNotNull(fields);
    assertEquals(2, fields.length);
    assertEquals("x", fields[0]);
    assertEquals(DataFactory.QUERY_LIMIT, fields[1]);

    sqlReportDataFactory.setQuery("test2", "SELECT * FROM TABLE WHERE p=${x} OR p=${y} OR p=${x}");
    fields = metaData.getReferencedFields(sqlReportDataFactory, "test2", new StaticDataRow());
    assertNotNull(fields);
    assertEquals(3, fields.length);
    assertEquals("x", fields[0]);
    assertEquals("y", fields[1]);
View Full Code Here

    final DriverConnectionProvider drc = new DriverConnectionProvider();
    drc.setDriver("org.hsqldb.jdbcDriver");
    drc.setUrl("jdbc:hsqldb:mem:SampleData");
    drc.setProperty("user", "sa");
    drc.setProperty("password", "");
    final SQLReportDataFactory sqlReportDataFactory = new SQLReportDataFactory(drc);
    sqlReportDataFactory.setQuery("default", query);
    return sqlReportDataFactory;
  }
View Full Code Here

    driverConnectionProvider.setDriver( "org.hsqldb.jdbcDriver" );
    driverConnectionProvider.setUrl( "jdbc:hsqldb:mem:SampleData" );
    driverConnectionProvider.setProperty( "user", "sa" );
    driverConnectionProvider.setProperty( "password", "" );

    final SQLReportDataFactory sqlReportDataFactory = new SQLReportDataFactory( driverConnectionProvider );

    sqlReportDataFactory.setQuery( "default", "SELECT Count(*) FROM CUSTOMERS", "Groovy",
        "import org.pentaho.reporting.engine.classic.core.util.TypedTableModel\n"
            + "def postProcessResult(query, queryName, dataRow, tableModel){\n"
            + "TypedTableModel model = new TypedTableModel([\"column1\"] as String[], [String.class] as Class[]);"
            + "model.addRow(\"row1\");" + "return model;" + "}" );

    try {
      sqlReportDataFactory.initialize( new DesignTimeDataFactoryContext() );
      TableModel data = sqlReportDataFactory.queryData( "default", new StaticDataRow() );
      Assert.assertEquals( 1, data.getColumnCount() );
      Assert.assertEquals( 1, data.getRowCount() );
      Assert.assertEquals( "row1", data.getValueAt( 0, 0 ) );
    } finally {
      sqlReportDataFactory.close();
    }
  }
View Full Code Here

  public void testMetaDataJndi()
  {
    final JndiConnectionProvider drc = new JndiConnectionProvider();
    drc.setConnectionPath("sampledata");

    final SQLReportDataFactory sqlReportDataFactory = new SQLReportDataFactory(drc);
    final DataFactoryMetaData metaData = sqlReportDataFactory.getMetaData();
    assertEquals("Name property set, so display name must be test",
        "sampledata", metaData.getDisplayConnectionName(sqlReportDataFactory));
    sqlReportDataFactory.setQuery("test", "SELECT * FROM TABLE");

    assertNotNull("QueryHash must exist",
        metaData.getQueryHash(sqlReportDataFactory, "test", new StaticDataRow()));

    final SQLReportDataFactory sqlReportDataFactory2 = new SQLReportDataFactory(drc);
    sqlReportDataFactory2.setQuery("test", "SELECT * FROM TABLE2");

    assertNotEquals("Physical Queries do not match, so query hash must be different",
        metaData.getQueryHash(sqlReportDataFactory, "test", new StaticDataRow()),
        (metaData.getQueryHash(sqlReportDataFactory2, "test", new StaticDataRow())));


    sqlReportDataFactory2.setQuery("test2", "SELECT * FROM TABLE");
    final Object qh1 = metaData.getQueryHash(sqlReportDataFactory, "test", new StaticDataRow());
    final Object qh2 = metaData.getQueryHash(sqlReportDataFactory2, "test2", new StaticDataRow());
    assertEquals("Physical Queries match, so queries are considered the same", qh1, qh2);

    final JndiConnectionProvider drc2 = new JndiConnectionProvider();
    drc.setConnectionPath("sampledata2");
    final SQLReportDataFactory sqlReportDataFactory3 = new SQLReportDataFactory(drc2);
    sqlReportDataFactory3.setQuery("test", "SELECT * FROM TABLE2");
    assertNotEquals("Connections do not match, so query hash must be different",
        metaData.getQueryHash(sqlReportDataFactory, "test", new StaticDataRow()),
        (metaData.getQueryHash(sqlReportDataFactory3, "test", new StaticDataRow())));

    sqlReportDataFactory3.setQuery("test2", "SELECT * FROM TABLE");
    assertNotEquals("Connections do not match, so queries are considered the same",
        metaData.getQueryHash(sqlReportDataFactory, "test", new StaticDataRow()),
        metaData.getQueryHash(sqlReportDataFactory3, "test2", new StaticDataRow()));
  }
View Full Code Here

  }

  protected DataFactory createDataFactory(final String query)
  {
    final JndiConnectionProvider drc = new JndiConnectionProvider("SampleData", null, null);
    final SQLReportDataFactory sqlReportDataFactory = new SQLReportDataFactory(drc);
    sqlReportDataFactory.setQuery("default", query);
    return sqlReportDataFactory;
  }
View Full Code Here

  public void testWrite() throws Exception
  {
    final JndiConnectionProvider dummy = new JndiConnectionProvider();
    dummy.setConnectionPath("Dummy");
    final SQLReportDataFactory  df = new SQLReportDataFactory(dummy);
    df.setGlobalScript("GlobalScript");
    df.setGlobalScriptLanguage("GlobalScriptLanguage");
    df.setQuery("QueryName", "QueryText", "ScriptLanguage", "Script");
    final MasterReport report = new MasterReport();
    report.setDataFactory(df);

    final MasterReport masterReport = postProcess(report);
    final SQLReportDataFactory dataFactory = (SQLReportDataFactory) masterReport.getDataFactory();
    assertEquals("QueryName", dataFactory.getQueryNames()[0]);
    assertEquals("QueryText", dataFactory.getQuery("QueryName"));
    assertEquals("ScriptLanguage", dataFactory.getScriptingLanguage("QueryName"));
    assertEquals("Script", dataFactory.getScript("QueryName"));
    assertEquals("GlobalScript", dataFactory.getGlobalScript());
    assertEquals("GlobalScriptLanguage", dataFactory.getGlobalScriptLanguage());
  }
View Full Code Here

TOP

Related Classes of org.pentaho.reporting.engine.classic.core.modules.misc.datafactory.sql.SQLReportDataFactory

Copyright © 2018 www.massapicom. 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.