1 16 package org.pentaho.plugin.core; 17 18 import java.util.Set ; 19 import org.apache.commons.logging.Log; 20 import org.apache.commons.logging.LogFactory; 21 import org.pentaho.core.connection.IPentahoResultSet; 22 import org.pentaho.core.connection.PentahoDataTransmuter; 23 import org.pentaho.messages.Messages; 24 import org.pentaho.plugin.ComponentBase; 25 26 44 public class ResultSetFlattenerComponent extends ComponentBase { 45 48 private static final String RESULT_SET = "result-set"; 50 private static final String FLATTEN_COLUMN = "flatten-column"; 52 private static final long serialVersionUID = 5969716585776621813L; 53 54 public Log getLogger() { 55 return LogFactory.getLog(ResultSetFlattenerComponent.class); 56 } 57 58 public boolean init() { 59 return true; 61 } 62 63 protected boolean validateSystemSettings() { 64 return true; 66 } 67 68 protected boolean validateAction() { 69 if (!isDefinedInput(RESULT_SET)) { 70 error(Messages.getString("ResultSetFlattenerComponent.ERROR_0001_DATA_INPUT_INVALID_OBJECT")); return false; 72 } 73 if (getResultOutputName() == null) { 74 error(Messages.getString("ResultSetFlattenerComponent.ERROR_0002_INVALID_OUTPUT")); return false; 76 } 77 if (!isDefinedInput(FLATTEN_COLUMN)) { 78 error(Messages.getString("ResultSetFlattenerComponent.ERROR_0003_INVALID_FLATTEN_COLUMN")); return false; 80 } 81 return true; 82 } 83 84 protected boolean executeAction() { 85 Object resultSetObject = getInputValue(RESULT_SET); 86 if (resultSetObject instanceof IPentahoResultSet) { 87 IPentahoResultSet resultset = (IPentahoResultSet) resultSetObject; 88 int column = (int) getInputLongValue(FLATTEN_COLUMN, 0); 89 column--; 90 if (getResultOutputName() != null) { 91 setOutputValue(getResultOutputName(), PentahoDataTransmuter.flattenResultSet(resultset, column)); 92 } 93 } 94 return true; 95 } 96 97 public void done() { 98 } 99 100 public String getResultOutputName() { 101 Set outputs = getOutputNames(); 102 if ((outputs == null) || (outputs.size() == 0)) { 103 error(Messages.getString("Template.ERROR_0002_OUTPUT_COUNT_WRONG")); return null; 105 } 106 String outputName = null; 107 try { 108 outputName = getInputStringValue(StandardSettings.OUTPUT_NAME); 109 } catch (Exception e) { 110 } 111 if (outputName == null) { outputName = (String ) outputs.iterator().next(); 113 } 114 return outputName; 115 } 116 } 117 | Popular Tags |