/* * Copyright 2002 - 2016 Pentaho Corporation. All rights reserved. * * This software was developed by Pentaho Corporation and is provided under the terms * of the Mozilla Public License, Version 1.1, or any later version. You may not use * this file except in compliance with the license. If you need a copy of the license, * please go to http://www.mozilla.org/MPL/MPL-1.1.txt. TThe Initial Developer is Pentaho Corporation. * * Software distributed under the Mozilla Public License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to * the license for the specific language governing your rights and limitations. */ package org.pentaho.platform.dataaccess.datasource.beans; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.pentaho.database.model.DatabaseAccessType; import org.pentaho.database.model.DatabaseConnection; import org.pentaho.database.model.DatabaseType; import org.pentaho.database.model.IDatabaseConnection; import org.pentaho.database.model.IDatabaseType; /** * @author wseyler */ public class AutobeanUtilities { /** * @param connectionBean - IDatabaseConnection backed by a Autobean implementation * @return an IDatabaseConnection that is backed by a concrete DatabaseConnection * <p/> * This method will take an autobean implementation of IDatabaseConnection and return a DatabaseConnection */ public static IDatabaseConnection connectionBeanToImpl( IDatabaseConnection connectionBean ) { DatabaseConnection connectionImpl = new DatabaseConnection(); connectionImpl.setAccessType( connectionBean.getAccessType() ); if ( connectionImpl.getAccessType() != null ) { connectionImpl.setAccessTypeValue( connectionImpl.getAccessType().toString() ); } connectionImpl.setAttributes( mapBeanToImpl( connectionBean.getAttributes() ) ); connectionImpl.setConnectionPoolingProperties( mapBeanToImpl( connectionBean.getConnectionPoolingProperties() ) ); connectionImpl.setConnectSql( connectionBean.getConnectSql() ); connectionImpl.setDatabaseName( connectionBean.getDatabaseName() ); connectionImpl.setDatabasePort( connectionBean.getDatabasePort() ); connectionImpl.setDatabaseType( dbTypeBeanToImpl( connectionBean.getDatabaseType() ) ); connectionImpl.setDataTablespace( connectionBean.getDataTablespace() ); connectionImpl.setForcingIdentifiersToLowerCase( connectionBean.isForcingIdentifiersToLowerCase() ); connectionImpl.setForcingIdentifiersToUpperCase( connectionBean.isForcingIdentifiersToUpperCase() ); connectionImpl.setHostname( connectionBean.getHostname() ); connectionImpl.setId( connectionBean.getId() ); connectionImpl.setIndexTablespace( connectionBean.getIndexTablespace() ); connectionImpl.setInformixServername( connectionBean.getInformixServername() ); connectionImpl.setInitialPoolSize( connectionBean.getInitialPoolSize() ); connectionImpl.setMaximumPoolSize( connectionBean.getMaximumPoolSize() ); connectionImpl.setName( connectionBean.getName() ); connectionImpl.setPartitioned( connectionBean.isPartitioned() ); connectionImpl.setPartitioningInformation( connectionBean.getPartitioningInformation() ); connectionImpl.setPassword( connectionBean.getPassword() ); connectionImpl.setDatabasePort( connectionBean.getDatabasePort() ); connectionImpl.setQuoteAllFields( connectionBean.isQuoteAllFields() ); connectionImpl.setSQLServerInstance( connectionBean.getSQLServerInstance() ); connectionImpl.setStreamingResults( connectionBean.isStreamingResults() ); connectionImpl.setUsername( connectionBean.getUsername() ); connectionImpl.setUsingConnectionPool( connectionBean.isUsingConnectionPool() ); connectionImpl .setUsingDoubleDecimalAsSchemaTableSeparator( connectionBean.isUsingDoubleDecimalAsSchemaTableSeparator() ); connectionImpl.setExtraOptions( mapBeanToImpl( connectionBean.getExtraOptions() ) ); connectionImpl.setExtraOptionsOrder( mapBeanToImpl( connectionBean.getExtraOptionsOrder() ) ); return connectionImpl; } /** * @param databaseType - A DatabaseType * @return IDatabaseType backed by an DatabaseType * <p/> * Conversion method for creating a Database Type from an Autobean implementation of IDatabaseType */ public static IDatabaseType dbTypeBeanToImpl( IDatabaseType databaseTypeBean ) { DatabaseType databaseTypeImpl = new DatabaseType(); databaseTypeImpl.setDefaultDatabasePort( databaseTypeBean.getDefaultDatabasePort() ); databaseTypeImpl.setExtraOptionsHelpUrl( databaseTypeBean.getExtraOptionsHelpUrl() ); databaseTypeImpl.setName( databaseTypeBean.getName() ); databaseTypeImpl.setShortName( databaseTypeBean.getShortName() ); databaseTypeImpl.setSupportedAccessTypes( listBeanToImpl( databaseTypeBean.getSupportedAccessTypes() ) ); return databaseTypeImpl; } /** * @param supportedAccessTypes * @return */ private static List<DatabaseAccessType> listBeanToImpl( List<DatabaseAccessType> supportedAccessTypes ) { return new ArrayList<DatabaseAccessType>( supportedAccessTypes ); } /** * @param map * @return */ public static Map<String, String> mapBeanToImpl( Map<String, String> map ) { return new HashMap<String, String>( map ); } }