r949 - in trunk: tutti-persistence/src/main/java/fr/ifremer/tutti/persistence tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service tutti-persistence/src/main/resources tutti-service/src/main/java/fr/ifremer/tutti/service tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics
Author: kmorin Date: 2013-05-15 16:34:46 +0200 (Wed, 15 May 2013) New Revision: 949 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/949 Log: fixes #2148 [OBSERVATIONS INDIVIDUELLS] Autres caract?\195?\169ristiques = tous les psfm sauf celui utilis?\195?\169 pour la mesure de l'individu Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java trunk/tutti-persistence/src/main/resources/applicationContext-service-tutti.xml trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapCellComponent.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUIHandler.java Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2013-05-15 14:34:46 UTC (rev 949) @@ -212,6 +212,12 @@ List<Caracteristic> getAllCaracteristic(); /** + * @return all caracteristics of the system with the ones which are protected. + * @since 2.3 + */ + List<Caracteristic> getAllCaracteristicWithProtected(); + + /** * @return all numeric caracteristics of the system. * @since 1.0.2 */ Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceImpl.java 2013-05-15 14:34:46 UTC (rev 949) @@ -285,6 +285,11 @@ } @Override + public List<Caracteristic> getAllCaracteristicWithProtected() { + return referentialService.getAllCaracteristicWithProtected(); + } + + @Override public List<Caracteristic> getAllNumericCaracteristic() { return referentialService.getAllNumericCaracteristic(); } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceNoDbImpl.java 2013-05-15 14:34:46 UTC (rev 949) @@ -142,6 +142,11 @@ } @Override + public List<Caracteristic> getAllCaracteristicWithProtected() { + throw notImplemented(); + } + + @Override public List<Caracteristic> getAllNumericCaracteristic() { throw notImplemented(); } Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceService.java 2013-05-15 14:34:46 UTC (rev 949) @@ -197,6 +197,13 @@ List<Caracteristic> getAllCaracteristic(); /** + * @return all caracteristics of the system with the ones which are kind of protected. + * @since 2.3 + */ + @Cacheable(value = "pmfmsWithProtected") + List<Caracteristic> getAllCaracteristicWithProtected(); + + /** * @return all numeric caracteristics of the system. * @since 1.0.2 */ Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-05-15 14:34:46 UTC (rev 949) @@ -464,6 +464,15 @@ @Override public List<Caracteristic> getAllCaracteristic() { + return getAllCaracteristics(false); + } + + @Override + public List<Caracteristic> getAllCaracteristicWithProtected() { + return getAllCaracteristics(true); + } + + protected List<Caracteristic> getAllCaracteristics(boolean withProtected) { Iterator<Object[]> sources = queryListWithStatus( "allPmfm", "unitIdNone", IntegerType.INSTANCE, enumeration.UNIT_ID_NONE); @@ -474,7 +483,7 @@ Integer pmfmId = (Integer) source[0]; Caracteristic target = loadCaracteristic(source); // Skip some protected PSFM - if (!enumeration.isProtectedCaracteristic(pmfmId)) { + if (withProtected || !enumeration.isProtectedCaracteristic(pmfmId)) { result.add(target); } pmfmByIdCache.put(pmfmId, target); Modified: trunk/tutti-persistence/src/main/resources/applicationContext-service-tutti.xml =================================================================== --- trunk/tutti-persistence/src/main/resources/applicationContext-service-tutti.xml 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-persistence/src/main/resources/applicationContext-service-tutti.xml 2013-05-15 14:34:46 UTC (rev 949) @@ -92,6 +92,9 @@ <bean id="tuttiPmfmsCache" parent="tuttiAbstractEternalCache"> <property name="cacheName" value="pmfms" /> </bean> + <bean id="tuttiPmfmsWithProtectedCache" parent="tuttiAbstractEternalCache"> + <property name="cacheName" value="pmfmsWithProtected" /> + </bean> <bean id="tuttiPmfmByIdCache" parent="tuttiAbstractEternalCache"> <property name="cacheName" value="pmfmById" /> </bean> Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2013-05-15 14:34:46 UTC (rev 949) @@ -338,6 +338,11 @@ } @Override + public List<Caracteristic> getAllCaracteristicWithProtected() { + return driver.getAllCaracteristicWithProtected(); + } + + @Override public List<Caracteristic> getAllNumericCaracteristic() { return driver.getAllNumericCaracteristic(); } Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiDataContext.java 2013-05-15 14:34:46 UTC (rev 949) @@ -122,6 +122,8 @@ protected List<Caracteristic> caracteristics; + protected List<Caracteristic> caracteristicsWithProtected; + protected List<Caracteristic> lengthStepCaracteristics; protected List<CaracteristicQualitativeValue> genderValues; @@ -455,6 +457,17 @@ return caracteristics; } + public List<Caracteristic> getCaracteristicWithProtected() { + checkOpened(); + if (caracteristicsWithProtected == null) { + if (log.isInfoEnabled()) { + log.info("Loading allCaracteristicWithProtected"); + } + caracteristicsWithProtected = service.getAllCaracteristicWithProtected(); + } + return caracteristicsWithProtected; + } + public List<Caracteristic> getLengthStepCaracteristics() { checkOpened(); if (lengthStepCaracteristics == null) { Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/catches/multipost/TuttiMultiPostImportExportService.java 2013-05-15 14:34:46 UTC (rev 949) @@ -520,7 +520,7 @@ } CatchFrequencyRowModel frequencyModel = new CatchFrequencyRowModel(csvSeparator, - dataContext.getCaracteristics()); + dataContext.getLengthStepCaracteristics()); Import<CatchFrequencyRow> frequencyImporter = Import.newImport(frequencyModel, reader); @@ -682,7 +682,7 @@ } CatchFrequencyRowModel frequencyModel = new CatchFrequencyRowModel(csvSeparator, - dataContext.getCaracteristics()); + dataContext.getLengthStepCaracteristics()); Import<CatchFrequencyRow> frequencyImporter = Import.newImport(frequencyModel, reader); @@ -864,7 +864,7 @@ TuttiDataContext dataContext = context.getDataContext(); List<Species> speciesList = dataContext.getReferentSpecies(); - List<Caracteristic> caracteristics = dataContext.getCaracteristics(); + List<Caracteristic> caracteristics = dataContext.getCaracteristicWithProtected(); IndividualObservationRowModel csvModel = new IndividualObservationRowModel(csvSeparator, speciesList, @@ -977,7 +977,7 @@ TuttiDataContext dataContext = context.getDataContext(); List<Species> speciesList = dataContext.getReferentSpecies(); List<CaracteristicQualitativeValue> genderValues = dataContext.getGenderValues(); - List<Caracteristic> caracteristics = dataContext.getCaracteristics(); + List<Caracteristic> caracteristics = dataContext.getCaracteristicWithProtected(); List<CaracteristicQualitativeValue> dedOrAliveValues = dataContext.getDeadOrAliveValues(); AccidentalCatchRowModel csvModel = new AccidentalCatchRowModel(csvSeparator, Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapCellComponent.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapCellComponent.java 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapCellComponent.java 2013-05-15 14:34:46 UTC (rev 949) @@ -50,6 +50,9 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.Serializable; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import static org.nuiton.i18n.I18n._; @@ -143,6 +146,8 @@ protected CaracteristicMapColumnRowModel editRow; + protected Set<Caracteristic> caracteristicsUsed; + protected Integer rowIndex; protected Integer columnIndex; @@ -183,9 +188,20 @@ log.info("Will edit frequencies for row: " + rowIndex); } + // get the caracteristics set to the other rows + if (caracteristicsUsed == null) { + caracteristicsUsed = new HashSet<Caracteristic>(); + for (CaracteristicMapColumnRowModel row : tableModel.getRows()) { + CaracteristicMap map = row.getCaracteristics(); + if (map != null) { + caracteristicsUsed.addAll(map.keySet()); + } + } + } + CaracteristicMapColumnUIHandler handler = (CaracteristicMapColumnUIHandler) ui.getHandler(); CaracteristicMapEditorUI caracteristicMapEditor = handler.getCaracteristicMapEditor(); - caracteristicMapEditor.getHandler().editBatch(editRow, this); + caracteristicMapEditor.getHandler().editBatch(editRow, this, caracteristicsUsed); handler.showCaracteristicMapEditor(); } @@ -196,6 +212,7 @@ component.setText(map); component.setToolTipText(map); editRow.setCaracteristics(map); + caracteristicsUsed.addAll(map.keySet()); } int r = rowIndex; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnRowModel.java 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnRowModel.java 2013-05-15 14:34:46 UTC (rev 949) @@ -25,12 +25,15 @@ */ import fr.ifremer.tutti.persistence.entities.CaracteristicMap; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import java.io.Serializable; /** @author kmorin <kmorin@codelutin.com> */ public interface CaracteristicMapColumnRowModel extends Serializable { + Caracteristic getLengthStepCaracteristic(); + CaracteristicMap getCaracteristics(); void setCaracteristics(CaracteristicMap map); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java 2013-05-15 14:34:46 UTC (rev 949) @@ -24,6 +24,10 @@ * #L% */ +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; + +import java.util.Set; + /** * @author kmorin <kmorin@codelutin.com> * @since 2.0 @@ -35,4 +39,5 @@ void showCaracteristicMapEditor(); void hideCaracteristicMapEditor(); + } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUIHandler.java 2013-05-15 13:42:02 UTC (rev 948) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUIHandler.java 2013-05-15 14:34:46 UTC (rev 949) @@ -22,8 +22,11 @@ * #L% */ +import com.google.common.base.Function; +import com.google.common.base.Functions; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.service.DecoratorService; @@ -35,13 +38,16 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.collections.MapUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; import javax.swing.JComponent; +import java.io.Serializable; import java.util.List; +import java.util.Set; import static fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapCellComponent.CaracteristicMapCellEditor; @@ -122,7 +128,7 @@ initUI(getUI()); initBeanFilterableComboBox(getKeyCombo(), Lists.<Caracteristic>newArrayList(), null); - getModel().setAvailableCaracteristics(getDataContext().getCaracteristics()); + getModel().setAvailableCaracteristics(getDataContext().getCaracteristicWithProtected()); JXTable table = getTable(); @@ -232,8 +238,17 @@ recomputeRowValidState(row); } + /** + * Edit the batch caracteristics + * + * @param caracteristicMapColumnRowModel the row to edit + * @param caracteristicMapCellEditor the editor + * @param caracteristicsUsed the set of the caracteristics used in the other rows. + * If no caracteristic is set on this row, add automatically these caracteristics with a null value + */ public void editBatch(CaracteristicMapColumnRowModel caracteristicMapColumnRowModel, - CaracteristicMapCellEditor caracteristicMapCellEditor) { + CaracteristicMapCellEditor caracteristicMapCellEditor, + Set<Caracteristic> caracteristicsUsed) { this.caracteristicMapCellEditor = caracteristicMapCellEditor; @@ -241,8 +256,9 @@ CaracteristicMapEditorUIModel model = getModel(); CaracteristicMap caracteristicMap = caracteristicMapColumnRowModel.getCaracteristics(); - if (caracteristicMap == null) { + if (MapUtils.isEmpty(caracteristicMap)) { caracteristicMap = new CaracteristicMap(); + caracteristicMap.putAll(Maps.asMap(caracteristicsUsed, Functions.constant((Serializable) null))); } model.setCaracteristicMap(caracteristicMap); @@ -260,6 +276,9 @@ model.setRows(rows); + // add the lengthstep caracteristic in the caracteristics which cannot be added + caracteristics.add(caracteristicMapColumnRowModel.getLengthStepCaracteristic()); + List<Caracteristic> caracteristicList = Lists.newArrayList(); for (Caracteristic caracteristic : availableCaracteristics) {
participants (1)
-
kmorin@users.forge.codelutin.com