branch develop updated (4ccdc8e -> 8d5ba41)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository echobase. See http://git.codelutin.com/echobase.git from 4ccdc8e fixes #6510: Revoir la position des layers dans la carto new 8d5ba41 improve pg jdbc url The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 8d5ba414cb02d860ac8ca6ea15903799b9188b73 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Jan 22 12:59:04 2015 +0100 improve pg jdbc url Summary of changes: .../services/service/spatial/GisService.java | 16 ++----- .../services/service/spatial/LizmapRepository.java | 15 ++----- .../services/service/spatial/PgJdbcUrl.java | 43 ++++++++++++++++++ .../service/spatial/LizmapRepositoryTest.java | 6 +-- .../services/service/spatial/PgJdbcUrlTest.java | 52 ++++++++++++++++++++++ 5 files changed, 106 insertions(+), 26 deletions(-) create mode 100644 echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/PgJdbcUrl.java create mode 100644 echobase-services/src/test/java/fr/ifremer/echobase/services/service/spatial/PgJdbcUrlTest.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository echobase. See http://git.codelutin.com/echobase.git commit 8d5ba414cb02d860ac8ca6ea15903799b9188b73 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Jan 22 12:59:04 2015 +0100 improve pg jdbc url --- .../services/service/spatial/GisService.java | 16 ++----- .../services/service/spatial/LizmapRepository.java | 15 ++----- .../services/service/spatial/PgJdbcUrl.java | 43 ++++++++++++++++++ .../service/spatial/LizmapRepositoryTest.java | 6 +-- .../services/service/spatial/PgJdbcUrlTest.java | 52 ++++++++++++++++++++++ 5 files changed, 106 insertions(+), 26 deletions(-) diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/GisService.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/GisService.java index e8f98f6..53105cb 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/GisService.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/GisService.java @@ -57,8 +57,6 @@ public class GisService extends EchoBaseServiceSupport { private static final String[] TEMPLATE_MARKUP = {"{{dbname}}", "{{host}}", "{{port}}", "{{userName}}", "{{password}}", "{{voyageName}}", "{{voyageId}}", "{{resourcesPath}}"}; - private static final String START_JDBC_URL = "jdbc:postgresql://"; - private static final String GIS_INTERNAL_PATH = "/gis/templates/"; private static final String QGIS_RESOURCES = "/gis/lizmap/resources/"; @@ -231,21 +229,15 @@ public class GisService extends EchoBaseServiceSupport { String[] templateValues = new String[TEMPLATE_MARKUP.length]; String url = conf.getUrl(); - if (!url.startsWith(START_JDBC_URL)) { - throw new EchoBaseTechnicalException("JDBC URL '" + url + "' is no reference to a Postrges database"); - } - //TODO Use a regex - int hostIndex = START_JDBC_URL.length() - 1; - int portIndex = url.indexOf(':', hostIndex); - int dbnameIndex = url.indexOf("/", portIndex); + PgJdbcUrl jdbcUrl = new PgJdbcUrl(url); // dbname - templateValues[0] = url.substring(dbnameIndex + 1); + templateValues[0] = jdbcUrl.getDatabaseName(); // host - templateValues[1] = url.substring(hostIndex + 1, portIndex); + templateValues[1] = jdbcUrl.getHost(); // port - templateValues[2] = url.substring(portIndex + 1, dbnameIndex); + templateValues[2] = jdbcUrl.getPort(); // userName templateValues[3] = conf.getLogin(); // password diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/LizmapRepository.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/LizmapRepository.java index 8ca7a32..aaede6f 100644 --- a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/LizmapRepository.java +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/LizmapRepository.java @@ -42,8 +42,6 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; -import java.util.regex.Matcher; -import java.util.regex.Pattern; /** * Created on 1/14/15. @@ -108,8 +106,6 @@ public class LizmapRepository { private static final String[] REPLACEMENT_LIST = new String[]{"", ""}; - private static final Pattern URL_PATTERN = Pattern.compile("jdbc:postgresql://([^:]+)(:(.+)){0,1}/(.+)"); - private final LizmapRepositoryConfiguration configuration; private String repositoryName; @@ -144,14 +140,11 @@ public class LizmapRepository { String url = configuration.getUrl(); - Matcher matcher = URL_PATTERN.matcher(url); + PgJdbcUrl jdbcUrl = new PgJdbcUrl(url); - if (!matcher.matches()) { - throw new EchoBaseTechnicalException(url + " is not a jdbc postgresql url!"); - } - String host = matcher.group(1); - String port = matcher.group(3); - String dbname = matcher.group(4); + String host = jdbcUrl.getHost(); + String port = jdbcUrl.getPort(); + String dbname = jdbcUrl.getDatabaseName(); repositoryName = configuration.getLizmapRepositoryName() + host + port + dbname; repositoryName = StringUtils.replaceEach(repositoryName, TO_REPLACE, REPLACEMENT_LIST); diff --git a/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/PgJdbcUrl.java b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/PgJdbcUrl.java new file mode 100644 index 0000000..09f36af --- /dev/null +++ b/echobase-services/src/main/java/fr/ifremer/echobase/services/service/spatial/PgJdbcUrl.java @@ -0,0 +1,43 @@ +package fr.ifremer.echobase.services.service.spatial; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Created on 1/22/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 2.9 + */ +public class PgJdbcUrl { + + protected final String url; + + private static final Pattern URL_PATTERN = Pattern.compile("jdbc:postgresql://([^:]+)(:(.+)){0,1}/(.+)"); + + private final Matcher matcher; + + public PgJdbcUrl(String url) { + this.url = url; + matcher = URL_PATTERN.matcher(url); + if (!matcher.matches()) { + throw new IllegalArgumentException(url + " is not a valid pg jdbc url"); + + } + } + + public String getHost() { + return matcher.group(1); + } + + public String getPort() { + String port = matcher.group(3); + return port == null ? "5432" : port; + } + + public String getDatabaseName() { + return matcher.group(4); + } + + +} diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/spatial/LizmapRepositoryTest.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/spatial/LizmapRepositoryTest.java index daf091b..0c000cc 100644 --- a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/spatial/LizmapRepositoryTest.java +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/spatial/LizmapRepositoryTest.java @@ -28,17 +28,17 @@ public class LizmapRepositoryTest extends EchoBaseTestServiceSupport { LizmapRepository lizmapRepository = LizmapRepository.newLizmapRepository(configuration, jdbcConfiguration); String repositoryName = lizmapRepository.getRepositoryName(); Assert.assertNotNull(repositoryName); - Assert.assertEquals("echobaselocalhostnullEchobasetest", repositoryName); + Assert.assertEquals("echobaselocalhost5432Echobasetest", repositoryName); } { - JdbcConfiguration jdbcConfiguration = JdbcConfiguration.newConfig(DriverType.POSTGRESQL, "jdbc:postgresql://localhost:5432/Echobase-test", "login", "password"); + JdbcConfiguration jdbcConfiguration = JdbcConfiguration.newConfig(DriverType.POSTGRESQL, "jdbc:postgresql://localhost:5433/Echobase-test", "login", "password"); LizmapRepository lizmapRepository = LizmapRepository.newLizmapRepository(configuration, jdbcConfiguration); String repositoryName = lizmapRepository.getRepositoryName(); Assert.assertNotNull(repositoryName); - Assert.assertEquals("echobaselocalhost5432Echobasetest", repositoryName); + Assert.assertEquals("echobaselocalhost5433Echobasetest", repositoryName); } diff --git a/echobase-services/src/test/java/fr/ifremer/echobase/services/service/spatial/PgJdbcUrlTest.java b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/spatial/PgJdbcUrlTest.java new file mode 100644 index 0000000..9959a4f --- /dev/null +++ b/echobase-services/src/test/java/fr/ifremer/echobase/services/service/spatial/PgJdbcUrlTest.java @@ -0,0 +1,52 @@ +package fr.ifremer.echobase.services.service.spatial; + +import org.junit.Assert; +import org.junit.Test; + +public class PgJdbcUrlTest { + + @Test + public void testGetPort() { + + { + PgJdbcUrl jdbcUrl = new PgJdbcUrl("jdbc:postgresql://localhost/Echobase-test"); + Assert.assertEquals("5432", jdbcUrl.getPort()); + } + { + PgJdbcUrl jdbcUrl = new PgJdbcUrl("jdbc:postgresql://localhost:5433/Echobase-test"); + Assert.assertEquals("5433", jdbcUrl.getPort()); + + } + + } + + @Test + public void testGetHost() { + + { + PgJdbcUrl jdbcUrl = new PgJdbcUrl("jdbc:postgresql://localhost/Echobase-test"); + Assert.assertEquals("localhost", jdbcUrl.getHost()); + } + { + PgJdbcUrl jdbcUrl = new PgJdbcUrl("jdbc:postgresql://localhost:5433/Echobase-test"); + Assert.assertEquals("localhost", jdbcUrl.getHost()); + + } + + } + + @Test + public void testGetDatabaseName() { + + { + PgJdbcUrl jdbcUrl = new PgJdbcUrl("jdbc:postgresql://localhost/Echobase-test"); + Assert.assertEquals("Echobase-test", jdbcUrl.getDatabaseName()); + } + { + PgJdbcUrl jdbcUrl = new PgJdbcUrl("jdbc:postgresql://localhost:5433/Echobase-test"); + Assert.assertEquals("Echobase-test", jdbcUrl.getDatabaseName()); + + } + + } +} \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm