Search in sources :

Example 21 with MemoryMetaData

use of org.pentaho.commons.connection.memory.MemoryMetaData in project pentaho-platform by pentaho.

the class MultipleComponentIT method getResultSet.

private IPentahoResultSet getResultSet() {
    // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    Object[][] columnHeaders = new Object[][] { { "COL1", "COL2", "COL3" } };
    IPentahoMetaData md = new MemoryMetaData(columnHeaders, null);
    MemoryResultSet rs = new MemoryResultSet(md);
    // $NON-NLS-1$ //$NON-NLS-2$
    rs.addRow(new Object[] { "DATA1", "DATA2", new Date() });
    rs.isScrollable();
    return rs;
}
Also used : MemoryMetaData(org.pentaho.commons.connection.memory.MemoryMetaData) IPentahoMetaData(org.pentaho.commons.connection.IPentahoMetaData) Date(java.util.Date) MemoryResultSet(org.pentaho.commons.connection.memory.MemoryResultSet)

Example 22 with MemoryMetaData

use of org.pentaho.commons.connection.memory.MemoryMetaData in project pentaho-platform by pentaho.

the class OpenFlashChartComponentTest method testAutoRange.

@Test
public void testAutoRange() throws Exception {
    // Line Chart
    JavaScriptResultSet query_result = new JavaScriptResultSet();
    List<String> cols = new ArrayList<String>();
    cols.add("MESES");
    cols.add("ACTUAL");
    cols.add("ANTERIOR");
    query_result.setMetaData(new MemoryMetaData(cols));
    query_result.addRow(new Object[] { "Enero", 0, 0 });
    query_result.addRow(new Object[] { "Febrero", 0, 0 });
    query_result.addRow(new Object[] { "Marzo", 0, 0 });
    query_result.addRow(new Object[] { "Abril", 0, 0 });
    query_result.addRow(new Object[] { "Mayo", 0, 0 });
    query_result.addRow(new Object[] { "Junio", 0, 0 });
    query_result.addRow(new Object[] { "Julio", 6, 3 });
    Document chartDocument = XmlDom4JHelper.getDocFromString("<chart><chart-type>LineChart</chart-type></chart>", new PentahoEntityResolver());
    Node chartNode = chartDocument.selectSingleNode("chart");
    String json = PentahoOFC4JChartHelper.generateChartJson(chartNode, query_result, false, null);
    System.out.println(json);
    Assert.assertTrue(json.indexOf("\"min\":0") >= 0 && json.indexOf("\"max\":6") >= 0);
}
Also used : JavaScriptResultSet(org.pentaho.platform.plugin.services.connections.javascript.JavaScriptResultSet) Node(org.dom4j.Node) ArrayList(java.util.ArrayList) MemoryMetaData(org.pentaho.commons.connection.memory.MemoryMetaData) Document(org.dom4j.Document) PentahoEntityResolver(org.pentaho.platform.engine.services.solution.PentahoEntityResolver) Test(org.junit.Test)

Example 23 with MemoryMetaData

use of org.pentaho.commons.connection.memory.MemoryMetaData in project pentaho-platform by pentaho.

the class XQueryIT method testCopyMemoryResultSet.

public void testCopyMemoryResultSet() {
    MemoryMetaData metadata = new MemoryMetaData(new String[][] { { "col1", "col2" } }, null);
    MemoryResultSet data1 = new MemoryResultSet(metadata);
    data1.addRow(new Object[] { "a", new Integer(1) });
    data1.addRow(new Object[] { "b", new Integer(2) });
    data1.addRow(new Object[] { "c", new Integer(3) });
    MemoryResultSet data = (MemoryResultSet) data1.memoryCopy();
    assertNotNull(data.getMetaData());
    assertNotNull(data.getMetaData().getColumnHeaders());
    assertNull(data.getMetaData().getRowHeaders());
    assertEquals(2, data.getMetaData().getColumnCount());
    assertEquals(1, data.getMetaData().getColumnHeaders().length);
    assertEquals(2, data.getMetaData().getColumnHeaders()[0].length);
    assertEquals("col1", data.getMetaData().getColumnHeaders()[0][0]);
    assertEquals("col2", data.getMetaData().getColumnHeaders()[0][1]);
    assertEquals(3, data.getRowCount());
    assertEquals("a", data.getValueAt(0, 0));
    assertEquals(1, data.getValueAt(0, 1));
    assertEquals("b", data.getValueAt(1, 0));
    assertEquals(2, data.getValueAt(1, 1));
    assertEquals("c", data.getValueAt(2, 0));
    assertEquals(3, data.getValueAt(2, 1));
}
Also used : MemoryMetaData(org.pentaho.commons.connection.memory.MemoryMetaData) MemoryResultSet(org.pentaho.commons.connection.memory.MemoryResultSet)

Example 24 with MemoryMetaData

use of org.pentaho.commons.connection.memory.MemoryMetaData in project pentaho-platform by pentaho.

the class XMLABaseComponent method executeQuery.

/**
 * Execute query
 *
 * @param query   - MDX to be executed
 * @param catalog
 * @param handler Callback handler
 * @throws XMLAException
 */
public boolean executeQuery(final String query, final String catalog) throws XMLAException {
    Object[][] columnHeaders = null;
    Object[][] rowHeaders = null;
    Object[][] data = null;
    int columnCount = 0;
    int rowCount = 0;
    SOAPConnection connection = null;
    SOAPMessage reply = null;
    try {
        connection = scf.createConnection();
        SOAPMessage msg = mf.createMessage();
        MimeHeaders mh = msg.getMimeHeaders();
        // $NON-NLS-1$
        mh.setHeader("SOAPAction", XMLABaseComponent.EXECUTE_ACTION);
        SOAPPart soapPart = msg.getSOAPPart();
        SOAPEnvelope envelope = soapPart.getEnvelope();
        envelope.setEncodingStyle(XMLABaseComponent.ENCODING_STYLE);
        SOAPBody body = envelope.getBody();
        // $NON-NLS-1$//$NON-NLS-2$
        Name nEx = envelope.createName("Execute", "", XMLABaseComponent.XMLA_URI);
        SOAPElement eEx = body.addChildElement(nEx);
        eEx.setEncodingStyle(XMLABaseComponent.ENCODING_STYLE);
        // add the parameters
        // COMMAND parameter
        // <Command>
        // <Statement>select [Measures].members on Columns from
        // Sales</Statement>
        // </Command>
        // $NON-NLS-1$ //$NON-NLS-2$
        Name nCom = envelope.createName("Command", "", XMLABaseComponent.XMLA_URI);
        SOAPElement eCommand = eEx.addChildElement(nCom);
        // $NON-NLS-1$ //$NON-NLS-2$
        Name nSta = envelope.createName("Statement", "", XMLABaseComponent.XMLA_URI);
        SOAPElement eStatement = eCommand.addChildElement(nSta);
        eStatement.addTextNode(query);
        // <Properties>
        // <PropertyList>
        // <DataSourceInfo>Provider=MSOLAP;Data
        // Source=local</DataSourceInfo>
        // <Catalog>Foodmart 2000</Catalog>
        // <Format>Multidimensional</Format>
        // <AxisFormat>TupleFormat</AxisFormat> oder "ClusterFormat"
        // </PropertyList>
        // </Properties>
        Map paraList = new HashMap();
        // $NON-NLS-1$
        paraList.put("DataSourceInfo", dataSource);
        // $NON-NLS-1$
        paraList.put("Catalog", catalog);
        // $NON-NLS-1$ //$NON-NLS-2$
        paraList.put("Format", "Multidimensional");
        // $NON-NLS-1$ //$NON-NLS-2$
        paraList.put("AxisFormat", "TupleFormat");
        // $NON-NLS-1$ //$NON-NLS-2$
        addParameterList(envelope, eEx, "Properties", "PropertyList", paraList);
        msg.saveChanges();
        // $NON-NLS-1$
        debug("Request for Execute");
        logSoapMsg(msg);
        // run the call
        reply = connection.call(msg, url);
        // $NON-NLS-1$
        debug("Reply from Execute");
        logSoapMsg(reply);
        // error check
        errorCheck(reply);
        // process the reply
        SOAPElement eRoot = findExecRoot(reply);
        // for each axis, get the positions (tuples)
        // $NON-NLS-1$ //$NON-NLS-2$
        Name name = envelope.createName("Axes", "", XMLABaseComponent.MDD_URI);
        SOAPElement eAxes = selectSingleNode(eRoot, name);
        if (eAxes == null) {
            // $NON-NLS-1$
            throw new XMLAException("Excecute result has no Axes element");
        }
        // $NON-NLS-1$ //$NON-NLS-2$
        name = envelope.createName("Axis", "", XMLABaseComponent.MDD_URI);
        Iterator itAxis = eAxes.getChildElements(name);
        AxisLoop: for (int iOrdinal = 0; itAxis.hasNext(); ) {
            SOAPElement eAxis = (SOAPElement) itAxis.next();
            // $NON-NLS-1$
            name = envelope.createName("name");
            String axisName = eAxis.getAttributeValue(name);
            int axisOrdinal;
            if (axisName.equals("SlicerAxis")) {
                // $NON-NLS-1$
                continue;
            } else {
                axisOrdinal = iOrdinal++;
            }
            // $NON-NLS-1$//$NON-NLS-2$
            name = envelope.createName("Tuples", "", XMLABaseComponent.MDD_URI);
            SOAPElement eTuples = selectSingleNode(eAxis, name);
            if (eTuples == null) {
                // what else?
                continue AxisLoop;
            }
            // $NON-NLS-1$//$NON-NLS-2$
            name = envelope.createName("Tuple", "", XMLABaseComponent.MDD_URI);
            Iterator itTuple = eTuples.getChildElements(name);
            // loop over tuples
            int positionOrdinal = 0;
            while (itTuple.hasNext()) {
                // TupleLoop
                SOAPElement eTuple = (SOAPElement) itTuple.next();
                if ((axisOrdinal == XMLABaseComponent.AXIS_COLUMNS) && (columnHeaders == null)) {
                    // $NON-NLS-1$
                    columnCount = getChildCount(envelope, eTuples, "Tuple");
                    // $NON-NLS-1$
                    columnHeaders = new Object[getChildCount(envelope, eTuple, "Member")][columnCount];
                } else if ((axisOrdinal == XMLABaseComponent.AXIS_ROWS) && (rowHeaders == null)) {
                    // $NON-NLS-1$
                    rowCount = getChildCount(envelope, eTuples, "Tuple");
                    // $NON-NLS-1$
                    rowHeaders = new Object[rowCount][getChildCount(envelope, eTuple, "Member")];
                }
                int index = 0;
                // $NON-NLS-1$//$NON-NLS-2$
                name = envelope.createName("Member", "", XMLABaseComponent.MDD_URI);
                Iterator itMember = eTuple.getChildElements(name);
                while (itMember.hasNext()) {
                    // MemberLoop
                    SOAPElement eMem = (SOAPElement) itMember.next();
                    // loop over children nodes
                    String caption = null;
                    Iterator it = eMem.getChildElements();
                    InnerLoop: while (it.hasNext()) {
                        Node n = (Node) it.next();
                        if (!(n instanceof SOAPElement)) {
                            continue InnerLoop;
                        }
                        SOAPElement el = (SOAPElement) n;
                        String enam = el.getElementName().getLocalName();
                        if (enam.equals("Caption")) {
                            // $NON-NLS-1$
                            caption = el.getValue();
                        }
                    }
                    if (axisOrdinal == XMLABaseComponent.AXIS_COLUMNS) {
                        columnHeaders[index][positionOrdinal] = caption;
                    } else if (axisOrdinal == XMLABaseComponent.AXIS_ROWS) {
                        rowHeaders[positionOrdinal][index] = caption;
                    }
                    ++index;
                }
                // MemberLoop
                ++positionOrdinal;
            }
        // TupleLoop
        }
        // AxisLoop
        data = new Object[rowCount][columnCount];
        // loop over cells in result set
        // $NON-NLS-1$//$NON-NLS-2$
        name = envelope.createName("CellData", "", XMLABaseComponent.MDD_URI);
        SOAPElement eCellData = selectSingleNode(eRoot, name);
        // $NON-NLS-1$//$NON-NLS-2$
        name = envelope.createName("Cell", "", XMLABaseComponent.MDD_URI);
        Iterator itSoapCell = eCellData.getChildElements(name);
        while (itSoapCell.hasNext()) {
            // CellLoop
            SOAPElement eCell = (SOAPElement) itSoapCell.next();
            // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
            name = envelope.createName("CellOrdinal", "", "");
            String cellOrdinal = eCell.getAttributeValue(name);
            int ordinal = Integer.parseInt(cellOrdinal);
            // $NON-NLS-1$//$NON-NLS-2$
            name = envelope.createName("Value", "", XMLABaseComponent.MDD_URI);
            Object value = selectSingleNode(eCell, name).getValue();
            int rowLoc = ordinal / columnCount;
            int columnLoc = ordinal % columnCount;
            data[rowLoc][columnLoc] = value;
        }
        // CellLoop
        MemoryResultSet resultSet = new MemoryResultSet();
        MemoryMetaData metaData = new MemoryMetaData(columnHeaders, rowHeaders);
        resultSet.setMetaData(metaData);
        for (Object[] element : data) {
            resultSet.addRow(element);
        }
        rSet = resultSet;
        if (resultSet != null) {
            if (getResultOutputName() != null) {
                setOutputValue(getResultOutputName(), resultSet);
            }
            return true;
        }
        return false;
    } catch (SOAPException se) {
        throw new XMLAException(se);
    } finally {
        if (connection != null) {
            try {
                connection.close();
            } catch (SOAPException e) {
                // log and ignore
                // $NON-NLS-1$
                error("?", e);
            }
        }
    }
}
Also used : HashMap(java.util.HashMap) Node(javax.xml.soap.Node) SOAPConnection(javax.xml.soap.SOAPConnection) MemoryMetaData(org.pentaho.commons.connection.memory.MemoryMetaData) SOAPEnvelope(javax.xml.soap.SOAPEnvelope) SOAPMessage(javax.xml.soap.SOAPMessage) Name(javax.xml.soap.Name) MimeHeaders(javax.xml.soap.MimeHeaders) SOAPBody(javax.xml.soap.SOAPBody) SOAPException(javax.xml.soap.SOAPException) SOAPPart(javax.xml.soap.SOAPPart) SOAPElement(javax.xml.soap.SOAPElement) Iterator(java.util.Iterator) HashMap(java.util.HashMap) Map(java.util.Map) MemoryResultSet(org.pentaho.commons.connection.memory.MemoryResultSet)

Example 25 with MemoryMetaData

use of org.pentaho.commons.connection.memory.MemoryMetaData in project pentaho-platform by pentaho.

the class JavaScriptResultSetIT method testIterators.

public void testIterators() {
    MemoryMetaData metadata = new MemoryMetaData(new String[][] { { "col1", "col2" } }, null);
    MemoryResultSet dataSet = new MemoryResultSet(metadata);
    JavaScriptResultSet data = new JavaScriptResultSet();
    data.setResultSet(dataSet);
    data.addRow(new Object[] { "a", new Integer(1) });
    data.addRow(new Object[] { "b", new Integer(2) });
    data.addRow(new Object[] { "c", new Integer(3) });
    assertEquals(3, data.getRowCount());
    assertEquals("a", data.getValueAt(0, 0));
    assertEquals(1, data.getValueAt(0, 1));
    assertEquals("b", data.getValueAt(1, 0));
    assertEquals(2, data.getValueAt(1, 1));
    assertEquals("c", data.getValueAt(2, 0));
    assertEquals(3, data.getValueAt(2, 1));
    assertEquals("a", data.next()[0]);
    assertEquals("b", data.next()[0]);
    assertEquals("c", data.next()[0]);
    assertNull(data.next());
    data.beforeFirst();
    assertEquals("a", data.next()[0]);
    assertEquals("b", data.next()[0]);
    assertEquals("c", data.next()[0]);
    assertNull(data.next());
    data.close();
    assertEquals("a", data.next()[0]);
    assertEquals("b", data.next()[0]);
    assertEquals("c", data.next()[0]);
    assertNull(data.next());
    data.closeConnection();
    assertEquals("a", data.next()[0]);
    assertEquals("b", data.next()[0]);
    assertEquals("c", data.next()[0]);
    assertNull(data.next());
    data.dispose();
    assertEquals("a", data.next()[0]);
    assertEquals("b", data.next()[0]);
    assertEquals("c", data.next()[0]);
    assertNull(data.next());
}
Also used : JavaScriptResultSet(org.pentaho.platform.plugin.services.connections.javascript.JavaScriptResultSet) MemoryMetaData(org.pentaho.commons.connection.memory.MemoryMetaData) MemoryResultSet(org.pentaho.commons.connection.memory.MemoryResultSet)

Aggregations

MemoryMetaData (org.pentaho.commons.connection.memory.MemoryMetaData)29 MemoryResultSet (org.pentaho.commons.connection.memory.MemoryResultSet)24 IPentahoMetaData (org.pentaho.commons.connection.IPentahoMetaData)9 JavaScriptResultSet (org.pentaho.platform.plugin.services.connections.javascript.JavaScriptResultSet)8 ArrayList (java.util.ArrayList)4 Date (java.util.Date)3 List (java.util.List)3 Test (org.junit.Test)3 IPentahoResultSet (org.pentaho.commons.connection.IPentahoResultSet)3 SQLException (java.sql.SQLException)2 NativeArray (org.mozilla.javascript.NativeArray)2 MarshallableResultSet (org.pentaho.commons.connection.marshal.MarshallableResultSet)2 RowMetaInterface (org.pentaho.di.core.row.RowMetaInterface)2 StepMetaDataCombi (org.pentaho.di.trans.step.StepMetaDataCombi)2 SQLConnection (org.pentaho.platform.plugin.services.connections.sql.SQLConnection)2 SQLMetaData (org.pentaho.platform.plugin.services.connections.sql.SQLMetaData)2 SimpleDateFormat (java.text.SimpleDateFormat)1 HashMap (java.util.HashMap)1 Iterator (java.util.Iterator)1 Map (java.util.Map)1