Author: fdesbois Date: 2010-03-25 13:33:17 +0000 (Thu, 25 Mar 2010) New Revision: 389 Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PgMigrationCallback.java trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactState.java trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactStateStatisticsImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactImpl.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/resources/oldmappings/WaoModel/1.1/fr/ifremer/wao/entity/ContactImpl.hbm.xml trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Contacts.properties trunk/wao-ui/src/main/webapp/Contacts.tml trunk/wao-ui/src/main/webapp/Synthesis.tml trunk/wao-ui/src/main/webapp/WEB-INF/app.properties Log: Evo #2226 : change state type String to int for Contact. Use ContactState enum everywhere. Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PgMigrationCallback.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/PgMigrationCallback.java 2010-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/PgMigrationCallback.java 2010-03-25 13:33:17 UTC (rev 389) @@ -1,6 +1,7 @@ package fr.ifremer.wao; +import fr.ifremer.wao.bean.ContactState; import java.util.List; /** @@ -30,4 +31,15 @@ queries.add("UPDATE WaoUser SET readOnly = FALSE;"); } + @Override + protected void changeContactStateColumn_1_1(List<String> queries) { + queries.add("ALTER TABLE Contact ADD state1 SMALLINT;"); + for (ContactState state : ContactState.values()) { + queries.add("UPDATE Contact SET state1 = " + state.ordinal() + + " WHERE state = '" + state.libelle() + "'"); + } + queries.add("ALTER TABLE Contact DROP COLUMN state;"); + queries.add("ALTER TABLE Contact RENAME state1 TO state;"); + } + } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-03-25 13:33:17 UTC (rev 389) @@ -49,6 +49,8 @@ createUserRoleColumn_1_1(queries); + changeContactStateColumn_1_1(queries); + String[] strings = queries.toArray(new String[queries.size()]); executeSQL(tx, showSql, showProgression, strings); @@ -56,6 +58,8 @@ protected abstract void createUserRoleColumn_1_1(List<String> queries); + protected abstract void changeContactStateColumn_1_1(List<String> queries); + @Override public boolean askUser(Version dbVersion, Version applicationVersion, Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterImpl.java 2010-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterImpl.java 2010-03-25 13:33:17 UTC (rev 389) @@ -96,7 +96,7 @@ companyValidValues.toArray()); if (getState() != null) { - query.add(contact + "." + Contact.STATE, getState().libelle()); + query.add(contact + "." + Contact.STATE, getState().ordinal()); } if (getFromDate() != null) { Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactState.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactState.java 2010-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactState.java 2010-03-25 13:33:17 UTC (rev 389) @@ -25,7 +25,9 @@ import java.util.List; /** - * ContactState + * Enum for contact state. The ordinal enum is used to save the state in + * {@link fr.ifremer.wao.entity.Contact} entity. Don't change the enum values + * order. * * Created: 3 déc. 2009 * @@ -87,6 +89,21 @@ return null; } + /** + * Get the contactState corresponding to the {@code ordinal} value. + * + * @param ordinal reference for the ContactState + * @return ContactState + */ + public static ContactState valueOf(int ordinal) { + for (ContactState curr : ContactState.values()) { + if (ordinal == curr.ordinal()) { + return curr; + } + } + return null; + } + public static List<String> availableStates() { List<String> results = new ArrayList<String>(); for (ContactState state : values()) { Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactStateStatisticsImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactStateStatisticsImpl.java 2010-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactStateStatisticsImpl.java 2010-03-25 13:33:17 UTC (rev 389) @@ -39,11 +39,8 @@ public class ContactStateStatisticsImpl extends ContactStateStatistics { @Override - public void addResult(String state, int nbResults) { - - ContactState stateEnum = ContactState.valueOfLibelle(state); - getData().put(stateEnum, nbResults); - + public void addResult(ContactState state, int nbResults) { + getData().put(state, nbResults); total += nbResults; } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java 2010-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java 2010-03-25 13:33:17 UTC (rev 389) @@ -77,7 +77,7 @@ @Override public TopiaQuery createQueryDoneContactsFromDate(Boat boat, Date fromDate) { TopiaQuery query = createQuery("C"). - add("C." + Contact.STATE, ContactState.BOARDING_DONE.libelle()). + add("C." + Contact.STATE, ContactState.BOARDING_DONE.ordinal()). add("C." + Contact.VALIDATION_COMPANY, Boolean.TRUE). // TODO : use addNullOr method with Topia version 2.3.0-beta-9 add("C." + Contact.VALIDATION_PROGRAM + " IS NULL OR " + "C." + Contact.VALIDATION_PROGRAM + " = :booleanTrue"). Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactImpl.java 2010-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactImpl.java 2010-03-25 13:33:17 UTC (rev 389) @@ -79,12 +79,12 @@ @Override public ContactState getContactState() { - return ContactState.valueOfLibelle(getState()); + return ContactState.valueOf(getState()); } @Override public void setContactState(ContactState contactState) { - setState(contactState.libelle()); + setState(contactState.ordinal()); } } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-03-25 13:33:17 UTC (rev 389) @@ -253,7 +253,7 @@ // Contact part export.record(CONTACT.CONT_CODE, timeFormat.format(contact.getTopiaCreateDate())); export.record(CONTACT.CONT_CREATION, dateFormat.format(contact.getTopiaCreateDate())); - export.record(CONTACT.CONT_ETAT, contact.getState()); + export.record(CONTACT.CONT_ETAT, contact.getContactState().libelle()); if (contact.getTideBeginDate() != null) { export.record(CONTACT.CONT_DEBUT_MAREE, dateFormat.format(contact.getTideBeginDate())); } @@ -452,7 +452,7 @@ ImportHelper.parseContactMammals(reader, CONTACT.CONT_MAM_OBS); contact.setObserver(observer); - contact.setState(state); + contact.setContactState(contactState); contact.setTideBeginDate(tideBegin); contact.setTideEndDate(tideEnd); contact.setNbObservants(nbObservants); 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-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-03-25 13:33:17 UTC (rev 389) @@ -28,6 +28,7 @@ import fr.ifremer.wao.bean.ContactAverageReactivity; import fr.ifremer.wao.bean.BoardingResult; import fr.ifremer.wao.bean.BoardingResultImpl; +import fr.ifremer.wao.bean.ContactState; import fr.ifremer.wao.bean.ContactStateStatistics; import fr.ifremer.wao.bean.ContactStateStatisticsImpl; import fr.ifremer.wao.bean.SamplingFilter; @@ -376,11 +377,11 @@ addParam("thruDate", period.getThruDate()); } - String state = contact + "." + Contact.STATE; + String stateProp = contact + "." + Contact.STATE; String companyName = companyProp + "." + Company.NAME; - query.addGroup(companyName, state). + query.addGroup(companyName, stateProp). addOrder(companyName). - setSelect(companyName, state, "COUNT(*)"); + setSelect(companyName, stateProp, "COUNT(*)"); if (log.isDebugEnabled()) { log.debug("Exec query : " + query); @@ -390,10 +391,11 @@ for (Object[] row : res) { String rowCompanyName = (String)row[0]; - String rowState = (String)row[1]; + int rowState = (Integer)row[1]; + ContactState state = ContactState.valueOf(rowState); Long rowCount = (Long)row[2]; if (log.isDebugEnabled()) { - log.debug("res : " + rowCompanyName + " _ " + rowState + " _ " + rowCount); + log.debug("res : " + rowCompanyName + " _ " + state + " _ " + rowCount); } ContactStateStatistics stats = results.get(rowCompanyName); if (stats == null) { @@ -401,7 +403,7 @@ stats.setCompanyName(rowCompanyName); results.put(rowCompanyName, stats); } - stats.addResult(rowState, rowCount.intValue()); + stats.addResult(state, rowCount.intValue()); } //transaction.closeContext(); Modified: trunk/wao-business/src/main/resources/oldmappings/WaoModel/1.1/fr/ifremer/wao/entity/ContactImpl.hbm.xml =================================================================== --- trunk/wao-business/src/main/resources/oldmappings/WaoModel/1.1/fr/ifremer/wao/entity/ContactImpl.hbm.xml 2010-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-business/src/main/resources/oldmappings/WaoModel/1.1/fr/ifremer/wao/entity/ContactImpl.hbm.xml 2010-03-25 13:33:17 UTC (rev 389) @@ -14,7 +14,7 @@ <property name="validationCompany" type="java.lang.Boolean" access="field" column="validationCompany" node="validationCompany"/> <property name="dataInputDate" type="java.util.Date" access="field" column="dataInputDate" node="dataInputDate"/> <property name="comment" type="text" access="field" column="comment" node="comment"/> - <property name="state" type="text" access="field" column="state" node="state"/> + <property name="state" type="int" access="field" column="state" node="state"/> <property name="tideNbDays" type="int" access="field" column="tideNbDays" node="tideNbDays"/> <many-to-one name="observer" class="fr.ifremer.wao.entity.WaoUserImpl" column="observer" node="observer/@topiaId" embed-xml="false"/> <many-to-one name="sampleRow" class="fr.ifremer.wao.entity.SampleRowImpl" column="sampleRow" lazy="false" node="sampleRow/@topiaId" embed-xml="false"/> Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) 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-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Contacts.properties 2010-03-25 13:33:17 UTC (rev 389) @@ -34,9 +34,3 @@ # Form labels contactsForm-errors-banner: Le contact n'a pas \u00E9t\u00E9 sauvegard\u00E9 \u00E0 cause des erreurs suivantes : -ContactState.BOAT_UNAVAILABLE: Non abouti -ContactState.BOAT_DEFINITIVE_REFUSED: Refus d\u00E9finitif -ContactState.BOAT_REFUSED: Refus -ContactState.BOARDING_DONE: Embarquement r\u00E9alis\u00E9 -ContactState.BOARDING_EXPECTED: Embarquement programm\u00E9 -ContactState.CONTACT_START: Contact pris Modified: trunk/wao-ui/src/main/webapp/Contacts.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Contacts.tml 2010-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-ui/src/main/webapp/Contacts.tml 2010-03-25 13:33:17 UTC (rev 389) @@ -159,7 +159,7 @@ <p:stateCell> <t:if t:test="editionMode"> <input t:type="select" t:id="contactState" t:value="contactEdited.contactState" t:validate="required"/> - <p:else>${contact.state}</p:else> + <p:else>${contact.contactState.libelle()}</p:else> </t:if> </p:stateCell> <p:tideBeginDateCell> Modified: trunk/wao-ui/src/main/webapp/Synthesis.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Synthesis.tml 2010-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-ui/src/main/webapp/Synthesis.tml 2010-03-25 13:33:17 UTC (rev 389) @@ -206,7 +206,7 @@ <th class="company">Société</th> </t:if> <th t:type="loop" t:source="contactStates" t:value="contactState"> - ${contactState} + ${contactState.libelle()} </th> <th>Total</th> </tr> Modified: trunk/wao-ui/src/main/webapp/WEB-INF/app.properties =================================================================== --- trunk/wao-ui/src/main/webapp/WEB-INF/app.properties 2010-03-25 12:35:07 UTC (rev 388) +++ trunk/wao-ui/src/main/webapp/WEB-INF/app.properties 2010-03-25 13:33:17 UTC (rev 389) @@ -1,3 +1,10 @@ # This is where global application properties go. +#ContactState enum +ContactState.BOAT_UNAVAILABLE: Non abouti +ContactState.BOAT_DEFINITIVE_REFUSED: Refus d\u00E9finitif +ContactState.BOAT_REFUSED: Refus +ContactState.BOARDING_DONE: Embarquement r\u00E9alis\u00E9 +ContactState.BOARDING_EXPECTED: Embarquement programm\u00E9 +ContactState.CONTACT_START: Contact pris