This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository wao. See http://git.codelutin.com/wao.git commit 368edb58da440be4e7425fc224006e754cded078 Author: Brendan Le Ny <bleny@codelutin.com> Date: Thu Dec 4 10:53:24 2014 +0100 On permet de mettre l'utilisateur dans un laboratoire et non plus seulement dans une société --- .../java/fr/ifremer/wao/entity/CompanyImpl.java | 5 ++++ .../java/fr/ifremer/wao/entity/LaboratoryImpl.java | 12 ++++++++ .../java/fr/ifremer/wao/entity/WaoUserImpl.java | 16 +++++++---- .../V4_3__add_species,_add_laboratories.sql | 1 + wao-persistence/src/main/xmi/wao-model.zargo | Bin 61426 -> 61324 bytes .../ifremer/wao/services/AuthenticatedWaoUser.java | 2 +- .../fr/ifremer/wao/services/ObsMerFixtures.java | 4 +-- .../wao/services/service/WaoServiceSupport.java | 5 ++++ .../administration/OrganisationsService.java | 21 ++++++++++++++ .../administration/UpdateWaoUserCommand.java | 32 ++++++++++----------- .../service/administration/WaoUsersService.java | 11 +++---- .../action/administration/EditWaoUserAction.java | 2 +- .../main/resources/i18n/wao-web_en_GB.properties | 1 + .../main/resources/i18n/wao-web_fr_FR.properties | 1 + .../content/administration/edit-wao-user.jsp | 16 +++++------ 15 files changed, 90 insertions(+), 39 deletions(-) diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/entity/CompanyImpl.java b/wao-persistence/src/main/java/fr/ifremer/wao/entity/CompanyImpl.java index 7ef1890..10fa93e 100644 --- a/wao-persistence/src/main/java/fr/ifremer/wao/entity/CompanyImpl.java +++ b/wao-persistence/src/main/java/fr/ifremer/wao/entity/CompanyImpl.java @@ -36,6 +36,11 @@ public class CompanyImpl extends CompanyAbstract { private static final long serialVersionUID = 1L; @Override + public String getFullName() { + return getName(); + } + + @Override public String toString() { return "CompanyImpl{name=" + getName() + "}"; } diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/entity/LaboratoryImpl.java b/wao-persistence/src/main/java/fr/ifremer/wao/entity/LaboratoryImpl.java new file mode 100644 index 0000000..5afe788 --- /dev/null +++ b/wao-persistence/src/main/java/fr/ifremer/wao/entity/LaboratoryImpl.java @@ -0,0 +1,12 @@ +package fr.ifremer.wao.entity; + + +public class LaboratoryImpl extends LaboratoryAbstract { + + private static final long serialVersionUID = 3472901365946410034L; + + @Override + public String getFullName() { + return String.format("%s (%s)", getName(), getCompany().getName()); + } +} diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java b/wao-persistence/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java index 51a95a5..62b4fad 100644 --- a/wao-persistence/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java +++ b/wao-persistence/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java @@ -95,12 +95,16 @@ public class WaoUserImpl extends WaoUserAbstract { @Override public Company getCompany() { - return (Company) getOrganisation(); - } - - @Override - public void setCompany(Company company) { - setOrganisation(company); + Organisation organisation = getOrganisation(); + Company company; + if (organisation instanceof Laboratory) { + company = ((Laboratory) organisation).getCompany(); + } else if (organisation instanceof Company) { + company = (Company) organisation; + } else { + throw new IllegalStateException(organisation.toString()); + } + return company; } @Override diff --git a/wao-persistence/src/main/resources/db/migration/V4_3__add_species,_add_laboratories.sql b/wao-persistence/src/main/resources/db/migration/V4_3__add_species,_add_laboratories.sql index 459d5f8..d53308d 100644 --- a/wao-persistence/src/main/resources/db/migration/V4_3__add_species,_add_laboratories.sql +++ b/wao-persistence/src/main/resources/db/migration/V4_3__add_species,_add_laboratories.sql @@ -42,6 +42,7 @@ create table laboratory ( topiaCreateDate timestamp without time zone, name text, company character varying(255) not null, + active boolean, constraint laboratory_pkey primary key (topiaId), constraint laboratory_name_unique unique (name), diff --git a/wao-persistence/src/main/xmi/wao-model.zargo b/wao-persistence/src/main/xmi/wao-model.zargo index 80e3039..c9ea2f3 100644 Binary files a/wao-persistence/src/main/xmi/wao-model.zargo and b/wao-persistence/src/main/xmi/wao-model.zargo differ diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/AuthenticatedWaoUser.java b/wao-services/src/main/java/fr/ifremer/wao/services/AuthenticatedWaoUser.java index 2b133fd..669dc7f 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/AuthenticatedWaoUser.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/AuthenticatedWaoUser.java @@ -116,7 +116,7 @@ public class AuthenticatedWaoUser implements Serializable{ return (userProfile.isAdmin() || userProfile.isCoordinator()) && isCanWrite(); } - public boolean isAuthorizedToChangeUserCompany() { + public boolean isAuthorizedToChangeUserOrganisation() { return userProfile.isAdmin() && isCanWrite(); } diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/ObsMerFixtures.java b/wao-services/src/main/java/fr/ifremer/wao/services/ObsMerFixtures.java index dcfa132..6b42b3c 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/ObsMerFixtures.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/ObsMerFixtures.java @@ -107,14 +107,14 @@ public class ObsMerFixtures { switch (login) { case "admin": waoUser = new WaoUserImpl(); - waoUser.setCompany(ifremer()); + waoUser.setOrganisation(ifremer()); waoUser.setLogin(login); waoUser.setActive(true); waoUser.addUserProfile(getUserProfile("admin")); break; case "jmichmuche": waoUser = new WaoUserImpl(); - waoUser.setCompany(ifremer()); + waoUser.setOrganisation(ifremer()); waoUser.setLogin(login); waoUser.setActive(true); waoUser.addUserProfile(getUserProfile("jmichmuche")); diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/WaoServiceSupport.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/WaoServiceSupport.java index ffe42a0..71d83d3 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/WaoServiceSupport.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/WaoServiceSupport.java @@ -47,6 +47,7 @@ import fr.ifremer.wao.services.WaoService; import fr.ifremer.wao.services.WaoServiceContext; import fr.ifremer.wao.services.WaoWebApplicationContext; import fr.ifremer.wao.services.service.administration.CompaniesService; +import fr.ifremer.wao.services.service.administration.OrganisationsService; import fr.ifremer.wao.services.service.administration.ReferentialService; import fr.ifremer.wao.services.service.administration.WaoUsersService; import fr.ifremer.wao.services.service.mail.EmailService; @@ -186,4 +187,8 @@ public abstract class WaoServiceSupport implements WaoService { protected WaoUserTopiaDao getWaoUserDao() { return getPersistenceContext().getWaoUserDao(); } + + protected OrganisationsService getOrganisationsService() { + return newService(OrganisationsService.class); + } } diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/OrganisationsService.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/OrganisationsService.java new file mode 100644 index 0000000..cdce39f --- /dev/null +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/OrganisationsService.java @@ -0,0 +1,21 @@ +package fr.ifremer.wao.services.service.administration; + +import fr.ifremer.wao.entity.Company; +import fr.ifremer.wao.entity.Organisation; +import fr.ifremer.wao.entity.OrganisationTopiaDao; +import fr.ifremer.wao.services.service.WaoServiceSupport; + +import java.util.List; + +public class OrganisationsService extends WaoServiceSupport { + + public List<Organisation> getAllOrganisations() { + + OrganisationTopiaDao dao = getPersistenceContext().getOrganisationDao(); + + List<Organisation> organisations = dao.newQueryBuilder().setOrderByArguments(Company.PROPERTY_ACTIVE + " desc", Organisation.PROPERTY_NAME).findAll(); + + return organisations; + + } +} diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/UpdateWaoUserCommand.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/UpdateWaoUserCommand.java index e1d3e68..d40c5dd 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/UpdateWaoUserCommand.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/UpdateWaoUserCommand.java @@ -23,8 +23,8 @@ package fr.ifremer.wao.services.service.administration; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.ObsProgram; +import fr.ifremer.wao.entity.Organisation; import fr.ifremer.wao.entity.UserProfile; import fr.ifremer.wao.entity.UserProfileImpl; import fr.ifremer.wao.entity.UserRole; @@ -47,7 +47,7 @@ public class UpdateWaoUserCommand implements Serializable{ protected UpdateWaoUserCommandPasswordStrategy passwordStrategy; - protected ImmutableMap<String, Company> allCompanies; + protected ImmutableMap<String, Organisation> allOrganisations; /** * Si l'utilisateur est professionnel, on doit savoir à quelle @@ -66,29 +66,29 @@ public class UpdateWaoUserCommand implements Serializable{ this.canReadBoats = canReadBoats; } - public String getCompanyId() { - String companyId = null; - if (waoUser.getCompany() != null) { - companyId = waoUser.getCompany().getTopiaId(); + public String getOrganisationId() { + String organisationId = null; + if (waoUser.getOrganisation() != null) { + organisationId = waoUser.getOrganisation().getTopiaId(); } - return companyId; + return organisationId; } - public void setCompanyId(String companyId) { - if (StringUtils.isBlank(companyId)) { - waoUser.setCompany(null); + public void setOrganisationId(String organisationId) { + if (StringUtils.isBlank(organisationId)) { + waoUser.setOrganisation(null); } else { - Company company = allCompanies.get(companyId); - waoUser.setCompany(company); + Organisation organisation = allOrganisations.get(organisationId); + waoUser.setOrganisation(organisation); } } - public ImmutableMap<String, Company> getAllCompanies() { - return allCompanies; + public ImmutableMap<String, Organisation> getAllOrganisations() { + return allOrganisations; } - public void setAllCompanies(ImmutableMap<String, Company> allCompanies) { - this.allCompanies = allCompanies; + public void setAllOrganisations(ImmutableMap<String, Organisation> allOrganisations) { + this.allOrganisations = allOrganisations; } protected UserProfile getUserProfile(UserRole userRole, boolean readOnly) { diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/WaoUsersService.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/WaoUsersService.java index faf17fe..771deaa 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/WaoUsersService.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/WaoUsersService.java @@ -29,6 +29,7 @@ import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.Boats; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.ObsProgram; +import fr.ifremer.wao.entity.Organisation; import fr.ifremer.wao.entity.UserProfile; import fr.ifremer.wao.entity.UserRole; import fr.ifremer.wao.entity.WaoUser; @@ -112,7 +113,7 @@ public class WaoUsersService extends WaoServiceSupport { Company company = getCompanyDao().forTopiaIdEquals(optionalCompanyId.get()).findUnique(); - newWaoUser.setCompany(company); + newWaoUser.setOrganisation(company); } @@ -126,11 +127,11 @@ public class WaoUsersService extends WaoServiceSupport { updateWaoUserCommand.setObsProgram(obsProgram); - ImmutableMap<String, Company> allCompanies = Maps.uniqueIndex( - getCompaniesService().getAllCompanies(), + ImmutableMap<String, Organisation> allOrganisations = Maps.uniqueIndex( + getOrganisationsService().getAllOrganisations(), TopiaEntities.getTopiaIdFunction()); - updateWaoUserCommand.setAllCompanies(allCompanies); + updateWaoUserCommand.setAllOrganisations(allOrganisations); if (optionalUserId.isPresent()) { @@ -251,7 +252,7 @@ public class WaoUsersService extends WaoServiceSupport { WaoUser waoUser = dao.findByTopiaId(waoUserId); - waoUser.setCompany(null); + waoUser.setOrganisation(null); Map<Class<? extends TopiaEntity>, List<? extends TopiaEntity>> allUsages = dao.findAllUsages(waoUser); diff --git a/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/EditWaoUserAction.java b/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/EditWaoUserAction.java index 5787d14..3a0feb4 100644 --- a/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/EditWaoUserAction.java +++ b/wao-web/src/main/java/fr/ifremer/wao/web/action/administration/EditWaoUserAction.java @@ -95,7 +95,7 @@ public class EditWaoUserAction extends WaoJspActionSupport implements Preparable addFieldError("updateWaoUserCommand.waoUser.login", t("wao.ui.form.updateWaoUserCommand.loginMustBeEmail")); } - if (updateWaoUserCommand.getCompanyId() == null) { + if (updateWaoUserCommand.getOrganisationId() == null) { addFieldError("updateWaoUserCommand.companyId", t("wao.ui.form.updateWaoUserCommand.requiredCompany")); } diff --git a/wao-web/src/main/resources/i18n/wao-web_en_GB.properties b/wao-web/src/main/resources/i18n/wao-web_en_GB.properties index e1020e5..d2c52be 100644 --- a/wao-web/src/main/resources/i18n/wao-web_en_GB.properties +++ b/wao-web/src/main/resources/i18n/wao-web_en_GB.properties @@ -161,6 +161,7 @@ wao.ui.entity.Boats=Boats wao.ui.entity.Company=Company wao.ui.entity.Contact=Contact wao.ui.entity.FishingZone=Fishing zones +wao.ui.entity.Organisation=Organisation wao.ui.entity.SampleRow=Sample row wao.ui.entity.SampleRow.day=Day wao.ui.entity.TerrestrialLocation=Place diff --git a/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties b/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties index ff1b2cc..a717858 100644 --- a/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties +++ b/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties @@ -162,6 +162,7 @@ wao.ui.entity.Boats=Navires wao.ui.entity.Company=Société wao.ui.entity.Contact=Contact wao.ui.entity.FishingZone=Zones de pêche +wao.ui.entity.Organisation=Organisation wao.ui.entity.SampleRow=Ligne du plan d'échantillonnage wao.ui.entity.SampleRow.day=Jour wao.ui.entity.TerrestrialLocation=Lieu diff --git a/wao-web/src/main/webapp/WEB-INF/content/administration/edit-wao-user.jsp b/wao-web/src/main/webapp/WEB-INF/content/administration/edit-wao-user.jsp index be95557..9dba910 100644 --- a/wao-web/src/main/webapp/WEB-INF/content/administration/edit-wao-user.jsp +++ b/wao-web/src/main/webapp/WEB-INF/content/administration/edit-wao-user.jsp @@ -91,17 +91,17 @@ <s:textfield name="updateWaoUserCommand.waoUser.lastName" label="%{getText('wao.ui.field.WaoUser.lastName')}" requiredLabel="true" /> <s:textfield name="updateWaoUserCommand.waoUser.phoneNumber" label="%{getText('wao.ui.field.WaoUser.phoneNumber')}" size="14" /> - <s:if test="authenticatedWaoUser.authorizedToChangeUserCompany"> - <s:select name="updateWaoUserCommand.companyId" - label="%{getText('wao.ui.entity.Company')}" - list="updateWaoUserCommand.allCompanies" - listValue="%{value.name}" + <s:if test="authenticatedWaoUser.authorizedToChangeUserOrganisation"> + <s:select name="updateWaoUserCommand.organisationId" + label="%{getText('wao.ui.entity.Organisation')}" + list="updateWaoUserCommand.allOrganisations" + listValue="%{value.fullName}" requiredLabel="true" cssClass="input-xxlarge" /> </s:if> <s:else> - <s:hidden name="updateWaoUserCommand.companyId" - value="%{updateWaoUserCommand.companyId}"/> + <s:hidden name="updateWaoUserCommand.organisationId" + value="%{updateWaoUserCommand.organisationId}"/> </s:else> <s:if test="authenticatedWaoUser.authorizedToActiveUser"> @@ -174,7 +174,7 @@ <div class="form-actions"> <s:if test="authenticatedWaoUser.authorizedToViewCompanyUsers"> <s:url action="wao-users" id="cancelUrl"> - <s:param name="companyId" value="updateWaoUserCommand.companyId" /> + <s:param name="companyId" value="updateWaoUserCommand.waoUser.company.topiaId" /> </s:url> </s:if> <s:else> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.