Package org.pentaho.reporting.engine.classic.core.modules.misc.connections.parser

Source Code of org.pentaho.reporting.engine.classic.core.modules.misc.connections.parser.DatabaseMetaReadHandler

package org.pentaho.reporting.engine.classic.core.modules.misc.connections.parser;

import java.util.Map;
import java.util.Properties;

import org.pentaho.database.model.DatabaseAccessType;
import org.pentaho.database.model.DatabaseConnection;
import org.pentaho.database.model.IDatabaseConnection;
import org.pentaho.database.service.IDatabaseDialectService;
import org.pentaho.database.util.DatabaseTypeHelper;
import org.pentaho.reporting.engine.classic.core.ClassicEngineBoot;
import org.pentaho.reporting.engine.classic.core.modules.misc.connections.ConnectionModule;
import org.pentaho.reporting.libraries.base.boot.ObjectFactory;
import org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlReadHandler;
import org.pentaho.reporting.libraries.xmlns.parser.PropertiesReadHandler;
import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;

public class DatabaseMetaReadHandler extends AbstractXmlReadHandler
{
  private static final String PROP_INDEX_TBS = "INDEX_TBS"; //$NON-NLS-1$

  private static final String PROP_DATA_TBS = "DATA_TBS"; //$NON-NLS-1$

  private static final String PROP_SERVERNAME = "SERVERNAME"; //$NON-NLS-1$

  private static final String PROP_PASSWORD = "PASSWORD"; //$NON-NLS-1$

  private static final String PROP_USERNAME = "USERNAME"; //$NON-NLS-1$

  private static final String PROP_PORT = "PORT"; //$NON-NLS-1$

  private static final String PROP_DATABASE_NAME = "DATABASE_NAME"; //$NON-NLS-1$

  private static final String PROP_HOST_NAME = "HOST_NAME"; //$NON-NLS-1$

  private static final String PROP_CONTYPE = "CONTYPE"; //$NON-NLS-1$

  private static final String PROP_TYPE = "TYPE"; //$NON-NLS-1$

  private static final String NODE_ATTRIBUTES = "attributes"; //$NON-NLS-1$
  private static final String NODE_ATTRIBUTE = "attribute"; //$NON-NLS-1$

  private final DatabaseTypeHelper databaseTypeHelper;
  private DatabaseConnection databaseConnection;
  private PropertiesReadHandler propertiesReadHandler;

  public DatabaseMetaReadHandler()
  {
    final ObjectFactory objectFactory = ClassicEngineBoot.getInstance().getObjectFactory();
    final IDatabaseDialectService dialectService = objectFactory.get(IDatabaseDialectService.class);
    this.databaseTypeHelper = new DatabaseTypeHelper(dialectService.getDatabaseTypes());
  }

  public IDatabaseConnection getObject() throws SAXException
  {
    return databaseConnection;
  }

  protected void startParsing(final Attributes attrs) throws SAXException
  {
    databaseConnection = new DatabaseConnection();

    final String databaseType = attrs.getValue(ConnectionModule.NAMESPACE, PROP_TYPE);
    if (databaseType != null)
    {
      databaseConnection.setDatabaseType(databaseTypeHelper.getDatabaseTypeByShortName(databaseType));
    }
    else
    {
      databaseConnection.setDatabaseType(null);
    }

    databaseConnection.setName(attrs.getValue(ConnectionModule.NAMESPACE, "name"));
    databaseConnection.setId(attrs.getValue(ConnectionModule.NAMESPACE, "id"));

    final String accessType = attrs.getValue(ConnectionModule.NAMESPACE, PROP_CONTYPE);
    databaseConnection.setAccessType(accessType != null ? DatabaseAccessType.getAccessTypeByName(accessType) : null);
    databaseConnection.setHostname(attrs.getValue(ConnectionModule.NAMESPACE, PROP_HOST_NAME));
    databaseConnection.setDatabaseName(attrs.getValue(ConnectionModule.NAMESPACE, PROP_DATABASE_NAME));
    databaseConnection.setDatabasePort(attrs.getValue(ConnectionModule.NAMESPACE, PROP_PORT));
    databaseConnection.setUsername(attrs.getValue(ConnectionModule.NAMESPACE, PROP_USERNAME));
    databaseConnection.setPassword(attrs.getValue(ConnectionModule.NAMESPACE, PROP_PASSWORD));
    databaseConnection.setInformixServername(attrs.getValue(ConnectionModule.NAMESPACE, PROP_SERVERNAME));
    databaseConnection.setDataTablespace(attrs.getValue(ConnectionModule.NAMESPACE, PROP_DATA_TBS));
    databaseConnection.setIndexTablespace(attrs.getValue(ConnectionModule.NAMESPACE, PROP_INDEX_TBS));
  }

  protected XmlReadHandler getHandlerForChild(final String uri,
                                              final String tagName,
                                              final Attributes atts) throws SAXException
  {
    if (isSameNamespace(uri))
    {
      if (NODE_ATTRIBUTES.equals(tagName))
      {
        propertiesReadHandler = new PropertiesReadHandler(NODE_ATTRIBUTE);
        return propertiesReadHandler;
      }
    }
    return null;
  }

  protected void doneParsing() throws SAXException
  {
    if (propertiesReadHandler == null)
      return;

    final Properties result = propertiesReadHandler.getResult();
    for (final Map.Entry<Object, Object> entry : result.entrySet())
    {
      final String code = (String) entry.getKey();
      final String attribute = (String) entry.getValue();
      databaseConnection.getAttributes().put(code, (attribute == null || attribute.length() == 0) ? "" : attribute); //$NON-NLS-1$
    }
  }


}
TOP

Related Classes of org.pentaho.reporting.engine.classic.core.modules.misc.connections.parser.DatabaseMetaReadHandler

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.