This is an automated email from the git hooks/post-receive script. New commit to branch feature/7549 in repository observe. See http://git.codelutin.com/observe.git commit 34b2c0e0a41e4eb689e03b167440abe13eb51556 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 30 09:45:11 2015 +0200 renomage en observeDbUserDto et ajout du role d'administrator (refs #7549) --- .../services/service/DataSourceService.java | 6 ++--- .../dto/{UserDtos.java => ObserveDbUserDtos.java} | 6 ++--- .../constants/{Role.java => ObserveDbRole.java} | 5 +++-- .../src/main/xmi/observe-services-dto-common.zargo | Bin 38585 -> 39020 bytes .../fr/ird/observe/services/ObserveJdbcHelper.java | 19 +++++++++------- .../observe/services/ObserveSecurityHelper.java | 25 ++++++++++++--------- .../services/dto/ObserveDtosInitializer.java | 2 +- .../services/service/DataSourceServiceTopia.java | 8 +++---- 8 files changed, 39 insertions(+), 32 deletions(-) diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java index f5f1c9e..bd380d0 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/DataSourceService.java @@ -28,7 +28,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConnection; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; -import fr.ird.observe.services.dto.UserDto; +import fr.ird.observe.services.dto.ObserveDbUserDto; import fr.ird.observe.services.spi.NoDataAccess; import fr.ird.observe.services.spi.ReadDataPermission; import fr.ird.observe.services.spi.ReadReferentialPermission; @@ -62,12 +62,12 @@ public interface DataSourceService extends ObserveService { @WriteReferentialPermission @ReadDataPermission @WriteDataPermission - Set<UserDto> getUsers(); + Set<ObserveDbUserDto> getUsers(); @ReadReferentialPermission @WriteReferentialPermission @ReadDataPermission @WriteDataPermission @Write - void applySecurity(Set<UserDto> users); + void applySecurity(Set<ObserveDbUserDto> users); } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/UserDtos.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ObserveDbUserDtos.java similarity index 71% rename from observe-services-model/src/main/java/fr/ird/observe/services/dto/UserDtos.java rename to observe-services-model/src/main/java/fr/ird/observe/services/dto/ObserveDbUserDtos.java index 215d40c..12bcb54 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/UserDtos.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/ObserveDbUserDtos.java @@ -2,7 +2,7 @@ package fr.ird.observe.services.dto; import java.util.Comparator; -public class UserDtos extends AbstractUserDtos { +public class ObserveDbUserDtos extends AbstractObserveDbUserDtos { protected static UserDtoComparator USER_DTO_COMPARATOR = new UserDtoComparator(); @@ -10,10 +10,10 @@ public class UserDtos extends AbstractUserDtos { return USER_DTO_COMPARATOR; } - protected static class UserDtoComparator implements Comparator<UserDto> { + protected static class UserDtoComparator implements Comparator<ObserveDbUserDto> { @Override - public int compare(UserDto user1, UserDto user2) { + public int compare(ObserveDbUserDto user1, ObserveDbUserDto user2) { return user1.getName().compareTo(user2.getName()); } } diff --git a/observe-services-model/src/main/java/fr/ird/observe/services/dto/constants/Role.java b/observe-services-model/src/main/java/fr/ird/observe/services/dto/constants/ObserveDbRole.java similarity index 71% rename from observe-services-model/src/main/java/fr/ird/observe/services/dto/constants/Role.java rename to observe-services-model/src/main/java/fr/ird/observe/services/dto/constants/ObserveDbRole.java index 896cba6..1519cc5 100644 --- a/observe-services-model/src/main/java/fr/ird/observe/services/dto/constants/Role.java +++ b/observe-services-model/src/main/java/fr/ird/observe/services/dto/constants/ObserveDbRole.java @@ -3,11 +3,12 @@ package fr.ird.observe.services.dto.constants; /** * @author Sylvain Bavencoff - bavencoff@codelutin.com */ -public enum Role { +public enum ObserveDbRole { UNUSED, REFERENTIAL, USER, - TECHNICAL; + TECHNICAL, + ADMINISTRATOR; } diff --git a/observe-services-model/src/main/xmi/observe-services-dto-common.zargo b/observe-services-model/src/main/xmi/observe-services-dto-common.zargo index 2bdd1d5..d0c8242 100644 Binary files a/observe-services-model/src/main/xmi/observe-services-dto-common.zargo and b/observe-services-model/src/main/xmi/observe-services-dto-common.zargo differ diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveJdbcHelper.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveJdbcHelper.java index d2961b6..1efa7bf 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveJdbcHelper.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveJdbcHelper.java @@ -2,8 +2,8 @@ package fr.ird.observe.services; import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import fr.ird.observe.services.dto.UserDto; -import fr.ird.observe.services.dto.constants.Role; +import fr.ird.observe.services.dto.ObserveDbUserDto; +import fr.ird.observe.services.dto.constants.ObserveDbRole; import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -97,23 +97,27 @@ public class ObserveJdbcHelper extends JdbcHelper { } - public List<UserDto> getUsers() { + public List<ObserveDbUserDto> getUsers() { Connection connection = null; PreparedStatement preparedStatement = null; - List<UserDto> users = Lists.newLinkedList(); + List<ObserveDbUserDto> users = Lists.newLinkedList(); try { connection = openConnection(); // la connexion est reussie, on recherche les droits de // récupération de la version de la base - preparedStatement = connection.prepareStatement("SELECT rolname FROM pg_catalog.pg_roles where rolname <> current_user;"); + preparedStatement = connection.prepareStatement("SELECT rolname FROM pg_catalog.pg_roles;"); ResultSet resultSet = preparedStatement.executeQuery(); while (resultSet.next()) { String name = resultSet.getString(1); - UserDto user = new UserDto(); + ObserveDbUserDto user = new ObserveDbUserDto(); user.setName(name); - user.setRole(Role.UNUSED); + if (jdbcConfiguration.getJdbcConnectionUser().equals(name)) { + user.setRole(ObserveDbRole.ADMINISTRATOR); + } else { + user.setRole(ObserveDbRole.UNUSED); + } users.add(user); } @@ -230,7 +234,6 @@ public class ObserveJdbcHelper extends JdbcHelper { preparedStatement.executeUpdate(); - connection.commit(); } catch (SQLException e) { throw new RuntimeException(e); } finally { diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveSecurityHelper.java b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveSecurityHelper.java index 10d6b04..37ce8c4 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveSecurityHelper.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/ObserveSecurityHelper.java @@ -4,9 +4,9 @@ import com.google.common.base.Function; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; import fr.ird.observe.entities.Entities; -import fr.ird.observe.services.dto.UserDto; -import fr.ird.observe.services.dto.UserDtos; -import fr.ird.observe.services.dto.constants.Role; +import fr.ird.observe.services.dto.ObserveDbUserDto; +import fr.ird.observe.services.dto.ObserveDbUserDtos; +import fr.ird.observe.services.dto.constants.ObserveDbRole; import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -87,7 +87,7 @@ public class ObserveSecurityHelper { this.jdbcHelper = new ObserveJdbcHelper(jdbcConfiguration); } - public void applySecurity(Set<UserDto> users, boolean showSql) { + public void applySecurity(Set<ObserveDbUserDto> users, boolean showSql) { if (users == null) { throw new NullPointerException("users can not be null"); } @@ -102,7 +102,7 @@ public class ObserveSecurityHelper { } - protected String createSecurityScript(Set<UserDto> users) { + protected String createSecurityScript(Set<ObserveDbUserDto> users) { List<Pair<String, String>> tables = jdbcHelper.getTables(SCHEMAS, EXTRA_TABLES); @@ -111,12 +111,11 @@ public class ObserveSecurityHelper { return ""; } - String administratorName = jdbcConfiguration.getJdbcConnectionUser(); - - Iterable<String> technicalNames = Iterables.transform(Iterables.filter(users, UserDtos.newRolePredicate(Role.TECHNICAL)), UserDtos.getNameFunction()); - Iterable<String> usersNames = Iterables.transform(Iterables.filter(users, UserDtos.newRolePredicate(Role.USER)), UserDtos.getNameFunction()); - Iterable<String> referentialNames = Iterables.transform(Iterables.filter(users, UserDtos.newRolePredicate(Role.REFERENTIAL)), UserDtos.getNameFunction()); - Iterable<String> unusedNames = Iterables.transform(Iterables.filter(users, UserDtos.newRolePredicate(Role.UNUSED)), UserDtos.getNameFunction()); + String administratorName = Iterables.get(getUserNamesByRole(users, ObserveDbRole.ADMINISTRATOR), 0); + Iterable<String> technicalNames = getUserNamesByRole(users, ObserveDbRole.TECHNICAL); + Iterable<String> usersNames = getUserNamesByRole(users, ObserveDbRole.USER); + Iterable<String> referentialNames = getUserNamesByRole(users, ObserveDbRole.REFERENTIAL); + Iterable<String> unusedNames = getUserNamesByRole(users, ObserveDbRole.UNUSED); if (log.isInfoEnabled()) { @@ -202,6 +201,10 @@ public class ObserveSecurityHelper { } + protected Iterable<String> getUserNamesByRole(Set<ObserveDbUserDto> users, ObserveDbRole role) { + return Iterables.transform(Iterables.filter(users, ObserveDbUserDtos.newRolePredicate(role)), ObserveDbUserDtos.getNameFunction()); + } + protected Set<String> escapedNames(Iterable<String> names) { Iterable<String> transform = Iterables.transform(names, ESCAPE_STRING); return Sets.newHashSet(transform); diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java b/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java index 92ec5bd..164b6d8 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/dto/ObserveDtosInitializer.java @@ -351,7 +351,7 @@ public class ObserveDtosInitializer implements ObserveModelInitializer { } @Override - public void initUserDto() { + public void initObserveDbUserDto() { // Rien à faire } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java index 9c5c750..a531565 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/DataSourceServiceTopia.java @@ -41,7 +41,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConnectionTopia; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; -import fr.ird.observe.services.dto.UserDto; +import fr.ird.observe.services.dto.ObserveDbUserDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.topia.persistence.jdbc.JdbcHelper; @@ -275,9 +275,9 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } @Override - public Set<UserDto> getUsers() { + public Set<ObserveDbUserDto> getUsers() { - Set<UserDto> users = Sets.newHashSet(); + Set<ObserveDbUserDto> users = Sets.newHashSet(); ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); @@ -301,7 +301,7 @@ public class DataSourceServiceTopia extends ObserveServiceTopia implements DataS } @Override - public void applySecurity(Set<UserDto> users) { + public void applySecurity(Set<ObserveDbUserDto> users) { ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration = serviceContext.getDataSourceConfiguration(); // pas de securité pour les bases autres que postgresql -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.