Search in sources :

Example 1 with DataSourceType

use of fr.xephi.authme.datasource.DataSourceType in project AuthMeReloaded by AuthMe.

the class DataSourceProvider method createDataSource.

/**
 * Sets up the data source.
 *
 * @return the constructed data source
 * @throws SQLException when initialization of a SQL data source failed
 */
private DataSource createDataSource() throws SQLException {
    DataSourceType dataSourceType = settings.getProperty(DatabaseSettings.BACKEND);
    DataSource dataSource;
    switch(dataSourceType) {
        case MYSQL:
            dataSource = new MySQL(settings, mySqlExtensionsFactory);
            break;
        case POSTGRESQL:
            dataSource = new PostgreSqlDataSource(settings, mySqlExtensionsFactory);
            break;
        case SQLITE:
            dataSource = new SQLite(settings, dataFolder);
            break;
        default:
            throw new UnsupportedOperationException("Unknown data source type '" + dataSourceType + "'");
    }
    if (settings.getProperty(DatabaseSettings.USE_CACHING)) {
        dataSource = new CacheDataSource(dataSource, playerCache);
    }
    if (DataSourceType.SQLITE.equals(dataSourceType)) {
        checkDataSourceSize(dataSource);
    }
    return dataSource;
}
Also used : CacheDataSource(fr.xephi.authme.datasource.CacheDataSource) DataSourceType(fr.xephi.authme.datasource.DataSourceType) MySQL(fr.xephi.authme.datasource.MySQL) SQLite(fr.xephi.authme.datasource.SQLite) PostgreSqlDataSource(fr.xephi.authme.datasource.PostgreSqlDataSource) CacheDataSource(fr.xephi.authme.datasource.CacheDataSource) DataSource(fr.xephi.authme.datasource.DataSource) PostgreSqlDataSource(fr.xephi.authme.datasource.PostgreSqlDataSource)

Example 2 with DataSourceType

use of fr.xephi.authme.datasource.DataSourceType in project AuthMeReloaded by AuthMe.

the class AbstractDataSourceConverterTest method shouldThrowForDestinationTypeMismatch.

@Test
public void shouldThrowForDestinationTypeMismatch() {
    // given
    DataSource destination = mock(DataSource.class);
    given(destination.getType()).willReturn(DataSourceType.MYSQL);
    DataSourceType destinationType = DataSourceType.SQLITE;
    DataSource source = mock(DataSource.class);
    Converter converter = new DataSourceConverterTestImpl<>(source, destination, destinationType);
    CommandSender sender = mock(CommandSender.class);
    // when
    converter.execute(sender);
    // then
    verify(sender).sendMessage(argThat(containsString("Please configure your connection to SQLITE")));
    verify(destination, only()).getType();
    verifyNoInteractions(source);
}
Also used : DataSourceType(fr.xephi.authme.datasource.DataSourceType) CommandSender(org.bukkit.command.CommandSender) DataSource(fr.xephi.authme.datasource.DataSource) Test(org.junit.Test)

Example 3 with DataSourceType

use of fr.xephi.authme.datasource.DataSourceType in project AuthMeReloaded by AuthMe.

the class AbstractDataSourceConverterTest method shouldHandleSourceThrowingException.

@Test
public void shouldHandleSourceThrowingException() {
    // given
    DataSource source = mock(DataSource.class);
    DataSource destination = mock(DataSource.class);
    DataSourceType destinationType = DataSourceType.SQLITE;
    given(destination.getType()).willReturn(destinationType);
    DataSourceConverterTestImpl<DataSource> converter = Mockito.spy(new DataSourceConverterTestImpl<>(source, destination, destinationType));
    doThrow(IllegalStateException.class).when(converter).getSource();
    CommandSender sender = mock(CommandSender.class);
    // when
    converter.execute(sender);
    // then
    verify(sender).sendMessage("The data source to convert from could not be initialized");
    verify(destination, only()).getType();
    verifyNoInteractions(source);
}
Also used : DataSourceType(fr.xephi.authme.datasource.DataSourceType) CommandSender(org.bukkit.command.CommandSender) DataSource(fr.xephi.authme.datasource.DataSource) Test(org.junit.Test)

Example 4 with DataSourceType

use of fr.xephi.authme.datasource.DataSourceType in project AuthMeReloaded by AuthMe.

the class AbstractDataSourceConverterTest method shouldConvertAndSkipExistingPlayers.

@Test
public void shouldConvertAndSkipExistingPlayers() {
    // given
    DataSource source = mock(DataSource.class);
    DataSource destination = mock(DataSource.class);
    DataSourceType destinationType = DataSourceType.MYSQL;
    given(destination.getType()).willReturn(destinationType);
    List<PlayerAuth> auths = Arrays.asList(mockAuthWithName("Steven"), mockAuthWithName("bobby"), mockAuthWithName("Jack"));
    given(source.getAllAuths()).willReturn(auths);
    given(destination.isAuthAvailable(auths.get(0).getNickname())).willReturn(true);
    Converter converter = new DataSourceConverterTestImpl<>(source, destination, destinationType);
    CommandSender sender = mock(CommandSender.class);
    // when
    converter.execute(sender);
    // then
    verify(destination).getType();
    verify(destination, times(3)).isAuthAvailable(anyString());
    verify(destination, times(2)).saveAuth(any(PlayerAuth.class));
    verify(destination, times(2)).updateSession(any(PlayerAuth.class));
    verify(destination, times(2)).updateQuitLoc(any(PlayerAuth.class));
    verifyNoMoreInteractions(destination);
    verify(sender).sendMessage(argThat(containsString(auths.get(0).getNickname())));
    verify(sender).sendMessage(argThat(containsString("successfully converted")));
}
Also used : DataSourceType(fr.xephi.authme.datasource.DataSourceType) CommandSender(org.bukkit.command.CommandSender) PlayerAuth(fr.xephi.authme.data.auth.PlayerAuth) DataSource(fr.xephi.authme.datasource.DataSource) Test(org.junit.Test)

Aggregations

DataSource (fr.xephi.authme.datasource.DataSource)4 DataSourceType (fr.xephi.authme.datasource.DataSourceType)4 CommandSender (org.bukkit.command.CommandSender)3 Test (org.junit.Test)3 PlayerAuth (fr.xephi.authme.data.auth.PlayerAuth)1 CacheDataSource (fr.xephi.authme.datasource.CacheDataSource)1 MySQL (fr.xephi.authme.datasource.MySQL)1 PostgreSqlDataSource (fr.xephi.authme.datasource.PostgreSqlDataSource)1 SQLite (fr.xephi.authme.datasource.SQLite)1