| 1 17 18 package org.pentaho.core.util; 19 20 import java.util.*; 21 22 import org.pentaho.core.connection.IPentahoResultSet; 23 import org.pentaho.core.repository.IContentItem; 24 25 public class SoapHelper { 26 27 public static String toSOAP(String name, Object item) { 28 29 if (item instanceof String ) { 30 return toSOAP(name, (String ) item); 31 } else if (item instanceof List) { 32 return toSOAP(name, (List) item); 33 } else if (item instanceof IPentahoResultSet) { 34 return toSOAP(name, (IPentahoResultSet) item); 35 } else if (item instanceof IContentItem) { 36 return toSOAP(name, ((IContentItem) item).getId()); 37 } 38 return null; 39 } 40 41 private static String toSOAP(String name, IPentahoResultSet resultSet) { 42 StringBuffer messageBuffer = new StringBuffer (); 43 messageBuffer.append("<" + name + ">\n"); Object [][] columnHeaders = resultSet.getMetaData().getColumnHeaders(); 45 Object [][] rowHeaders = resultSet.getMetaData().getRowHeaders(); 46 boolean hasColumnHeaders = columnHeaders != null; 47 boolean hasRowHeaders = rowHeaders != null; 48 49 if (hasColumnHeaders) { 50 for (int row = 0; row < columnHeaders.length; row++) { 51 messageBuffer.append("<COLUMN-HDR-ROW>\n"); for (int column = 0; column < columnHeaders[row].length; column++) { 53 messageBuffer.append("<COLUMN-HDR-ITEM><![CDATA[").append(columnHeaders[row][column]).append("]]></COLUMN-HDR-ITEM>\n"); } 55 messageBuffer.append("</COLUMN-HDR-ROW>\n"); } 57 } 58 59 if (hasRowHeaders) { 60 for (int row = 0; row < rowHeaders.length; row++) { 61 messageBuffer.append("<ROW-HDR-ROW>\n"); for (int column = 0; column < rowHeaders[row].length; column++) { 63 messageBuffer.append("<ROW-HDR-ITEM><![CDATA[").append(rowHeaders[row][column]).append("]]></ROW-HDR-ITEM>\n"); } 65 messageBuffer.append("</ROW-HDR-ROW>\n"); } 67 } 68 69 Object [] dataRow = resultSet.next(); 70 while (dataRow != null) { 71 messageBuffer.append("<DATA-ROW>\n"); for (int col = 0; col < dataRow.length; col++) { 73 messageBuffer.append("<DATA-ITEM><![CDATA[").append(dataRow[col]).append("]]></DATA-ITEM>\n"); } 75 messageBuffer.append("</DATA-ROW>\n"); dataRow = resultSet.next(); 77 } 78 messageBuffer.append("</" + name + ">\n"); 80 return messageBuffer.toString(); 81 } 82 83 public static String toSOAP(String name, String value) { 84 return "<" + name + "><![CDATA[" + value + "]]></" + name + ">"; } 87 88 public static String toSOAP(String name, long value) { 89 return "<" + name + "><![CDATA[" + value + "]]></" + name + ">"; } 92 93 public static String toSOAP(String name, Date value) { 94 return "<" + name + "><![CDATA[" + value + "]]></" + name + ">"; } 97 98 public static String toSOAP(String name, List list) { 99 100 return "<" + name + "><![CDATA[" + list.toString() + "]]></" + name + ">"; } 102 103 } 104 | Popular Tags |