protected void copyDatabaseConnectionProperties( IDatabaseConnection source, IDatabaseConnection target ) { target.setId( source.getId() ); target.setAccessType( source.getAccessType() ); target.setDatabaseType( source.getDatabaseType() ); target.setExtraOptions( source.getExtraOptions() ); target.setExtraOptionsOrder( source.getExtraOptionsOrder() ); target.setName( source.getName() ); target.setHostname( source.getHostname() ); target.setDatabaseName( source.getDatabaseName() ); target.setDatabasePort( source.getDatabasePort() ); target.setUsername( source.getUsername() ); target.setPassword( source.getPassword() ); target.setStreamingResults( source.isStreamingResults() ); target.setDataTablespace( source.getDataTablespace() ); target.setIndexTablespace( source.getIndexTablespace() ); target.setUsingDoubleDecimalAsSchemaTableSeparator( source.isUsingDoubleDecimalAsSchemaTableSeparator() ); target.setInformixServername( source.getInformixServername() ); target.setAttributes( source.getAttributes() ); target.setChanged( source.getChanged() ); target.setQuoteAllFields( source.isQuoteAllFields() ); target.setForcingIdentifiersToLowerCase( source.isForcingIdentifiersToLowerCase() ); target.setForcingIdentifiersToUpperCase( source.isForcingIdentifiersToUpperCase() ); target.setConnectSql( source.getConnectSql() ); target.setUsingConnectionPool( source.isUsingConnectionPool() ); target.setInitialPoolSize( source.getInitialPoolSize() ); target.setMaximumPoolSize( source.getMaximumPoolSize() ); target.setPartitioned( source.isPartitioned() ); target.setConnectionPoolingProperties( source.getConnectionPoolingProperties() ); target.setPartitioningInformation( source.getPartitioningInformation() );
public void sanitizeConnectionParameters( IDatabaseConnection connection ) { String safeName = safeEscapeHtml( connection.getName() ); connection.setName( safeName ); String safeDbName = safeEscapeHtml( connection.getDatabaseName() ); connection.setDatabaseName( safeDbName ); String safeDbPort = safeEscapeHtml( connection.getDatabasePort() ); connection.setDatabasePort( safeDbPort ); String safeHostname = safeEscapeHtml( connection.getHostname() ); connection.setHostname( safeHostname ); String safePassword = safeEscapeHtml( connection.getPassword() ); connection.setPassword( safePassword ); String safeUsername = safeEscapeHtml( connection.getUsername() ); connection.setUsername( safeUsername ); }
public boolean updateConnection( IDatabaseConnection connection ) throws ConnectionServiceException { IDatabaseConnection conn = getConnectionByName( connection.getName() ); if ( conn != null ) { // conn.setDriverClass(connection.getDriverClass()); conn.setAccessType( connection.getAccessType() ); conn.setPassword( connection.getPassword() ); conn.setUsername( connection.getUsername() ); return true; } else { logger.error( Messages.getErrorString( "ConnectionServiceInMemoryDelegate.ERROR_0005_UNABLE_TO_UPDATE_CONNECTION", connection.getName(), null ) ); throw new ConnectionServiceException( Messages .getErrorString( "ConnectionServiceInMemoryDelegate.ERROR_0005_UNABLE_TO_UPDATE_CONNECTION", connection.getName(), null ) ); } }
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() );
if ( databaseConnection.getDatabaseType() != null ) { rootNode.setProperty( PROP_TYPE, databaseConnection.getDatabaseType().getShortName() ); ( "".equals( setNull( databaseConnection.getDatabasePort() ) ) ) ? "0" : databaseConnection.getDatabasePort(); rootNode.setProperty( PROP_CONTYPE, setNull( databaseConnection.getAccessType().getName() ) ); rootNode.setProperty( PROP_HOST_NAME, setNull( databaseConnection.getHostname() ) ); rootNode.setProperty( PROP_DATABASE_NAME, setNull( databaseConnection.getDatabaseName() ) ); rootNode.setProperty( PROP_PORT, new Long( port ) ); rootNode.setProperty( PROP_USERNAME, setNull( databaseConnection.getUsername() ) ); rootNode.setProperty( PROP_PASSWORD, encryptPassword( databaseConnection.getPassword() ) ); rootNode.setProperty( PROP_SERVERNAME, setNull( databaseConnection.getInformixServername() ) ); rootNode.setProperty( PROP_DATA_TBS, setNull( databaseConnection.getDataTablespace() ) ); rootNode.setProperty( PROP_INDEX_TBS, setNull( databaseConnection.getIndexTablespace() ) ); rootNode.setProperty( PROP_CONNECT_SQL, setNull( databaseConnection.getConnectSql() ) ); rootNode.setProperty( PROP_INITIAL_POOL_SIZE, databaseConnection.getInitialPoolSize() ); rootNode.setProperty( PROP_MAX_POOL_SIZE, databaseConnection.getMaximumPoolSize() ); rootNode.setProperty( PROP_IS_POOLING, databaseConnection.isUsingConnectionPool() ); rootNode.setProperty( PROP_IS_FORCING_TO_LOWER, databaseConnection.isForcingIdentifiersToLowerCase() ); rootNode.setProperty( PROP_IS_FORCING_TO_UPPER, databaseConnection.isForcingIdentifiersToUpperCase() ); rootNode.setProperty( PROP_IS_QUOTE_FIELDS, databaseConnection.isQuoteAllFields() ); rootNode.setProperty( PROP_IS_DECIMAL_SEPERATOR, databaseConnection.isUsingDoubleDecimalAsSchemaTableSeparator() ); Map<String, String> attributes = databaseConnection.getAttributes(); Set<String> keys = attributes.keySet(); for ( String key : keys ) { attributes = databaseConnection.getConnectionPoolingProperties(); keys = attributes.keySet(); for ( String key : keys ) {
private void write( final IDatabaseConnection databaseConnection, final XmlWriter writer ) throws IOException { final AttributeList rootAttrs = new AttributeList(); if ( databaseConnection.getDatabaseType() != null ) { rootAttrs.setAttribute( ConnectionModule.NAMESPACE, PROP_TYPE, databaseConnection.getDatabaseType() .getShortName() ); StringUtils.isEmpty( databaseConnection.getDatabasePort() ) ? "0" : databaseConnection.getDatabasePort(); rootAttrs.setAttribute( ConnectionModule.NAMESPACE, "name", databaseConnection.getName() ); rootAttrs.setAttribute( ConnectionModule.NAMESPACE, "id", databaseConnection.getId() ); rootAttrs.setAttribute( ConnectionModule.NAMESPACE, PROP_CONTYPE, setNull( databaseConnection.getAccessType() .getName() ) ); rootAttrs.setAttribute( ConnectionModule.NAMESPACE, PROP_HOST_NAME, setNull( databaseConnection.getHostname() ) ); rootAttrs.setAttribute( ConnectionModule.NAMESPACE, PROP_DATABASE_NAME, setNull( databaseConnection .getDatabaseName() ) ); rootAttrs.setAttribute( ConnectionModule.NAMESPACE, PROP_PORT, String.valueOf( new Long( port ) ) ); // implicit rootAttrs.setAttribute( ConnectionModule.NAMESPACE, PROP_USERNAME, setNull( databaseConnection.getUsername() ) ); rootAttrs.setAttribute( ConnectionModule.NAMESPACE, PROP_PASSWORD, setNull( databaseConnection.getPassword() ) ); rootAttrs.setAttribute( ConnectionModule.NAMESPACE, PROP_SERVERNAME, setNull( databaseConnection .getInformixServername() ) ); rootAttrs .setAttribute( ConnectionModule.NAMESPACE, PROP_DATA_TBS, setNull( databaseConnection.getDataTablespace() ) ); rootAttrs.setAttribute( ConnectionModule.NAMESPACE, PROP_INDEX_TBS, setNull( databaseConnection .getIndexTablespace() ) ); writer.writeTag( ConnectionModule.NAMESPACE, NODE_ROOT, rootAttrs, XmlWriter.OPEN ); final Map<String, String> attributes = databaseConnection.getAttributes(); final Set<Map.Entry<String, String>> entries = attributes.entrySet(); if ( entries.isEmpty() == false ) {
IDatabaseConnection databaseConnection = new DatabaseConnection(); String databaseType = getString( rootNode, PROP_TYPE ); databaseConnection.setDatabaseType( databaseType != null ? databaseTypeHelper .getDatabaseTypeByShortName( databaseType ) : null ); databaseConnection.setName( name ); if ( id != null ) { databaseConnection.setId( id.toString() ); databaseConnection.setAccessType( accessType != null ? DatabaseAccessType.getAccessTypeByName( accessType ) : null ); databaseConnection.setHostname( getString( rootNode, PROP_HOST_NAME ) ); databaseConnection.setDatabaseName( getString( rootNode, PROP_DATABASE_NAME ) ); databaseConnection.setDatabasePort( getString( rootNode, PROP_PORT ) ); databaseConnection.setUsername( getString( rootNode, PROP_USERNAME ) ); databaseConnection.setPassword( decryptPassword( getString( rootNode, PROP_PASSWORD ) ) ); databaseConnection.setInformixServername( getString( rootNode, PROP_SERVERNAME ) ); databaseConnection.setDataTablespace( getString( rootNode, PROP_DATA_TBS ) ); databaseConnection.setIndexTablespace( getString( rootNode, PROP_INDEX_TBS ) ); databaseConnection.setConnectSql( getString( rootNode, PROP_CONNECT_SQL ) ); databaseConnection.setInitialPoolSize( getInt( rootNode, PROP_INITIAL_POOL_SIZE ) ); databaseConnection.setMaximumPoolSize( getInt( rootNode, PROP_MAX_POOL_SIZE ) ); databaseConnection.setUsingConnectionPool( getBoolean( rootNode, PROP_IS_POOLING ) ); databaseConnection.setForcingIdentifiersToLowerCase( getBoolean( rootNode, PROP_IS_FORCING_TO_LOWER ) ); databaseConnection.setForcingIdentifiersToUpperCase( getBoolean( rootNode, PROP_IS_FORCING_TO_UPPER ) ); databaseConnection.setQuoteAllFields( getBoolean( rootNode, PROP_IS_QUOTE_FIELDS ) ); databaseConnection.setUsingDoubleDecimalAsSchemaTableSeparator( getBoolean( rootNode, PROP_IS_DECIMAL_SEPERATOR ) ); String code = property.getName(); String attribute = property.getString();
sanitizer.sanitizeConnectionParameters( connection ); if ( connection.getPassword() == null ) { // Can have an empty password but not a null one connection.setPassword( "" ); //$NON-NLS-1$ if ( connection.getDatabaseType().getShortName().equals( "GENERIC" ) ) { driverClass = connection.getAttributes().get( GenericDatabaseDialect.ATTRIBUTE_CUSTOM_DRIVER_CLASS ); } else { driverClass = dialect.getNativeDriver(); if ( connection.getAccessType().equals( DatabaseAccessType.JNDI ) ) { pentahoConnection = PentahoConnectionFactory .getConnection( IPentahoConnection.SQL_DATASOURCE, connection.getDatabaseName(), null, this ); } else { if ( connection.isUsingConnectionPool() ) { Properties props = new Properties(); props.put( IPentahoConnection.CONNECTION_NAME, connection.getName() ); props.put( IPentahoConnection.CONNECTION, connection ); pentahoConnection = PentahoConnectionFactory.getConnection( IPentahoConnection.SQL_DATASOURCE, props, null, this ); } else { pentahoConnection = PentahoConnectionFactory.getConnection( IPentahoConnection.SQL_DATASOURCE, driverClass, dialect.getURLWithExtraOptions( connection ), connection.getUsername(), getConnectionPassword( connection.getName(), connection.getPassword() ), null, this );
public static SQLConnection getConnection( String connectionName ) throws DatasourceServiceException { IDatabaseConnection connection = null; try { ConnectionServiceImpl service = new ConnectionServiceImpl(); connection = service.getConnectionByName( connectionName ); DatabaseDialectService dialectService = new DatabaseDialectService(); IDatabaseDialect dialect = dialectService.getDialect( connection ); String driverClass = null; if ( connection.getDatabaseType().getShortName().equals( "GENERIC" ) ) { driverClass = connection.getAttributes().get( GenericDatabaseDialect.ATTRIBUTE_CUSTOM_DRIVER_CLASS ); } else { driverClass = dialect.getNativeDriver(); } return new SQLConnection( driverClass, dialect.getURLWithExtraOptions( connection ), connection.getUsername(), connection.getPassword(), null ); } catch ( ConnectionServiceException e1 ) { return null; } catch ( DatabaseDialectException e ) { return null; } }
@Override public String getURL( IDatabaseConnection databaseConnection ) throws DatabaseDialectException { return SimbaUrl.Builder.create() .withAccessType( databaseConnection.getAccessType().ordinal() ) .withDatabaseName( databaseConnection.getDatabaseName() ) .withPort( databaseConnection.getDatabasePort() ) .withDefaultPort( getDefaultDatabasePort() ) .withHostname( databaseConnection.getHostname() ) .withJdbcPrefix( getNativeJdbcPre() ) .withUsername( databaseConnection.getUsername() ) .withPassword( databaseConnection.getPassword() ) .withIsKerberos( isKerberos( databaseConnection ) ) .build() .getURL(); }
public IDatabaseConnection convertToObject( String xml ) { Document document = XMLParser.parse( xml ); Element element = document.getDocumentElement(); IDatabaseConnection databaseConnection = new DatabaseConnection(); databaseConnection.setDatabaseName( getNodeValueByTagName( element, DATABASE_NAME ) ); databaseConnection.setHostname( getNodeValueByTagName( element, HOSTNAME ) ); databaseConnection.setIndexTablespace( getNodeValueByTagName( element, INDEX_TABLESPACE ) ); databaseConnection.setDataTablespace( getNodeValueByTagName( element, DATA_TABLESPACE ) ); databaseConnection.setName( getNodeValueByTagName( element, NAME ) ); databaseConnection.setUsername( getNodeValueByTagName( element, USERNAME ) ); databaseConnection.setPassword( getNodeValueByTagName( element, PASSWORD ) ); databaseConnection.setDatabasePort( getNodeValueByTagName( element, DATABASE_PORT ) ); databaseConnection .setAccessType( DatabaseAccessType.getAccessTypeByName( getNodeValueByTagName( element, ACCESS_TYPE ) ) ); databaseConnection.setDatabaseType( (DatabaseType) databaseTypeHelper.getDatabaseTypeByShortName( getNodeValueByTagName( element, DATABASE_TYPE ) ) ); databaseConnection.setPassword( getNodeValueByTagName( element, PASSWORD ) ); databaseConnection.setInformixServername( getNodeValueByTagName( element, SERVER_NAME ) ); for ( Node node : getNodesByTagName( element, ATTRIBUTES ) ) { databaseConnection.getAttributes().put( node.getNodeName(), node.getNodeValue() ); } return databaseConnection; }
@Override public String getURL( IDatabaseConnection connection ) throws DatabaseDialectException { StringBuffer urlBuffer = new StringBuffer( getNativeJdbcPre() ); /* * String username = connection.getUsername(); if(username != null && !"".equals(username)) { * urlBuffer.append(username); String password = connection.getPassword(); if(password != null && * !"".equals(password)) { urlBuffer.append(":"); urlBuffer.append(password); } urlBuffer.append("@"); } */ urlBuffer.append( connection.getHostname() ); urlBuffer.append( ":" ); urlBuffer.append( connection.getDatabasePort() ); urlBuffer.append( "/" ); urlBuffer.append( connection.getDatabaseName() ); String principalPropertyName = getDatabaseType().getShortName() + ".principal"; String principal = connection.getExtraOptions().get( principalPropertyName ); String extraPrincipal = connection.getAttributes().get( DatabaseConnection.ATTRIBUTE_PREFIX_EXTRA_OPTION + principalPropertyName ); urlBuffer.append( ";impala_db=true" ); if ( principal != null || extraPrincipal != null ) { return urlBuffer.toString(); } urlBuffer.append( ";auth=noSasl" ); return urlBuffer.toString(); }
public boolean isConnectionExist( String connectionName ) { for ( IDatabaseConnection connection : connectionList ) { if ( connection.getName().equals( connectionName ) ) { return true; } } return false; } }
String url = null; try { if ( databaseConnection.getAccessType().equals( DatabaseAccessType.JNDI ) ) { throw new DBDatasourceServiceException( Messages.getInstance().getErrorString( "PooledDatasourceHelper.ERROR_0008_UNABLE_TO_POOL_DATASOURCE_IT_IS_JNDI", databaseConnection.getName() ) ); throw new DBDatasourceServiceException( Messages.getInstance().getErrorString( "PooledDatasourceHelper.ERROR_0005_UNABLE_TO_POOL_DATASOURCE_NO_DIALECT_SERVICE", databaseConnection.getName() ) ); "PooledDatasourceHelper.ERROR_0004_UNABLE_TO_POOL_DATASOURCE_NO_DIALECT", databaseConnection.getName() ) ); if ( databaseConnection.getDatabaseType().getShortName().equals( "GENERIC" ) ) { //$NON-NLS-1$ driverClass = databaseConnection.getAttributes().get( GenericDatabaseDialect.ATTRIBUTE_CUSTOM_DRIVER_CLASS ); if ( StringUtils.isEmpty( driverClass ) ) { throw new DBDatasourceServiceException( Messages.getInstance().getErrorString( "PooledDatasourceHelper.ERROR_0006_UNABLE_TO_POOL_DATASOURCE_NO_CLASSNAME", databaseConnection.getName() ) ); if ( StringUtils.isEmpty( driverClass ) ) { throw new DBDatasourceServiceException( Messages.getInstance().getErrorString( "PooledDatasourceHelper.ERROR_0007_UNABLE_TO_POOL_DATASOURCE_NO_DRIVER", databaseConnection.getName() ) ); Map<String, String> attributes = databaseConnection.getConnectionPoolingProperties(); throw new DriverNotInitializedException( Messages.getInstance() .getErrorString( "PooledDatasourceHelper.ERROR_0009_UNABLE_TO_POOL_DATASOURCE_CANT_INITIALIZE", databaseConnection.getName(), driverClass ) );
@Override public String getURL( IDatabaseConnection connection ) throws DatabaseDialectException { StringBuffer urlBuffer = new StringBuffer( getNativeJdbcPre() ); /* * String username = connection.getUsername(); if(username != null && !"".equals(username)) { * urlBuffer.append(username); String password = connection.getPassword(); if(password != null && * !"".equals(password)) { urlBuffer.append(":"); urlBuffer.append(password); } urlBuffer.append("@"); } */ urlBuffer.append( connection.getHostname() ); urlBuffer.append( ":" ); urlBuffer.append( connection.getDatabasePort() ); urlBuffer.append( "/" ); urlBuffer.append( connection.getDatabaseName() ); return urlBuffer.toString(); }
protected static ConnectionFactory getConnectionFactory( IDatabaseConnection databaseConnection, String url ) { Properties props = new Properties(); props.put( "user", StringEscapeUtils.unescapeHtml( databaseConnection.getUsername() ) ); props.put( "password", StringEscapeUtils.unescapeHtml( databaseConnection.getPassword() ) ); if ( url.startsWith( "jdbc:mysql:" ) || ( url.startsWith( "jdbc:mariadb:" ) ) ) { props.put( "connectTimeout", "5000" ); } return new DriverManagerConnectionFactory( url, props ); }
@Before public void setUp(){ IDatabaseConnection mockConnection = mock(IDatabaseConnection.class); // Set it up - this is a JNDI connection when( mockConnection.getAccessType()).thenReturn( DatabaseAccessType.JNDI ); when( mockConnection.getDatabaseName()).thenReturn( dsName ); DataSource mockDs = mock(DataSource.class); IDatasourceMgmtService mockMgmtService = mock(IDatasourceMgmtService.class); spyService = spy(service ); try { when( mockMgmtService.getDatasourceByName( dsName ) ).thenReturn( mockConnection ); } catch ( DatasourceMgmtServiceException e ) { e.printStackTrace(); } try { doReturn(mockDs).when( spyService ).getJndiDataSource( dsName ); } catch ( DBDatasourceServiceException e ) { e.printStackTrace(); } doReturn( mockMgmtService ).when( spyService ).getDatasourceMgmtService(); service.clearCache(); }
public boolean addConnection( IDatabaseConnection connection ) throws ConnectionServiceException { ensureDataAccessPermission(); try { if ( connection.getAccessType() != null && connection.getAccessType().equals( DatabaseAccessType.JNDI ) ) { IPentahoConnection pentahoConnection = null; pentahoConnection = PentahoConnectionFactory .getConnection( IPentahoConnection.SQL_DATASOURCE, connection.getDatabaseName(), null, this ); try { connection.setUsername( ( ( (SQLConnection) pentahoConnection ).getNativeConnection().getMetaData().getUserName() ) ); } catch ( Exception e ) { logger.warn( "Unable to get username from datasource: " + connection.getName() ); String message = Messages.getErrorString( "ConnectionServiceImpl.ERROR_0004_UNABLE_TO_ADD_CONNECTION", //$NON-NLS-1$ connection.getName(), duplicateDatasourceException.getLocalizedMessage() ); String message = Messages.getErrorString( "ConnectionServiceImpl.ERROR_0004_UNABLE_TO_ADD_CONNECTION", //$NON-NLS-1$ connection.getName(), e.getLocalizedMessage() );
/** * If password is empty, that means connection sent from UI and user didn't change password. Since we cleaned password * during sending to UI, we need to use stored password. */ private void applySavedPassword( IDatabaseConnection conn ) throws ConnectionServiceException { if ( StringUtils.isBlank( conn.getPassword() ) ) { IDatabaseConnection savedConn; if ( conn.getId() != null ) { savedConn = connectionService.getConnectionById( conn.getId() ); } else { try { savedConn = connectionService.getConnectionByName( conn.getName() ); } catch ( ConnectionServiceException e ) { logger.warn( e.getMessage() ); savedConn = null; } } // The connection might not be in the database because this may be a new // hive connection that doesn't require a password if ( savedConn != null ) { conn.setPassword( savedConn.getPassword() ); } } }
@Override public String testConnection( IDatabaseConnection connection ) { try { connection .setPassword( ConnectionServiceHelper.getConnectionPassword( connection.getName(), connection.getPassword() ) ); return super.testConnection( connection ); } catch ( ConnectionServiceException e ) { return super.testConnection( connection ); } } }