1 16 17 package org.pentaho.core.solution; 18 19 import java.io.ByteArrayOutputStream ; 20 import java.util.ArrayList ; 21 import java.util.HashMap ; 22 import java.util.List ; 23 24 import org.pentaho.core.runtime.IActionParameter; 25 import org.pentaho.core.session.StandaloneSession; 26 import org.pentaho.core.system.PentahoSystem; 27 import org.pentaho.core.ui.IPentahoUrlFactory; 28 import org.pentaho.core.ui.SimpleUrlFactory; 29 30 public class SolutionEngineAgent { 31 32 private HashMap parameters; 33 34 private String userId; 35 36 private String actionSequence; 37 38 private String description; 39 40 private ByteArrayOutputStream outputStream; 41 42 private ISolutionEngine solutionEngine = null; 43 44 public SolutionEngineAgent() { 45 parameters = new HashMap (); 46 } 47 48 public void setUserId(String userId) { 49 this.userId = userId; 50 } 51 52 public String getUserId() { 53 return userId; 54 } 55 56 public void setParamter(String name, String value) { 57 parameters.put(name, value); 58 } 59 60 public void setActionSequence(String actionSequence) { 61 this.actionSequence = actionSequence; 62 } 63 64 public String getActionSequence() { 65 return actionSequence; 66 } 67 68 public void setDescription(String description) { 69 this.description = description; 70 } 71 72 public String getDescription() { 73 return description; 74 } 75 76 public String getOutput(String name) { 77 if (name == null || "default".equals(name) || "".equals(name)) { return outputStream.toString(); 79 } else { 80 IActionParameter output = solutionEngine.getExecutionContext().getOutputParameter(name); 81 return output.getStringValue(); 82 } 83 } 84 85 public int execute() { 86 PentahoSystem.systemEntryPoint(); 87 try { 88 StandaloneSession session = new StandaloneSession(userId); 90 91 solutionEngine = PentahoSystem.getSolutionEngineInstance(session); 92 solutionEngine.init(session); 93 94 SimpleParameterProvider parameterProvider = new SimpleParameterProvider(parameters); 95 96 String baseUrl = PentahoSystem.getApplicationContext().getBaseUrl(); 97 HashMap parameterProviderMap = new HashMap (); 98 parameterProviderMap.put("request", parameterProvider); 100 IPentahoUrlFactory urlFactory = new SimpleUrlFactory(baseUrl); 101 102 String solutionRef[] = PentahoSystem.parseActionString(actionSequence); 103 104 String solution = solutionRef[0]; 105 String solutionPath = solutionRef[1]; 106 String action = solutionRef[2]; 107 String processName = description; 108 boolean persisted = false; 109 List messages = new ArrayList (); 110 111 outputStream = new ByteArrayOutputStream (0); 112 SimpleOutputHandler outputHandler = null; 113 if (outputStream != null) { 114 outputHandler = new SimpleOutputHandler(outputStream, false); 115 outputHandler.setOutputPreference(IOutputHandler.OUTPUT_TYPE_DEFAULT); 116 } 117 solutionEngine.execute(solution, solutionPath, action, processName, false, true, null, persisted, parameterProviderMap, outputHandler, null, urlFactory, messages); 118 119 } finally { 120 PentahoSystem.systemExitPoint(); 121 } 122 return solutionEngine.getStatus(); 123 } 124 125 } 126 | Popular Tags |