Package org.pentaho.reporting.designer.core.editor.drilldown.basic

Source Code of org.pentaho.reporting.designer.core.editor.drilldown.basic.SelfDrillDownController

package org.pentaho.reporting.designer.core.editor.drilldown.basic;

import java.util.HashMap;

import org.pentaho.reporting.designer.core.ReportDesignerContext;
import org.pentaho.reporting.designer.core.editor.ReportRenderContext;
import org.pentaho.reporting.designer.core.editor.drilldown.DrillDownParameterRefreshEvent;
import org.pentaho.reporting.designer.core.editor.drilldown.DrillDownParameterRefreshListener;
import org.pentaho.reporting.designer.core.editor.drilldown.DrillDownParameterTable;
import org.pentaho.reporting.designer.core.editor.drilldown.model.DrillDownModel;
import org.pentaho.reporting.designer.core.editor.drilldown.model.DrillDownParameter;
import org.pentaho.reporting.engine.classic.core.MasterReport;
import org.pentaho.reporting.engine.classic.core.parameters.ParameterDefinitionEntry;
import org.pentaho.reporting.engine.classic.core.parameters.ReportParameterDefinition;

/**
* Todo: Document me!
*
* @author Thomas Morgner.
*/
public class SelfDrillDownController extends DefaultXulDrillDownController
{
  private class UpdateParametersHandler implements DrillDownParameterRefreshListener
  {
    private UpdateParametersHandler()
    {
    }

    public void requestParameterRefresh(final DrillDownParameterRefreshEvent event)
    {
      final HashMap<String,DrillDownParameter> entries = new HashMap<String,DrillDownParameter>();
      final DrillDownParameter[] originalParams = event.getParameter();
      for (int i = 0; i < originalParams.length; i++)
      {
        final DrillDownParameter param = originalParams[i];
        param.setType(DrillDownParameter.Type.MANUAL);
        entries.put (param.getName(), param);
      }

      final ReportRenderContext activeContext = getReportDesignerContext().getActiveContext();
      final MasterReport masterReportElement = activeContext.getMasterReportElement();
      final ReportParameterDefinition reportParams = masterReportElement.getParameterDefinition();
      final ParameterDefinitionEntry[] parameterDefinitionEntries = reportParams.getParameterDefinitions();

      for (int i = 0; i < parameterDefinitionEntries.length; i++)
      {
        final ParameterDefinitionEntry entry = parameterDefinitionEntries[i];
        if (entries.containsKey(entry.getName()) == false)
        {
          entries.put(entry.getName(),
              new DrillDownParameter(entry.getName(), null, DrillDownParameter.Type.PREDEFINED));
        }
        else
        {
          final DrillDownParameter parameter = entries.get(entry.getName());
          parameter.setType(DrillDownParameter.Type.PREDEFINED);
        }
      }

      final DrillDownParameter[] parameters = entries.values().toArray(new DrillDownParameter[entries.size()]);
      getWrapper().setDrillDownParameter(parameters);
      getTable().setDrillDownParameter(parameters);
    }
  }

  public SelfDrillDownController()
  {
  }

  public void init(final ReportDesignerContext reportDesignerContext, final DrillDownModel model)
  {
    super.init(reportDesignerContext, model);
    final DrillDownParameterTable drillDownTable = getTable();
    if (drillDownTable != null)
    {
      drillDownTable.addDrillDownParameterRefreshListener(new UpdateParametersHandler());
    }
   
    getWrapper().setDrillDownConfig("self");
    getWrapper().setDrillDownPath(null);
  }

  public void deactivate()
  {

  }
}
TOP

Related Classes of org.pentaho.reporting.designer.core.editor.drilldown.basic.SelfDrillDownController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.