branch feature/7275 created (now 918790e)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7275 in repository tutti. See http://git.codelutin.com/tutti.git at 918790e améliorer la lisibilité du n° de lot dans le tableau espèces, benthos etc, en ajoutant un espace : 123 456 (et pas 123456) (fixes #7275) This branch includes the following new commits: new 918790e améliorer la lisibilité du n° de lot dans le tableau espèces, benthos etc, en ajoutant un espace : 123 456 (et pas 123456) (fixes #7275) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 918790e1fbf85d36d2f10ff7b99a84fd366e9977 Author: Kevin Morin <morin@codelutin.com> Date: Mon Dec 21 11:51:21 2015 +0100 améliorer la lisibilité du n° de lot dans le tableau espèces, benthos etc, en ajoutant un espace : 123 456 (et pas 123456) (fixes #7275) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7275 in repository tutti. See http://git.codelutin.com/tutti.git commit 918790e1fbf85d36d2f10ff7b99a84fd366e9977 Author: Kevin Morin <morin@codelutin.com> Date: Mon Dec 21 11:51:21 2015 +0100 améliorer la lisibilité du n° de lot dans le tableau espèces, benthos etc, en ajoutant un espace : 123 456 (et pas 123456) (fixes #7275) --- .../fr/ifremer/tutti/service/DecoratorService.java | 40 ++++++++++++++------- .../tutti/service/DecoratorServiceTest.java | 9 +++++ .../catches/AbstractTuttiBatchTableUIHandler.java | 42 +++++++++++++++++++--- .../accidental/AccidentalBatchUIHandler.java | 2 +- .../catches/benthos/BenthosBatchUIHandler.java | 28 +++------------ .../IndividualObservationBatchUIHandler.java | 2 +- .../marinelitter/MarineLitterBatchUIHandler.java | 2 +- .../catches/species/SpeciesBatchUIHandler.java | 28 +++------------ 8 files changed, 88 insertions(+), 65 deletions(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java index 1c3f83f..ada5cbc 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java @@ -24,26 +24,18 @@ package fr.ifremer.tutti.service; import com.google.common.collect.Sets; import fr.ifremer.tutti.LabelAware; -import fr.ifremer.tutti.persistence.entities.data.Attachment; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; +import fr.ifremer.tutti.persistence.entities.data.*; import fr.ifremer.tutti.persistence.entities.protocol.CaracteristicType; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.Person; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.persistence.entities.referential.*; import org.apache.commons.lang3.StringUtils; import org.nuiton.decorator.Decorator; import org.nuiton.decorator.DecoratorProvider; import java.io.File; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -74,6 +66,8 @@ public class DecoratorService extends AbstractTuttiService { public static final String FILE_NAME_COMPATIBLE = "fileNameCompatible"; + public static final String SPACE_EVERY_3_DIGIT = "spaceEvery3Digit"; + public static final String SEPARATOR = "#"; /** Delegate decorator provider. */ @@ -143,6 +137,28 @@ public class DecoratorService extends AbstractTuttiService { return bean == null ? "" : String.valueOf(bean); } }); + registerDecorator(SPACE_EVERY_3_DIGIT, new Decorator<String>(String.class) { + + DecimalFormatSymbols symbols = new DecimalFormatSymbols(); + DecimalFormat df = new DecimalFormat("###,###", symbols); + + { + symbols.setGroupingSeparator(' '); + } + + + @Override + public String toString(Object bean) { + String s = (String) bean; + try { + int i = Integer.parseInt(s); + return df.format(i); + + } catch (NumberFormatException e) { + return ""; + } + } + }); registerDecorator(new VesselDecorator()); registerDecorator(new ProgramDecorator()); registerTuttiDecorator(Program.class, ONLY_NAME, "${name}$s", SEPARATOR, " - "); diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/DecoratorServiceTest.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/DecoratorServiceTest.java index d9c2988..b92d402 100644 --- a/tutti-service/src/test/java/fr/ifremer/tutti/service/DecoratorServiceTest.java +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/DecoratorServiceTest.java @@ -110,6 +110,7 @@ public class DecoratorServiceTest extends AbstractServiceTest { assertDecoratorByTypeFound(Vessel.class); assertDecoratorByTypeFound(Program.class); assertDecoratorByTypeFound(Float.class); + assertDecoratorByTypeFound(DecoratorService.SPACE_EVERY_3_DIGIT, String.class); assertDecoratorByTypeFound(Species.class); assertDecoratorByTypeFound(DecoratorService.FROM_PROTOCOL, Species.class); @@ -231,6 +232,14 @@ public class DecoratorServiceTest extends AbstractServiceTest { } + @Test + public void testDecorateId() { + String id = "123456"; + Decorator<String> idDecorator = assertDecoratorByTypeFound(DecoratorService.SPACE_EVERY_3_DIGIT, String.class); + String decoratedId = idDecorator.toString(id); + Assert.assertEquals("123 456", decoratedId); + } + protected <O> Decorator<O> assertDecoratorByTypeFound(Class<O> type) { return assertDecoratorByTypeFound(null, type); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchTableUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchTableUIHandler.java index 86f4693..f232c56 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchTableUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchTableUIHandler.java @@ -23,12 +23,11 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches; */ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; -import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; -import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.jdesktop.swingx.JXTable; @@ -37,10 +36,15 @@ import org.jdesktop.swingx.decorator.HighlightPredicate; import org.jdesktop.swingx.decorator.Highlighter; import org.jdesktop.swingx.sort.TableSortController; import org.jdesktop.swingx.table.TableColumnModelExt; +import org.nuiton.decorator.Decorator; +import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; +import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; +import javax.swing.*; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; -import java.awt.Color; -import java.awt.Component; +import java.awt.*; import java.util.Collection; /** @@ -147,4 +151,34 @@ public abstract class AbstractTuttiBatchTableUIHandler<R extends AbstractTuttiBe ), cellWithValueColor); table.addHighlighter(attachmentHighlighter); } + + protected void addIdColumnToModel(TableColumnModel model, + ColumnIdentifier<R> identifier, + JTable table) { + + final TableCellRenderer defaultRenderer = table.getDefaultRenderer(Number.class); + final Decorator<String> idDecorator = getDecorator(String.class, DecoratorService.SPACE_EVERY_3_DIGIT); + + TableCellRenderer idTableCellRenderer = new TableCellRenderer() { + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + + String text = null; + if (value != null) { + text = idDecorator.toString(value); + } + + Component result = defaultRenderer.getTableCellRendererComponent(table, text, isSelected, hasFocus, row, column); + if (result instanceof JLabel) { + JLabel jLabel = (JLabel) result; + jLabel.setHorizontalTextPosition(SwingConstants.RIGHT); + + } + return result; + } + }; + + addColumnToModel(model, null, idTableCellRenderer, identifier); + + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java index c8e8d60..218695c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java @@ -253,7 +253,7 @@ public class AccidentalBatchUIHandler { // Id column - addIntegerColumnToModel(columnModel, AccidentalBatchTableModel.ID, TuttiUI.INT_10_DIGITS_PATTERN, table); + addIdColumnToModel(columnModel, AccidentalBatchTableModel.ID, table); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java index 96ba18a..2b20bb8 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java @@ -27,35 +27,19 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueId; import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.data.Attachment; -import fr.ifremer.tutti.persistence.entities.data.BatchContainer; -import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; -import fr.ifremer.tutti.persistence.entities.data.BenthosBatchFrequency; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.SampleCategory; -import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; -import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; +import fr.ifremer.tutti.persistence.entities.data.*; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValues; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.tutti.type.WeightUnit; -import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchTableUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategoryColumnIdentifier; -import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategoryComponent; -import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesAbleBatchRowHelper; -import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesBatchDecorator; -import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesBatchDecoratorComparator; -import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesSortMode; -import fr.ifremer.tutti.ui.swing.content.operation.catches.TableViewMode; +import fr.ifremer.tutti.ui.swing.content.operation.catches.*; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.create.CreateBenthosBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency.BenthosFrequencyCellComponent; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.frequency.BenthosFrequencyRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchRowModel; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; -import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellEditor; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer; @@ -80,14 +64,12 @@ import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; import org.nuiton.validator.NuitonValidatorResult; -import javax.swing.JComponent; -import javax.swing.RowFilter; +import javax.swing.*; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumnModel; -import java.awt.Color; -import java.awt.Component; +import java.awt.*; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Serializable; @@ -703,7 +685,7 @@ public class BenthosBatchUIHandler extends AbstractTuttiBatchTableUIHandler<Bent { // Id column - addIntegerColumnToModel(columnModel, BenthosBatchTableModel.ID, TuttiUI.INT_10_DIGITS_PATTERN, table); + addIdColumnToModel(columnModel, BenthosBatchTableModel.ID, table); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java index 330eec6..9d6831a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java @@ -290,7 +290,7 @@ public class IndividualObservationBatchUIHandler { // Id column - addIntegerColumnToModel(columnModel, IndividualObservationBatchTableModel.ID, TuttiUI.INT_10_DIGITS_PATTERN, table); + addIdColumnToModel(columnModel, IndividualObservationBatchTableModel.ID, table); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java index 9cc4d87..67fd028 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java @@ -236,7 +236,7 @@ public class MarineLitterBatchUIHandler extends AbstractTuttiBatchTableUIHandler { // Id column - addIntegerColumnToModel(columnModel, MarineLitterBatchTableModel.ID, TuttiUI.INT_10_DIGITS_PATTERN, table); + addIdColumnToModel(columnModel, MarineLitterBatchTableModel.ID, table); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java index 392fd99..43cb3f0 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java @@ -27,34 +27,18 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueId; import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.data.Attachment; -import fr.ifremer.tutti.persistence.entities.data.BatchContainer; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.SampleCategory; -import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; -import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModelEntry; -import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; -import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; +import fr.ifremer.tutti.persistence.entities.data.*; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValues; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.ValidationService; import fr.ifremer.tutti.type.WeightUnit; -import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchTableUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategoryColumnIdentifier; -import fr.ifremer.tutti.ui.swing.content.operation.catches.SampleCategoryComponent; -import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesAbleBatchRowHelper; -import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesBatchDecorator; -import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesBatchDecoratorComparator; -import fr.ifremer.tutti.ui.swing.content.operation.catches.SpeciesSortMode; -import fr.ifremer.tutti.ui.swing.content.operation.catches.TableViewMode; +import fr.ifremer.tutti.ui.swing.content.operation.catches.*; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.create.CreateSpeciesBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyCellComponent; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; -import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellEditor; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer; @@ -80,14 +64,12 @@ import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; import org.nuiton.validator.NuitonValidatorResult; -import javax.swing.JComponent; -import javax.swing.RowFilter; +import javax.swing.*; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumnModel; -import java.awt.Color; -import java.awt.Component; +import java.awt.*; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.Serializable; @@ -706,7 +688,7 @@ public class SpeciesBatchUIHandler extends AbstractTuttiBatchTableUIHandler<Spec { // Id column - addIntegerColumnToModel(columnModel, SpeciesBatchTableModel.ID, TuttiUI.INT_10_DIGITS_PATTERN, table); + addIdColumnToModel(columnModel, SpeciesBatchTableModel.ID, table); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm