public IPentahoResultSet getResultSet(final ReportSpec reportSpec) throws Exception { String jndiName = reportSpec.getReportSpecChoice().getJndiSource(); IPentahoConnection connection = null; if (reportSpec.getIsMDX()) { // did this ever work?? String connectStr = ""; // $NON-NLS-1$ IDBDatasourceService datasourceService = PentahoSystem.getObjectFactory().get(IDBDatasourceService.class, null); String dsName = datasourceService.getDSBoundName(jndiName); if (dsName != null) { connectStr = "dataSource=" + dsName + "; Catalog=mondrian"; // $NON-NLS-1$ //$NON-NLS-2$ } else { error( Messages.getInstance() .getErrorString("MDXBaseComponent.ERROR_0005_INVALID_CONNECTION")); // $NON-NLS-1$ return null; } Properties props = new Properties(); props.setProperty(IPentahoConnection.CONNECTION, connectStr); props.setProperty(IPentahoConnection.PROVIDER, reportSpec.getMondrianCubeDefinitionPath()); connection = PentahoConnectionFactory.getConnection( IPentahoConnection.MDX_DATASOURCE, props, getSession(), this); } else { connection = PentahoConnectionFactory.getConnection( IPentahoConnection.SQL_DATASOURCE, jndiName, getSession(), this); } String query = ReportParameterUtility.setupParametersForActionSequence(reportSpec.getQuery()); query = setupQueryParameters(query); IPentahoResultSet res = connection.executeQuery(query); return res; }
@Override protected PentahoTableDataFactory getDataFactory() throws ClassNotFoundException, InstantiationException, IllegalAccessException, Exception { PentahoTableDataFactory factory = null; if (reportSpec != null) { if (!isDefinedInput(AbstractJFreeReportComponent.REPORTGENERATEDEFN_REPORTTEMP_PERFQRY) || "true" .equals( getInputParameter( AbstractJFreeReportComponent .REPORTGENERATEDEFN_REPORTTEMP_PERFQRY))) { //$NON-NLS-1$ if (reportSpec.getReportSpecChoice().getXqueryUrl() != null) { // handle xquery } else { IPentahoResultSet pentahoResultSet = getResultSet(getReportSpec()); factory = new PentahoTableDataFactory(); pentahoResultSet.beforeFirst(); factory.addTable( AbstractJFreeReportComponent.DATACOMPONENT_DEFAULTINPUT, new PentahoTableModel(pentahoResultSet)); } } else { factory = super.getDataFactory(); } } else { factory = super.getDataFactory(); } return factory; }
@Override protected boolean executeAction() { boolean result = true; try { ReportSpec reportSpec = getReportSpec(); if (reportSpec != null) { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ReportGenerationUtility.createJFreeReportXML( reportSpec, outputStream, 0, 0, false, "", 0, 0); // $NON-NLS-1$ String reportDefinition = new String(outputStream.toByteArray()); addTempParameterObject( AbstractJFreeReportComponent.REPORTGENERATEDEFN_REPORTDEFN, reportDefinition); // if that parameter is not defined, we do query for backward compatibility. if (!isDefinedInput(AbstractJFreeReportComponent.REPORTGENERATEDEFN_REPORTTEMP_PERFQRY) || "true" .equals( getInputParameter( AbstractJFreeReportComponent .REPORTGENERATEDEFN_REPORTTEMP_PERFQRY))) { //$NON-NLS-1$ if (reportSpec.getReportSpecChoice().getXqueryUrl() != null) { // handle xquery } else { try { addTempParameterObject( AbstractJFreeReportComponent.DATACOMPONENT_DATAINPUT, getResultSet(reportSpec)); } catch (Exception e) { result = false; } } } } } catch (FileNotFoundException ex) { error(ex.getLocalizedMessage()); result = false; } return result; }