PentahoSystemDatabaseDialectProvider implements IDatabaseDialectProvider { @Override public IDatabaseDialect getDialect( boolean usableOnly, IDatabaseType databaseType ) { if ( databaseType == null ) { return null; } Stream<IDatabaseDialect> dialects = getDialectStream().filter( dialect -> dialect.getDatabaseType().equals( databaseType ) ); return filterUsableDialects( dialects, usableOnly ).findFirst().orElse( null ); } PentahoSystemDatabaseDialectProvider();  PentahoSystemDatabaseDialectProvider( Function<Class<IDatabaseDialect>, List<IDatabaseDialect>> dialectGetter ); @Override Collection<IDatabaseDialect> getDialects( boolean usableOnly ); @Override IDatabaseDialect getDialect( boolean usableOnly, IDatabaseType databaseType );  }
@Test public void testGetDialectUsableOnly() { assertEquals( usableDatabaseDialect, pentahoSystemDatabaseDialectProvider.getDialect( true, usableDatabaseType ) ); assertEquals( usableIDialect, pentahoSystemDatabaseDialectProvider.getDialect( true, usableIDialectType ) ); assertNull( pentahoSystemDatabaseDialectProvider.getDialect( true, unusableDatabaseType ) ); assertNull( pentahoSystemDatabaseDialectProvider.getDialect( true, unusableIDialectType ) ); }
@Test public void testGetDialectAll() { assertEquals( usableDatabaseDialect, pentahoSystemDatabaseDialectProvider.getDialect( false, usableDatabaseType ) ); assertEquals( usableIDialect, pentahoSystemDatabaseDialectProvider.getDialect( false, usableIDialectType ) ); assertEquals( unusableDatabaseDialect, pentahoSystemDatabaseDialectProvider.getDialect( false, unusableDatabaseType ) ); assertEquals( unusableIDialect, pentahoSystemDatabaseDialectProvider.getDialect( false, unusableIDialectType ) ); assertNull( pentahoSystemDatabaseDialectProvider.getDialect( false, mock( IDatabaseType.class ) ) ); assertNull( pentahoSystemDatabaseDialectProvider.getDialect( false, null ) ); }