Package net.sf.jasperreports.engine.design

Source Code of net.sf.jasperreports.engine.design.JRDesignDatasetRun

/*
* JasperReports - Free Java Reporting Library.
* Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved.
* http://www.jaspersoft.com
*
* Unless you have purchased a commercial license agreement from Jaspersoft,
* the following license terms apply:
*
* This program is part of JasperReports.
*
* JasperReports is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JasperReports is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.jasperreports.engine.design;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.jasperreports.engine.JRConstants;
import net.sf.jasperreports.engine.JRDatasetParameter;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExpression;
import net.sf.jasperreports.engine.base.JRBaseDatasetRun;
import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport;
import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport;

/**
* Implementation of {@link net.sf.jasperreports.engine.JRDatasetRun JRDatasetRun} to be used for report desing.
*
* @author Lucian Chirita (lucianc@users.sourceforge.net)
* @version $Id: JRDesignDatasetRun.java 4101 2010-12-20 12:56:51Z teodord $
*/
public class JRDesignDatasetRun extends JRBaseDatasetRun implements JRChangeEventsSupport
{
  private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;

  private Map parametersMap;
  private List parametersList;
 
  public static final String PROPERTY_CONNECTION_EXPRESSION = "connectionExpression";
 
  public static final String PROPERTY_DATASET_NAME = "datasetName";
 
  public static final String PROPERTY_DATA_SOURCE_EXPRESSION = "dataSourceExpression";
 
  public static final String PROPERTY_PARAMETERS_MAP_EXPRESSION = "parametersMapExpression";
 
  public static final String PROPERTY_PARAMETERS = "parameters";
 
 
  /**
   * Creates an empty dataset instantiation.
   */
  public JRDesignDatasetRun()
  {
    parametersMap = new HashMap();
    parametersList = new ArrayList();
  }
 
 
  /**
   * Adds a parameter value.
   *
   * @param parameter the parameter value
   * @throws JRException
   * @see net.sf.jasperreports.engine.JRDatasetRun#getParameters()
   */
  public void addParameter(JRDatasetParameter parameter) throws JRException
  {
    if (parametersMap.containsKey(parameter.getName()))
    {
      throw new JRException("Duplicate declaration of dataset parameter : " + parameter.getName());
    }
   
    parametersMap.put(parameter.getName(), parameter);
    parametersList.add(parameter);
    getEventSupport().fireCollectionElementAddedEvent(PROPERTY_PARAMETERS,
        parameter, parametersList.size() - 1);
  }
 
 
  /**
   * Removes a parameter value.
   *
   * @param parameterName the parameter name
   * @return the removed parameter value
   */
  public JRDatasetParameter removeParameter(String parameterName)
  {
    JRDatasetParameter param = (JRDatasetParameter) parametersMap.remove(parameterName);
    if (param != null)
    {
      int idx = parametersList.indexOf(param);
      if (idx >= 0)
      {
        parametersList.remove(idx);
      }
      getEventSupport().fireCollectionElementRemovedEvent(PROPERTY_PARAMETERS, param, idx);
    }
   
    return param;
  }
 
 
  /**
   * Removes a parameter value.
   *
   * @param parameter the parameter value
   * @return the parameter value
   */
  public JRDatasetParameter removeParameter(JRDatasetParameter parameter)
  {
    return removeParameter(parameter.getName());
  }

 
  /**
   * Sets the connection expression.
   *
   * @param connectionExpression the connection expression
   * @see net.sf.jasperreports.engine.JRDatasetRun#getConnectionExpression()
   */
  public void setConnectionExpression(JRExpression connectionExpression)
  {
    Object old = this.connectionExpression;
    this.connectionExpression = connectionExpression;
    getEventSupport().firePropertyChange(PROPERTY_CONNECTION_EXPRESSION, old, this.connectionExpression);
  }

 
  /**
   * Sets the sub dataset name.
   *
   * @param datasetName the sub dataset name
   * @see net.sf.jasperreports.engine.JRDatasetRun#getDatasetName()
   */
  public void setDatasetName(String datasetName)
  {
    Object old = this.datasetName;
    this.datasetName = datasetName;
    getEventSupport().firePropertyChange(PROPERTY_DATASET_NAME, old, this.datasetName);
  }

 
  /**
   * Sets the data source expression.
   *
   * @param dataSourceExpression the data source expression
   * @see net.sf.jasperreports.engine.JRDatasetRun#getDataSourceExpression()
   */
  public void setDataSourceExpression(JRExpression dataSourceExpression)
  {
    Object old = this.dataSourceExpression;
    this.dataSourceExpression = dataSourceExpression;
    getEventSupport().firePropertyChange(PROPERTY_DATA_SOURCE_EXPRESSION, old, this.dataSourceExpression);
  }

 
  /**
   * Sets the parameters map expression.
   *
   * @param parametersMapExpression the parameters map expression
   * @see net.sf.jasperreports.engine.JRDatasetRun#getParametersMapExpression()
   */
  public void setParametersMapExpression(JRExpression parametersMapExpression)
  {
    Object old = this.parametersMapExpression;
    this.parametersMapExpression = parametersMapExpression;
    getEventSupport().firePropertyChange(PROPERTY_PARAMETERS_MAP_EXPRESSION, old, this.parametersMapExpression);
  }

  public JRDatasetParameter[] getParameters()
  {
    JRDatasetParameter[] params = new JRDatasetParameter[parametersList.size()];
    parametersList.toArray(params);
    return params;
  }

  /**
   *
   */
  public Object clone()
  {
    JRDesignDatasetRun clone = (JRDesignDatasetRun)super.clone();
   
    if (parametersList != null)
    {
      clone.parametersList = new ArrayList(parametersList.size());
      clone.parametersMap = new HashMap(parametersList.size());
      for(int i = 0; i < parametersList.size(); i++)
      {
        JRDatasetParameter parameter =
          (JRDatasetParameter)((JRDatasetParameter)parametersList.get(i)).clone();
        clone.parametersList.add(parameter);
        clone.parametersMap.put(parameter.getName(), parameter);
      }
    }
   
    return clone;
  }
 
  private transient JRPropertyChangeSupport eventSupport;
 
  public JRPropertyChangeSupport getEventSupport()
  {
    synchronized (this)
    {
      if (eventSupport == null)
      {
        eventSupport = new JRPropertyChangeSupport(this);
      }
    }
   
    return eventSupport;
  }

}
TOP

Related Classes of net.sf.jasperreports.engine.design.JRDesignDatasetRun

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.