This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit f7cc7b94ff40645750888af89a47760752dd4bd3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Sep 2 21:17:45 2016 +0200 Need to be able to auto-migrate some databases (such as test one) --- .../ObserveDataSourceConfiguration.java | 5 +++++ .../ObserveDataSourceConfigurationRest.java | 18 ++++++++++------ .../ObserveDataSourceConfigurationTopiaH2.java | 25 +++++++++++----------- .../ObserveDataSourceConfigurationTopiaPG.java | 17 ++++++++------- ...ObserveDataSourceConfigurationTopiaSupport.java | 17 ++++++++------- .../topia/service/DataSourceServiceTopia.java | 2 +- 6 files changed, 49 insertions(+), 35 deletions(-) diff --git a/services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java b/services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java index 61b4f19..4e81948 100644 --- a/services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java +++ b/services-configuration-api/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfiguration.java @@ -41,4 +41,9 @@ public interface ObserveDataSourceConfiguration extends Serializable, Cloneable ObserveDataSourceConfiguration clone() throws CloneNotSupportedException; + /** + * @return {@code true} si on peut faire une migration automatique. + */ + boolean isAutoMigrate(); + } diff --git a/services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRest.java b/services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRest.java index 10df799..5bc22c2 100644 --- a/services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRest.java +++ b/services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRest.java @@ -42,32 +42,32 @@ public class ObserveDataSourceConfigurationRest implements ObserveDataSourceConf /** * Le libellé de la source de données. */ - protected String label; + private String label; /** * L'url du serveur à utiliser. */ - protected URL serverUrl; + private URL serverUrl; /** * Le login de l'utilisateur. */ - protected String login; + private String login; /** * Le mot de passe de l'utilisateur. */ - protected char[] password; + private char[] password; /** * Un nom optionel de base à utiliser, si rien n'est préciser, on utilisera la base par défaut du serveur. */ - protected String optionalDatabaseName; + private String optionalDatabaseName; /** * La version de la base demmandé */ - protected Version modelVersion; + private Version modelVersion; @Override @@ -135,6 +135,12 @@ public class ObserveDataSourceConfigurationRest implements ObserveDataSourceConf } @Override + public boolean isAutoMigrate() { + // on ne peut jamais migrer sur un serveur + return false; + } + + @Override public String toString() { return MoreObjects.toStringHelper(this) .add("label", label) diff --git a/services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java b/services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java index 68f64f6..1ff7a52 100644 --- a/services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java +++ b/services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaH2.java @@ -25,6 +25,7 @@ package fr.ird.observe.services.configuration; import com.google.common.base.MoreObjects; import java.io.File; +import java.util.Arrays; import java.util.Objects; /** @@ -32,19 +33,19 @@ import java.util.Objects; * * @author Tony Chemit - chemit@codelutin.com */ -public class ObserveDataSourceConfigurationTopiaH2 extends ObserveDataSourceConfigurationTopiaSupport { +public class ObserveDataSourceConfigurationTopiaH2 extends ObserveDataSourceConfigurationTopiaSupport { private static final long serialVersionUID = 1L; /** * Le répertoire où se trouve la base (le nom de la base est {@code obstuna}). */ - protected File directory; + private File directory; /** * Le nom de la base à ouvrir. */ - protected String dbName; + private String dbName; @Override public boolean isH2Database() { @@ -86,24 +87,24 @@ public class ObserveDataSourceConfigurationTopiaH2 extends ObserveDataSourceConf if (!(o instanceof ObserveDataSourceConfigurationTopiaH2)) return false; ObserveDataSourceConfigurationTopiaH2 that = (ObserveDataSourceConfigurationTopiaH2) o; return Objects.equals(directory, that.directory) && - Objects.equals(dbName, that.dbName) && - Objects.equals(username, that.username) && - Objects.equals(password, that.password); + Objects.equals(dbName, that.dbName) && + Objects.equals(getUsername(), that.getUsername()) && + Arrays.equals(getPassword(), that.getPassword()); } @Override public int hashCode() { - return Objects.hash(directory, dbName, username, password); + return Objects.hash(directory, dbName, getUsername(), getPassword()); } @Override public String toString() { return MoreObjects.toStringHelper(this) - .add("directory", directory) - .add("dbName", dbName) - .add("username", username) - .add("password", "***") - .toString(); + .add("directory", directory) + .add("dbName", dbName) + .add("username", getUsername()) + .add("password", "***") + .toString(); } @Override diff --git a/services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaPG.java b/services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaPG.java index cd3b412..645cd3c 100644 --- a/services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaPG.java +++ b/services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaPG.java @@ -24,6 +24,7 @@ package fr.ird.observe.services.configuration; import com.google.common.base.MoreObjects; +import java.util.Arrays; import java.util.Objects; /** @@ -38,12 +39,12 @@ public class ObserveDataSourceConfigurationTopiaPG extends ObserveDataSourceConf /** * L'url jdbc de la source. */ - protected String jdbcUrl; + private String jdbcUrl; /** * Est-ce que l'on doit utiliser une connexion ssl ? */ - protected boolean useSsl; + private boolean useSsl; @Override public boolean isH2Database() { @@ -76,23 +77,23 @@ public class ObserveDataSourceConfigurationTopiaPG extends ObserveDataSourceConf if (this == o) return true; if (!(o instanceof ObserveDataSourceConfigurationTopiaPG)) return false; ObserveDataSourceConfigurationTopiaPG that = (ObserveDataSourceConfigurationTopiaPG) o; - return Objects.equals(label, that.label) && + return Objects.equals(getLabel(), that.getLabel()) && Objects.equals(jdbcUrl, that.jdbcUrl) && - Objects.equals(username, that.username) && - Objects.equals(password, that.password); + Objects.equals(getUsername(), that.getUsername()) && + Arrays.equals(getPassword(), that.getPassword()); } @Override public int hashCode() { - return Objects.hash(label, jdbcUrl, username, password); + return Objects.hash(getLabel(), jdbcUrl, getUsername(), getPassword()); } @Override public String toString() { return MoreObjects.toStringHelper(this) - .add("label", label) + .add("label", getLabel()) .add("jdbcUrl", jdbcUrl) - .add("username", username) + .add("username", getUsername()) .add("password", "***") .add("useSsl", useSsl) .toString(); diff --git a/services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaSupport.java b/services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaSupport.java index 62965ff..ef2ff3f 100644 --- a/services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaSupport.java +++ b/services-configuration-topia/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationTopiaSupport.java @@ -36,39 +36,39 @@ public abstract class ObserveDataSourceConfigurationTopiaSupport implements Obse /** * Le nom de la data source. */ - protected String label; + private String label; /** * L'utilisateur pour se connecter à la source. */ - protected String username; + private String username; /** * Le mot de passe pour se connecter à la source. */ - protected char[] password; + private char[] password; //FIXME deplacer ça dans l'objet de création ou d'ouverture de base /** * Est-ce que la base doit être migrée à son ouverture? */ - protected boolean canMigrate; + private boolean canMigrate; //FIXME deplacer ça dans l'objet de création ou d'ouverture de base /** * Est-ce que l'on peut voir la progression lors d'une migration ? */ - protected boolean showMigrationProgression; + private boolean showMigrationProgression; //FIXME deplacer ça dans l'objet de création ou d'ouverture de base /** * Est-ce que l'on peut voir le script sql de migration à appliquer ? */ - protected boolean showMigrationSql; + private boolean showMigrationSql; - protected boolean autoMigrate; + private boolean autoMigrate; - protected Version modelVersion; + private Version modelVersion; public abstract boolean isH2Database(); @@ -123,6 +123,7 @@ public abstract class ObserveDataSourceConfigurationTopiaSupport implements Obse this.showMigrationSql = showMigrationSql; } + @Override public boolean isAutoMigrate() { return autoMigrate; } diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/DataSourceServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/DataSourceServiceTopia.java index d37c6ee..8335c55 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/DataSourceServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/DataSourceServiceTopia.java @@ -396,7 +396,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS Version dbVersion = dataSourceInformation.getVersion(); Version requestVersion = dataSourceConfiguration.getModelVersion(); - if (!dbVersion.equals(requestVersion)) { + if (!dataSourceConfiguration.isAutoMigrate() && !dbVersion.equals(requestVersion)) { String message = l(getApplicationLocale(), "observe.services.topia.error.database.badModelVersion", requestVersion, dbVersion); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.