Author: sbavencoff Date: 2014-06-20 10:50:13 +0200 (Fri, 20 Jun 2014) New Revision: 715 Url: http://forge.codelutin.com/projects/sammoa/repository/revisions/715 Log: fixes #5289 : validation des esp?\195?\168ces Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/EffortPanel.jaxx trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/EffortPanelHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/ObservationTableModel.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/SpeciesCodeValidator.java trunk/sammoa-ui-swing/src/main/resources/fr/ulr/sammoa/persistence/Observation-validation-error-validation.xml trunk/sammoa-ui-swing/src/main/resources/validators.xml Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2014-06-13 07:38:26 UTC (rev 714) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2014-06-20 08:50:13 UTC (rev 715) @@ -162,6 +162,26 @@ } } + public Species getSpecies(String code , Region region) { + SammoaTopiaPersistenceContext transaction = beginTransaction(); + + Species species = null; + + try { + SpeciesTopiaDao dao = transaction.getSpeciesDao(); + + if (dao.existByNaturalId(code, region)) { + species = dao.findByNaturalId(code, region); + } + + } finally { + endTransaction(transaction); + } + + return species; + + } + //------------------------------------------------------------------------// //-- Campaign methods ----------------------------------------------------// //------------------------------------------------------------------------// Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/EffortPanel.jaxx =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/EffortPanel.jaxx 2014-06-13 07:38:26 UTC (rev 714) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/EffortPanel.jaxx 2014-06-20 08:50:13 UTC (rev 715) @@ -70,7 +70,7 @@ constructorParams='flightUIModel'/--> <ObservationTableModel id='observationTableModel' - constructorParams='model'/> + constructorParams='model, handler'/> <!--ObservationTableListSelectionListener id='observationSelectionModel' constructorParams='flightUIModel'/--> Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/EffortPanelHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/EffortPanelHandler.java 2014-06-13 07:38:26 UTC (rev 714) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/EffortPanelHandler.java 2014-06-20 08:50:13 UTC (rev 715) @@ -31,6 +31,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; import fr.ulr.sammoa.application.FlightService; +import fr.ulr.sammoa.application.ReferentialService; import fr.ulr.sammoa.application.device.DeviceState; import fr.ulr.sammoa.application.device.DeviceStateEvent; import fr.ulr.sammoa.application.device.DeviceStateListener; @@ -45,8 +46,11 @@ import fr.ulr.sammoa.persistence.Observer; import fr.ulr.sammoa.persistence.ObserverPosition; import fr.ulr.sammoa.persistence.Position; +import fr.ulr.sammoa.persistence.Region; import fr.ulr.sammoa.persistence.Route; import fr.ulr.sammoa.persistence.Routes; +import fr.ulr.sammoa.persistence.Species; +import fr.ulr.sammoa.persistence.SpeciesImpl; import fr.ulr.sammoa.persistence.TransectFlight; import fr.ulr.sammoa.ui.swing.SammoaColors; import fr.ulr.sammoa.ui.swing.SammoaUIContext; @@ -92,12 +96,19 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.swing.*; +import javax.swing.Action; +import javax.swing.DefaultCellEditor; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.ListCellRenderer; import javax.swing.border.LineBorder; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableModel; -import java.awt.*; +import java.awt.Color; +import java.awt.Component; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; @@ -138,9 +149,13 @@ private final EffortPanel ui; + protected ReferentialService referentialService; + public EffortPanelHandler(EffortPanel ui) { this.ui = ui; context = ui.getContextValue(SammoaUIContext.class); + + this.referentialService = context.getService(ReferentialService.class); } public FlightUI getParentUI() { @@ -664,6 +679,15 @@ } } + public Species getSpecies(String code, Region region) { + Species species = referentialService.getSpecies(code, region); + if (species == null) { + species = new SpeciesImpl(code, region); + species.setLocalCreation(true); + } + return species; + } + public void initGeoPointTable() { JXTable table = ui.getGeoPointTable(); Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/ObservationTableModel.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/ObservationTableModel.java 2014-06-13 07:38:26 UTC (rev 714) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/ObservationTableModel.java 2014-06-20 08:50:13 UTC (rev 715) @@ -32,7 +32,6 @@ import fr.ulr.sammoa.persistence.Position; import fr.ulr.sammoa.persistence.Region; import fr.ulr.sammoa.persistence.Species; -import fr.ulr.sammoa.persistence.SpeciesImpl; import fr.ulr.sammoa.ui.swing.flight.FlightUIModel; import fr.ulr.sammoa.ui.swing.util.SammoaUtil; import jaxx.runtime.SwingUtil; @@ -49,8 +48,11 @@ protected FlightUIModel flightUIModel; - public ObservationTableModel(FlightUIModel flightUIModel) { + protected EffortPanelHandler effortPanelHandler; + + public ObservationTableModel(FlightUIModel flightUIModel, EffortPanelHandler effortPanelHandler) { this.flightUIModel = flightUIModel; + this.effortPanelHandler = effortPanelHandler; } @Override @@ -95,10 +97,7 @@ public void setValueAt(Object aValue, int row, int column) { Observation observation = getBean(row); ObservationColumn observationColumn = ObservationColumn.valueOf(column); - Flight flight = observation.getFlight(); - Campaign campaign = flight.getCampaign(); - Region region = campaign.getRegion(); - observationColumn.setValue(observation, aValue, region); + observationColumn.setValue(observation, aValue, effortPanelHandler); fireTableRowsUpdated(row, row); } @@ -144,7 +143,7 @@ POD_SIZE(true, int.class, Observation.PROPERTY_POD_SIZE), SPECIES(true, String.class, Observation.PROPERTY_SPECIES, Species.PROPERTY_CODE) { @Override - public void setValue(Observation bean, Object value, Region region) { + public void setValue(Observation bean, Object value, EffortPanelHandler effortPanelHandler) { String newValue = (String) value; if (!Strings.isNullOrEmpty(newValue)) { @@ -156,8 +155,11 @@ // Always use a new instance for different value to // fire change on Observation and not on Species - Species species = new SpeciesImpl((String) value, region); - bean.setSpecies(species); + Flight flight = bean.getFlight(); + Campaign campaign = flight.getCampaign(); + Region region = campaign.getRegion(); + + bean.setSpecies(effortPanelHandler.getSpecies((String) value, region)); } } else { @@ -170,7 +172,7 @@ CUE(true, String.class, Observation.PROPERTY_CUE), BEHAVIOUR(true, String.class, Observation.PROPERTY_BEHAVIOUR) { @Override - public void setValue(Observation bean, Object value, Region region) { + public void setValue(Observation bean, Object value, EffortPanelHandler effortPanelHandler) { String newValue = (String) value; if (Strings.isNullOrEmpty(newValue)) { newValue = null; @@ -191,7 +193,7 @@ } @Override - public void setValue(Observation bean, Object value, Region region) { + public void setValue(Observation bean, Object value, EffortPanelHandler effortPanelHandler) { } }; @@ -229,7 +231,7 @@ return result; } - public void setValue(Observation bean, Object value, Region region) { + public void setValue(Observation bean, Object value, EffortPanelHandler effortPanelHandler) { if (type.isPrimitive() && value == null) { // can not set a null value to a primitive field } else { Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/SpeciesCodeValidator.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/SpeciesCodeValidator.java 2014-06-13 07:38:26 UTC (rev 714) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/SpeciesCodeValidator.java 2014-06-20 08:50:13 UTC (rev 715) @@ -37,6 +37,7 @@ * * @author tchemit <chemit@codelutin.com> * @since 0.5 + * @deprecated since 1.0.3 not use */ public class SpeciesCodeValidator extends CollectionFieldExpressionValidator { Modified: trunk/sammoa-ui-swing/src/main/resources/fr/ulr/sammoa/persistence/Observation-validation-error-validation.xml =================================================================== --- trunk/sammoa-ui-swing/src/main/resources/fr/ulr/sammoa/persistence/Observation-validation-error-validation.xml 2014-06-13 07:38:26 UTC (rev 714) +++ trunk/sammoa-ui-swing/src/main/resources/fr/ulr/sammoa/persistence/Observation-validation-error-validation.xml 2014-06-20 08:50:13 UTC (rev 715) @@ -54,7 +54,7 @@ <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"> - <![CDATA[ !species.localCreation ]]></param> + <![CDATA[ ! species.localCreation ]]></param> <message>sammoa.validator.observation.unknown.species##${species.code}</message> </field-validator> Modified: trunk/sammoa-ui-swing/src/main/resources/validators.xml =================================================================== --- trunk/sammoa-ui-swing/src/main/resources/validators.xml 2014-06-13 07:38:26 UTC (rev 714) +++ trunk/sammoa-ui-swing/src/main/resources/validators.xml 2014-06-20 08:50:13 UTC (rev 715) @@ -41,7 +41,7 @@ <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/> <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/> - <validator name="speciesCode" class="fr.ulr.sammoa.ui.swing.flight.effort.SpeciesCodeValidator"/> + <!--validator name="speciesCode" class="fr.ulr.sammoa.ui.swing.flight.effort.SpeciesCodeValidator"/ --> <validator name="collectionUniqueKey" class="org.nuiton.validator.xwork2.field.CollectionUniqueKeyValidator"/> <!--<validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>