This is an automated email from the git hooks/post-receive script. New commit to branch feature/spgeed in repository pollen. See https://gitlab.nuiton.org/chorem/pollen.git commit 7522552879582fa3d375f00dc5aacff4808a8fd2 Author: HERBRETEAU Killian <Killian_H@localhost.localdomain> Date: Wed Jul 24 09:22:29 2019 +0200 Right request to postgre to get PollenUser + jsondeserialize to pass PollenUserImpl to PollenUser --- .../pollen/persistence/PollenUserSpgeedDao.java | 10 +- .../pollen/persistence/entity/PollenUser.java | 139 +++++++++++++++++++++ .../persistence/entity/PollenUserEmailAddress.java | 27 ++++ .../pollen/persistence/entity/PollenUserImpl.java | 13 ++ .../chorem/pollen/rest/api/v1/TransverseApi.java | 8 ++ .../pollen/services/service/PollenUserService.java | 12 +- .../pollen/services/service/TransverseService.java | 11 ++ .../service/security/SpgeedDummyService.java | 31 ++++- 8 files changed, 236 insertions(+), 15 deletions(-) diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/PollenUserSpgeedDao.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/PollenUserSpgeedDao.java index 691de8d8..3caac703 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/PollenUserSpgeedDao.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/PollenUserSpgeedDao.java @@ -1,12 +1,16 @@ package org.chorem.pollen.persistence; -import org.chorem.pollen.persistence.entity.PollenUserImpl; +import org.chorem.pollen.persistence.entity.PollenUser; +import org.chorem.pollen.persistence.entity.PollenUserEmailAddress; import org.nuiton.spgeed.annotations.Select; public interface PollenUserSpgeedDao { - @Select(sql = "SELECT json_agg(pollenuser.*) FROM PollenUser JOIN pollenuseremailaddress ON (PollenUser.topiaId = pollenuseremailaddress.pollenuser)") - PollenUserImpl getUser(); + @Select(sql = "with pollenu as (select u.*, (select json_agg(m.*) as pollenuseremailaddress from pollenuseremailaddress m) from PollenUser u) select json_agg(pu.*) from pollenu pu") + PollenUser getUser(); + + @Select(sql = "select json_agg(m.*) as pollenuseremailaddress from pollenuseremailaddress m) from PollenUser u") + PollenUserEmailAddress getUserEmail(); @Select(sql = "SELECT count(*) FROM PollenUser") int getUserCount(); diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenUser.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenUser.java new file mode 100644 index 00000000..901c2b32 --- /dev/null +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenUser.java @@ -0,0 +1,139 @@ +package org.chorem.pollen.persistence.entity; + +import java.util.Collection; +import java.util.Date; +import javax.annotation.Generated; + +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import org.nuiton.topia.persistence.TopiaEntity; + +@JsonDeserialize(as = PollenUserImpl.class) +public interface PollenUser extends TopiaEntity { + + String PROPERTY_NAME = "name"; + + String PROPERTY_ADMINISTRATOR = "administrator"; + + String PROPERTY_LANGUAGE = "language"; + + String PROPERTY_PASSWORD = "password"; + + String PROPERTY_SALT = "salt"; + + String PROPERTY_BANNED = "banned"; + + String PROPERTY_GTU_VALIDATION_DATE = "gtuValidationDate"; + + String PROPERTY_PREMIUM_TO = "premiumTo"; + + String PROPERTY_CAN_CREATE_POLL = "canCreatePoll"; + + String PROPERTY_USER_CREDENTIAL = "userCredential"; + + String PROPERTY_AVATAR = "avatar"; + + String PROPERTY_DEFAULT_EMAIL_ADDRESS = "defaultEmailAddress"; + + String PROPERTY_EMAIL_ADDRESSES = "emailAddresses"; + + void setName(String name); + + String getName(); + + void setAdministrator(boolean administrator); + + boolean isAdministrator(); + + void setLanguage(String language); + + String getLanguage(); + + void setPassword(String password); + + String getPassword(); + + void setSalt(String salt); + + String getSalt(); + + void setBanned(boolean banned); + + boolean isBanned(); + + void setGtuValidationDate(Date gtuValidationDate); + + Date getGtuValidationDate(); + + void setPremiumTo(Date premiumTo); + + Date getPremiumTo(); + + void setCanCreatePoll(boolean canCreatePoll); + + boolean isCanCreatePoll(); + + void addUserCredential(UserCredential userCredential); + + void addAllUserCredential(Iterable<UserCredential> userCredential); + + void setUserCredential(Collection<UserCredential> userCredential); + + void removeUserCredential(UserCredential userCredential); + + void clearUserCredential(); + + Collection<UserCredential> getUserCredential(); + + UserCredential getUserCredentialByTopiaId(String topiaId); + + Collection<String> getUserCredentialTopiaIds(); + + int sizeUserCredential(); + + boolean isUserCredentialEmpty(); + + boolean isUserCredentialNotEmpty(); + + boolean containsUserCredential(UserCredential userCredential); + + void setAvatar(PollenResource avatar); + + PollenResource getAvatar(); + + void setDefaultEmailAddress(PollenUserEmailAddress defaultEmailAddress); + //Hack cause spgeed does not manage camel case + void setDefaultemailaddress(PollenUserEmailAddress defaultEmailAddress); + + PollenUserEmailAddress getDefaultEmailAddress(); + + void addEmailAddresses(PollenUserEmailAddress emailAddresses); + + void addAllEmailAddresses(Iterable<PollenUserEmailAddress> emailAddresses); + + void setEmailAddresses(Collection<PollenUserEmailAddress> emailAddresses); + + //Hack cause spgeed does not manage camel case + void setEmailaddresses(Collection<PollenUserEmailAddress> emailAddresses); + + void removeEmailAddresses(PollenUserEmailAddress emailAddresses); + + void clearEmailAddresses(); + + Collection<PollenUserEmailAddress> getEmailAddresses(); + + PollenUserEmailAddress getEmailAddressesByTopiaId(String topiaId); + + Collection<String> getEmailAddressesTopiaIds(); + + int sizeEmailAddresses(); + + boolean isEmailAddressesEmpty(); + + boolean isEmailAddressesNotEmpty(); + + boolean containsEmailAddresses(PollenUserEmailAddress emailAddresses); + + boolean isEmailValidated(); + +} //PollenUser diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenUserEmailAddress.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenUserEmailAddress.java new file mode 100644 index 00000000..7616696f --- /dev/null +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenUserEmailAddress.java @@ -0,0 +1,27 @@ +package org.chorem.pollen.persistence.entity; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import org.nuiton.topia.persistence.TopiaEntity; + +@JsonDeserialize(as = PollenUserEmailAddressImpl.class) +public interface PollenUserEmailAddress extends TopiaEntity { + + String PROPERTY_EMAIL_ADDRESS = "emailAddress"; + + String PROPERTY_PGP_PUBLIC_KEY = "pgpPublicKey"; + + String PROPERTY_VALIDATED = "validated"; + + void setEmailAddress(String emailAddress); + + String getEmailAddress(); + + void setPgpPublicKey(String pgpPublicKey); + + String getPgpPublicKey(); + + void setValidated(boolean validated); + + boolean isValidated(); + +} //PollenUserEmailAddress diff --git a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenUserImpl.java b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenUserImpl.java index 2ae14757..6654c24b 100644 --- a/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenUserImpl.java +++ b/pollen-persistence/src/main/java/org/chorem/pollen/persistence/entity/PollenUserImpl.java @@ -21,13 +21,26 @@ package org.chorem.pollen.persistence.entity; * #L% */ +import java.util.Collection; + /** * @author Kevin Morin (Code Lutin) */ + public class PollenUserImpl extends PollenUserAbstract { @Override public boolean isEmailValidated() { return getDefaultEmailAddress() == null || getDefaultEmailAddress().isValidated(); } + + @Override + public void setDefaultemailaddress(PollenUserEmailAddress defaultEmailAddress) { + this.setDefaultEmailAddress(defaultEmailAddress); + } + + @Override + public void setEmailaddresses(Collection<PollenUserEmailAddress> emailAddresses) { + this.setEmailAddresses(emailAddresses); + } } diff --git a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/TransverseApi.java b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/TransverseApi.java index 5682a86c..64fa6be0 100644 --- a/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/TransverseApi.java +++ b/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/TransverseApi.java @@ -24,6 +24,7 @@ package org.chorem.pollen.rest.api.v1; import org.chorem.pollen.services.bean.ConfigurationBean; import org.chorem.pollen.services.bean.PollenStatus; import org.chorem.pollen.services.bean.PollenUserBean; +import org.chorem.pollen.services.bean.PollenUserEmailAddressBean; import org.chorem.pollen.services.service.TransverseService; import javax.ws.rs.Consumes; @@ -65,5 +66,12 @@ public class TransverseApi { } + @Path("/email") + @GET + public PollenUserEmailAddressBean getEmail(@Context TransverseService transverseService) { + + return transverseService.getEmail(); + } + } diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java index 9b060618..de3fbd36 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java @@ -21,19 +21,12 @@ package org.chorem.pollen.services.service; * #L% */ +import com.google.common.base.Preconditions; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.chorem.pollen.persistence.entity.Comment; -import org.chorem.pollen.persistence.entity.PollenPrincipal; -import org.chorem.pollen.persistence.entity.PollenResource; -import org.chorem.pollen.persistence.entity.PollenUser; -import org.chorem.pollen.persistence.entity.PollenUserEmailAddress; -import org.chorem.pollen.persistence.entity.ResourceType; -import org.chorem.pollen.persistence.entity.UserCredential; -import org.chorem.pollen.persistence.entity.Vote; -import org.chorem.pollen.persistence.entity.VoteTopiaDao; +import org.chorem.pollen.persistence.entity.*; import org.chorem.pollen.services.PollenService; import org.chorem.pollen.services.bean.PaginationParameterBean; import org.chorem.pollen.services.bean.PaginationResultBean; @@ -92,6 +85,7 @@ public class PollenUserService extends PollenServiceSupport implements PollenSer bean.setGtuValidated(getGtuService().isGtuValidated(entity)); bean.setPremium(isPremium(entity)); + Preconditions.checkArgument(entity.sizeEmailAddresses() == 1); bean.setEmailAddresses(entity.getEmailAddresses().stream() .map(this::toPollenUserEmailAddressBean) .collect(Collectors.toList())); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/TransverseService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/TransverseService.java index f78594f6..7b4de25e 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/TransverseService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/TransverseService.java @@ -25,10 +25,12 @@ import com.google.common.collect.Lists; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.pollen.persistence.entity.PollenUser; +import org.chorem.pollen.persistence.entity.PollenUserEmailAddress; import org.chorem.pollen.services.UnitHuman; import org.chorem.pollen.services.bean.ConfigurationBean; import org.chorem.pollen.services.bean.PollenStatus; import org.chorem.pollen.services.bean.PollenUserBean; +import org.chorem.pollen.services.bean.PollenUserEmailAddressBean; import org.chorem.pollen.services.service.security.SpgeedDummyService; import java.lang.management.ManagementFactory; @@ -59,6 +61,15 @@ public class TransverseService extends PollenServiceSupport { return pollenUserService.toPollenUserBean(user); } + public PollenUserEmailAddressBean getEmail() { + + SpgeedDummyService spgeedDummyService = new SpgeedDummyService(); + PollenUserEmailAddress email = spgeedDummyService.getPollenUserEmailaddress(); + PollenUserService pollenUserService = newService(PollenUserService.class); + + return pollenUserService.toPollenUserEmailAddressBean(email); + } + public PollenStatus getStatus() { long statusStart = System.currentTimeMillis(); List<String> errors = Lists.newArrayList(); diff --git a/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SpgeedDummyService.java b/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SpgeedDummyService.java index f4c43df5..d1e3a92d 100644 --- a/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SpgeedDummyService.java +++ b/pollen-services/src/main/java/org/chorem/pollen/services/service/security/SpgeedDummyService.java @@ -2,10 +2,10 @@ package org.chorem.pollen.services.service.security; import org.chorem.pollen.persistence.PollenSpgeedApplicationContext; import org.chorem.pollen.persistence.PollenUserSpgeedDao; -import org.chorem.pollen.persistence.entity.PollenUserImpl; +import org.chorem.pollen.persistence.entity.PollenUser; +import org.chorem.pollen.persistence.entity.PollenUserEmailAddress; import org.chorem.pollen.services.config.PollenServicesConfig; import org.nuiton.spgeed.SqlSession; -import org.chorem.pollen.persistence.entity.PollenUser; import javax.sql.DataSource; import java.sql.SQLException; @@ -30,7 +30,32 @@ public class SpgeedDummyService { PollenUserSpgeedDao dao = session.getDao(PollenUserSpgeedDao.class); - return dao.getUser(); + return (dao.getUser()); + } catch(SQLException e) { + } + return (null); + + } + + public PollenUserEmailAddress getPollenUserEmailaddress() { + + PollenSpgeedApplicationContext pollenSpgeedApplicationContext = new PollenSpgeedApplicationContext(); + + PollenServicesConfig pollenServicesConfig = new PollenServicesConfig("pollen-rest-api.properties"); + + String dburl = pollenServicesConfig.getDataSourceUrl(); + String dbpassword = pollenServicesConfig.getDataSourcePassword(); + String dbuser = pollenServicesConfig.getDataSourceUser(); + + pollenSpgeedApplicationContext.setDataSource(dburl, dbuser, dbpassword); + + DataSource ds = pollenSpgeedApplicationContext.getDataSource(); + + try (SqlSession session = new SqlSession(ds)) { + + PollenUserSpgeedDao dao = session.getDao(PollenUserSpgeedDao.class); + + return (dao.getUserEmail()); } catch(SQLException e) { } return (null); -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.