Search in sources :

Example 16 with MemoryMetaData

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

the class JavaScriptResultSet method jsFunction_addRow.

public static Object jsFunction_addRow(final Context cx, final Scriptable thisObj, final Object[] args, final Function funObj) {
    if (args == null) {
        return null;
    }
    if (args.length == 0) {
        return null;
    }
    // TODO support dates
    JavaScriptResultSet resultSet = (JavaScriptResultSet) thisObj;
    if ((args.length == 1) && (args[0] instanceof NativeArray)) {
        NativeArray array = (NativeArray) args[0];
        int length = (int) array.getLength();
        Object[] row = new Object[length];
        String[] columnTypes = ((MemoryMetaData) resultSet.getMetaData()).getColumnTypes();
        for (int i = 0; i < length; i++) {
            Object data = array.get(i, thisObj);
            if (data == null) {
                row[i] = null;
            } else if (columnTypes != null) {
                if (data instanceof NativeJavaObject) {
                    // see if we can force a conversion
                    Object outputClass = null;
                    if ("string".equalsIgnoreCase(columnTypes[i])) {
                        // $NON-NLS-1$
                        outputClass = java.lang.String.class;
                    } else if ("date".equalsIgnoreCase(columnTypes[i])) {
                        // $NON-NLS-1$
                        outputClass = java.util.Date.class;
                    } else if ("int".equalsIgnoreCase(columnTypes[i])) {
                        // $NON-NLS-1$
                        outputClass = java.lang.Integer.class;
                    } else if ("float".equalsIgnoreCase(columnTypes[i])) {
                        // $NON-NLS-1$
                        outputClass = java.lang.Float.class;
                    } else if ("double".equalsIgnoreCase(columnTypes[i])) {
                        // $NON-NLS-1$
                        outputClass = java.lang.Double.class;
                    }
                    if ((NativeJavaObject.canConvert(data, outputClass.getClass()))) {
                        row[i] = Context.jsToJava(data, java.lang.String.class);
                    } else {
                        row[i] = null;
                    }
                }
                if ("string".equalsIgnoreCase(columnTypes[i])) {
                    // $NON-NLS-1$
                    row[i] = data.toString();
                } else if ("date".equalsIgnoreCase(columnTypes[i]) && (data instanceof String)) {
                    // $NON-NLS-1$
                    // $NON-NLS-1$
                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                    try {
                        row[i] = format.parse((String) data);
                    } catch (Throwable t) {
                        row[i] = null;
                    }
                } else if ("int".equalsIgnoreCase(columnTypes[i]) && (data instanceof Integer)) {
                    // $NON-NLS-1$
                    row[i] = data;
                } else if ("int".equalsIgnoreCase(columnTypes[i]) && (data instanceof Double)) {
                    // $NON-NLS-1$
                    row[i] = new Integer(((Double) data).intValue());
                } else if ("int".equalsIgnoreCase(columnTypes[i]) && (data instanceof String)) {
                    // $NON-NLS-1$
                    row[i] = new Integer((String) data);
                } else if ("float".equalsIgnoreCase(columnTypes[i]) && (data instanceof Double)) {
                    // $NON-NLS-1$
                    row[i] = data;
                } else if ("float".equalsIgnoreCase(columnTypes[i]) && (data instanceof Integer)) {
                    // $NON-NLS-1$
                    row[i] = new Double(((Integer) data).floatValue());
                } else if ("float".equalsIgnoreCase(columnTypes[i]) && (data instanceof String)) {
                    // $NON-NLS-1$
                    row[i] = new Integer((String) data);
                } else if ("double".equalsIgnoreCase(columnTypes[i]) && (data instanceof Double)) {
                    // $NON-NLS-1$
                    row[i] = data;
                }
            } else if (data instanceof NativeJavaObject) {
                Object obj = ((NativeJavaObject) data).unwrap();
                row[i] = obj;
            } else {
                row[i] = data;
            }
        }
        resultSet.addRow(row);
    } else {
        int length = args.length;
        String[] row = new String[length];
        for (int i = 0; i < length; i++) {
            row[i] = args[i].toString();
        }
        resultSet.addRow(row);
    }
    return null;
}
Also used : NativeArray(org.mozilla.javascript.NativeArray) MemoryMetaData(org.pentaho.commons.connection.memory.MemoryMetaData) NativeJavaObject(org.mozilla.javascript.NativeJavaObject) ScriptableObject(org.mozilla.javascript.ScriptableObject) NativeJavaObject(org.mozilla.javascript.NativeJavaObject) SimpleDateFormat(java.text.SimpleDateFormat)

Example 17 with MemoryMetaData

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

the class MDXResultSet method memoryCopy.

public IPentahoResultSet memoryCopy() {
    try {
        IPentahoMetaData metadata = getMetaData();
        Object[][] columnHeaders = metadata.getColumnHeaders();
        Object[][] rowHeaders = metadata.getRowHeaders();
        MemoryMetaData cachedMetaData = new MemoryMetaData(columnHeaders, rowHeaders);
        MemoryResultSet cachedResultSet = new MemoryResultSet(cachedMetaData);
        Object[] rowObjects = next();
        while (rowObjects != null) {
            cachedResultSet.addRow(rowObjects);
            rowObjects = next();
        }
        return cachedResultSet;
    } finally {
        close();
    }
}
Also used : MemoryMetaData(org.pentaho.commons.connection.memory.MemoryMetaData) IPentahoMetaData(org.pentaho.commons.connection.IPentahoMetaData) MemoryResultSet(org.pentaho.commons.connection.memory.MemoryResultSet)

Example 18 with MemoryMetaData

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

the class XQResultSet method memoryCopy.

public IPentahoResultSet memoryCopy() {
    try {
        IPentahoMetaData metadata = getMetaData();
        Object[][] columnHeaders = metadata.getColumnHeaders();
        MemoryMetaData cachedMetaData = new MemoryMetaData(columnHeaders, null);
        // set column types of cachedMetaData
        String[] columnTypeClones = new String[columnTypes.length];
        System.arraycopy(columnTypes, 0, columnTypeClones, 0, columnTypes.length);
        cachedMetaData.setColumnTypes(columnTypeClones);
        MemoryResultSet cachedResultSet = new MemoryResultSet(cachedMetaData);
        Object[] rowObjects = next();
        while (rowObjects != null) {
            cachedResultSet.addRow(rowObjects);
            rowObjects = next();
        }
        return cachedResultSet;
    } finally {
        close();
    }
}
Also used : MemoryMetaData(org.pentaho.commons.connection.memory.MemoryMetaData) IPentahoMetaData(org.pentaho.commons.connection.IPentahoMetaData) MemoryResultSet(org.pentaho.commons.connection.memory.MemoryResultSet)

Example 19 with MemoryMetaData

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

the class SQLResultSetTest method testMemoryCopy_setMetadaMemory.

@Test
public void testMemoryCopy_setMetadaMemory() throws SQLException {
    IPentahoMetaData metadata = new MemoryMetaData(mock(MemoryMetaData.class));
    SQLResultSet resultSet = new SQLResultSet(nativeResultSet, nativeConnection);
    resultSet.setMetaData(metadata);
    IPentahoResultSet memoryCopyResultSet = resultSet.memoryCopy();
    assertEquals(metadata.getClass(), memoryCopyResultSet.getMetaData().getClass());
}
Also used : IPentahoResultSet(org.pentaho.commons.connection.IPentahoResultSet) MemoryMetaData(org.pentaho.commons.connection.memory.MemoryMetaData) IPentahoMetaData(org.pentaho.commons.connection.IPentahoMetaData) Test(org.junit.Test)

Example 20 with MemoryMetaData

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

the class PentahoFlashChartTest method createFromLists.

public static MemoryResultSet createFromLists(List colHeaders, List rHeaders, List data) {
    Object[][] columnHeaders = new String[1][colHeaders.size()];
    for (int i = 0; i < colHeaders.size(); i++) {
        columnHeaders[0][i] = colHeaders.get(i);
    }
    Object[][] rowHeaders = new String[rHeaders.size()][1];
    for (int i = 0; i < rHeaders.size(); i++) {
        rowHeaders[i][0] = rHeaders.get(i);
    }
    IPentahoMetaData metaData = new MemoryMetaData(columnHeaders, rowHeaders);
    MemoryResultSet result = new MemoryResultSet(metaData);
    for (int i = 0; i < data.size(); i++) {
        result.addRow(((List) data.get(i)).toArray());
    }
    return result;
}
Also used : MemoryMetaData(org.pentaho.commons.connection.memory.MemoryMetaData) IPentahoMetaData(org.pentaho.commons.connection.IPentahoMetaData) 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