Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package it.inaf.ia2.tsm;
import ch.vorburger.mariadb4j.DB;
import ch.vorburger.mariadb4j.DBConfigurationBuilder;
import com.opentable.db.postgres.embedded.UncompressBundleDirectoryResolver;
import com.opentable.db.postgres.embedded.EmbeddedPostgres;
import com.opentable.db.postgres.embedded.PgBinaryResolver;
import it.inaf.ia2.tsm.datalayer.Credentials;
import it.inaf.ia2.tsm.datalayer.DatabaseType;
import java.io.IOException;
import java.io.InputStream;
import org.springframework.core.io.ClassPathResource;
public class EmbeddedDatabases {
public static Credentials mariadbCredentials() throws Exception {
DBConfigurationBuilder configBuilder = DBConfigurationBuilder.newBuilder();
DB db = DB.newEmbeddedDB(configBuilder.build());
db.start();
Credentials mysqlCredentials = new Credentials(DatabaseType.MYSQL);
mysqlCredentials.setHostname("127.0.0.1");
mysqlCredentials.setPort(configBuilder.getPort());
mysqlCredentials.setUsername("root");
mysqlCredentials.setPassword("");
return mysqlCredentials;
}
public static Credentials postgresCredentials() throws Exception {
EmbeddedPostgres embeddedPg = EmbeddedPostgres.builder()
.setPgDirectoryResolver(new UncompressBundleDirectoryResolver(new CustomPostgresBinaryResolver()))
.start();
Credentials postgresCredentials = new Credentials(DatabaseType.POSTGRES);
postgresCredentials.setHostname("127.0.0.1");
postgresCredentials.setPort(embeddedPg.getPort());
postgresCredentials.setUsername("postgres");
postgresCredentials.setPassword("");
postgresCredentials.setDatabase("postgres");
return postgresCredentials;
}
private static class CustomPostgresBinaryResolver implements PgBinaryResolver {
/**
* Loads specific embedded Postgres version.
*/
@Override
public InputStream getPgBinary(String system, String architecture) throws IOException {
ClassPathResource resource = new ClassPathResource(String.format("postgres-%s-%s.txz", system.toLowerCase(), architecture));
return resource.getInputStream();
}
}
}