lookupParameters.setParameter( "mql", mql ); //$NON-NLS-1$
IRuntimeContext runtime =
SolutionHelper.doAction(
"/system/metadata/PickList.xaction", "lookup-list", lookupParameters, getSession(), messages, this ); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
IPentahoResultSet results = null;
if ( runtime != null ) {
if ( runtime.getStatus() == IRuntimeContext.RUNTIME_STATUS_SUCCESS ) {
if ( runtime.getOutputNames().contains( "data" ) ) { //$NON-NLS-1$
results = runtime.getOutputParameter( "data" ).getValueAsResultSet(); //$NON-NLS-1$
Object[][] columnHeaders = results.getMetaData().getColumnHeaders();
boolean hasColumnHeaders = columnHeaders != null;
Element rowElement;
Element dataElement = root.addElement( "data" ); //$NON-NLS-1$
if ( hasColumnHeaders ) {
for ( int rowNo = 0; rowNo < columnHeaders.length; rowNo++ ) {
rowElement = dataElement.addElement( "COLUMN-HDR-ROW" ); //$NON-NLS-1$
for ( int columnNo = 0; columnNo < columnHeaders[rowNo].length; columnNo++ ) {
Object nameAttr = results.getMetaData().getAttribute( rowNo, columnNo, "name" ); //$NON-NLS-1$
if ( ( nameAttr != null ) && ( nameAttr instanceof LocalizedString ) ) {
LocalizedString str = (LocalizedString) nameAttr;
String name = str.getLocalizedString( locale );
if ( name != null ) {
rowElement.addElement( "COLUMN-HDR-ITEM" ).setText( name ); //$NON-NLS-1$
} else {
rowElement.addElement( "COLUMN-HDR-ITEM" ).setText( columnHeaders[rowNo][columnNo].toString() ); //$NON-NLS-1$
}
} else {
rowElement.addElement( "COLUMN-HDR-ITEM" ).setText( columnHeaders[rowNo][columnNo].toString() ); //$NON-NLS-1$
}
}
}
}
Object[] row = results.next();
while ( row != null ) {
rowElement = dataElement.addElement( "DATA-ROW" ); //$NON-NLS-1$
for ( Object element : row ) {
if ( element == null ) {
rowElement.addElement( "DATA-ITEM" ).setText( "" ); //$NON-NLS-1$ //$NON-NLS-2$
} else {
rowElement.addElement( "DATA-ITEM" ).setText( element.toString() ); //$NON-NLS-1$
}
}
row = results.next();
}
}
}
}