Search in sources :

Example 11 with IPentahoRequestContext

use of org.pentaho.platform.api.engine.IPentahoRequestContext in project pentaho-platform by pentaho.

the class DialChartComponent method getXmlContent.

@Override
public Document getXmlContent() {
    // Create a document that describes the result
    Document result = DocumentHelper.createDocument();
    IPentahoRequestContext requestContext = PentahoRequestContextHolder.getRequestContext();
    // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    setXslProperty("baseUrl", requestContext.getContextPath());
    // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    setXslProperty("fullyQualifiedServerUrl", PentahoSystem.getApplicationContext().getFullyQualifiedServerURL());
    // $NON-NLS-1$
    String mapName = "chart" + AbstractChartComponent.chartCount++;
    Document chartDefinition = jcrHelper.getSolutionDocument(definitionPath, RepositoryFilePermission.READ);
    if (chartDefinition == null) {
        // $NON-NLS-1$
        Element errorElement = result.addElement("error");
        errorElement.addElement("title").setText(// $NON-NLS-1$ //$NON-NLS-2$
        Messages.getInstance().getString("ABSTRACTCHARTEXPRESSION.ERROR_0001_ERROR_GENERATING_CHART"));
        // $NON-NLS-1$
        String message = Messages.getInstance().getString("CHARTS.ERROR_0001_CHART_DEFINIION_MISSING", definitionPath);
        // $NON-NLS-1$
        errorElement.addElement("message").setText(message);
        error(message);
        return result;
    }
    dataDefinition = createChart(chartDefinition);
    if (dataDefinition == null) {
        // $NON-NLS-1$
        Element errorElement = result.addElement("error");
        errorElement.addElement("title").setText(// $NON-NLS-1$ //$NON-NLS-2$
        Messages.getInstance().getString("ABSTRACTCHARTEXPRESSION.ERROR_0001_ERROR_GENERATING_CHART"));
        // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        String message = Messages.getInstance().getString("CHARTS.ERROR_0002_CHART_DATA_MISSING", actionPath);
        // $NON-NLS-1$
        errorElement.addElement("message").setText(message);
        // System .out.println( result.asXML() );
        return result;
    }
    // create an image for the dial using the JFreeChart engine
    PrintWriter printWriter = new PrintWriter(new StringWriter());
    // we'll dispay the title in HTML so that the dial image does not have
    // to
    // accommodate it
    // $NON-NLS-1$
    String chartTitle = "";
    try {
        if (width == -1) {
            // $NON-NLS-1$
            width = Integer.parseInt(chartDefinition.selectSingleNode("/chart/width").getText());
        }
        if (height == -1) {
            // $NON-NLS-1$
            height = Integer.parseInt(chartDefinition.selectSingleNode("/chart/height").getText());
        }
    } catch (Exception e) {
    // go with the default
    }
    if (chartDefinition.selectSingleNode("/chart/" + AbstractChartComponent.URLTEMPLATE_NODE_NAME) != null) {
        // $NON-NLS-1$
        urlTemplate = // $NON-NLS-1$
        chartDefinition.selectSingleNode("/chart/" + AbstractChartComponent.URLTEMPLATE_NODE_NAME).getText();
    }
    if (chartDefinition.selectSingleNode("/chart/paramName") != null) {
        // $NON-NLS-1$
        // $NON-NLS-1$
        paramName = chartDefinition.selectSingleNode("/chart/paramName").getText();
    }
    // $NON-NLS-1$
    Element root = result.addElement("charts");
    DefaultValueDataset chartDataDefinition = (DefaultValueDataset) dataDefinition;
    // if (dataDefinition.getRowCount() > 0) {
    // create temporary file names
    String[] tempFileInfo = createTempFile();
    String fileName = tempFileInfo[AbstractChartComponent.FILENAME_INDEX];
    String filePathWithoutExtension = tempFileInfo[AbstractChartComponent.FILENAME_WITHOUT_EXTENSION_INDEX];
    ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
    JFreeChartEngine.saveChart(chartDataDefinition, chartTitle, "", filePathWithoutExtension, width, height, JFreeChartEngine.OUTPUT_PNG, printWriter, info, // $NON-NLS-1$
    this);
    applyOuterURLTemplateParam();
    populateInfo(info);
    // $NON-NLS-1$
    Element chartElement = root.addElement("chart");
    // $NON-NLS-1$
    chartElement.addElement("mapName").setText(mapName);
    // $NON-NLS-1$
    chartElement.addElement("width").setText(Integer.toString(width));
    // $NON-NLS-1$
    chartElement.addElement("height").setText(Integer.toString(height));
    // for (int row = 0; row < chartDataDefinition.getRowCount(); row++) {
    // for (int column = 0; column < chartDataDefinition.getColumnCount(); column++) {
    // Number value = chartDataDefinition.getValue(row, column);
    // Comparable rowKey = chartDataDefinition.getRowKey(row);
    // Comparable columnKey = chartDataDefinition.getColumnKey(column);
    // Element valueElement = chartElement.addElement("value2D"); //$NON-NLS-1$
    // valueElement.addElement("value").setText(value.toString()); //$NON-NLS-1$
    // valueElement.addElement("row-key").setText(rowKey.toString()); //$NON-NLS-1$
    // valueElement.addElement("column-key").setText(columnKey.toString()); //$NON-NLS-1$
    // }
    // }
    String mapString = ImageMapUtilities.getImageMap(mapName, info);
    // $NON-NLS-1$
    chartElement.addElement("imageMap").setText(mapString);
    // $NON-NLS-1$
    chartElement.addElement("image").setText(fileName);
    // }
    return result;
}
Also used : DefaultValueDataset(org.jfree.data.general.DefaultValueDataset) IPentahoRequestContext(org.pentaho.platform.api.engine.IPentahoRequestContext) StandardEntityCollection(org.jfree.chart.entity.StandardEntityCollection) StringWriter(java.io.StringWriter) Element(org.dom4j.Element) ChartRenderingInfo(org.jfree.chart.ChartRenderingInfo) Document(org.dom4j.Document) PrintWriter(java.io.PrintWriter)

Example 12 with IPentahoRequestContext

use of org.pentaho.platform.api.engine.IPentahoRequestContext in project pentaho-platform by pentaho.

the class PentahoRequestContextHolderTest method testThreadedInheritsRequestContext.

@Test
public void testThreadedInheritsRequestContext() throws InterruptedException {
    final IPentahoRequestContext mockRequestContext = Mockito.mock(IPentahoRequestContext.class);
    PentahoRequestContextHolder.setRequestContext(mockRequestContext);
    Thread t = new Thread("testThreadedInheritsRequestContext-1") {

        public void run() {
            if (PentahoRequestContextHolder.getRequestContext() != mockRequestContext) {
                System.err.println(getName() + " - should have inherited request context from parent thread");
                threadFailureMap.put(this, true);
            }
        }
    };
    t.start();
    t.join(5000);
    for (boolean failure : threadFailureMap.values()) {
        assertFalse("An assertion in a thread failed.  Check the log for what failed", failure);
    }
}
Also used : IPentahoRequestContext(org.pentaho.platform.api.engine.IPentahoRequestContext) Test(org.junit.Test)

Example 13 with IPentahoRequestContext

use of org.pentaho.platform.api.engine.IPentahoRequestContext in project pentaho-platform by pentaho.

the class PentahoRequestContextHolderTest method testNullRequestContext.

@Test
public void testNullRequestContext() {
    final IPentahoRequestContext mockRequestContext = Mockito.mock(IPentahoRequestContext.class);
    PentahoRequestContextHolder.setRequestContext(mockRequestContext);
    assertSame(mockRequestContext, PentahoRequestContextHolder.getRequestContext());
}
Also used : IPentahoRequestContext(org.pentaho.platform.api.engine.IPentahoRequestContext) Test(org.junit.Test)

Example 14 with IPentahoRequestContext

use of org.pentaho.platform.api.engine.IPentahoRequestContext in project pentaho-platform by pentaho.

the class PentahoRequestContextHolderTest method testThreadsManageOwngetRequestContexts.

@Test
public void testThreadsManageOwngetRequestContexts() throws InterruptedException {
    final IPentahoRequestContext mockRequestContext = Mockito.mock(IPentahoRequestContext.class);
    final IPentahoRequestContext threadMockRequestContext = Mockito.mock(IPentahoRequestContext.class, "threadMockRequestContext");
    PentahoRequestContextHolder.setRequestContext(mockRequestContext);
    assertSame(mockRequestContext, PentahoRequestContextHolder.getRequestContext());
    Thread t = new Thread("testThreadsManageOwngetRequestContexts-1") {

        public void run() {
            PentahoRequestContextHolder.setRequestContext(threadMockRequestContext);
            if (PentahoRequestContextHolder.getRequestContext() != threadMockRequestContext) {
                threadFailureMap.put(this, true);
            }
            try {
                sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
    t.start();
    assertSame("(while child thread runs) parent thread should still have it's original request context", mockRequestContext, PentahoRequestContextHolder.getRequestContext());
    t.join(2000);
    assertSame("(when child thread has terminated) parent thread should still have it's original request context", mockRequestContext, PentahoRequestContextHolder.getRequestContext());
    for (boolean failure : threadFailureMap.values()) {
        assertFalse("An assertion in a thread failed.  Check the log for what failed", failure);
    }
}
Also used : IPentahoRequestContext(org.pentaho.platform.api.engine.IPentahoRequestContext) Test(org.junit.Test)

Example 15 with IPentahoRequestContext

use of org.pentaho.platform.api.engine.IPentahoRequestContext in project pentaho-platform by pentaho.

the class PentahoWebContextFilter method getContextPathVar.

private String getContextPathVar(HttpServletRequest request) {
    // split out a fully qualified url, guaranteed to have a trailing slash
    IPentahoRequestContext requestContext = getRequestContext();
    String contextPath = requestContext.getContextPath();
    final boolean shouldUseFullyQualifiedUrl = shouldUseFullyQualifiedUrl(request);
    if (shouldUseFullyQualifiedUrl) {
        contextPath = getFullyQualifiedServerUrlVar();
    }
    return contextPath;
}
Also used : IPentahoRequestContext(org.pentaho.platform.api.engine.IPentahoRequestContext)

Aggregations

IPentahoRequestContext (org.pentaho.platform.api.engine.IPentahoRequestContext)32 SimpleUrlFactory (org.pentaho.platform.util.web.SimpleUrlFactory)11 ArrayList (java.util.ArrayList)9 Document (org.dom4j.Document)9 Element (org.dom4j.Element)9 IOException (java.io.IOException)8 PrintWriter (java.io.PrintWriter)8 StringWriter (java.io.StringWriter)8 ByteArrayOutputStream (java.io.ByteArrayOutputStream)7 ChartRenderingInfo (org.jfree.chart.ChartRenderingInfo)7 StandardEntityCollection (org.jfree.chart.entity.StandardEntityCollection)7 UnsupportedEncodingException (java.io.UnsupportedEncodingException)6 ByteArrayInputStream (java.io.ByteArrayInputStream)5 File (java.io.File)5 OutputStream (java.io.OutputStream)5 List (java.util.List)5 IParameterProvider (org.pentaho.platform.api.engine.IParameterProvider)5 SimpleParameterProvider (org.pentaho.platform.engine.core.solution.SimpleParameterProvider)5 IPentahoSession (org.pentaho.platform.api.engine.IPentahoSession)4 IPentahoUrlFactory (org.pentaho.platform.api.engine.IPentahoUrlFactory)4