2014-10-30 5 views
0

В конструкторе отчетов Pentaho (PRD) я хочу подключиться к моему источнику данных с помощью скрипта Groovy (или сценария EMCAScript), обратившись к JNDI, созданному в файле default.properties. Таким образом, я создам многозначный список, содержащий имена JNDI, и подключится к источнику данных на основе JNDI, выбранного в параметре.Доступ к источнику данных Pentaho от Groovy

Сценарий:

import groovy.sql.Sql 
import javax.naming.InitialContext 
import javax.sql.DataSource 

class SqlClient { 

    InitialContext context = new InitialContext() 
    DataSource dataSource = context.lookup("OLTP") as DataSource 
    def sql = new Sql(dataSource) 
    sql.execute("SELECT * FROM Person.User_JNDI") 
    TypedTableModel model = new TypedTableModel(); 
    while(sql.next()) 
    model.addRow(new Object [] {rs.getString(1)});  
    c.close(); 
    return model; 
} 

Я получаю следующее сообщение об ошибке: вызвано следующими причинами: org.apache.bsf.BSFException: исключение из Groovy: org.codehaus.groovy.control.MultipleCompilationErrorsException: запуск не удалось: выражение: 11: неожиданный маркер: SQL @ строка 11, столбец 5. sql.execute ("SELECT * FROM Person.User_JNDI")

Кроме того, PRD ожидает сценарий, чтобы вернуть модель, вероятно, что-то делать с классом TypedtableModel.

Может ли кто-нибудь дать мне пример скрипта Groovy?

ответ

0

Предполагая, что вы заполнили default.properties, как он говорит here, вы должны быть в состоянии получить доступ к источнику данных с чем-то вроде:

import groovy.sql.Sql 

import javax.naming.InitialContext 
import javax.sql.DataSource 

class SqlClient { 

    InitialContext context = new InitialContext() 
    DataSource dataSource = context.lookup("SampleData") as DataSource 
    def sql = new Sql(dataSource) 
    sql.execute ''' 
     select * from ... ''' 
    ... 
} 

Sql Использование экземпляра.

+0

Спасибо @ mschonaker. Я добавил скрипт выше, добавив запрос (выберите 1), чтобы проверить, подключается ли он к источнику данных, указанному JNDI. Но когда я нахожусь в порядке в дизайнере отчетов Pentaho (PRD), он ничего не делает. Я выбрал Groovy-скрипт на вкладке «Глобальные скрипты» в окне «Источник данных JDBC». Как проверить, успешно ли он подключен к указанному JNDI? –

+0

Может ли кто-нибудь сказать мне, как подключиться к источнику данных, используя jndi в моем оригинальном скрипте? Я использовал приведенный выше сценарий, но когда я нажимаю кнопку «ОК», кнопка просто становится синей, и ничего не происходит. Мое требование - изменить данные отчета, когда пользователь выбирает желаемый JNDI в списке параметров отчета. Итак, у меня будет параметр, содержащий имена JNDI и доступ к этому параметру в моем скрипте Groovy. –

Смежные вопросы