Package org.pentaho.reporting.ui.datasources.olap4j

Source Code of org.pentaho.reporting.ui.datasources.olap4j.OlapConnectionPanel$EditSecurityAction

/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program 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.
*
* Copyright (c) 2002-2013 Pentaho Corporation..  All rights reserved.
*/

package org.pentaho.reporting.ui.datasources.olap4j;

import java.awt.Dialog;
import java.awt.Frame;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.util.Properties;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ListModel;

import org.pentaho.reporting.engine.classic.core.designtime.DesignTimeContext;
import org.pentaho.reporting.engine.classic.extensions.datasources.olap4j.connections.DriverConnectionProvider;
import org.pentaho.reporting.engine.classic.extensions.datasources.olap4j.connections.JndiConnectionProvider;
import org.pentaho.reporting.engine.classic.extensions.datasources.olap4j.connections.OlapConnectionProvider;
import org.pentaho.reporting.libraries.base.util.ObjectUtilities;
import org.pentaho.reporting.libraries.designtime.swing.LibSwingUtil;
import org.pentaho.reporting.ui.datasources.jdbc.connection.DriverConnectionDefinition;
import org.pentaho.reporting.ui.datasources.jdbc.connection.JdbcConnectionDefinition;
import org.pentaho.reporting.ui.datasources.jdbc.connection.JndiConnectionDefinition;
import org.pentaho.reporting.ui.datasources.jdbc.ui.ConnectionPanel;
import org.pentaho.reporting.ui.datasources.jdbc.ui.DataSourceDialogModel;

public class OlapConnectionPanel extends ConnectionPanel
{
  private class EditSecurityAction extends AbstractAction
  {
    /**
     * Defines an <code>Action</code> object with a default
     * description string and default icon.
     */
    private EditSecurityAction()
    {
      putValue(Action.NAME, Messages.getString("ConnectionPanel.EditSecurityAction.Name"));
    }

    /**
     * Invoked when an action occurs.
     */
    public void actionPerformed(final ActionEvent e)
    {
      final DesignTimeContext designTimeContext = getDesignTimeContext();
      final DataSourceDialogModel dialogModel = getDialogModel();
      if (securityDialog == null)
      {
        final Window window = LibSwingUtil.getWindowAncestor(OlapConnectionPanel.this);
        if (window instanceof Frame)
        {
          securityDialog = new Olap4JSecurityDialog((Frame) window, designTimeContext);
        }
        else if (window instanceof Dialog)
        {
          securityDialog = new Olap4JSecurityDialog((Dialog) window, designTimeContext);
        }
        else
        {
          securityDialog = new Olap4JSecurityDialog(designTimeContext);
        }
      }

      securityDialog.setRoleField(roleField);
      securityDialog.setJdbcPasswordField(dialogModel.getJdbcPasswordField());
      securityDialog.setJdbcUserField(dialogModel.getJdbcUserField());

      if (securityDialog.performEdit())
      {
        roleField = securityDialog.getRoleField();
        dialogModel.setJdbcUserField(securityDialog.getJdbcUserField());
        dialogModel.setJdbcPasswordField(securityDialog.getJdbcPasswordField());
      }
    }
  }

  private Olap4JSecurityDialog securityDialog;
  private String roleField;

  public OlapConnectionPanel(final DataSourceDialogModel aDialogModel, final DesignTimeContext designTimeContext)
  {
    super(aDialogModel, designTimeContext);
    initPanel();
  }

  public JdbcConnectionDefinition createConnectionDefinition(final OlapConnectionProvider currentJNDISource)
  {
    final DataSourceDialogModel dialogModel = getDialogModel();
    if (currentJNDISource instanceof DriverConnectionProvider)
    {
      final DriverConnectionProvider dcp = (DriverConnectionProvider) currentJNDISource;
      final ListModel model = dialogModel.getConnections();
      for (int i = 0; i < model.getSize(); i++)
      {
        final JdbcConnectionDefinition definition = (JdbcConnectionDefinition) model.getElementAt(i);
        if (definition instanceof DriverConnectionDefinition == false)
        {
          continue;
        }
        final DriverConnectionDefinition dcd = (DriverConnectionDefinition) definition;
        if (ObjectUtilities.equal(dcd.getUsername(), dcp.getProperty("JdbcUser")) &&
            ObjectUtilities.equal(dcd.getPassword(), dcp.getProperty("JdbcPassword")) &&
            ObjectUtilities.equal(dcd.getConnectionString(), dcp.getProperty("Jdbc")) &&
            ObjectUtilities.equal(dcd.getDriverClass(), dcp.getProperty("JdbcDrivers")) &&
            ObjectUtilities.equal(dcd.getName(), dcp.getProperty("::pentaho-reporting::name")))
        {
          return definition;
        }
      }

      String customName = dcp.getProperty("::pentaho-reporting::name");
      if (customName == null)
      {
        customName = Messages.getString("Olap4JDataSourceEditor.CustomConnection");
      }

      final String[] strings = dcp.getPropertyNames();
      final Properties p = new Properties();
      for (int i = 0; i < strings.length; i++)
      {
        final String string = strings[i];
        p.put(string, dcp.getProperty(string));
      }

      return new DriverConnectionDefinition
          (customName, dcp.getDriver(), dcp.getUrl(),
              dcp.getProperty("user"), dcp.getProperty("password"),
              dcp.getProperty("::pentaho-reporting::hostname"),
              dcp.getProperty("::pentaho-reporting::database-name"),
              dcp.getProperty("::pentaho-reporting::database-type"),
              dcp.getProperty("::pentaho-reporting::port"),
              p);
    }
    if (currentJNDISource instanceof JndiConnectionProvider)
    {
      final JndiConnectionProvider jcp = (JndiConnectionProvider) currentJNDISource;
      final ListModel model = dialogModel.getConnections();
      for (int i = 0; i < model.getSize(); i++)
      {
        final JdbcConnectionDefinition definition = (JdbcConnectionDefinition) model.getElementAt(i);
        if (definition instanceof JndiConnectionDefinition == false)
        {
          continue;
        }
        final JndiConnectionDefinition dcd = (JndiConnectionDefinition) definition;

        if (ObjectUtilities.equal(dcd.getJndiName(), jcp.getConnectionPath()))
        {
          return dcd;
        }
      }
      return new JndiConnectionDefinition(Messages.getString("Olap4JDataSourceEditor.CustomConnection"),
          jcp.getConnectionPath(), null, jcp.getUsername(), jcp.getPassword());
    }
    return null;
  }

  public String getRoleField()
  {
    return roleField;
  }

  public void setRoleField(final String roleField)
  {
    this.roleField = roleField;
  }

  protected Action createEditSecurityAction()
  {
    return new EditSecurityAction();
  }

}
TOP

Related Classes of org.pentaho.reporting.ui.datasources.olap4j.OlapConnectionPanel$EditSecurityAction

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.