Author: fdesbois Date: 2010-03-25 12:35:07 +0000 (Thu, 25 Mar 2010) New Revision: 388 Modified: trunk/changelog.txt trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactState.java trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactStateStatisticsImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-business/src/test/java/fr/ifremer/wao/entity/BoatImplTest.java trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java trunk/wao-business/src/test/resources/log4j.properties trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/BusinessUtils.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties trunk/wao-ui/src/main/webapp/Administration.tml trunk/wao-ui/src/main/webapp/Contacts.tml Log: - Evo #2063 : use coordinator role in Contacts page - Improve enum managment (UserRole and ContactState) -> add getter/setter directly in entity corresponding to match the enum Modified: trunk/changelog.txt =================================================================== --- trunk/changelog.txt 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/changelog.txt 2010-03-25 12:35:07 UTC (rev 388) @@ -9,9 +9,9 @@ Evolutions ++++++++++ +- [fdesbois] Evo #2063 : Créer un profil "coordinateur" pour les sociétés - [fdesbois] Evo #2225 : Tri des utilisateurs d'une société par ordre alphabétique (prénom, nom) - - [fdesbois] Mise à jour librairies : * commons-lang 2.4 -> 2.5 * commons-beanutils 1.8.0 -> 1.8.2 Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterImpl.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterImpl.java 2010-03-25 12:35:07 UTC (rev 388) @@ -96,7 +96,7 @@ companyValidValues.toArray()); if (getState() != null) { - query.add(contact + "." + Contact.STATE, getState().toString()); + query.add(contact + "." + Contact.STATE, getState().libelle()); } if (getFromDate() != null) { Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactState.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactState.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactState.java 2010-03-25 12:35:07 UTC (rev 388) @@ -48,21 +48,20 @@ BOAT_DEFINITIVE_REFUSED("Refus définitif", true, true); - private String value; + private String libelle; private boolean finalState; private boolean unfinishedState; ContactState(String value, boolean finalState, boolean unfinishedState) { - this.value = value; + this.libelle = value; this.finalState = finalState; this.unfinishedState = unfinishedState; } - @Override - public String toString() { - return this.value; + public String libelle() { + return this.libelle; } public boolean isFinalState() { @@ -73,19 +72,17 @@ return this.unfinishedState; } - public static ContactState createContactStateEnum(String value) { - if (value.equals(CONTACT_START.toString())) { - return CONTACT_START; - } else if (value.equals(BOARDING_EXPECTED.toString())) { - return BOARDING_EXPECTED; - } else if (value.equals(BOARDING_DONE.toString())) { - return BOARDING_DONE; - } else if (value.equals(BOAT_UNAVAILABLE.toString())) { - return BOAT_UNAVAILABLE; - } else if (value.equals(BOAT_REFUSED.toString())) { - return BOAT_REFUSED; - } else if (value.equals(BOAT_DEFINITIVE_REFUSED.toString())) { - return BOAT_DEFINITIVE_REFUSED; + /** + * Get the contactState corresponding to the {@code libelle} value. + * + * @param libelle reference for the ContactState + * @return ContactState + */ + public static ContactState valueOfLibelle(String libelle) { + for (ContactState curr : ContactState.values()) { + if (libelle.equals(curr.libelle())) { + return curr; + } } return null; } @@ -93,7 +90,7 @@ public static List<String> availableStates() { List<String> results = new ArrayList<String>(); for (ContactState state : values()) { - results.add(state.toString()); + results.add(state.libelle()); } return results; } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactStateStatisticsImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactStateStatisticsImpl.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactStateStatisticsImpl.java 2010-03-25 12:35:07 UTC (rev 388) @@ -41,7 +41,7 @@ @Override public void addResult(String state, int nbResults) { - ContactState stateEnum = ContactState.createContactStateEnum(state); + ContactState stateEnum = ContactState.valueOfLibelle(state); getData().put(stateEnum, nbResults); total += nbResults; Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatImpl.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatImpl.java 2010-03-25 12:35:07 UTC (rev 388) @@ -73,8 +73,7 @@ Contact contact = dao.findByQuery(dao.createQueryLastContactForBoat(this, company)); if (contact != null) { - ContactState state = ContactState.createContactStateEnum(contact.getState()); - result = state.isFinalState(); + result = contact.getContactState().isFinalState(); } //transaction.closeContext(); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java 2010-03-25 12:35:07 UTC (rev 388) @@ -77,7 +77,7 @@ @Override public TopiaQuery createQueryDoneContactsFromDate(Boat boat, Date fromDate) { TopiaQuery query = createQuery("C"). - add("C." + Contact.STATE, ContactState.BOARDING_DONE.toString()). + add("C." + Contact.STATE, ContactState.BOARDING_DONE.libelle()). add("C." + Contact.VALIDATION_COMPANY, Boolean.TRUE). // TODO : use addNullOr method with Topia version 2.3.0-beta-9 add("C." + Contact.VALIDATION_PROGRAM + " IS NULL OR " + "C." + Contact.VALIDATION_PROGRAM + " = :booleanTrue"). Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactImpl.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactImpl.java 2010-03-25 12:35:07 UTC (rev 388) @@ -21,6 +21,7 @@ package fr.ifremer.wao.entity; +import fr.ifremer.wao.bean.ContactState; import java.io.Serializable; import java.util.Date; import org.nuiton.util.DateUtils; @@ -76,4 +77,14 @@ return getTopiaCreateDate(); } + @Override + public ContactState getContactState() { + return ContactState.valueOfLibelle(getState()); + } + + @Override + public void setContactState(ContactState contactState) { + setState(contactState.libelle()); + } + } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-03-25 12:35:07 UTC (rev 388) @@ -87,4 +87,9 @@ return UserRole.valueOf(getRole()); } + @Override + public void setUserRole(UserRole role) { + setRole(role.ordinal()); + } + } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-03-25 12:35:07 UTC (rev 388) @@ -159,7 +159,7 @@ result.setObserver(user); result.setSampleRow(row); result.setBoat(boat); - result.setState(ContactState.CONTACT_START.toString()); + result.setContactState(ContactState.CONTACT_START); return result; } @@ -354,7 +354,7 @@ String observerId = ImportHelper.read(reader, CONTACT.OBSERV_ID); String state = ImportHelper.read(reader, CONTACT.CONT_ETAT); - ContactState contactState = ContactState.createContactStateEnum(state); + ContactState contactState = ContactState.valueOfLibelle(state); if (contactState == null) { throw new WaoBusinessException(Type.IMPORT_ERROR, this.getClass(), @@ -473,7 +473,7 @@ // Add realTideTime for this contact if validations are ok and state is BOARDING_DONE if (BooleanUtils.isTrue(companyValidation) && BooleanUtils.isNotFalse(programValidation) && - contact.getState().equals(ContactState.BOARDING_DONE.toString())) { + contact.getContactState().equals(ContactState.BOARDING_DONE)) { boolean ok = contact.getSampleRow().addRealTideTime(contact); if (!ok) { DateFormat dateFormat1 = new SimpleDateFormat("MM/yyyy"); Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/entity/BoatImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/entity/BoatImplTest.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/entity/BoatImplTest.java 2010-03-25 12:35:07 UTC (rev 388) @@ -139,7 +139,7 @@ ServiceContact serviceContact = new ServiceContactImpl(); Contact contact1 = serviceContact.getNewContact(user, row, boat); - contact1.setState(ContactState.CONTACT_START.toString()); + contact1.setContactState(ContactState.CONTACT_START); serviceContact.saveContact(contact1, false); /** EXEC METHOD **/ @@ -147,7 +147,7 @@ // contact still open Assert.assertFalse(result); - contact1.setState(ContactState.BOAT_DEFINITIVE_REFUSED.toString()); + contact1.setContactState(ContactState.BOAT_DEFINITIVE_REFUSED); contact1.setValidationProgram(Boolean.TRUE); serviceContact.saveContact(contact1, false); @@ -155,21 +155,21 @@ // contact have a definitive refused for this boat Assert.assertTrue(result); - contact1.setState(ContactState.BOARDING_DONE.toString()); + contact1.setContactState(ContactState.BOARDING_DONE); serviceContact.saveContact(contact1, false); result = boat.canCreateContact(company); // contact is finished Assert.assertTrue(result); - contact1.setState(ContactState.BOAT_UNAVAILABLE.toString()); + contact1.setContactState(ContactState.BOAT_UNAVAILABLE); serviceContact.saveContact(contact1, false); result = boat.canCreateContact(company); // contact is finished Assert.assertTrue(result); - contact1.setState(ContactState.BOAT_REFUSED.toString()); + contact1.setContactState(ContactState.BOAT_REFUSED); serviceContact.saveContact(contact1, false); result = boat.canCreateContact(company); @@ -216,7 +216,7 @@ Contact contact1 = new ContactImpl(); contact1.setBoat(boat); contact1.setObserver(user); - contact1.setState(ContactState.BOARDING_DONE.toString()); + contact1.setContactState(ContactState.BOARDING_DONE); Date begin = DateUtils.createDate(3, 3, 2009); contact1.setTideBeginDate(begin); contact1.setValidationCompany(Boolean.TRUE); @@ -232,7 +232,7 @@ // Second contact with ValidationProgram = FALSE contact2.setBoat(boat); contact2.setObserver(user); - contact2.setState(ContactState.BOARDING_DONE.toString()); + contact2.setContactState(ContactState.BOARDING_DONE); begin = DateUtils.createDate(3, 8, 2009); contact2.setTideBeginDate(begin); contact2.setValidationCompany(Boolean.TRUE); @@ -246,7 +246,7 @@ // Third contact with tideBeginDate < fromDate contact3.setBoat(boat); contact3.setObserver(user); - contact3.setState(ContactState.BOARDING_DONE.toString()); + contact3.setContactState(ContactState.BOARDING_DONE); begin = DateUtils.createDate(3, 8, 2008); contact3.setTideBeginDate(begin); contact3.setValidationCompany(Boolean.TRUE); @@ -259,7 +259,7 @@ // Fourth contact : OK with an other company contact4.setBoat(boat); contact4.setObserver(user2); - contact4.setState(ContactState.BOARDING_DONE.toString()); + contact4.setContactState(ContactState.BOARDING_DONE); begin = DateUtils.createDate(3, 4, 2009); contact4.setTideBeginDate(begin); contact4.setValidationCompany(Boolean.TRUE); Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java 2010-03-25 12:35:07 UTC (rev 388) @@ -277,7 +277,7 @@ ServiceContact serviceContact = new ServiceContactImpl(); Contact contact1 = serviceContact.getNewContact(user, row, boat); - contact1.setState(ContactState.CONTACT_START.toString()); + contact1.setContactState(ContactState.CONTACT_START); serviceContact.saveContact(contact1, false); CompanyBoatInfos companyBoatInfos = service.getCompanyBoatInfos(174592, company); @@ -386,7 +386,7 @@ user.setLastName("Michmuche"); // Evo #2063 : the defaut instanciation of WaoUser doesn't put the // user automatically as an non admin - user.setRole(UserRole.OBSERVER.ordinal()); + user.setUserRole(UserRole.OBSERVER); Company company = new CompanyImpl(); company.setName("TARTANPION"); user.setCompany(company); Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java 2010-03-25 12:35:07 UTC (rev 388) @@ -152,7 +152,7 @@ contact1.setBoat(boat); contact1.setObserver(user); contact1.setSampleRow(row); - contact1.setState(ContactState.BOARDING_DONE.toString()); + contact1.setContactState(ContactState.BOARDING_DONE); Date begin = DateUtils.createDate(3, 3, 2009); contact1.setTideBeginDate(begin); contact1.setValidationCompany(Boolean.TRUE); @@ -162,7 +162,7 @@ contact2.setBoat(boat); contact2.setObserver(user); contact2.setSampleRow(row); - contact2.setState(ContactState.BOARDING_DONE.toString()); + contact2.setContactState(ContactState.BOARDING_DONE); begin = DateUtils.createDate(3, 3, 2009); contact2.setTideBeginDate(begin); contact2.setValidationCompany(Boolean.TRUE); @@ -172,7 +172,7 @@ contact3.setBoat(boat2); contact3.setObserver(user); contact3.setSampleRow(row); - contact3.setState(ContactState.BOARDING_DONE.toString()); + contact3.setContactState(ContactState.BOARDING_DONE); begin = DateUtils.createDate(3, 3, 2009); contact3.setTideBeginDate(begin); contact3.setValidationCompany(Boolean.TRUE); @@ -243,7 +243,7 @@ contact1.setSampleRow(row); // 1 real observer over 1 contact1.setNbObservants(1); - contact1.setState(ContactState.BOARDING_DONE.toString()); + contact1.setContactState(ContactState.BOARDING_DONE); Date begin = DateUtils.createDate(3, 3, 2009); contact1.setTideBeginDate(begin); contact1.setValidationCompany(Boolean.TRUE); @@ -255,7 +255,7 @@ contact2.setSampleRow(row); // 2 real observer over 1 contact2.setNbObservants(2); - contact2.setState(ContactState.BOARDING_DONE.toString()); + contact2.setContactState(ContactState.BOARDING_DONE); begin = DateUtils.createDate(3, 3, 2009); contact2.setTideBeginDate(begin); contact2.setValidationCompany(Boolean.TRUE); @@ -267,7 +267,7 @@ contact3.setSampleRow(row2); // 1 real observer over 2 contact3.setNbObservants(1); - contact3.setState(ContactState.BOARDING_DONE.toString()); + contact3.setContactState(ContactState.BOARDING_DONE); begin = DateUtils.createDate(3, 3, 2009); contact3.setTideBeginDate(begin); contact3.setValidationCompany(Boolean.TRUE); @@ -346,21 +346,21 @@ // Contacts for company TARTANPION Contact contact1 = new ContactImpl(); contact1.setObserver(user); - contact1.setState(ContactState.BOARDING_DONE.toString()); + contact1.setContactState(ContactState.BOARDING_DONE); Date begin = DateUtils.createDate(3, 3, 2009); contact1.setTideBeginDate(begin); serviceContact.saveContact(contact1, false); Contact contact2 = new ContactImpl(); contact2.setObserver(user); - contact2.setState(ContactState.BOARDING_DONE.toString()); + contact2.setContactState(ContactState.BOARDING_DONE); begin = DateUtils.createDate(3, 10, 2009); contact2.setTideBeginDate(begin); serviceContact.saveContact(contact2, false); Contact contact3 = new ContactImpl(); contact3.setObserver(user); - contact3.setState(ContactState.BOAT_REFUSED.toString()); + contact3.setContactState(ContactState.BOAT_REFUSED); begin = DateUtils.createDate(3, 5, 2009); contact3.setTopiaCreateDate(begin); serviceContact.saveContact(contact3, false); @@ -368,14 +368,14 @@ // Contacts for company BIS Contact contact4 = new ContactImpl(); contact4.setObserver(user2); - contact4.setState(ContactState.BOARDING_EXPECTED.toString()); + contact4.setContactState(ContactState.BOARDING_EXPECTED); begin = DateUtils.createDate(3, 5, 2009); contact4.setTopiaCreateDate(begin); serviceContact.saveContact(contact4, false); Contact contact5 = new ContactImpl(); contact5.setObserver(user2); - contact5.setState(ContactState.BOAT_UNAVAILABLE.toString()); + contact5.setContactState(ContactState.BOAT_UNAVAILABLE); begin = DateUtils.createDate(3, 3, 2010); contact5.setTopiaCreateDate(begin); serviceContact.saveContact(contact5, false); @@ -383,7 +383,7 @@ // Contact refused by program, will not be in result Contact contact6 = new ContactImpl(); contact6.setObserver(user2); - contact6.setState(ContactState.BOAT_UNAVAILABLE.toString()); + contact6.setContactState(ContactState.BOAT_UNAVAILABLE); begin = DateUtils.createDate(3, 3, 2010); contact6.setTopiaCreateDate(begin); contact6.setValidationProgram(Boolean.FALSE); @@ -493,7 +493,7 @@ contact1.setTideBeginDate(begin); Date inputDate = DateUtils.createDate(15, 4, 2009); contact1.setDataInputDate(inputDate); - contact1.setState(ContactState.BOARDING_DONE.toString()); + contact1.setContactState(ContactState.BOARDING_DONE); contact1.setValidationCompany(Boolean.TRUE); serviceContact.saveContact(contact1, false); @@ -503,7 +503,7 @@ contact2.setTideBeginDate(begin); inputDate = DateUtils.createDate(15, 3, 2009); contact2.setDataInputDate(inputDate); - contact2.setState(ContactState.BOARDING_DONE.toString()); + contact2.setContactState(ContactState.BOARDING_DONE); contact2.setValidationCompany(Boolean.TRUE); serviceContact.saveContact(contact2, false); @@ -512,7 +512,7 @@ begin = DateUtils.createDate(3, 3, 2009); contact3.setTideBeginDate(begin); contact3.setDataInputDate(begin); - contact3.setState(ContactState.BOARDING_DONE.toString()); + contact3.setContactState(ContactState.BOARDING_DONE); contact3.setValidationCompany(Boolean.TRUE); serviceContact.saveContact(contact3, false); Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java 2010-03-25 12:35:07 UTC (rev 388) @@ -117,7 +117,7 @@ user1.setLogin("user1"); user1.setFirstName("Jean"); user1.setLastName("Michmuche"); - user1.setRole(UserRole.OBSERVER.ordinal()); + user1.setUserRole(UserRole.OBSERVER); user1.setCompany(company); user1.setActive(true); service.createUpdateUser(user1, true); @@ -126,7 +126,7 @@ user2.setLogin("user2"); user2.setFirstName("Jack"); user2.setLastName("Pot"); - user2.setRole(UserRole.ADMIN.ordinal()); + user2.setUserRole(UserRole.ADMIN); user2.setCompany(company); user2.setActive(true); service.createUpdateUser(user2, true); @@ -135,7 +135,7 @@ user3.setLogin("user3"); user3.setFirstName("Denis"); user3.setLastName("La Malice"); - user3.setRole(UserRole.OBSERVER.ordinal()); + user3.setUserRole(UserRole.OBSERVER); user3.setCompany(company); user3.setActive(false); service.createUpdateUser(user3, true); @@ -145,7 +145,7 @@ user4.setFirstName("Ben"); user4.setLastName("Hur"); // The coordinator is also an observer - user4.setRole(UserRole.COORDINATOR.ordinal()); + user4.setUserRole(UserRole.COORDINATOR); user4.setCompany(company); user4.setActive(true); service.createUpdateUser(user4, true); Modified: trunk/wao-business/src/test/resources/log4j.properties =================================================================== --- trunk/wao-business/src/test/resources/log4j.properties 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-business/src/test/resources/log4j.properties 2010-03-25 12:35:07 UTC (rev 388) @@ -10,3 +10,4 @@ log4j.logger.fr.ifremer.wao=INFO log4j.logger.org.nuiton.util=INFO +log4j.logger.org.nuiton.util.beans.BinderProvider=ERROR Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/BusinessUtils.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/BusinessUtils.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/BusinessUtils.java 2010-03-25 12:35:07 UTC (rev 388) @@ -130,7 +130,7 @@ boolean accepted = BooleanUtils.isTrue(contact.getValidationProgram()) || (!admin && BooleanUtils.isTrue(contact.getValidationCompany())); - ContactState state = ContactState.createContactStateEnum(contact.getState()); + ContactState state = contact.getContactState(); if (BooleanUtils.isFalse(contact.getValidationProgram()) || (!admin && BooleanUtils.isFalse(contact.getValidationCompany()))) { result = "refused"; Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-03-25 12:35:07 UTC (rev 388) @@ -23,6 +23,7 @@ import fr.ifremer.wao.WaoBusinessException; import fr.ifremer.wao.WaoException; +import fr.ifremer.wao.bean.UserRole; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.CompanyImpl; import fr.ifremer.wao.entity.WaoUser; @@ -229,6 +230,8 @@ log.debug("Set company for new user : " + getCompany().getName()); } user.setCompany(getCompany()); + // Default role set to OBSERVER + user.setUserRole(UserRole.OBSERVER); } } return user; Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-03-25 12:35:07 UTC (rev 388) @@ -29,6 +29,7 @@ import fr.ifremer.wao.bean.ContactFilterImpl; import fr.ifremer.wao.bean.ContactState; import fr.ifremer.wao.bean.ImportResults; +import fr.ifremer.wao.bean.UserRole; import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.Contact; import fr.ifremer.wao.entity.SampleRow; @@ -264,8 +265,6 @@ @Property @Persist(PersistenceConstants.FLASH) private String contactUserId; - - private ContactState contactState; private boolean even = true; @@ -298,14 +297,6 @@ return contactModel; } - public ContactState getContactState() { - if (contactState == null) { - // initialization - this.contactState = ContactState.createContactStateEnum(contactEdited.getState()); - } - return this.contactState; - } - public GenericSelectModel<WaoUser> getUserSelectModel() { if (userSelectModel == null) { List<WaoUser> users = user.getCompany().getWaoUser(); @@ -317,10 +308,6 @@ return userSelectModel; } - public void setContactState(ContactState contactState) { - this.contactState = contactState; - } - public String getCommentDisplayed() { if (contact.getComment() != null && contact.getComment().length() > 20) { return contact.getComment().substring(0, 20) + "..."; @@ -392,25 +379,52 @@ return !user.isAdmin() && contact.getValidationCompany() == null; } + /** + * Display validation actions. Evo #2063 : only coordinator can validate + * for a company. + * + * @return true if the validation actions can be displayed + */ + public boolean hasValidationActions() { + return user.isAdmin() || + user.getUserRole().equals(UserRole.COORDINATOR); + } + public boolean canValidate() { // Can't validate during edition of the contact row if (isEditionMode()) { return false; } - ContactState state = ContactState.createContactStateEnum(contact.getState()); - boolean boardingDone = state.equals(ContactState.BOARDING_DONE) && contact.getDataInputDate() != null; - if (!user.isAdmin()) { - return contact.getValidationCompany() == null && (state.isUnfinishedState() || boardingDone); + switch (user.getUserRole()) { + case ADMIN: + return contact.getValidationProgram() == null && + BooleanUtils.isTrue(contact.getValidationCompany()); + // Evo #2063 : only coordinator can validate + case COORDINATOR: + ContactState state = contact.getContactState(); + boolean boardingDone = + state.equals(ContactState.BOARDING_DONE) && + contact.getDataInputDate() != null; + return contact.getValidationCompany() == null && + (state.isUnfinishedState() || boardingDone); + case OBSERVER: + default: + return false; } - return contact.getValidationProgram() == null && BooleanUtils.isTrue(contact.getValidationCompany()); } public boolean canUnvalidate() { - if (!user.isAdmin()) { - return contact.getValidationCompany() != null && + switch (user.getUserRole()) { + case ADMIN: + return contact.getValidationProgram() != null; + // Evo #2063 : only coordinator can unvalidate + case COORDINATOR: + return contact.getValidationCompany() != null && contact.getValidationProgram() == null; + case OBSERVER: + default: + return false; } - return contact.getValidationProgram() != null; } void onSelectedFromAcceptContact(String contactId) throws WaoException { @@ -487,7 +501,7 @@ log.debug("Save contact : " + contactId); } // ContactEdited is in session, previously set by Edit action - contactEdited.setState(contactState.toString()); +// contactEdited.setState(contactState.toString()); WaoUser contactUser = getUserSelectModel().findObject(contactUserId); contactEdited.setObserver(contactUser); @@ -532,6 +546,7 @@ contactsForm.clearErrors(); // Validation for saving contact depends on contactState (only edition // form) + ContactState contactState = contactEdited.getContactState(); if (!edited && contactState != null) { if (log.isInfoEnabled()) { log.info("For state : " + contactState); Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties 2010-03-25 12:35:07 UTC (rev 388) @@ -13,4 +13,11 @@ login-label: Identifiant de connexion (email)* active-label: Actif generatePassword-label: G\u00E9n\u00E9rer le password -password-label: ou d\u00E9finir manuellement \ No newline at end of file +password-label: ou d\u00E9finir manuellement +userRole-label: R\u00F4le +readOnly-label: Lecture seule + +# UserRole +UserRole.ADMIN: Administrateur +UserRole.OBSERVER: Observateur +UserRole.COORDINATOR: Coordinateur \ No newline at end of file Modified: trunk/wao-ui/src/main/webapp/Administration.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Administration.tml 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-ui/src/main/webapp/Administration.tml 2010-03-25 12:35:07 UTC (rev 388) @@ -50,25 +50,32 @@ </form> <fieldset class="user-form clearfix"> - <form t:type="beaneditform" class="clearfix" t:id="user" t:include="firstName, lastName, login, password, phoneNumber, admin, active"> + <form t:type="beaneditform" class="clearfix" t:id="user" + t:include="firstName, lastName, login, password, phoneNumber, userRole, readOnly, active"> <p:firstName> - <t:label t:for="firstName" /> + <label t:type="label" for="firstName" /> <input t:type="textfield" t:id="firstName" value="user.firstName" t:validate="required" /> </p:firstName> <p:lastName> - <t:label t:for="lastName" /> + <label t:type="label" for="lastName" /> <input t:type="textfield" t:id="lastName" value="user.lastName" t:validate="required" /> </p:lastName> <p:login> - <t:label t:for="login" /> + <label t:type="label" for="login" /> <input t:type="textfield" t:id="login" value="user.login" t:validate="required" /> </p:login> <p:password> - <t:label t:for="generatePassword" /> + <label t:type="label" for="generatePassword" /> <input t:type="checkbox" t:id="generatePassword" value="generatePassword" /> <span> ou définir manuellement : </span> <input t:type="passwordfield" t:id="password2" value="password" /> </p:password> + <p:userRole> + <label t:type="label" for="userRole" /> + <select t:type="select" t:id="userRole" t:value="user.userRole" t:validate="required"> + <option></option> + </select> + </p:userRole> </form> </fieldset> </t:if> Modified: trunk/wao-ui/src/main/webapp/Contacts.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Contacts.tml 2010-03-25 11:06:45 UTC (rev 387) +++ trunk/wao-ui/src/main/webapp/Contacts.tml 2010-03-25 12:35:07 UTC (rev 388) @@ -158,7 +158,7 @@ </p:boatCell> <p:stateCell> <t:if t:test="editionMode"> - <input t:type="select" t:id="contactState" t:validate="required"/> + <input t:type="select" t:id="contactState" t:value="contactEdited.contactState" t:validate="required"/> <p:else>${contact.state}</p:else> </t:if> </p:stateCell> @@ -219,7 +219,7 @@ <p:commentCell> <t:if t:test="editionMode"> <!--<span t:type="ck/Tooltip" title="Commentaire" t:value="prop:commentTooltip" t:effect="appear">--> - <a href="#" onclick="openCommentWindow(windowComment, 'commentPopup', 'contact-comment', ${contactstate.isUnfinishedState()})"> + <a href="#" onclick="openCommentWindow(windowComment, 'commentPopup', 'contact-comment', ${contact.contactState.isUnfinishedState()})"> <img src="${asset:context:}/img/comment-22px.png" id="commentImg" alt="Add comment" /> </a> <!--</span>--> @@ -233,7 +233,7 @@ </p> <p> </p> <p class="aright"> - <a onclick="closeCommentWindow(windowComment, 'commentPopup', 'contact-comment', ${contactstate.isUnfinishedState()}, 'commentImg', '${asset:context:}')" class="save"> + <a onclick="closeCommentWindow(windowComment, 'commentPopup', 'contact-comment', ${contact.contactState.isUnfinishedState()}, 'commentImg', '${asset:context:}')" class="save"> <img src="${asset:context:}/img/save-22px.png" alt="Save comment" title="Enregistrer le commentaire"/> </a> </p> @@ -270,22 +270,24 @@ </t:unless> </p:else> </t:if> - <t:if t:test="canValidate()"> - <input t:type="submitContext" t:id="acceptContact" class="ico22px accept" value="Accept" - t:context="contact.topiaId" title="Valider le contact" /> - <input t:type="submitContext" t:id="refuseContact" class="ico22px refuse" value="Refuse" - t:context="contact.topiaId" title="Refuser le contact" /> - <p:else> - <t:unless t:test="canUnvalidate()"> - <img src="${asset:context:}/img/accept-unavailable-22px.png" alt="Accept unavailable" title="Validation du contact indisponible"/> - <img src="${asset:context:}/img/refuse-unavailable-22px.png" alt="Refuse unavailable" title="Refus du contact indisponible"/> - </t:unless> - </p:else> + <t:if t:test="hasValidationActions()"> + <t:if t:test="canValidate()"> + <input t:type="submitContext" t:id="acceptContact" class="ico22px accept" value="Accept" + t:context="contact.topiaId" title="Valider le contact" /> + <input t:type="submitContext" t:id="refuseContact" class="ico22px refuse" value="Refuse" + t:context="contact.topiaId" title="Refuser le contact" /> + <p:else> + <t:unless t:test="canUnvalidate()"> + <img src="${asset:context:}/img/accept-unavailable-22px.png" alt="Accept unavailable" title="Validation du contact indisponible"/> + <img src="${asset:context:}/img/refuse-unavailable-22px.png" alt="Refuse unavailable" title="Refus du contact indisponible"/> + </t:unless> + </p:else> + </t:if> + <t:if t:test="canUnvalidate()"> + <input t:type="submitContext" t:id="unvalidateContact" class="ico22px unvalidate" value="Unvalidate" + t:context="contact.topiaId" title="Enlever la validation du contact" /> + </t:if> </t:if> - <t:if t:test="canUnvalidate()"> - <input t:type="submitContext" t:id="unvalidateContact" class="ico22px unvalidate" value="Unvalidate" - t:context="contact.topiaId" title="Enlever la validation du contact" /> - </t:if> </p:actionsCell> </div> </form>