Skip to content

Commit

Permalink
Merge ae22890 into 8c75ba1
Browse files Browse the repository at this point in the history
  • Loading branch information
labamba63 committed Jul 20, 2018
2 parents 8c75ba1 + ae22890 commit c749b72
Show file tree
Hide file tree
Showing 79 changed files with 2,113 additions and 400 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,6 @@ public RemoteDatabaseSpec getSpec() {
private RemoteDatabaseRequest createRequest() {
Driver driver = configuration.getDriver();
return new RemoteDatabaseRequest(
checkNotNull(
checkNotNull(driver, "20170330:093926").getType(),
"20170330:093953"
).getName(),
driver.getTemplateId().orNull(),
configuration.getInstanceName().orNull()
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package pl.gov.coi.cascades.contract.service;

import com.google.common.base.Optional;
import lombok.Getter;
import pl.gov.coi.cascades.contract.domain.Template;

import javax.annotation.Nullable;
Expand All @@ -14,8 +13,6 @@ public class RemoteDatabaseRequest implements Serializable {

private static final long serialVersionUID = 42L;

@Getter
private final String type;
@Nullable
private final Template template;
@Nullable
Expand All @@ -24,14 +21,11 @@ public class RemoteDatabaseRequest implements Serializable {
/**
* Required argument constructor.
*
* @param type Given type of database (a name or FQCN).
* @param template Given id of template (Optional).
* @param instanceName Given name of instance (Optional).
*/
public RemoteDatabaseRequest(String type,
@Nullable Template template,
public RemoteDatabaseRequest(@Nullable Template template,
@Nullable String instanceName) {
this.type = type;
this.template = template;
this.instanceName = instanceName;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import org.mockito.junit.MockitoRule;
import pl.gov.coi.cascades.contract.domain.DatabaseType;
import pl.gov.coi.cascades.contract.domain.Template;
import pl.gov.coi.cascades.contract.domain.Template;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
Expand Down Expand Up @@ -38,7 +37,7 @@ public class DriverTest {
@Before
public void setUp() {
driver = new Driver(
databaseType,
databaseType,
template
);
}
Expand All @@ -47,7 +46,7 @@ public void setUp() {
public void testDefaultConstructor() throws Exception {
// when
Driver actual = new Driver(
databaseType,
databaseType,
template
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ public class RemoteDatabaseRequestTest {

private RemoteDatabaseRequest remoteDatabaseRequest;
private String instanceName;
private String typeClassName;

@Mock
private Template template;
Expand All @@ -36,9 +35,7 @@ public class RemoteDatabaseRequestTest {
@Before
public void setUp() {
instanceName = "PESEL";
typeClassName = "typeClassName";
remoteDatabaseRequest = new RemoteDatabaseRequest(
typeClassName,
remoteDatabaseRequest = new RemoteDatabaseRequest(
template,
instanceName
);
Expand All @@ -48,7 +45,6 @@ public void setUp() {
public void testDefaultConstructor() throws Exception {
// when
RemoteDatabaseRequest actual = new RemoteDatabaseRequest(
typeClassName,
template,
instanceName
);
Expand Down
9 changes: 9 additions & 0 deletions cascades-server/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Example usage

* Run PostgreSQL server in docker
`docker run --name cascades-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres:10.4`

* Build project with profile `-Ppostgresql`
It adds PostgreSQL driver.

* Run application with profile `mvn spring-boot:run --Dspring.profiles.activeproduction,hibernate,postgresqldocker`
13 changes: 13 additions & 0 deletions cascades-server/app/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -98,4 +98,17 @@
</plugins>
</build>

<profiles>
<profile>
<id>postgresql</id>
<dependencies>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.0-801.jdbc4</version>
</dependency>
</dependencies>
</profile>
</profiles>

</project>
Original file line number Diff line number Diff line change
@@ -1 +1,10 @@
spring.datasource.url=jdbc:h2:mem:CASCADES;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE

cascades.managed-servers[0].serverId=rgey65getg
cascades.managed-servers[0].type=pgsql
cascades.managed-servers[0].dbname=postgres
cascades.managed-servers[0].user=root
cascades.managed-servers[0].password=passwrd
cascades.managed-servers[0].host=172.17.0.3
cascades.managed-servers[0].port=5432

Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@ public void shouldExecutePersistNewTemplate() {
pl.gov.coi.cascades.contract.domain.Template resultTemplate = result.orElse(null);

assertNotNull(resultTemplate);
assertEquals(template.getId(), resultTemplate.getId());
assertEquals(template.getName(), resultTemplate.getName());
assertEquals(template.getServerId(), resultTemplate.getServerId());
assertEquals(template.getVersion(), resultTemplate.getVersion());
assertEquals(template.getStatus(), resultTemplate.getStatus());
assertEquals("1", resultTemplate.getId());
assertEquals("newDatabase", resultTemplate.getName());
assertEquals("1234", resultTemplate.getServerId());
assertEquals("0.0.1", resultTemplate.getVersion());
assertEquals(TemplateIdStatus.CREATED, resultTemplate.getStatus());
}

private pl.gov.coi.cascades.contract.domain.Template createTemplate() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,16 +135,13 @@ private Description buildDescription(MockHttpServletResponse response)
}

private String requestWithNoTemplateId() throws JSONException {
DatabaseTypeStub stub = new DatabaseTypeStub();
return new JSONObject()
.put("type", stub.getName())
.put("instanceName", "dfasd")
.toString();
}

private String requestWithTemplateId(String templateId) throws JSONException {
DatabaseTypeStub stub = new DatabaseTypeStub();
return new JSONObject()
.put("type", stub.getName())
.put("templateId", templateId)
.toString();
}
Expand Down
5 changes: 5 additions & 0 deletions cascades-server/configuration/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@
<name>Cascades :: Server :: Configuration</name>

<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@
@AllArgsConstructor
@RequiredArgsConstructor
class ConnectionConfiguration {
private String driver;
private String url;
private String driverClass;
private String jdbcUrlTemplate;
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,27 @@
*/
public class ConnectionConfigurator {

ConnectionConfiguration getConnectionConfiguration(ServerDef serverDef) {
String driver;
String url;
switch (serverDef.getType()) {
ConnectionConfiguration getConnectionConfiguration(String databaseType) {
String driverClass;
String jdbdUrlTemplate;
switch (databaseType) {
case "ora12c":
driver = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@//%s:%d/%s";
driverClass = "oracle.jdbc.driverClass.OracleDriver";
jdbdUrlTemplate = "jdbc:oracle:thin:@//%s:%d/%s";
break;
case "pgsql":
driver = "org.postgresql.Driver";
url = "jdbc:postgresql://%s:%d/%s";
driverClass = "org.postgresql.Driver";
jdbdUrlTemplate = "jdbc:postgresql://%s:%d/%s";
break;
default:
throw new EidIllegalArgumentException(
"20170728:150904",
"Given driver hasn't been recognised."
String.format("Given database type '%s' hasn't been recognised.", databaseType)
);
}
return new ConnectionConfiguration(
driver,
url
driverClass,
jdbdUrlTemplate
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import org.springframework.context.annotation.Profile;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import pl.gov.coi.cascades.server.domain.DatabaseTemplateGateway;
import pl.gov.coi.cascades.server.domain.DatabaseUserGateway;

import java.util.HashMap;
import java.util.Map;

/**
Expand All @@ -18,36 +18,42 @@
public class DatabaseEndpointConfiguration {

@Bean
Map<String, DriverManagerDataSource> produceDriverManagerDataSource(ServerConfigurationService service,
ConnectionConfigurator connectionConfigurator) {
Map<String, DriverManagerDataSource> managers = new HashMap<>();
for (ServerDef serverDef : service.getManagedServers()) {
ConnectionConfiguration configuration = connectionConfigurator.getConnectionConfiguration(serverDef);
DriverManagerDataSource manager = new DriverManagerDataSource();
manager.setDriverClassName(configuration.getDriver());
manager.setUrl(String.format(
configuration.getUrl(),
serverDef.getHost(),
serverDef.getPort(),
serverDef.getDbname())
);
manager.setPassword(serverDef.getPassword());
manager.setUsername(serverDef.getUser());
managers.put(serverDef.getServerId(), manager);
}
return managers;
Map<String, DriverManagerDataSource> produceDriverManagerDataSource(DriverManagerDataSourceHelper driverManagerDataSourceHelper) {
return driverManagerDataSourceHelper.getManagersMap();
}

@Bean
DatabaseManager produceDatabaseManager(Map<String, DriverManagerDataSource> driver) {
return new DatabaseEndpointManager(driver);
DriverManagerDataSourceProvider produceDriverManagerDataSourceProvider() {
return new DriverManagerDataSourceProviderImpl();
}

@Bean
DriverManagerDataSourceHelper produceDriverManagerDataSourceHelper(ConnectionConfigurator connectionConfigurator,
ServerConfigurationService serverConfigurationService,
DriverManagerDataSourceProvider driverManagerDataSourceProvider) {
return new DriverManagerDataSourceHelper(
connectionConfigurator,
serverConfigurationService,
driverManagerDataSourceProvider
);
}

@Bean
DatabaseManager produceDatabaseManager(Map<String, DriverManagerDataSource> driverManagerMap,
DriverManagerDataSourceHelper driverManagerDataSourceHelper) {
return new DatabaseEndpointManager(driverManagerMap, driverManagerDataSourceHelper);
}

@Bean
DatabaseTemplateGateway produceDatabaseTemplateGateway(DatabaseManager manager) {
return new GeneralTemplateGateway(manager);
}

@Bean
DatabaseUserGateway produceDatabaseUserGateway(DatabaseManager manager) {
return new GeneralUserGateway(manager);
}

@Bean
ConnectionConfigurator produceConnectionConfiguration() {
return new ConnectionConfigurator();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import pl.wavesoftware.eid.exceptions.EidIllegalArgumentException;

import javax.inject.Inject;
import java.sql.SQLException;
import java.util.Map;

/**
Expand All @@ -15,14 +14,17 @@
public class DatabaseEndpointManager implements DatabaseManager {

private final Map<String, DriverManagerDataSource> managers;
private final DriverManagerDataSourceHelper driverManagerDataSourceHelper;

@Inject
DatabaseEndpointManager(Map<String, DriverManagerDataSource> managers) {
DatabaseEndpointManager(Map<String, DriverManagerDataSource> managers,
DriverManagerDataSourceHelper driverManagerDataSourceHelper) {
this.managers = managers;
this.driverManagerDataSourceHelper = driverManagerDataSourceHelper;
}

@Override
public ConnectionDatabase get(String serverId) throws SQLException {
public ConnectionDatabase getConnectionToServer(String serverId) {
DriverManagerDataSource manager = managers.get(serverId);

if (manager == null) {
Expand All @@ -38,4 +40,13 @@ public ConnectionDatabase get(String serverId) throws SQLException {
);
}

@Override
public ConnectionDatabase getConnectionToTemplate(String serverId, String templateName) {
DriverManagerDataSource manager = driverManagerDataSourceHelper.getManager(serverId, templateName);
return new ConnectionDatabase(
new JdbcTemplate(manager),
manager.getUrl()
);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,19 @@
*/
public interface DatabaseManager {

ConnectionDatabase get(String serverId) throws SQLException;
/**
* Returns connection to database with sepcified serverId.
* @param serverId server ID
* @return connection to database
*/
ConnectionDatabase getConnectionToServer(String serverId) throws SQLException;

/**
* Returns connection to template in database with sepcified serverId.
* @param serverId server ID
* @param templateName template name
* @return connection to database
*/
ConnectionDatabase getConnectionToTemplate(String serverId, String templateName) throws SQLException;

}
Loading

0 comments on commit c749b72

Please sign in to comment.