Wao-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- 2352 discussions
[Suiviobsmer-commits] r833 - in trunk: wao-business/src/main/java/fr/ifremer/wao/service wao-ui/src/main/resources/fr/ifremer/wao/ui/pages wao-ui/src/main/webapp
by bleny@users.labs.libre-entreprise.org 13 Dec '10
by bleny@users.labs.libre-entreprise.org 13 Dec '10
13 Dec '10
Author: bleny
Date: 2010-12-13 17:41:26 +0000 (Mon, 13 Dec 2010)
New Revision: 833
Log:
starting form for update multiple observers
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Contacts.properties
trunk/wao-ui/src/main/webapp/Contacts.tml
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-12-13 09:21:48 UTC (rev 832)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-12-13 17:41:26 UTC (rev 833)
@@ -136,8 +136,14 @@
// Default order
filter.setOrderBy(TopiaEntity.TOPIA_CREATE_DATE + " desc");
+
+ TopiaQuery query = builder.applyContactFilter(filter);
- TopiaQuery query = builder.applyContactFilter(filter).
+ if (log.isDebugEnabled()) {
+ log.debug("query to get contacts without load is " + query);
+ }
+
+ query.
// addLoad(contactProperty.observerProperty().company(),
// contactProperty.sampleRowProperty().sampleMonth());
// TODO-fdesbois-2010-06-18 : manage aliases in addLoad
@@ -146,8 +152,18 @@
// TopiaQuery.getProperty(Contact.SAMPLE_ROW, SampleRow.PROFESSION, Profession.DCF5CODE)
);
+ if (log.isDebugEnabled()) {
+ log.debug("query to get contacts with load is " + query);
+ }
+
Map<String, Contact> results = dao.findAllMappedByQuery(query);
+ // force load
+ for (Contact contact : results.values()) {
+ contact.getMainObserver();
+ contact.sizeSecondaryObservers();
+ }
+
return results;
}
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Contacts.properties
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Contacts.properties 2010-12-13 09:21:48 UTC (rev 832)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Contacts.properties 2010-12-13 17:41:26 UTC (rev 833)
@@ -25,10 +25,11 @@
# ContactForm labels
facadeName-label: Facade
sectorName-label: Secteur
-observer-label: Observateur
+observer-label: Observateur r\u00e9f\u00e9rant
contactsCsvFile-label: Fichier des contacts
fromDate-label: Depuis le
reliabilityFilter-label: Qualit\u00e9
+mainObserver-label: Observateur r\u00e9f\u00e9rant
# Grid labels
createdBy-label: Observateur
Modified: trunk/wao-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Contacts.tml 2010-12-13 09:21:48 UTC (rev 832)
+++ trunk/wao-ui/src/main/webapp/Contacts.tml 2010-12-13 17:41:26 UTC (rev 833)
@@ -193,9 +193,9 @@
<div t:type="grid" t:source="contacts" t:row="contact" class="t-data-grid ${gridClass}" t:model="contactModel" t:rowClass="prop:rowClass"
t:rowsPerPage="20">
<p:createdByCell>
+ ${contact.mainObserver.fullName}
<t:if t:test="editionMode">
- <input t:type="select" t:model="userSelectModel" t:validate="required" t:value="contactUserId"/>
- <p:else>${contact.mainObserver.fullName}</p:else>
+ <a t:type="actionlink" t:id="showObserversForm" t:zone="observersFormZone" context="${contact.topiaId}" class="display-form" title="Modifier les observateurs associés à ce contact">...</a>
</t:if>
</p:createdByCell>
<p:sampleRowCell>
@@ -385,5 +385,38 @@
</p>
</form>
</div>
-
+<t:zone t:id="observersFormZone" t:visible="observersFormZoneVisible">
+ <t:if test="contactEdited"> <!-- only if contact != null : prevent NPE at peage loading -->
+ Modification des observateurs associés à ce contact :
+ <form t:type="form" t:id="observersForm" action="tapestry">
+ <p>
+ <t:errors />
+ </p>
+ <p>
+ <t:label t:for="mainObserver" />:
+ <input t:type="select" t:id="mainObserver" t:model="observerSelectModel" t:validate="required" t:value="contactUserId"/>
+ </p>
+ <p>
+ <t:label t:for="secondaryObserver" />:
+ <input t:type="select" t:id="secondaryObserver" t:model="observerSelectModel" t:value="selectedSecondaryObserverId" t:mixins="ck/onEvent" t:event="change" />
+ <a t:type="actionlink" t:id="addSecondaryObserver" title="Ajouter un observateur" t:zone="observersFormZone">
+ <img src="${asset:context:img/add-16px.png}" />
+ </a>
+ <ul>
+ <li t:type="loop" t:source="secondaryObservers" t:value="observer" t:index="secondaryObserverIndex" t:volatile="true">
+ ${observer.fullName}
+ <a t:type="actionlink" t:id="removeSecondaryObserver" t:context="secondaryObserverIndex" title="Supprimer cet observateur" t:zone="observersFormZone">
+ <img src="${asset:context:img/remove-22px.png}" />
+ </a>
+ </li>
+ </ul>
+ </p>
+ <p> </p>
+ <p class="aright">
+ <input t:type="submit" t:id="cancelEditObservers" class="ico22px undo22px" value="Undo" title="Annuler les modifications" />
+ <input t:type="submit" t:id="saveObservers" class="ico22px save22px" value="Save" title="Enregistrer les observateurs" />
+ </p>
+ </form>
+ </t:if>
+</t:zone>
</t:layout>
1
0
13 Dec '10
Author: bleny
Date: 2010-12-13 09:21:48 +0000 (Mon, 13 Dec 2010)
New Revision: 832
Log:
refactor whole application to consider mainObserver instead of observer
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContext.java
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatInfosImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/ContactInput.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ContactModelFactory.java
trunk/wao-ui/src/main/webapp/Boats.tml
trunk/wao-ui/src/main/webapp/Contacts.tml
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ContactsTest.java
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -597,13 +597,12 @@
"topiaId CHARACTER VARYING(255) PRIMARY KEY," +
"topiaVersion BIGINT NOT NULL," +
"topiaCreateDate TIMESTAMP WITHOUT TIME ZONE NOT NULL," +
- "waoUser character varying(255) NOT NULL," +
+ "waoUser character varying(255)," +
"obsProgramOrdinal SMALLINT NOT NULL," +
"userRoleOrdinal SMALLINT NOT NULL," +
"canWrite BOOLEAN NOT NULL," +
"CONSTRAINT waoUser_fkey FOREIGN KEY (waoUser) " +
- "REFERENCES WaoUser (topiaid) MATCH SIMPLE " +
- "ON UPDATE NO ACTION ON DELETE CASCADE);");
+ "REFERENCES WaoUser (topiaid));");
}
@Override
@@ -650,4 +649,16 @@
queries.add("ALTER TABLE WaoUser DROP COLUMN role;");
queries.add("ALTER TABLE WaoUser DROP COLUMN roleReadOnly;");
}
+
+ @Override
+ protected void addMultipleObserversInContact_1_7(List<String> queries) {
+ queries.add("ALTER TABLE Contact RENAME observer TO mainObserver");
+ queries.add("CREATE TABLE Contact_SecondaryObservers (" +
+ "Contact character varying(255) NOT NULL," +
+ "SecondaryObservers character varying(255) NOT NULL," +
+ "CONSTRAINT Contact_fkey FOREIGN KEY (Contact) " +
+ "REFERENCES Contact (topiaid)," +
+ "CONSTRAINT SecondaryObservers_fkey FOREIGN KEY (SecondaryObservers) " +
+ "REFERENCES WaoUser (topiaid));");
+ }
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContext.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContext.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoContext.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -117,6 +117,7 @@
* @param entity
* @return boolean
*/
+ @Deprecated
<E extends TopiaEntity> boolean prepareTopiaId(Class<E> entityClass,
E entity);
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -113,6 +113,8 @@
protected abstract void removeUserRolesColumns_1_7(List<String> queries);
+ protected abstract void addMultipleObserversInContact_1_7(List<String> queries);
+
protected static final Version[] VERSIONS = new Version[] {
VersionUtil.valueOf("1.0"),
VersionUtil.valueOf("1.1"),
@@ -411,6 +413,8 @@
removeUserRolesColumns_1_7(queries);
+ addMultipleObserversInContact_1_7(queries);
+
String[] strings = queries.toArray(new String[queries.size()]);
executeSQL(tx, true, true, strings);
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -499,7 +499,7 @@
// OBSERVER
if (observer != null) {
- query.addEquals(contactProperty.observer(), observer);
+ query.addEquals(contactProperty.mainObserver(), observer);
}
// Company filter is managed by SamplingFilter because the company is
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatInfosImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatInfosImpl.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatInfosImpl.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -72,7 +72,7 @@
dao.createQueryDoneContactsFromDate(getBoat(), fromDate);
String companyProperty =
- TopiaQuery.getProperty(query.getMainAlias(), Contact.PROPERTY_OBSERVER, WaoUser.PROPERTY_COMPANY);
+ TopiaQuery.getProperty(query.getMainAlias(), Contact.PROPERTY_MAIN_OBSERVER, WaoUser.PROPERTY_COMPANY);
query.addEquals(companyProperty, getCompany());
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-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -63,12 +63,12 @@
"MAX($1)", subContactProperty.topiaCreateDate())).
addWhere(WaoQueryHelper.format(
"$1 = $2", subContactProperty.boat(), mainContactProperty.boat())).
- addEquals(subContactProperty.observerProperty().company(), company);
+ addEquals(subContactProperty.mainObserverProperty().company(), company);
// Construct mainquery
TopiaQuery query = createQuery(mainContactProperty.$alias()).
addEquals(mainContactProperty.boat(), boat).
- addEquals(mainContactProperty.observerProperty().company(), company).
+ addEquals(mainContactProperty.mainObserverProperty().company(), company).
addSubQuery(WaoQueryHelper.format(
"$1 = (?)", mainContactProperty.topiaCreateDate()), subquery);
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/ContactInput.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/ContactInput.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/ContactInput.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -117,9 +117,9 @@
WaoUser user = userDAO.findByLogin(observerLogin);
if (user == null) {
throw new ImportRefusedException("Utilisateur inexistant avec " +
- "l'identifiant : " + observerLogin, rowNumber, PROPERTY_OBSERVER);
+ "l'identifiant : " + observerLogin, rowNumber, PROPERTY_MAIN_OBSERVER);
}
- setObserver(user);
+ setMainObserver(user);
}
/**
@@ -134,16 +134,16 @@
public void initCompany() throws ImportRefusedException {
// Keep observer company for an admin creator
if (creator.isAdmin()) {
- company = observer.getCompany();
+ company = mainObserver.getCompany();
// For a non admin creator, use his own company
} else {
company = creator.getCompany();
// Check if the observer company is the same as the creator one
- if (!observer.getCompany().equals(company)) {
+ if (!mainObserver.getCompany().equals(company)) {
throw new ImportRefusedException(
"L'observateur avec pour login '" +
- observer.getLogin() +
+ mainObserver.getLogin() +
"' n'appartient pas à votre société !", rowNumber,
WaoUser.PROPERTY_COMPANY);
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -229,7 +229,7 @@
// Last contact
ContactDAO contactDAO = WaoDAOHelper.getContactDAO(transaction);
TopiaQuery query = contactDAO.createQueryLastContactForBoat(boat, company).
- addLoad(Contact.PROPERTY_SAMPLE_ROW, Contact.PROPERTY_OBSERVER);
+ addLoad(Contact.PROPERTY_SAMPLE_ROW, Contact.PROPERTY_MAIN_OBSERVER);
Contact contact = contactDAO.findByQuery(query);
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-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -141,7 +141,7 @@
// addLoad(contactProperty.observerProperty().company(),
// contactProperty.sampleRowProperty().sampleMonth());
// TODO-fdesbois-2010-06-18 : manage aliases in addLoad
- addLoad(TopiaQuery.getProperty(Contact.PROPERTY_OBSERVER, WaoUser.PROPERTY_COMPANY),
+ addLoad(TopiaQuery.getProperty(Contact.PROPERTY_MAIN_OBSERVER, WaoUser.PROPERTY_COMPANY),
TopiaQuery.getProperty(Contact.PROPERTY_SAMPLE_ROW, SampleRow.PROPERTY_SAMPLE_MONTH)
// TopiaQuery.getProperty(Contact.SAMPLE_ROW, SampleRow.PROFESSION, Profession.DCF5CODE)
);
@@ -170,7 +170,7 @@
@Override
public Contact executeGetNewContact(WaoUser user, SampleRow row, Boat boat) {
Contact result = new ContactImpl();
- result.setObserver(user);
+ result.setMainObserver(user);
result.setSampleRow(row);
result.setBoat(boat);
result.setContactState(ContactState.CONTACT_START);
@@ -210,7 +210,7 @@
protected void checkObserver(Contact contact) throws WaoException {
// Ano #2287 Temporary fix to avoid saving a null observer
- if (contact.getObserver() == null) {
+ if (contact.getMainObserver() == null) {
// Throw a NullPointerException to avoid saving null observer
Throwable exception =
new NullPointerException("observer can't be null to save" +
@@ -438,7 +438,7 @@
String.valueOf(contact.getDataReliabilityOrdinal()));
// Observer part
- WaoUser observer = contact.getObserver();
+ WaoUser observer = contact.getMainObserver();
Company company = observer.getCompany();
export.record(CONTACT.OBSERV_ID, observer.getLogin());
export.record(CONTACT.OBSERV_PRENOM, observer.getFirstName());
@@ -543,7 +543,7 @@
// Retrieve the existing contact
String companyProperty =
- TopiaQuery.getProperty(Contact.PROPERTY_OBSERVER,
+ TopiaQuery.getProperty(Contact.PROPERTY_MAIN_OBSERVER,
WaoUser.PROPERTY_COMPANY);
Contact contact = dao.findByProperties(
@@ -890,7 +890,7 @@
// Retrieve existing contact
Contact contactToUpdate = dao.findByTopiaId(contact.getTopiaId());
- WaoUser observer = contactToUpdate.getObserver();
+ WaoUser observer = contactToUpdate.getMainObserver();
String observerEmail = observer.getLogin();
int boatImmatriculation = contactToUpdate.getBoat().getImmatriculation();
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -539,7 +539,7 @@
}
WaoQueryHelper.CompanyProperty companyProperty =
- contactProperty.observerProperty().companyProperty();
+ contactProperty.mainObserverProperty().companyProperty();
Company company = filter.getCompany();
if (company != null) {
@@ -615,7 +615,7 @@
String contactAlias = query.getMainAlias();
String companyProperty =
- TopiaQuery.getProperty(contactAlias, Contact.PROPERTY_OBSERVER, WaoUser.PROPERTY_COMPANY);
+ TopiaQuery.getProperty(contactAlias, Contact.PROPERTY_MAIN_OBSERVER, WaoUser.PROPERTY_COMPANY);
String companyNameProperty =
TopiaQuery.getProperty(companyProperty, Company.PROPERTY_NAME);
String tideBeginDateProperty =
@@ -682,7 +682,7 @@
ContactProperty contactProperty = builder.initializeForContact();
WaoQueryHelper.CompanyProperty companyProperty =
- contactProperty.observerProperty().companyProperty();
+ contactProperty.mainObserverProperty().companyProperty();
TopiaQuery query = builder.applySamplingFilter(filter).
addEquals(contactProperty.state(), ContactState.BOARDING_DONE.ordinal()).
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -63,7 +63,6 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -206,12 +205,14 @@
WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(transaction);
- WaoUser actualUser = user;
+ WaoUser userToUpdate;
boolean newUser = user.getTopiaId() == null;
if (newUser) {
- context.prepareTopiaId(WaoUser.class, actualUser);
+ userToUpdate = user;
+
+ context.prepareTopiaId(WaoUser.class, userToUpdate);
WaoUser existUser = dao.findByLogin(user.getLogin());
// Check for a new user if login already exists
if (existUser != null) {
@@ -221,82 +222,108 @@
user.getLogin());
}
- if (actualUser.getUserProfile() != null) {
- for (UserProfile userProfile : actualUser.getUserProfile()) {
- log.debug(userProfile + " to save : " + userProfile.getDescription());
- context.prepareTopiaId(UserProfile.class, userProfile);
- userProfileDAO.update(userProfile);
+ if (userToUpdate.getUserProfile() != null) {
+ for (UserProfile profile : userToUpdate.getUserProfile()) {
+ log.debug("saving profile " + profile.getDescription());
+ UserProfile profileToAdd = userProfileDAO.create(
+ UserProfile.PROPERTY_OBS_PROGRAM_ORDINAL,
+ profile.getObsProgramOrdinal(),
+ UserProfile.PROPERTY_USER_ROLE_ORDINAL,
+ profile.getUserRoleOrdinal(),
+ UserProfile.PROPERTY_CAN_WRITE,
+ profile.getCanWrite()
+ );
}
}
} else {
- actualUser = dao.findByTopiaId(user.getTopiaId());
-
- Collection<UserProfile> oldProfiles;
- if (actualUser.getUserProfile() == null) {
- oldProfiles = Collections.EMPTY_LIST;
+ userToUpdate = dao.findByTopiaId(user.getTopiaId());
+ /*
+ Collection<UserProfile> profilesToRemove;
+ if (userToUpdate.getUserProfile() == null) {
+ profilesToRemove = Collections.EMPTY_LIST;
} else {
- oldProfiles = new ArrayList<UserProfile>(actualUser.getUserProfile());
+ profilesToRemove = new ArrayList<UserProfile>(userToUpdate.getUserProfile());
}
if (log.isDebugEnabled()) {
- log.debug("old profiles : " + oldProfiles);
+ log.debug("old profiles : " + profilesToRemove);
}
-
+*/
// set may be buggy
- // actualUser.setUserProfile(user.getUserProfile());
- actualUser.clearUserProfile();
- actualUser.addAllUserProfile(user.getUserProfile());
+// userToUpdate.setUserProfile(new ArrayList<UserProfile>(user.getUserProfile()));
+ userToUpdate.clearUserProfile();
+// userToUpdate.addAllUserProfile(user.getUserProfile());
+ for (UserProfile profile : user.getUserProfile()) {
+ UserProfile profileToAdd;
+ if (profile.getTopiaId() == null) {
+
+ // WaoBinderHelper.getSimpleTopiaBinder(UserProfile.class).copy(profile, profileToAdd);
+
+ // userProfileDAO.create(profileToAdd);
+ profileToAdd = userProfileDAO.create(
+ UserProfile.PROPERTY_OBS_PROGRAM_ORDINAL,
+ profile.getObsProgramOrdinal(),
+ UserProfile.PROPERTY_USER_ROLE_ORDINAL,
+ profile.getUserRoleOrdinal(),
+ UserProfile.PROPERTY_CAN_WRITE,
+ profile.getCanWrite()
+ );
+ } else {
+ profileToAdd = userProfileDAO.findByTopiaId(profile.getTopiaId());
+ }
+ userToUpdate.addUserProfile(profileToAdd);
+ }
+
+/*
if (log.isDebugEnabled()) {
- log.debug("new profiles : " + actualUser.getUserProfile());
+ log.debug("new profiles : " + userToUpdate.getUserProfile());
}
- for (UserProfile userProfile : actualUser.getUserProfile()) {
+ for (UserProfile userProfile : user.getUserProfile()) {
if (log.isDebugEnabled()) {
- log.debug("is " + userProfile + " in " + oldProfiles + " ? "
- + oldProfiles.contains(userProfile));
+ log.debug("is " + userProfile + " in " + profilesToRemove + " ? "
+ + profilesToRemove.contains(userProfile));
}
- if (oldProfiles.contains(userProfile)) {
+ if (profilesToRemove.contains(userProfile)) {
// this profile was already attributed to this user, don't
// remove it : just keep it from being removed
if (log.isDebugEnabled()) {
log.debug("profile " + userProfile + " was already given to user");
}
- oldProfiles.remove(userProfile);
+ profilesToRemove.remove(userProfile);
} else {
// this profile was added to the user
if (log.isDebugEnabled()) {
log.debug("profile " + userProfile + " is new for user");
}
- context.prepareTopiaId(UserProfile.class, userProfile);
userProfileDAO.create(userProfile);
}
}
-
// now, oldProfiles contains user has no longer, we must remove them
if (log.isDebugEnabled()) {
- log.debug("will remove deleted profiles : " + oldProfiles);
+ log.debug("will remove deleted profiles : " + profilesToRemove);
}
- for (UserProfile userProfile : oldProfiles) {
+ for (UserProfile userProfile : profilesToRemove) {
userProfileDAO.delete(userProfile);
- }
+ }*/
}
- String password = actualUser.getPassword();
+ String password = userToUpdate.getPassword();
if (generatePassword) {
password = context.createRandomString(8);
- actualUser.setPasswordChanged(true);
+ userToUpdate.setPasswordChanged(true);
}
// For a password set manually by user or generated
- if (actualUser.isPasswordChanged()) {
+ if (userToUpdate.isPasswordChanged()) {
String passwordEncoded = context.encodeString(password);
- actualUser.setPassword(passwordEncoded);
+ userToUpdate.setPassword(passwordEncoded);
}
- log.debug("will store " + actualUser.getTopiaId());
- dao.update(actualUser);
- log.debug("had stored " + actualUser.getTopiaId());
+ log.debug("will store " + userToUpdate.getTopiaId());
+ dao.update(userToUpdate);
+ log.debug("had stored " + userToUpdate.getTopiaId());
transaction.commitTransaction();
@@ -382,7 +409,7 @@
ContactDAO contactDAO =
WaoDAOHelper.getContactDAO(transaction);
- List<Contact> results = contactDAO.findAllByObserver(user);
+ List<Contact> results = contactDAO.findAllByMainObserver(user);
if (!results.isEmpty()) {
throw new WaoBusinessException(Type.ALREADY_EXISTS,
@@ -392,17 +419,25 @@
}
}
- WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
- WaoUser actualUser = dao.findByTopiaId(user.getTopiaId());
+ WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
+ WaoUser userToDelete = dao.findByTopiaId(user.getTopiaId());
- // remove all profiles
- UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(transaction);
- for (UserProfile userProfile : actualUser.getUserProfile()) {
- userProfileDAO.delete(userProfile);
- }
+/* //userToDelete.clearUserProfile();
- dao.delete(actualUser);
- transaction.commitTransaction();
+ // userToDelete.setUserProfile(null);
+
+ // remove all profiles
+ UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(transaction);
+ Collection<UserProfile> userProfileCollection = userToDelete.getUserProfile();
+ if (CollectionUtils.isNotEmpty(userProfileCollection)) {
+ for (UserProfile userProfile : userProfileCollection) {
+ // userProfileDAO.delete(userProfile);
+ }
+ }*/
+
+ dao.delete(userToDelete);
+ transaction.commitTransaction();
+
}
@Override
Modified: trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
===================================================================
--- trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-12-13 09:21:48 UTC (rev 832)
@@ -178,7 +178,7 @@
wao.error.serviceUser.createDefaultAdmin=Impossible de cr\u00E9er l'administrateur par d\u00E9faut
wao.error.serviceUser.createUpdateCompany=Impossible de cr\u00E9er ou de mettre \u00E0 jour la soci\u00E9t\u00E9
wao.error.serviceUser.createUpdateUser=Impossible de cr\u00E9er ou de mettre \u00E0 jour l'utilisateur
-wao.error.serviceUser.deleteCompany=Impossible de supprimer la société ou de vérifier les contraintes de suppression
+wao.error.serviceUser.deleteCompany=Impossible de supprimer la soci\u00E9t\u00E9 ou de v\u00E9rifier les contraintes de suppression
wao.error.serviceUser.deleteUser=Impossible de supprimer l'utilisateur
wao.error.serviceUser.existLogin=
wao.error.serviceUser.forgetPassword=Impossible d'envoyer le mail d'oubli de mot de passe
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/AbstractServiceTest.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -397,7 +397,7 @@
contact = dao.create();
contact.setBoat(findDefaultBoat());
contact.setContactState(ContactState.CONTACT_START);
- contact.setObserver(findDefaultObserver());
+ contact.setMainObserver(findDefaultObserver());
contact.setSampleRow(findDefaultSampleRow());
if (log.isDebugEnabled()) {
log.debug("Create contact : " + contact);
@@ -572,7 +572,7 @@
// Contacts for company TARTANPION
Contact contact1 = new ContactImpl();
contact1.setBoat(boat);
- contact1.setObserver(user);
+ contact1.setMainObserver(user);
contact1.setSampleRow(row);
contact1.setContactState(ContactState.BOARDING_DONE);
Date begin = DateUtil.createDate(3, 3, 2010);
@@ -581,7 +581,7 @@
Contact contact2 = new ContactImpl();
contact2.setBoat(boat);
- contact2.setObserver(user);
+ contact2.setMainObserver(user);
contact2.setSampleRow(row);
contact2.setContactState(ContactState.BOARDING_DONE);
begin = DateUtil.createDate(3, 10, 2010);
@@ -590,7 +590,7 @@
Contact contact3 = new ContactImpl();
contact3.setBoat(boat);
- contact3.setObserver(user);
+ contact3.setMainObserver(user);
contact3.setSampleRow(row);
contact3.setContactState(ContactState.BOAT_REFUSED);
begin = DateUtil.createDate(3, 5, 2010);
@@ -600,7 +600,7 @@
// Contacts for company BIS
Contact contact4 = new ContactImpl();
contact4.setBoat(boat2);
- contact4.setObserver(user2);
+ contact4.setMainObserver(user2);
contact4.setSampleRow(row2);
contact4.setContactState(ContactState.BOARDING_EXPECTED);
begin = DateUtil.createDate(3, 3, 2010);
@@ -609,7 +609,7 @@
Contact contact5 = new ContactImpl();
contact5.setBoat(boat2);
- contact5.setObserver(user2);
+ contact5.setMainObserver(user2);
contact5.setSampleRow(row2);
contact5.setContactState(ContactState.BOAT_UNAVAILABLE);
begin = DateUtil.createDate(3, 5, 2010);
@@ -619,7 +619,7 @@
// Contact refused by program, will not be in result
Contact contact6 = new ContactImpl();
contact6.setBoat(boat2);
- contact6.setObserver(user2);
+ contact6.setMainObserver(user2);
contact6.setSampleRow(row2);
contact6.setContactState(ContactState.BOAT_UNAVAILABLE);
begin = DateUtil.createDate(3, 3, 2010);
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactImplTest.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactImplTest.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -92,7 +92,7 @@
Contact contact = new ContactImpl();
WaoUser observer = createDefaultObserver();
- contact.setObserver(observer);
+ contact.setMainObserver(observer);
try {
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -28,7 +28,6 @@
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ContactState;
import fr.ifremer.wao.bean.ContactStatus.NullSampleMonthException;
-import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.Boat;
import fr.ifremer.wao.entity.BoatDAO;
import fr.ifremer.wao.entity.Company;
@@ -149,7 +148,7 @@
WaoUser.PROPERTY_FIRST_NAME, "Jean",
WaoUser.PROPERTY_LAST_NAME, "Michmuche");
- when(contact.getObserver()).thenReturn(observer);
+ when(contact.getMainObserver()).thenReturn(observer);
}
SampleRowDAO rowDAO =
@@ -591,7 +590,7 @@
Date createDate = DateUtil.createDate(18,3,2010);
assertEquals(createDate, result.getTopiaCreateDate());
assertEquals(ContactState.BOARDING_DONE, result.getContactState());
- assertEquals(observer, result.getObserver());
+ assertEquals(observer, result.getMainObserver());
assertEquals(sampleRow, result.getSampleRow());
assertEquals(boat, result.getBoat());
assertEquals(DateUtil.createDate(22,3,2010),
@@ -626,7 +625,7 @@
log.info("test 4 : Error on observer");
when(reader.get(CONTACT.OBSERV_ID.name())).thenReturn("FAKE");
- checkImportError(Contact.PROPERTY_OBSERVER);
+ checkImportError(Contact.PROPERTY_MAIN_OBSERVER);
// Reinit observer
when(reader.get(CONTACT.OBSERV_ID.name())).
thenReturn(observer.getLogin());
@@ -705,7 +704,7 @@
assertNotNull(existingContact);
assertEquals(boat, existingContact.getBoat());
assertEquals(sampleRow, existingContact.getSampleRow());
- assertEquals(observer, existingContact.getObserver());
+ assertEquals(observer, existingContact.getMainObserver());
assertEquals(ContactState.CONTACT_START,
existingContact.getContactState());
} finally {
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSamplingImplTest.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -188,7 +188,7 @@
Contact contact = new ContactImpl();
WaoUser observer = createDefaultObserver();
- contact.setObserver(observer);
+ contact.setMainObserver(observer);
contact.setSampleRow(result);
manager.getServiceContact().saveContact(contact, false);
@@ -530,7 +530,7 @@
Contact contact = new ContactImpl();
WaoUser observer = createDefaultObserver();
- contact.setObserver(observer);
+ contact.setMainObserver(observer);
contact.setSampleRow(row);
manager.getServiceContact().saveContact(contact, false);
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-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceSynthesisImplTest.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -154,7 +154,7 @@
// First contact : OK
Contact contact1 = new ContactImpl();
contact1.setBoat(boat);
- contact1.setObserver(user);
+ contact1.setMainObserver(user);
contact1.setSampleRow(row);
contact1.setContactState(ContactState.BOARDING_DONE);
Date begin = DateUtil.createDate(3, 3, 2010);
@@ -164,7 +164,7 @@
Contact contact2 = new ContactImpl();
contact2.setBoat(boat);
- contact2.setObserver(user);
+ contact2.setMainObserver(user);
contact2.setSampleRow(row);
contact2.setContactState(ContactState.BOARDING_DONE);
begin = DateUtil.createDate(3, 3, 2010);
@@ -174,7 +174,7 @@
Contact contact3 = new ContactImpl();
contact3.setBoat(boat2);
- contact3.setObserver(user);
+ contact3.setMainObserver(user);
contact3.setSampleRow(row);
contact3.setContactState(ContactState.BOARDING_DONE);
begin = DateUtil.createDate(3, 3, 2010);
@@ -245,7 +245,7 @@
// First contact : OK
Contact contact1 = new ContactImpl();
contact1.setBoat(boat);
- contact1.setObserver(user);
+ contact1.setMainObserver(user);
contact1.setSampleRow(row);
// 1 real observer over 1
contact1.setNbObservants(1);
@@ -257,7 +257,7 @@
Contact contact2 = new ContactImpl();
contact2.setBoat(boat);
- contact2.setObserver(user);
+ contact2.setMainObserver(user);
contact2.setSampleRow(row);
// 2 real observer over 1
contact2.setNbObservants(2);
@@ -269,7 +269,7 @@
Contact contact3 = new ContactImpl();
contact3.setBoat(boat2);
- contact3.setObserver(user2);
+ contact3.setMainObserver(user2);
contact3.setSampleRow(row2);
// 1 real observer over 2
contact3.setNbObservants(1);
@@ -356,7 +356,7 @@
// // Contacts for company TARTANPION
// Contact contact1 = new ContactImpl();
// contact1.setBoat(boat);
-// contact1.setObserver(user);
+// contact1.setMainObserver(user);
// contact1.setSampleRow(row);
// contact1.setContactState(ContactState.BOARDING_DONE);
// Date begin = DateUtil.createDate(3, 3, 2010);
@@ -365,7 +365,7 @@
//
// Contact contact2 = new ContactImpl();
// contact2.setBoat(boat);
-// contact2.setObserver(user);
+// contact2.setMainObserver(user);
// contact2.setSampleRow(row);
// contact2.setContactState(ContactState.BOARDING_DONE);
// begin = DateUtil.createDate(3, 10, 2010);
@@ -374,7 +374,7 @@
//
// Contact contact3 = new ContactImpl();
// contact3.setBoat(boat);
-// contact3.setObserver(user);
+// contact3.setMainObserver(user);
// contact3.setSampleRow(row);
// contact3.setContactState(ContactState.BOAT_REFUSED);
// begin = DateUtil.createDate(3, 5, 2010);
@@ -384,7 +384,7 @@
// // Contacts for company BIS
// Contact contact4 = new ContactImpl();
// contact4.setBoat(boat2);
-// contact4.setObserver(user2);
+// contact4.setMainObserver(user2);
// contact4.setSampleRow(row2);
// contact4.setContactState(ContactState.BOARDING_EXPECTED);
// begin = DateUtil.createDate(3, 3, 2010);
@@ -393,7 +393,7 @@
//
// Contact contact5 = new ContactImpl();
// contact5.setBoat(boat2);
-// contact5.setObserver(user2);
+// contact5.setMainObserver(user2);
// contact5.setSampleRow(row2);
// contact5.setContactState(ContactState.BOAT_UNAVAILABLE);
// begin = DateUtil.createDate(3, 5, 2010);
@@ -403,7 +403,7 @@
// // Contact refused by program, will not be in result
// Contact contact6 = new ContactImpl();
// contact6.setBoat(boat2);
-// contact6.setObserver(user2);
+// contact6.setMainObserver(user2);
// contact6.setSampleRow(row2);
// contact6.setContactState(ContactState.BOAT_UNAVAILABLE);
// begin = DateUtil.createDate(3, 3, 2010);
@@ -527,7 +527,7 @@
// First contact : OK
Contact contact1 = new ContactImpl();
contact1.setBoat(boat);
- contact1.setObserver(user);
+ contact1.setMainObserver(user);
contact1.setSampleRow(row);
Date begin = DateUtil.createDate(3, 3, 2010);
contact1.setTideBeginDate(begin);
@@ -539,7 +539,7 @@
Contact contact2 = new ContactImpl();
contact2.setBoat(boat);
- contact2.setObserver(user);
+ contact2.setMainObserver(user);
contact2.setSampleRow(row);
begin = DateUtil.createDate(3, 3, 2010);
contact2.setTideBeginDate(begin);
@@ -551,7 +551,7 @@
Contact contact3 = new ContactImpl();
contact3.setBoat(boat2);
- contact3.setObserver(user2);
+ contact3.setMainObserver(user2);
contact3.setSampleRow(row2);
begin = DateUtil.createDate(3, 3, 2010);
contact3.setTideBeginDate(begin);
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-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -557,10 +557,10 @@
if (logger.isDebugEnabled()) {
logger.debug("Edit contact : " + contactId);
logger.debug("Contact : " + getContacts().get(contactId));
- logger.debug("Set observerId : " + getContacts().get(contactId).getObserver());
+ logger.debug("Set observerId : " + getContacts().get(contactId).getMainObserver());
}
contactEdited = getContacts().get(contactId); //prepareContactEdited(contactId);
- contactUserId = contactEdited.getObserver().getId();
+ contactUserId = contactEdited.getMainObserver().getId();
//contactEditedId = contactId;
contactSelectedId = contactId;
oldComment = contactEdited.getComment();
@@ -586,7 +586,7 @@
// ContactEdited is in session, previously set by Edit action
// contactEdited.setState(contactState.toString());
WaoUser contactUser = getUserSelectModel().findObject(contactUserId);
- contactEdited.setObserver(contactUser);
+ contactEdited.setMainObserver(contactUser);
if (logger.isDebugEnabled()) {
logger.debug("Comment : " + contactEdited.getComment());
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ContactModelFactory.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ContactModelFactory.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ContactModelFactory.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -146,7 +146,7 @@
@Override
public Object get(Object arg0) {
Contact contact = (Contact)arg0;
- return contact.getObserver().getFullName();
+ return contact.getMainObserver().getFullName();
}
@Override
@@ -170,7 +170,7 @@
@Override
public Object get(Object arg0) {
Contact contact = (Contact)arg0;
- return contact.getObserver().getCompany().getName();
+ return contact.getMainObserver().getCompany().getName();
}
@Override
Modified: trunk/wao-ui/src/main/webapp/Boats.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Boats.tml 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-ui/src/main/webapp/Boats.tml 2010-12-13 09:21:48 UTC (rev 832)
@@ -248,7 +248,7 @@
${companyBoatInfos.lastContact.contactState.libelle()}
</p:state>
<p:createdBy>
- ${companyBoatInfos.lastContact.observer.fullName}
+ ${companyBoatInfos.lastContact.mainObserver.fullName}
</p:createdBy>
<p:sampleRowCode>
${companyBoatInfos.lastContact.sampleRow.code}
Modified: trunk/wao-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Contacts.tml 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-ui/src/main/webapp/Contacts.tml 2010-12-13 09:21:48 UTC (rev 832)
@@ -21,7 +21,7 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU Affero General Public License
+ You should have received a copy of the GNU Affero General Public License observer
along with this program. If not, see <http://www.gnu.org/licenses/>.
#L%
-->
@@ -195,7 +195,7 @@
<p:createdByCell>
<t:if t:test="editionMode">
<input t:type="select" t:model="userSelectModel" t:validate="required" t:value="contactUserId"/>
- <p:else>${contact.observer.fullName}</p:else>
+ <p:else>${contact.mainObserver.fullName}</p:else>
</t:if>
</p:createdByCell>
<p:sampleRowCell>
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -191,11 +191,18 @@
/** EXECUTE SUBMISSION FOR ROLE **/
logger.info("-- Choose role ADMIN : redirection to 'Index' page");
+ /*
Map<String, String> fieldValues = new HashMap<String, String>();
fieldValues.put("userRole", UserRole.ADMIN.name());
Document result = tester.submitForm(
connectionPage2.getElementById("roleForm"), fieldValues);
+ */
+ Map<String, String> fieldValues = new HashMap<String, String>();
+ fieldValues.put("userProfile", user.getProfile().getTopiaId());
+ Document result = tester.submitForm(
+ connectionPage2.getElementById("roleForm"), fieldValues);
+
Assert.assertNotNull(serviceAuthentication.getConnectedUser().getRole());
checkIndexPage(result);
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ContactsTest.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ContactsTest.java 2010-12-10 09:56:12 UTC (rev 831)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ContactsTest.java 2010-12-13 09:21:48 UTC (rev 832)
@@ -76,9 +76,9 @@
Contact contact1 = Mockito.mock(Contact.class);
Contact contact2 = Mockito.mock(Contact.class);
- Mockito.when(contact1.getObserver()).thenReturn(observer);
+ Mockito.when(contact1.getMainObserver()).thenReturn(observer);
Mockito.when(contact1.getTopiaId()).thenReturn("C1");
- Mockito.when(contact2.getObserver()).thenReturn(observer2);
+ Mockito.when(contact2.getMainObserver()).thenReturn(observer2);
Mockito.when(contact1.getTopiaId()).thenReturn("C2");
Map<String, Contact> contacts = new HashMap<String, Contact>();
1
0
[Suiviobsmer-commits] r831 - trunk/wao-business/src/main/java/fr/ifremer/wao/service
by bleny@users.labs.libre-entreprise.org 10 Dec '10
by bleny@users.labs.libre-entreprise.org 10 Dec '10
10 Dec '10
Author: bleny
Date: 2010-12-10 09:56:12 +0000 (Fri, 10 Dec 2010)
New Revision: 831
Log:
code style
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-10 09:54:41 UTC (rev 830)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-10 09:56:12 UTC (rev 831)
@@ -426,8 +426,6 @@
public List<Company> executeGetCompanies(TopiaContext transaction,
boolean activeOnly) throws TopiaException {
- List<Company> results = new ArrayList<Company>();
-
CompanyDAO dao = WaoDAOHelper.getCompanyDAO(transaction);
TopiaQuery query = dao.createQuery().addOrder(Company.PROPERTY_NAME);
@@ -436,7 +434,7 @@
query.addEquals(Company.PROPERTY_ACTIVE, activeOnly);
}
- results = dao.findAllByQuery(query);
+ List<Company> results = dao.findAllByQuery(query);
return results;
}
1
0
[Suiviobsmer-commits] r830 - trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui
by bleny@users.labs.libre-entreprise.org 10 Dec '10
by bleny@users.labs.libre-entreprise.org 10 Dec '10
10 Dec '10
Author: bleny
Date: 2010-12-10 09:54:41 +0000 (Fri, 10 Dec 2010)
New Revision: 830
Log:
fix NPE in some UI tests
Modified:
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-12-09 14:44:32 UTC (rev 829)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-12-10 09:54:41 UTC (rev 830)
@@ -93,6 +93,7 @@
WaoUser user = new WaoUserImpl();
user.setFirstName("Jean");
user.setLastName("Michmuche");
+ user.setCompany(company);
UserProfile observerProfile = new UserProfileImpl(ObsProgram.OBSMER, UserRole.OBSERVER, true);
user.addUserProfile(observerProfile);
1
0
[Suiviobsmer-commits] r829 - in trunk/wao-business/src/main: java/fr/ifremer/wao java/fr/ifremer/wao/service xmi
by bleny@users.labs.libre-entreprise.org 09 Dec '10
by bleny@users.labs.libre-entreprise.org 09 Dec '10
09 Dec '10
Author: bleny
Date: 2010-12-09 14:44:32 +0000 (Thu, 09 Dec 2010)
New Revision: 829
Log:
remove profiles on delete user
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
trunk/wao-business/src/main/xmi/wao.zargo
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-12-09 13:41:30 UTC (rev 828)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-12-09 14:44:32 UTC (rev 829)
@@ -603,7 +603,7 @@
"canWrite BOOLEAN NOT NULL," +
"CONSTRAINT waoUser_fkey FOREIGN KEY (waoUser) " +
"REFERENCES WaoUser (topiaid) MATCH SIMPLE " +
- "ON UPDATE NO ACTION ON DELETE NO ACTION);");
+ "ON UPDATE NO ACTION ON DELETE CASCADE);");
}
@Override
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-09 13:41:30 UTC (rev 828)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-09 14:44:32 UTC (rev 829)
@@ -392,12 +392,16 @@
}
}
- // FIXME 2010-12-09 bleny remove profiles
-
WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
+ WaoUser actualUser = dao.findByTopiaId(user.getTopiaId());
- dao.delete(user);
+ // remove all profiles
+ UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(transaction);
+ for (UserProfile userProfile : actualUser.getUserProfile()) {
+ userProfileDAO.delete(userProfile);
+ }
+ dao.delete(actualUser);
transaction.commitTransaction();
}
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
1
0
[Suiviobsmer-commits] r828 - trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages
by bleny@users.labs.libre-entreprise.org 09 Dec '10
by bleny@users.labs.libre-entreprise.org 09 Dec '10
09 Dec '10
Author: bleny
Date: 2010-12-09 13:41:30 +0000 (Thu, 09 Dec 2010)
New Revision: 828
Log:
safe use of readOnly value
Modified:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java
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-12-09 11:54:19 UTC (rev 827)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-09 13:41:30 UTC (rev 828)
@@ -620,7 +620,7 @@
if (log.isDebugEnabled()) {
log.debug("readOnly value changed to " + value);
}
- setReadOnly(value);
+ readOnly = value;
}
@Log
@@ -639,7 +639,7 @@
Object onActionFromAddRole() {
if (getEditedProfile() != null &&
getEditedProfile().getUserRoleOrdinal() != null) {
- getEditedProfile().setCanWrite( ! getReadOnly());
+ getEditedProfile().setCanWrite( ! readOnly);
if (log.isDebugEnabled()) {
log.debug("Add user profile : " + getEditedProfile().getDescription());
}
1
0
[Suiviobsmer-commits] r827 - trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages
by bleny@users.labs.libre-entreprise.org 09 Dec '10
by bleny@users.labs.libre-entreprise.org 09 Dec '10
09 Dec '10
Author: bleny
Date: 2010-12-09 11:54:19 +0000 (Thu, 09 Dec 2010)
New Revision: 827
Log:
back to the primitive (Max Cavalera would be happy)
Modified:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java
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-12-09 11:27:50 UTC (rev 826)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-09 11:54:19 UTC (rev 827)
@@ -561,7 +561,8 @@
private UserProfile editedProfile;
@Persist
- private Boolean readOnly;
+ @Property
+ private boolean readOnly;
@Property
private UserRole role;
@@ -572,17 +573,6 @@
@Property
private boolean refreshUserRoleZone;
- public Boolean getReadOnly() {
- if (readOnly == null) {
- readOnly = false;
- }
- return readOnly;
- }
-
- public void setReadOnly(Boolean readOnly) {
- this.readOnly = readOnly;
- }
-
@Log
public UserProfile getEditedProfile() {
if (editedProfile == null) {
1
0
[Suiviobsmer-commits] r826 - in trunk: wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/resources/i18n wao-business/src/main/xmi wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/webapp
by bleny@users.labs.libre-entreprise.org 09 Dec '10
by bleny@users.labs.libre-entreprise.org 09 Dec '10
09 Dec '10
Author: bleny
Date: 2010-12-09 11:27:50 +0000 (Thu, 09 Dec 2010)
New Revision: 826
Log:
add action to delete a company in Administration page
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceNewsImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties
trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java
trunk/wao-ui/src/main/webapp/Administration.tml
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceNewsImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceNewsImpl.java 2010-12-09 09:18:12 UTC (rev 825)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceNewsImpl.java 2010-12-09 11:27:50 UTC (rev 826)
@@ -28,6 +28,7 @@
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.News;
import fr.ifremer.wao.entity.NewsDAO;
import fr.ifremer.wao.entity.NewsImpl;
@@ -81,6 +82,14 @@
public List<News> executeGetNews(TopiaContext transaction, ConnectedUser user)
throws TopiaException {
+ List<News> results = executeGetNews(transaction, user.getCompany());
+
+ return results;
+ }
+
+ @Override
+ protected List<News> executeGetNews(TopiaContext transaction, Company company)
+ throws TopiaException {
NewsDAO dao = WaoDAOHelper.getNewsDAO(transaction);
String newsAlias = "N";
@@ -93,7 +102,7 @@
// Add fetch to load company (will used a join)
addFetch(companyProperty).
addOrderDesc(createDateProperty).
- addNullOr(companyProperty, TopiaQuery.Op.EQ, user.getCompany());
+ addNullOr(companyProperty, TopiaQuery.Op.EQ, company);
List<News> results = dao.findAllByQuery(query);
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-09 09:18:12 UTC (rev 825)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-09 11:27:50 UTC (rev 826)
@@ -31,14 +31,21 @@
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.WaoProperty;
import fr.ifremer.wao.WaoQueryHelper;
+import fr.ifremer.wao.bean.BoatFilter;
+import fr.ifremer.wao.bean.BoatFilterImpl;
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ConnectedUserImpl;
import fr.ifremer.wao.bean.ObsProgram;
+import fr.ifremer.wao.bean.SamplingFilter;
+import fr.ifremer.wao.bean.SamplingFilterImpl;
import fr.ifremer.wao.bean.UserRole;
+import fr.ifremer.wao.entity.Boat;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.CompanyDAO;
import fr.ifremer.wao.entity.Contact;
import fr.ifremer.wao.entity.ContactDAO;
+import fr.ifremer.wao.entity.News;
+import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.SampleRowLog;
import fr.ifremer.wao.entity.SampleRowLogDAO;
import fr.ifremer.wao.entity.UserProfile;
@@ -385,6 +392,7 @@
}
}
+ // FIXME 2010-12-09 bleny remove profiles
WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
@@ -435,9 +443,14 @@
errorArgs.add(company.getName());
+ List<WaoUser> users = getUsersByCompany(transaction, company);
+
+ return users;
+ }
+
+ protected List<WaoUser> getUsersByCompany(TopiaContext transaction, Company company) throws TopiaException {
WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
-
TopiaQuery query = dao.createQuery().
addEquals(WaoUser.PROPERTY_COMPANY, company).
addOrder(WaoUser.PROPERTY_FIRST_NAME, WaoUser.PROPERTY_LAST_NAME);
@@ -545,4 +558,56 @@
return result;
}
+ @Override
+ protected void executeDeleteCompany(TopiaContext transaction, Company company) throws Exception {
+
+ // we can delete a company only if no users are attached
+ List<WaoUser> users = getUsersByCompany(transaction, company);
+ if ( ! users.isEmpty()) {
+ String message = "Impossible de supprimer la société " +
+ company.getName() + " : des utilisateurs sont encore associés à cette société";
+ throw new WaoBusinessException(Type.ALREADY_EXISTS,
+ this.getClass(), message);
+ }
+
+ // we can delete a company only if no boat are attached
+ BoatFilter boatFilter = new BoatFilterImpl();
+ boatFilter.setCompany(company);
+ ServiceBoat serviceBoat = context.getServiceFactory().getServiceBoat();
+ Collection<Boat> boats = serviceBoat.getBoatsByFilter(boatFilter).values();
+ if ( ! boats.isEmpty()) {
+ String message = "Impossible de supprimer la société " +
+ company.getName() + " : des navires sont encore associés à cette société";
+ throw new WaoBusinessException(Type.ALREADY_EXISTS,
+ this.getClass(), message);
+ }
+
+ // we can delete a company if no sample-row are attached
+ SamplingFilter samplingFilter = new SamplingFilterImpl();
+ samplingFilter.setCompany(company);
+ ServiceSampling serviceSampling = context.getServiceFactory().getServiceSampling();
+ List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(samplingFilter);
+ if ( ! sampleRows.isEmpty()) {
+ String message = "Impossible de supprimer la société " +
+ company.getName() + " : des lignes du plan sont associées à cette société";
+ throw new WaoBusinessException(Type.ALREADY_EXISTS,
+ this.getClass(), message);
+ }
+
+ // we can delete a company if
+ ServiceNews serviceNews = context.getServiceFactory().getServiceNews();
+ List<News> news = serviceNews.getNews(company);
+ if ( ! news.isEmpty()) {
+ String message = "Impossible de supprimer la société " +
+ company.getName() + " : des actualités sont associées à cette société";
+ throw new WaoBusinessException(Type.ALREADY_EXISTS,
+ this.getClass(), message);
+ }
+
+ // all checks ok, we can delete the company
+ CompanyDAO dao = WaoDAOHelper.getCompanyDAO(transaction);
+ dao.delete(company);
+ transaction.commitTransaction();
+
+ }
}
Modified: trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties
===================================================================
--- trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties 2010-12-09 09:18:12 UTC (rev 825)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties 2010-12-09 11:27:50 UTC (rev 826)
@@ -161,6 +161,7 @@
wao.error.serviceUser.createDefaultAdmin=
wao.error.serviceUser.createUpdateCompany=
wao.error.serviceUser.createUpdateUser=
+wao.error.serviceUser.deleteCompany=
wao.error.serviceUser.deleteUser=
wao.error.serviceUser.existLogin=
wao.error.serviceUser.forgetPassword=
Modified: trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
===================================================================
--- trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-12-09 09:18:12 UTC (rev 825)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-12-09 11:27:50 UTC (rev 826)
@@ -178,6 +178,7 @@
wao.error.serviceUser.createDefaultAdmin=Impossible de cr\u00E9er l'administrateur par d\u00E9faut
wao.error.serviceUser.createUpdateCompany=Impossible de cr\u00E9er ou de mettre \u00E0 jour la soci\u00E9t\u00E9
wao.error.serviceUser.createUpdateUser=Impossible de cr\u00E9er ou de mettre \u00E0 jour l'utilisateur
+wao.error.serviceUser.deleteCompany=Impossible de supprimer la société ou de vérifier les contraintes de suppression
wao.error.serviceUser.deleteUser=Impossible de supprimer l'utilisateur
wao.error.serviceUser.existLogin=
wao.error.serviceUser.forgetPassword=Impossible d'envoyer le mail d'oubli de mot de passe
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
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-12-09 09:18:12 UTC (rev 825)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-09 11:27:50 UTC (rev 826)
@@ -151,6 +151,7 @@
private BeanEditForm userForm;
private boolean addNewCompanySelected;
+ private boolean deleteCompanySelected;
private boolean addNewUserSelected;
private boolean deleteUserSelected;
@@ -331,9 +332,23 @@
addNewCompanySelected = true;
}
+ void onSelectedFromDeleteCompany() {
+ deleteCompanySelected = true;
+ }
+
void onSuccessFromActionsForm() {
if (addNewCompanySelected) {
companyId = null;
+ } else if (deleteCompanySelected && companyId != null) {
+ company = getCompaniesSelectModel().findObject(companyId);
+ try {
+ serviceUser.deleteCompany(company);
+ companyId = null;
+ company = null;
+ layout.addInfo("Société supprimée avec succès !");
+ } catch (WaoBusinessException eee) {
+ layout.addError(eee.getMessage());
+ }
}
userId = null;
userEdited = null;
Modified: trunk/wao-ui/src/main/webapp/Administration.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Administration.tml 2010-12-09 09:18:12 UTC (rev 825)
+++ trunk/wao-ui/src/main/webapp/Administration.tml 2010-12-09 11:27:50 UTC (rev 826)
@@ -40,6 +40,8 @@
</div>
<div class="icons fleft">
<input t:type="submit" t:id="showUsers" class="ico search" value="Show Details" t:title="Afficher détails" />
+ <input t:type="submit" t:id="deleteCompany" class="ico22px delete" value="Delete company" t:title="Supprimer cette société"
+ t:mixins="nuiton/confirm" t:message="literal:Êtes-vous sûr de vouloir supprimer définitivement cette société ?" />
<input t:type="submit" t:id="addNewCompany" class="ico add" value="Add new company" t:title="Ajouter une nouvelle société" />
</div>
</form>
1
0
[Suiviobsmer-commits] r825 - in trunk: wao-business/src/main/java/fr/ifremer/wao wao-business/src/main/xmi wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/resources/fr/ifremer/wao/ui/pages
by bleny@users.labs.libre-entreprise.org 09 Dec '10
by bleny@users.labs.libre-entreprise.org 09 Dec '10
09 Dec '10
Author: bleny
Date: 2010-12-09 09:18:12 +0000 (Thu, 09 Dec 2010)
New Revision: 825
Log:
filter sampleRow and contacts on ObsProgram ; fix user admin ui ; misc code style
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
trunk/wao-business/src/main/xmi/wao.zargo
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/java/fr/ifremer/wao/ui/pages/SamplingPlan.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-12-08 16:13:54 UTC (rev 824)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-12-09 09:18:12 UTC (rev 825)
@@ -41,7 +41,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.logging.Logger;
/**
* PgMigrationCallback
@@ -51,9 +50,7 @@
* @author fdesbois <fdesbois at codelutin.com>
*/
public class PostgresMigrationCallback extends WaoMigrationCallBack {
- private static final Logger logger = Logger.getLogger(PostgresMigrationCallback.class.getName());
-
@Override
protected void createUserRoleColumn_1_1a(List<String> queries) {
// Evo #2063
@@ -411,6 +408,7 @@
/** Help method to create insertion for initial data in table levels.
* @param indicatorTopiaId the topiaId of the concerned indicator (foreign key)
+ * @param topiaId topiaId for the indicatorLevel to insert
* @param level value in the tuple
* @param upperBound value in the tuble
* @return an SQL "insert" request for table IndicatorLevel
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-12-08 16:13:54 UTC (rev 824)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-12-09 09:18:12 UTC (rev 825)
@@ -363,6 +363,11 @@
filter.getTargetSpeciesDCF());
}
+ // filtering on ObsProgram
+ if (filter.getObsProgram() != null) {
+ query.addEquals(sampleRowProperty.obsProgramOrdinal(), filter.getObsProgram().ordinal());
+ }
+
if(logger.isDebugEnabled()) {
logger.debug("sampling filter query " + query);
}
@@ -596,8 +601,13 @@
// ORDER_BY
if (StringUtils.isNotEmpty(orderBy)) {
query.addOrder(contactProperty.$property(orderBy));
- }
+ }
+ // filtering on ObsProgram
+ if (filter.getObsProgram() != null) {
+ query.addEquals(contactProperty.obsProgramOrdinal(), filter.getObsProgram().ordinal());
+ }
+
return query;
}
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
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-12-08 16:13:54 UTC (rev 824)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-09 09:18:12 UTC (rev 825)
@@ -546,8 +546,7 @@
private UserProfile editedProfile;
@Persist
- @Property
- private boolean readOnly;
+ private Boolean readOnly;
@Property
private UserRole role;
@@ -558,6 +557,17 @@
@Property
private boolean refreshUserRoleZone;
+ public Boolean getReadOnly() {
+ if (readOnly == null) {
+ readOnly = false;
+ }
+ return readOnly;
+ }
+
+ public void setReadOnly(Boolean readOnly) {
+ this.readOnly = readOnly;
+ }
+
@Log
public UserProfile getEditedProfile() {
if (editedProfile == null) {
@@ -602,7 +612,10 @@
@Log
void onChangeFromReadOnly(boolean value) {
- getEditedProfile().setCanWrite( ! value);
+ if (log.isDebugEnabled()) {
+ log.debug("readOnly value changed to " + value);
+ }
+ setReadOnly(value);
}
@Log
@@ -621,7 +634,7 @@
Object onActionFromAddRole() {
if (getEditedProfile() != null &&
getEditedProfile().getUserRoleOrdinal() != null) {
- getEditedProfile().setCanWrite( ! readOnly);
+ getEditedProfile().setCanWrite( ! getReadOnly());
if (log.isDebugEnabled()) {
log.debug("Add user profile : " + getEditedProfile().getDescription());
}
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-12-08 16:13:54 UTC (rev 824)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-12-09 09:18:12 UTC (rev 825)
@@ -167,6 +167,7 @@
GregorianCalendar beginningOfCurrentYear = new GregorianCalendar();
beginningOfCurrentYear.set(Calendar.DAY_OF_YEAR, 1);
contactFilter.setFromDate(beginningOfCurrentYear.getTime());
+ contactFilter.setObsProgram(user.getProfile().getObsProgram());
}
return contactFilter;
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-12-08 16:13:54 UTC (rev 824)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-12-09 09:18:12 UTC (rev 825)
@@ -62,7 +62,6 @@
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -197,6 +196,7 @@
// Initialize period
PeriodDates period = PeriodDates.createMonthsPeriodFromToday(11);
filter.setPeriod(period);
+ filter.setObsProgram(user.getProfile().getObsProgram());
}
return filter;
}
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-12-08 16:13:54 UTC (rev 824)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties 2010-12-09 09:18:12 UTC (rev 825)
@@ -37,7 +37,7 @@
loginAdministration-label: Identifiant de connexion (email)*
active-label: Actif
generatePassword-label: G\u00e9n\u00e9rer le password
-userRole-label: R\u00f4les
+userRole-label: R\u00f4le
readOnly-label: Lecture seule
# follow statement doesn't work with BeanEditForm
userForm-errors-banner: L'utilisateur n'a pas \u00e9t\u00e9 sauvegard\u00e9 \u00e0 cause des erreurs suivantes :
1
0
[Suiviobsmer-commits] r824 - in trunk: wao-business/src/main/java/fr/ifremer/wao/bean wao-business/src/main/java/fr/ifremer/wao/entity wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/xmi wao-business/src/test/java/fr/ifremer/wao/service wao-ui/src/main/java/fr/ifremer/wao/ui/base wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/webapp wao-ui/src/test/java/test/fr/ifremer/wao/ui
by bleny@users.labs.libre-entreprise.org 08 Dec '10
by bleny@users.labs.libre-entreprise.org 08 Dec '10
08 Dec '10
Author: bleny
Date: 2010-12-08 16:13:54 +0000 (Wed, 08 Dec 2010)
New Revision: 824
Log:
UI improvement for managing user ; tests issues remaining
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.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/Connexion.java
trunk/wao-ui/src/main/webapp/Administration.tml
trunk/wao-ui/src/main/webapp/Connexion.tml
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java 2010-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -88,4 +88,9 @@
return test;
}
+
+ @Override
+ public boolean isAdminAndCanWrite() {
+ return ! isReadOnly() && isAdmin();
+ }
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java 2010-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/UserProfileImpl.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -71,12 +71,26 @@
@Override
public String getDescription() {
StringBuilder result = new StringBuilder();
- result.append(getUserRole().getLabel());
+ if (getUserRoleOrdinal() == null) {
+ result.append("<no user role>");
+ } else {
+ result.append(getUserRole().getLabel());
+ }
result.append(" sur ");
- result.append(getObsProgram().getLabel());
- if (isReadOnly()) {
+ if (getObsProgramOrdinal() == null) {
+ result.append("<no program>");
+ } else {
+ result.append(getObsProgram().getLabel());
+ }
+ if (getCanWrite() == null) {
+ result.append("<no write access specified>");
+ } else if (isReadOnly()) {
result.append(" (lecture seule)");
}
return result.toString();
}
+
+ public String toString() {
+ return getDescription() + " " + getTopiaId();
+ }
}
\ No newline at end of file
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -56,6 +56,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -196,62 +197,100 @@
}
WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
+ UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(transaction);
- boolean newUser = context.prepareTopiaId(WaoUser.class, user);
+ WaoUser actualUser = user;
- // Check for a new user if login already exists
+ boolean newUser = user.getTopiaId() == null;
+
if (newUser) {
+ context.prepareTopiaId(WaoUser.class, actualUser);
WaoUser existUser = dao.findByLogin(user.getLogin());
+ // Check for a new user if login already exists
if (existUser != null) {
throw new WaoBusinessException(Type.ALREADY_EXISTS,
this.getClass(),
"Un utilisateur existe déjà avec ce login " +
user.getLogin());
}
+
+ if (actualUser.getUserProfile() != null) {
+ for (UserProfile userProfile : actualUser.getUserProfile()) {
+ log.debug(userProfile + " to save : " + userProfile.getDescription());
+ context.prepareTopiaId(UserProfile.class, userProfile);
+ userProfileDAO.update(userProfile);
+ }
+ }
+ } else {
+ actualUser = dao.findByTopiaId(user.getTopiaId());
+
+ Collection<UserProfile> oldProfiles;
+ if (actualUser.getUserProfile() == null) {
+ oldProfiles = Collections.EMPTY_LIST;
+ } else {
+ oldProfiles = new ArrayList<UserProfile>(actualUser.getUserProfile());
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("old profiles : " + oldProfiles);
+ }
+
+ // set may be buggy
+ // actualUser.setUserProfile(user.getUserProfile());
+ actualUser.clearUserProfile();
+ actualUser.addAllUserProfile(user.getUserProfile());
+
+ if (log.isDebugEnabled()) {
+ log.debug("new profiles : " + actualUser.getUserProfile());
+ }
+
+ for (UserProfile userProfile : actualUser.getUserProfile()) {
+ if (log.isDebugEnabled()) {
+ log.debug("is " + userProfile + " in " + oldProfiles + " ? "
+ + oldProfiles.contains(userProfile));
+ }
+ if (oldProfiles.contains(userProfile)) {
+ // this profile was already attributed to this user, don't
+ // remove it : just keep it from being removed
+ if (log.isDebugEnabled()) {
+ log.debug("profile " + userProfile + " was already given to user");
+ }
+ oldProfiles.remove(userProfile);
+ } else {
+ // this profile was added to the user
+ if (log.isDebugEnabled()) {
+ log.debug("profile " + userProfile + " is new for user");
+ }
+ context.prepareTopiaId(UserProfile.class, userProfile);
+ userProfileDAO.create(userProfile);
+ }
+ }
+
+ // now, oldProfiles contains user has no longer, we must remove them
+ if (log.isDebugEnabled()) {
+ log.debug("will remove deleted profiles : " + oldProfiles);
+ }
+ for (UserProfile userProfile : oldProfiles) {
+ userProfileDAO.delete(userProfile);
+ }
}
- String password = user.getPassword();
+ String password = actualUser.getPassword();
if (generatePassword) {
password = context.createRandomString(8);
- user.setPasswordChanged(true);
+ actualUser.setPasswordChanged(true);
}
// For a password set manually by user or generated
- if (user.isPasswordChanged()) {
+ if (actualUser.isPasswordChanged()) {
String passwordEncoded = context.encodeString(password);
- user.setPassword(passwordEncoded);
+ actualUser.setPassword(passwordEncoded);
}
- WaoQueryHelper.UserProfileProperty userProfileProperty = WaoQueryHelper.newUserProfileProperty();
- WaoQueryHelper.WaoUserProperty waoUserProperty = WaoQueryHelper.newWaoUserProperty();
- TopiaQuery query = dao.createQuery(waoUserProperty.$alias())
- .setSelect(userProfileProperty.$alias())
- .addJoin(waoUserProperty.userProfile(), userProfileProperty.$alias(), false)
- .addEquals(waoUserProperty.$alias(), user);
- if (log.isDebugEnabled()) {
- log.debug("query to find old profiles for user is " + query);
- }
+ log.debug("will store " + actualUser.getTopiaId());
+ dao.update(actualUser);
+ log.debug("had stored " + actualUser.getTopiaId());
- UserProfileDAO userProfileDAO = WaoDAOHelper.getUserProfileDAO(transaction);
- List<UserProfile> oldProfiles = userProfileDAO.findAllByQuery(query);
-
- if (log.isDebugEnabled()) {
- log.debug("profiles for user was " + oldProfiles);
- }
- for (UserProfile userProfile : oldProfiles) {
- userProfileDAO.delete(userProfile);
- }
-
- if (user.getUserProfile() != null) {
- for (UserProfile userProfile : user.getUserProfile()) {
- log.debug(userProfile + " to save : " + userProfile.getDescription());
- context.prepareTopiaId(UserProfile.class, userProfile);
- userProfileDAO.update(userProfile);
- }
- }
-
- dao.update(user);
-
transaction.commitTransaction();
try {
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
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-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceUserImplTest.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -25,6 +25,7 @@
package fr.ifremer.wao.service;
import fr.ifremer.wao.TestManager;
+import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.bean.UserRole;
@@ -45,6 +46,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.LinkedList;
import java.util.List;
/**
@@ -101,10 +103,48 @@
/**
* Test of createUpdateUser method, of class ServiceUserImpl.
+ *
+ * This test is not complete : it doesn't check if given data are well
+ * registered. For profile updating, it only checks that no exception is
+ * raised.
*/
- //@Test
+ @Test
public void testCreateUpdateUser() throws Exception {
System.out.println("createUpdateUser");
+
+ // create a user with no role
+ WaoUser user = new WaoUserImpl();
+ user.setLogin("login");
+ service.createUpdateUser(user, false);
+
+ // now, update user with or without adding, removing, a profile to
+ // see if an error is raised
+ List<UserProfile> profiles = new LinkedList<UserProfile>();
+ user.setUserProfile(profiles);
+
+ UserProfile adminProfile = new UserProfileImpl(ObsProgram.OBSMER, UserRole.ADMIN, true);
+ UserProfile coordinatorProfile = new UserProfileImpl(ObsProgram.OBSMER, UserRole.COORDINATOR, true);
+
+ profiles.add(adminProfile);
+
+ log.debug("trying to store " + user.getTopiaId());
+ service.createUpdateUser(user, false);
+
+ profiles.add(coordinatorProfile);
+ service.createUpdateUser(user, false);
+
+ profiles.remove(adminProfile);
+ service.createUpdateUser(user, false);
+
+ // check that creating two user with the same login is not allowed
+ try {
+ user = new WaoUserImpl();
+ user.setLogin("login");
+ service.createUpdateUser(user, false);
+ Assert.fail("an exception should have been raised");
+ } catch (WaoBusinessException e) {
+ Assert.assertEquals(WaoBusinessException.Type.ALREADY_EXISTS, e.getType());
+ }
}
/**
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java 2010-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -143,9 +143,6 @@
@Persist
private boolean programSelect;
-
-
-
public void onSelectedFromAddSampleRowCode() {
if (sampleRowId != null) {
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-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -415,6 +415,11 @@
layout.addError(eee.getMessage());
}
}
+
+ // reset : if user change, its profiles change
+ editedUserProfiles = null;
+ editedProfile = null;
+
if (log.isDebugEnabled()) {
log.debug("'User id : " + userId);
}
@@ -483,8 +488,14 @@
@Log
void onValidateFormFromUserForm() {
userForm.clearErrors();
- if (CollectionUtils.isEmpty(userEdited.getUserProfile())) {
+
+ if (CollectionUtils.isEmpty(getEditedUserProfiles())) {
userForm.recordError("L'utilisateur doit au minimum avoir un rôle.");
+ } else {
+ // set may be buggy
+ // getUserEdited().setUserProfile(getEditedUserProfiles());
+ getUserEdited().clearUserProfile();
+ getUserEdited().addAllUserProfile(getEditedUserProfiles());
}
}
@@ -524,6 +535,7 @@
private SelectModel userRoleSelectModel;
+ @Persist
private List<UserProfile> editedUserProfiles;
@Persist
@@ -546,6 +558,7 @@
@Property
private boolean refreshUserRoleZone;
+ @Log
public UserProfile getEditedProfile() {
if (editedProfile == null) {
editedProfile = new UserProfileImpl();
@@ -558,6 +571,7 @@
return editedProfile;
}
+ @Log
public SelectModel getUserRoleSelectModel() {
if (userRoleSelectModel == null) {
List<OptionModel> options = new ArrayList<OptionModel>();
@@ -572,16 +586,16 @@
}
return userRoleSelectModel;
}
-
+
private OptionModel newUserRoleOption(UserRole role) {
return new OptionModelImpl(role.getLabel(), role);
}
@Log
void onChangeFromUserRole(String value) {
- // XXX 20101203 bleny, what if value="" ? field is not reset and can't
- // be reset
- if (StringUtils.isNotEmpty(value)) {
+ if (StringUtils.isEmpty(value)) {
+ getEditedProfile().setUserRole(null);
+ } else {
getEditedProfile().setUserRole(UserRole.valueOf(value));
}
}
@@ -591,17 +605,23 @@
getEditedProfile().setCanWrite( ! value);
}
+ @Log
public List<UserProfile> getEditedUserProfiles() {
if (editedUserProfiles == null) {
- editedUserProfiles = new ArrayList<UserProfile>(getUserEdited().getUserProfile());
- getUserEdited().setUserProfile(editedUserProfiles);
+ if (getUserEdited() != null && getUserEdited().getUserProfile() != null) {
+ editedUserProfiles = new ArrayList<UserProfile>(getUserEdited().getUserProfile());
+ } else {
+ editedUserProfiles = new ArrayList<UserProfile>();
+ }
}
return editedUserProfiles;
}
@Log
Object onActionFromAddRole() {
- if (getEditedProfile() != null && getEditedProfile().getUserRole() != null) {
+ if (getEditedProfile() != null &&
+ getEditedProfile().getUserRoleOrdinal() != null) {
+ getEditedProfile().setCanWrite( ! readOnly);
if (log.isDebugEnabled()) {
log.debug("Add user profile : " + getEditedProfile().getDescription());
}
@@ -617,8 +637,16 @@
@Log
Object onActionFromRemoveRole(int roleIndex) {
+ if (log.isDebugEnabled()) {
+ log.debug("edited profiles before remove : " + getEditedUserProfiles());
+ }
+
getEditedUserProfiles().remove(roleIndex);
+ if (log.isDebugEnabled()) {
+ log.debug("edited profiles after remove : " + getEditedUserProfiles());
+ }
+
// Refresh the zone
refreshUserRoleZone = true;
return userRoleZone;
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -29,22 +29,20 @@
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceUser;
import fr.ifremer.wao.ui.components.FeedBack;
+import fr.ifremer.wao.ui.data.GenericSelectModel;
import fr.ifremer.wao.ui.data.TapestryUtil;
import fr.ifremer.wao.ui.services.RequiresAuthenticationFilter;
import fr.ifremer.wao.ui.services.ServiceAuthentication;
import org.apache.tapestry5.Link;
-import org.apache.tapestry5.OptionModel;
import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.SelectModel;
import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.Log;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.internal.OptionModelImpl;
-import org.apache.tapestry5.internal.SelectModelImpl;
import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.ioc.services.PropertyAccess;
import org.apache.tapestry5.services.PageRenderLinkSource;
import org.slf4j.Logger;
@@ -100,6 +98,9 @@
@InjectComponent
private Form connexionForm;
+ @Inject
+ private PropertyAccess propertyAccess;
+
void onActivate(Object... activationContext) {
if (logger.isDebugEnabled()) {
logger.debug("Activiation context : " + Arrays.toString(activationContext));
@@ -241,33 +242,33 @@
}
}
- private SelectModel profileSelectModel;
+ private GenericSelectModel<UserProfile> profileSelectModel;
@Property
private UserProfile userProfile;
+ @Property
+ private String userProfileId;
+
/**
* Retrieve the SelectModel for user roles. Will be loaded only if user is
* already connected. This list is useful if user as more than one role.
*
* @return the SelectModel for user roles
*/
- public SelectModel getProfileSelectModel() {
+ public GenericSelectModel<UserProfile> getProfileSelectModel() throws WaoException {
if (serviceAuthentication.existConnectedUser()) {
WaoUser user = serviceAuthentication.getConnectedUser().getUser();
if (logger.isDebugEnabled()) {
logger.debug("Load user roles for " + user.getLogin());
}
-
- List<OptionModel> options = new ArrayList<OptionModel>();
- for (UserProfile profile : user.getUserProfile()) {
- OptionModel option = new OptionModelImpl(profile.getDescription(), profile);
- options.add(option);
- }
- profileSelectModel = new SelectModelImpl(null, options);
+ List<UserProfile> profiles = new ArrayList<UserProfile>(user.getUserProfile());
+ profileSelectModel = new GenericSelectModel<UserProfile>(profiles,
+ UserProfile.class, "Description", "topiaId", propertyAccess);
} else if (profileSelectModel == null) {
- profileSelectModel = new SelectModelImpl(new OptionModelImpl(null));
+ profileSelectModel = new GenericSelectModel<UserProfile>(new ArrayList<UserProfile>(),
+ UserProfile.class, "Description", "topiaId", propertyAccess);
}
return profileSelectModel;
}
@@ -281,6 +282,7 @@
* @see #getRedirectLink()
*/
Link onSuccessFromRoleForm() {
+ userProfile = getProfileSelectModel().findObject(userProfileId);
if (logger.isDebugEnabled()) {
logger.debug("Connection with role : " + userProfile.getDescription());
}
Modified: trunk/wao-ui/src/main/webapp/Administration.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Administration.tml 2010-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-ui/src/main/webapp/Administration.tml 2010-12-08 16:13:54 UTC (rev 824)
@@ -126,7 +126,7 @@
<img src="${asset:context:img/add-16px.png}" />
</a>
<ul>
- <li t:type="loop" t:source="userEdited.userProfile" t:value="profile" t:index="profileIndex" t:volatile="true">
+ <li t:type="loop" t:source="editedUserProfiles" t:value="profile" t:index="profileIndex" t:volatile="true">
${profile.description}
<a t:type="actionlink" t:id="removeRole" t:context="profileIndex" title="Supprimer ce rôle" t:zone="so-admin-userRoleZone">
<img src="${asset:context:img/remove-22px.png}" />
@@ -185,7 +185,7 @@
<!-- ALL ACTUAL VALUES FOR INDICATORS OF GLOBAL SYNTHESIS -->
<t:loop t:source="globalSynthesisParameters.parameters" t:value="indicator" t:volatile="true">
- <t:indicatorLevels t:indicator="indicator" editable="currentUser.admin" />
+ <t:indicatorLevels t:indicator="indicator" editable="currentUser.adminAndCanWrite" />
</t:loop>
<table class="indicatorLevels">
@@ -202,7 +202,7 @@
</td>
</tr>
<tr>
- <t:if test="currentUser.admin">
+ <t:if test="currentUser.adminAndCanWrite">
<td t:type="loop" t:source="globalSynthesisParameters.globalIndicator.indicatorLevel" t:value="indicatorLevel" volatile="true">
[ <input type="text" size="3" value="${indicatorLevel.lowerBound}" disabled="disabled" /> ;
<span t:type="ck/Tooltip" t:value="Attention à bien utiliser ',' et non '.' pour les décimales" t:effect="appear">
@@ -230,18 +230,20 @@
</tr>
</table>
- <div>
- <p><label>Commentaire sur la modification* :</label></p>
- <p><input t:type="textarea" t:id="comment" cols="50" rows="5" value="comment"/></p>
- </div>
+ <t:if test="currentUser.adminAndCanWrite">
+ <div>
+ <p><label>Commentaire sur la modification* :</label></p>
+ <p><input t:type="textarea" t:id="comment" cols="50" rows="5" value="comment"/></p>
+ </div>
- <div class="fright">
- <a t:type="pagelink" page="IndicatorsHistory">
- <img src="${asset:context:/img/clock.png}" alt="Historique" title="Voir l'historique des modifications des indicateurs" />
- </a>
- <input t:type="submit" t:id="saveData" class="ico save" value="Save" title="Enregistrer les modifications" />
- <input type="reset" class="ico undo" value="Annuler les modificationss" title="Annuler les modifications" />
- </div>
+ <div class="fright">
+ <a t:type="pagelink" page="IndicatorsHistory">
+ <img src="${asset:context:/img/clock.png}" alt="Historique" title="Voir l'historique des modifications des indicateurs" />
+ </a>
+ <input t:type="submit" t:id="saveData" class="ico save" value="Save" title="Enregistrer les modifications" />
+ <input type="reset" class="ico undo" value="Annuler les modificationss" title="Annuler les modifications" />
+ </div>
+ </t:if>
</form>
</t:zone>
Modified: trunk/wao-ui/src/main/webapp/Connexion.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Connexion.tml 2010-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-ui/src/main/webapp/Connexion.tml 2010-12-08 16:13:54 UTC (rev 824)
@@ -72,8 +72,8 @@
t:title="literal:Choisissez dans la liste votre profil de connexion : ">
<form t:id="roleForm" t:type="form" action="tapestry">
<p class="roleSelect">
- <select t:type="select" t:id="userProfile" t:value="userProfile" t:model="profileSelectModel"
- onChange="this.form.submit()" t:volatile="true" />
+ <select t:type="select" t:id="userProfile" t:value="userProfileId" t:model="profileSelectModel"
+ onChange="this.form.submit()" />
</p>
</form>
</div>
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-12-07 15:58:04 UTC (rev 823)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-12-08 16:13:54 UTC (rev 824)
@@ -26,8 +26,15 @@
import com.formos.tapestry.testify.core.TapestryTester;
import com.formos.tapestry.testify.junit4.TapestryTest;
import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ConnectedUserImpl;
+import fr.ifremer.wao.bean.ObsProgram;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.Company;
+import fr.ifremer.wao.entity.CompanyImpl;
+import fr.ifremer.wao.entity.UserProfile;
+import fr.ifremer.wao.entity.UserProfileImpl;
+import fr.ifremer.wao.entity.WaoUser;
+import fr.ifremer.wao.entity.WaoUserImpl;
import fr.ifremer.wao.ui.services.AppModule;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.ApplicationStateManager;
@@ -71,6 +78,7 @@
private ApplicationStateManager stateManager;
protected void prepareObserverUser(boolean contributeSession) {
+ /*
Company company = mock(Company.class);
when(company.getName()).thenReturn("TARTANPION");
@@ -78,8 +86,22 @@
when(user.isAdmin()).thenReturn(false);
when(user.getRole()).thenReturn(UserRole.OBSERVER);
when(user.getCompany()).thenReturn(company);
+ */
+
+ Company company = new CompanyImpl();
+ company.setName("TARTANPION");
+ WaoUser user = new WaoUserImpl();
+ user.setFirstName("Jean");
+ user.setLastName("Michmuche");
+ UserProfile observerProfile = new UserProfileImpl(ObsProgram.OBSMER, UserRole.OBSERVER, true);
+ user.addUserProfile(observerProfile);
+
+ ConnectedUser connectedUser = new ConnectedUserImpl();
+ connectedUser.setUser(user);
+ connectedUser.setProfile(observerProfile);
+
if (contributeSession) {
- stateManager.set(ConnectedUser.class, user);
+ stateManager.set(ConnectedUser.class, connectedUser);
}
}
1
0