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 16e03e3852f252de43cd975953425701f6bc82e4 Author: Brendan Le Ny <bleny@codelutin.com> Date: Thu Dec 11 11:46:22 2014 +0100 Correction de divers problèmes suite à l'introduction des laboratoires (refs #2262, fixes #6272) --- .../fr/ifremer/wao/entity/ContactTopiaDao.java | 6 ++--- wao-persistence/src/main/xmi/wao-model.properties | 19 +------------- .../wao/services/service/ContactsService.java | 29 ++++++++++++++++++++++ .../wao/services/service/WaoServiceSupport.java | 5 ++++ .../administration/LaboratoriesService.java | 6 ++--- .../administration/OrganisationsService.java | 22 ++++++++++++++++ .../service/administration/WaoUsersService.java | 20 +-------------- .../ifremer/wao/web/action/EditContactAction.java | 7 ++---- .../action/administration/EditWaoUserAction.java | 6 ++--- .../WEB-INF/content/administration/companies.jsp | 2 +- .../content/administration/edit-wao-user.jsp | 2 +- .../src/main/webapp/WEB-INF/decorators/layout.jsp | 2 +- 12 files changed, 72 insertions(+), 54 deletions(-) diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java b/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java index a4902ca..fd5ba51 100644 --- a/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java +++ b/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java @@ -294,7 +294,7 @@ public class ContactTopiaDao extends AbstractContactTopiaDao<Contact> { String hql = hqlAndParametersBuilder.getHql(); - hql = "select c.sampleRow.company.topiaId, count(c.topiaId) " + hql + " group by c.sampleRow.company.topiaId"; + hql = "select c.sampleRow.organisation.topiaId, count(c.topiaId) " + hql + " group by c.sampleRow.organisation.topiaId"; if (log.isDebugEnabled()) { log.debug("query count by company '" + hql + "'"); @@ -354,7 +354,7 @@ public class ContactTopiaDao extends AbstractContactTopiaDao<Contact> { String hql = hqlAndParametersBuilder.getHql(); - hql = "select c.sampleRow.company.topiaId, c.contactState, count(c.topiaId) " + hql + " group by c.sampleRow.company.topiaId, c.contactState"; + hql = "select c.sampleRow.organisation.topiaId, c.contactState, count(c.topiaId) " + hql + " group by c.sampleRow.organisation.topiaId, c.contactState"; List<Object[]> rows = findAll(hql, hqlAndParametersBuilder.getHqlParameters()); @@ -388,7 +388,7 @@ public class ContactTopiaDao extends AbstractContactTopiaDao<Contact> { hqlAndParametersBuilder.addEquals(Contact.PROPERTY_CONTACT_STATE, ContactState.OBSERVATION_DONE); hqlAndParametersBuilder.addNotNull(Contact.PROPERTY_DATA_INPUT_DATE); - String hql = "select c.sampleRow.company.topiaId, c.observationEndDate, c.dataInputDate " + hqlAndParametersBuilder.getHql(); + String hql = "select c.sampleRow.organisation.topiaId, c.observationEndDate, c.dataInputDate " + hqlAndParametersBuilder.getHql(); List<Object[]> rows = findAll(hql, hqlAndParametersBuilder.getHqlParameters()); diff --git a/wao-persistence/src/main/xmi/wao-model.properties b/wao-persistence/src/main/xmi/wao-model.properties index 0eed59a..86db9ad 100644 --- a/wao-persistence/src/main/xmi/wao-model.properties +++ b/wao-persistence/src/main/xmi/wao-model.properties @@ -30,21 +30,4 @@ fr.ifremer.wao.entity.SampleRow.attribute.sampleRowLog.tagValue.orderBy=topiaCre fr.ifremer.wao.entity.SampleRow.attribute.fishingZone.tagValue.orderBy=facadeName,sectorName,districtCode # Hibernate eagerness -#fr.ifremer.wao.entity.WaoUser.attribute.userProfile.tagValue.lazy=false -#fr.ifremer.wao.entity.SampleRow.attribute.fishingZone.tagValue.lazy=false -#fr.ifremer.wao.entity.SampleRow.attribute.company.tagValue.lazy=false -#fr.ifremer.wao.entity.SampleRow.attribute.profession.tagValue.lazy=false -#fr.ifremer.wao.entity.SampleRow.attribute.dcf5Code.tagValue.lazy=false -#fr.ifremer.wao.entity.Dcf5Code.attribute.fishingGearDcf.tagValue.lazy=false -#fr.ifremer.wao.entity.Dcf5Code.attribute.targetSpeciesDcf.tagValue.lazy=false -#fr.ifremer.wao.entity.ElligibleBoat.attribute.boat.tagValue.lazy=false -#fr.ifremer.wao.entity.ElligibleBoat.attribute.sampleRow.tagValue.lazy=false -#fr.ifremer.wao.entity.Contact.attribute.sampleRow.tagValue.lazy=false -#fr.ifremer.wao.entity.Contact.attribute.boat.tagValue.lazy=false -# -#fr.ifremer.wao.entity.Boat.attribute.shipOwner.tagValue.lazy=false -#fr.ifremer.wao.entity.Boat.attribute.elligibleBoat.tagValue.lazy=false -#fr.ifremer.wao.entity.SampleRow.attribute.elligibleBoat.tagValue.lazy=false -# -#fr.ifremer.wao.entity.SampleRow.attribute.observers.tagValue.inverse=false -#fr.ifremer.wao.entity.WaoUser.attribute.SampleRow.tagValue.inverse=true +fr.ifremer.wao.entity.Laboratory.attribute.company.tagValue.lazy=false diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsService.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsService.java index 56097cd..ebef067 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsService.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsService.java @@ -26,6 +26,7 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.cache.Cache; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; import fr.ifremer.wao.ContactsFilter; import fr.ifremer.wao.WaoTechnicalException; import fr.ifremer.wao.WaoUtils; @@ -42,11 +43,13 @@ import fr.ifremer.wao.entity.ElligibleBoatTopiaDao; import fr.ifremer.wao.entity.LocationType; import fr.ifremer.wao.entity.ObsProgram; import fr.ifremer.wao.entity.ObservedDataControl; +import fr.ifremer.wao.entity.Organisation; import fr.ifremer.wao.entity.SampleMonth; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.TerrestrialLocation; import fr.ifremer.wao.entity.WaoUser; import fr.ifremer.wao.entity.WaoUserTopiaDao; +import fr.ifremer.wao.entity.WaoUsers; import fr.ifremer.wao.services.AuthenticatedWaoUser; import fr.ifremer.wao.services.service.csv.ContactImportExportModel; import fr.ifremer.wao.services.service.mail.AddBoatToUserAllegroWalletEmail; @@ -69,6 +72,7 @@ import org.nuiton.csv.ImportRow; import org.nuiton.csv.ImportRuntimeException; import org.nuiton.i18n.I18n; import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.topia.persistence.TopiaQueryBuilderAddCriteriaOrRunQueryStep; import org.nuiton.util.DateUtil; import org.nuiton.util.StringUtil; import org.nuiton.util.beans.Binder; @@ -86,6 +90,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; +import java.util.SortedSet; import static org.nuiton.i18n.I18n.l; @@ -1119,4 +1124,28 @@ public class ContactsService extends WaoServiceSupport { } + /** + * Pour un contact donné, tous les utilisateurs qui peuvent être sélectionnés en tant qu' + * observateurs (principale ou secondaire). + */ + public SortedSet<WaoUser> getPossibleObservers(Contact contact) { + + Organisation organisation = contact.getSampleRow().getOrganisation(); + + Set<Organisation> organisationsUserMustBeInToBeAnObserver = + getOrganisationsService().getOrganisationsBelongingsTo(organisation); + + TopiaQueryBuilderAddCriteriaOrRunQueryStep<WaoUser> query = getWaoUserDao().newQueryBuilder(); + query.addIn(WaoUser.PROPERTY_ORGANISATION, organisationsUserMustBeInToBeAnObserver); + query.addEquals(WaoUser.PROPERTY_ACTIVE, true); + + List<WaoUser> waoUsers = query.findAll(); + + SortedSet<WaoUser> sortedWaoUsers = Sets.newTreeSet(WaoUsers.fullNameComparator()); + sortedWaoUsers.addAll(waoUsers); + + return sortedWaoUsers; + + } + } 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 0670749..c77f609 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 @@ -32,6 +32,7 @@ import fr.ifremer.wao.entity.Dcf5CodeTopiaDao; import fr.ifremer.wao.entity.ElligibleBoatTopiaDao; import fr.ifremer.wao.entity.FishingGearDcfTopiaDao; import fr.ifremer.wao.entity.FishingZoneTopiaDao; +import fr.ifremer.wao.entity.LaboratoryTopiaDao; import fr.ifremer.wao.entity.NewsTopiaDao; import fr.ifremer.wao.entity.OrganisationTopiaDao; import fr.ifremer.wao.entity.ProfessionTopiaDao; @@ -201,4 +202,8 @@ public abstract class WaoServiceSupport implements WaoService { protected OrganisationTopiaDao getOrganisationDao() { return getPersistenceContext().getOrganisationDao(); } + + protected LaboratoryTopiaDao getLaboratoryDao() { + return getPersistenceContext().getLaboratoryDao(); + } } diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/LaboratoriesService.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/LaboratoriesService.java index eb7f639..4ad4522 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/LaboratoriesService.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/LaboratoriesService.java @@ -13,7 +13,7 @@ public class LaboratoriesService extends WaoServiceSupport { public List<Laboratory> getAllLaboratories() { - LaboratoryTopiaDao dao = getPersistenceContext().getLaboratoryDao(); + LaboratoryTopiaDao dao = getLaboratoryDao(); List<Laboratory> laboratories = dao.newQueryBuilder().setOrderByArguments(Laboratory.PROPERTY_ACTIVE + " desc", Laboratory.PROPERTY_NAME).findAll(); @@ -36,7 +36,7 @@ public class LaboratoriesService extends WaoServiceSupport { public Laboratory getLaboratory(String laboratoryId) { - LaboratoryTopiaDao dao = getPersistenceContext().getLaboratoryDao(); + LaboratoryTopiaDao dao = getLaboratoryDao(); Laboratory laboratory = dao.forTopiaIdEquals(laboratoryId).findUnique(); @@ -55,7 +55,7 @@ public class LaboratoriesService extends WaoServiceSupport { Company ifremer = getCompaniesService().getIfremer(); laboratory.setCompany(ifremer); - LaboratoryTopiaDao dao = getPersistenceContext().getLaboratoryDao(); + LaboratoryTopiaDao dao = getLaboratoryDao(); dao.save(laboratory); 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 index 03ea1fd..2f7f781 100644 --- 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 @@ -2,14 +2,17 @@ package fr.ifremer.wao.services.service.administration; import com.google.common.collect.Iterables; import fr.ifremer.wao.entity.Company; +import fr.ifremer.wao.entity.Laboratory; import fr.ifremer.wao.entity.Organisation; import fr.ifremer.wao.entity.OrganisationTopiaDao; import fr.ifremer.wao.services.service.IllegalDeletionException; import fr.ifremer.wao.services.service.WaoServiceSupport; import org.nuiton.topia.persistence.TopiaEntity; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; public class OrganisationsService extends WaoServiceSupport { @@ -52,4 +55,23 @@ public class OrganisationsService extends WaoServiceSupport { commit(); } + + /** + * Pour un laboratoire, retourne le laboratoire en singleton et pour une société, la société + * et tous ses laboratoires. + */ + public Set<Organisation> getOrganisationsBelongingsTo(Organisation organisation) { + + Set<Organisation> organisations = new HashSet<>(); + + organisations.add(organisation); + + List<Laboratory> laboratoriesInCompany = getLaboratoryDao().newQueryBuilder().addTopiaIdEquals(Laboratory.PROPERTY_COMPANY, organisation.getTopiaId()).findAll(); + + organisations.addAll(laboratoriesInCompany); + + return organisations; + + } + } 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 5408bfa..10e29d5 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 @@ -27,6 +27,7 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Maps; 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; @@ -73,25 +74,6 @@ public class WaoUsersService extends WaoServiceSupport { } - public List<WaoUser> getActiveWaoUsers(Optional<String> optionalCompanyId) { - - WaoUserTopiaDao dao = getWaoUserDao(); - - TopiaQueryBuilderAddCriteriaOrRunQueryStep<WaoUser> query = dao.newQueryBuilder(); - - if (optionalCompanyId.isPresent()) { - query.addTopiaIdEquals(WaoUser.PROPERTY_ORGANISATION, optionalCompanyId.get()); - } - query.addEquals(WaoUser.PROPERTY_ACTIVE, true); - - query.setOrderByArguments(WaoUser.PROPERTY_LOGIN); - - List<WaoUser> waoUsers = query.findAll(); - - return waoUsers; - - } - public WaoUser getWaoUser(String waoUserId) { WaoUserTopiaDao dao = getWaoUserDao(); diff --git a/wao-web/src/main/java/fr/ifremer/wao/web/action/EditContactAction.java b/wao-web/src/main/java/fr/ifremer/wao/web/action/EditContactAction.java index a545b39..4a5ca9a 100644 --- a/wao-web/src/main/java/fr/ifremer/wao/web/action/EditContactAction.java +++ b/wao-web/src/main/java/fr/ifremer/wao/web/action/EditContactAction.java @@ -23,7 +23,6 @@ package fr.ifremer.wao.web.action; import com.google.common.base.Optional; import com.google.common.base.Strings; -import com.google.common.collect.Sets; import com.opensymphony.xwork2.Preparable; import fr.ifremer.wao.WaoUtils; import fr.ifremer.wao.entity.ContactState; @@ -35,7 +34,6 @@ import fr.ifremer.wao.entity.SamplingStrategy; import fr.ifremer.wao.entity.TerrestrialLocation; import fr.ifremer.wao.entity.TerrestrialLocations; import fr.ifremer.wao.entity.WaoUser; -import fr.ifremer.wao.entity.WaoUsers; import fr.ifremer.wao.services.AuthenticatedWaoUser; import fr.ifremer.wao.services.service.ContactDataInputDateAfterTodayException; import fr.ifremer.wao.services.service.ContactDataInputDateBeforeObservationEndDateException; @@ -79,6 +77,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; @@ -201,9 +200,7 @@ public class EditContactAction extends WaoJspActionSupport implements Preparable addActionError(t("wao.ui.error.unknownContactId")); } - List<WaoUser> waoUsers = waoUsersService.getActiveWaoUsers(Optional.of(updateContactCommand.getContact().getSampleRow().getCompany().getTopiaId())); - Set<WaoUser> sortedWaoUsers = Sets.newTreeSet(WaoUsers.fullNameComparator()); - sortedWaoUsers.addAll(waoUsers); + SortedSet<WaoUser> sortedWaoUsers = service.getPossibleObservers(updateContactCommand.getContact()); observers = new LinkedHashMap<>(); for (WaoUser waoUser : sortedWaoUsers) { observers.put(waoUser.getTopiaId(), waoUser.getFullName()); 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 d231080..8367e62 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 @@ -37,7 +37,7 @@ import org.apache.struts2.convention.annotation.Results; import org.nuiton.util.StringUtil; @Results({ - @Result(name= ActionSupport.SUCCESS, type="redirectAction", params = { "actionName", "wao-users", "companyId", "%{companyId}" }), + @Result(name= ActionSupport.SUCCESS, type="redirectAction", params = { "actionName", "wao-users", "organisationId", "%{organisationId}" }), @Result(name= ActionSupport.NONE, type="redirectAction", params = { "actionName", "news" }) }) public class EditWaoUserAction extends WaoJspActionSupport implements Preparable { @@ -115,7 +115,7 @@ public class EditWaoUserAction extends WaoJspActionSupport implements Preparable session.addMessage(t("wao.ui.form.updateWaoUserCommand.success", updateWaoUserCommand.getWaoUser().getLogin())); // for redirection - setOrganisationId(updateWaoUserCommand.getWaoUser().getCompany().getTopiaId()); + setOrganisationId(updateWaoUserCommand.getWaoUser().getOrganisation().getTopiaId()); String result; if (getAuthenticatedWaoUser().isAuthorizedToViewCompanyUsers()) { @@ -132,7 +132,7 @@ public class EditWaoUserAction extends WaoJspActionSupport implements Preparable return optionalWaoUserId.orNull(); } - public String getCompanyId() { + public String getOrganisationId() { return optionalOrganisationId.orNull(); } diff --git a/wao-web/src/main/webapp/WEB-INF/content/administration/companies.jsp b/wao-web/src/main/webapp/WEB-INF/content/administration/companies.jsp index 728f7ce..f48a4f1 100644 --- a/wao-web/src/main/webapp/WEB-INF/content/administration/companies.jsp +++ b/wao-web/src/main/webapp/WEB-INF/content/administration/companies.jsp @@ -72,7 +72,7 @@ </s:a> <s:url action="wao-users" id="waoUsersUrl"> - <s:param name="companyId" value="topiaId" /> + <s:param name="organisationId" value="topiaId" /> </s:url> <s:a href="%{waoUsersUrl}"> <i class="icon-user"></i> <s:text name="wao.ui.action.viewCompanyWaoUsers" /> 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 9dba910..66e6cac 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 @@ -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.waoUser.company.topiaId" /> + <s:param name="organisationId" value="%{organisationId}" /> </s:url> </s:if> <s:else> diff --git a/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp b/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp index 2ad1350..3f9cf39 100644 --- a/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp +++ b/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp @@ -215,7 +215,7 @@ <s:if test="authenticatedWaoUser.authorizedToViewCompanyUsers"> <li> <s:url namespace="/administration" action="wao-users" id="companyUsersUrl"> - <s:param name="companyId" value="authenticatedWaoUser.waoUser.company.topiaId" /> + <s:param name="organisationId" value="authenticatedWaoUser.waoUser.company.topiaId" /> </s:url> <s:a href="%{companyUsersUrl}"> <i class="icon-user"></i> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.