View Javadoc
1   package fr.ifremer.tutti.ui.swing.content.protocol.calcifiedpiecessampling;
2   
3   /*
4    * #%L
5    * Tutti :: UI
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2012 - 2016 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU General Public License as
13   * published by the Free Software Foundation, either version 3 of the
14   * License, or (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU General Public
22   * License along with this program.  If not, see
23   * <http://www.gnu.org/licenses/gpl-3.0.html>.
24   * #L%
25   */
26  
27  import fr.ifremer.tutti.persistence.entities.protocol.CalcifiedPiecesSamplingDefinition;
28  import fr.ifremer.tutti.persistence.entities.protocol.CalcifiedPiecesSamplingDefinitions;
29  import fr.ifremer.tutti.persistence.entities.referential.Species;
30  import fr.ifremer.tutti.service.DecoratorService;
31  import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel;
32  import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
33  import org.nuiton.util.beans.Binder;
34  import org.nuiton.util.beans.BinderFactory;
35  
36  import java.util.Comparator;
37  
38  /**
39   * @author Kevin Morin (Code Lutin)
40   * @since 4.5
41   */
42  public class CalcifiedPiecesSamplingEditorRowModel extends AbstractTuttiBeanUIModel<CalcifiedPiecesSamplingDefinition,
43                                                                                      CalcifiedPiecesSamplingEditorRowModel>
44                                                     implements CalcifiedPiecesSamplingDefinition {
45  
46      public static final String PROPERTY_PROTOCOL_SPECIES = "protocolSpecies";
47  
48      public static final Comparator<CalcifiedPiecesSamplingEditorRowModel> COMPARATOR =
49              new Comparator<CalcifiedPiecesSamplingEditorRowModel>() {
50  
51          private final DecoratorService.SpeciesDecoratorWithSurveyCode speciesDecorator =
52                  new DecoratorService.SpeciesDecoratorWithSurveyCode();
53  
54          @Override
55          public int compare(CalcifiedPiecesSamplingEditorRowModel o1, CalcifiedPiecesSamplingEditorRowModel o2) {
56  
57              boolean o1null = o1 == null || o1.getProtocolSpecies() == null;
58              boolean o2null = o2 == null || o2.getProtocolSpecies() == null;
59  
60              if (o1null) {
61                  return o2null ? 0 : -1;
62              }
63              if (o2null) {
64                  return 1;
65              }
66  
67              Species species1 = o1.getProtocolSpecies().getSpecies();
68              Species species2 = o2.getProtocolSpecies().getSpecies();
69              if (!(species1.equals(species2))) {
70                  return speciesDecorator.toString(species1).compareTo(speciesDecorator.toString(species2));
71              }
72  
73              boolean withMaturity = o1.getMaturity() != null;
74  
75              if (withMaturity && !o1.getMaturity().equals(o2.getMaturity())) {
76                  return o1.getMaturity() ? 1 : -1;
77              }
78  
79              return o1.getMinSize() - o2.getMinSize();
80          }
81      };
82  
83      /**
84       * Delegate edit object.
85       *
86       * @since 4.5
87       */
88      protected final CalcifiedPiecesSamplingDefinition editObject =
89              CalcifiedPiecesSamplingDefinitions.newCalcifiedPiecesSamplingDefinition();
90  
91      protected EditProtocolSpeciesRowModel protocolSpecies;
92  
93      protected static final Binder<CalcifiedPiecesSamplingDefinition, CalcifiedPiecesSamplingEditorRowModel> fromBeanBinder =
94              BinderFactory.newBinder(CalcifiedPiecesSamplingDefinition.class,
95                                      CalcifiedPiecesSamplingEditorRowModel.class);
96  
97      protected static final Binder<CalcifiedPiecesSamplingEditorRowModel, CalcifiedPiecesSamplingDefinition> toBeanBinder =
98              BinderFactory.newBinder(CalcifiedPiecesSamplingEditorRowModel.class,
99                                      CalcifiedPiecesSamplingDefinition.class);
100 
101     public CalcifiedPiecesSamplingEditorRowModel() {
102         super(fromBeanBinder, toBeanBinder);
103     }
104 
105     @Override
106     public Integer getMaxSize() {
107         return editObject.getMaxSize();
108     }
109 
110     @Override
111     public void setMaxSize(Integer maxSize) {
112         Object oldValue = getMaxSize();
113         editObject.setMaxSize(maxSize);
114         firePropertyChange(PROPERTY_MAX_SIZE, oldValue, maxSize);
115     }
116 
117     @Override
118     public int getMinSize() {
119         return editObject.getMinSize();
120     }
121 
122     @Override
123     public void setMinSize(int minSize) {
124         Object oldValue = getMinSize();
125         editObject.setMinSize(minSize);
126         firePropertyChange(PROPERTY_MIN_SIZE, oldValue, minSize);
127     }
128 
129     public void setMinSize(Integer minSize) {
130         if (minSize != null) {
131             setMinSize(minSize.intValue());
132         } else {
133             firePropertyChange(PROPERTY_MIN_SIZE, getMinSize(), null);
134         }
135     }
136 
137     public EditProtocolSpeciesRowModel getProtocolSpecies() {
138         return protocolSpecies;
139     }
140 
141     public void setProtocolSpecies(EditProtocolSpeciesRowModel protocolSpecies) {
142         Object oldValue = getProtocolSpecies();
143         this.protocolSpecies = protocolSpecies;
144         firePropertyChange(PROPERTY_PROTOCOL_SPECIES, oldValue, protocolSpecies);
145     }
146 
147     @Override
148     public Boolean getMaturity() {
149         return editObject.getMaturity();
150     }
151 
152     @Override
153     public void setMaturity(Boolean maturity) {
154         Object oldValue = getMaturity();
155         editObject.setMaturity(maturity);
156         firePropertyChange(PROPERTY_MATURITY, oldValue, maturity);
157     }
158 
159     @Override
160     public Integer getOperationLimitation() {
161         return editObject.getOperationLimitation();
162     }
163 
164     @Override
165     public void setOperationLimitation(Integer operationLimitation) {
166         Object oldValue = getOperationLimitation();
167         editObject.setOperationLimitation(operationLimitation);
168         firePropertyChange(PROPERTY_OPERATION_LIMITATION, oldValue, operationLimitation);
169     }
170 
171     @Override
172     public Integer getMaxByLenghtStep() {
173         return editObject.getMaxByLenghtStep();
174     }
175 
176     @Override
177     public void setMaxByLenghtStep(Integer maxByLenghtStep) {
178         Object oldValue = getMaxByLenghtStep();
179         editObject.setMaxByLenghtStep(maxByLenghtStep);
180         firePropertyChange(PROPERTY_MAX_BY_LENGHT_STEP, oldValue, maxByLenghtStep);
181     }
182 
183     @Override
184     public int getSamplingInterval() {
185         return editObject.getSamplingInterval();
186     }
187 
188     @Override
189     public void setSamplingInterval(int samplingInterval) {
190         Object oldValue = getSamplingInterval();
191         editObject.setSamplingInterval(samplingInterval);
192         firePropertyChange(PROPERTY_SAMPLING_INTERVAL, oldValue, samplingInterval);
193     }
194 
195     public void setSamplingInterval(Integer samplingInterval) {
196         if (samplingInterval != null) {
197             setMinSize(samplingInterval.intValue());
198         } else {
199             firePropertyChange(PROPERTY_SAMPLING_INTERVAL, getSamplingInterval(), null);
200         }
201     }
202 
203     @Override
204     public boolean isSex() {
205         return editObject.isSex();
206     }
207 
208     @Override
209     public void setSex(boolean sex) {
210         Object oldValue = isSex();
211         editObject.setSex(sex);
212         firePropertyChange(PROPERTY_SEX, oldValue, sex);
213     }
214 
215     @Override
216     public Integer getZoneLimitation() {
217         return editObject.getZoneLimitation();
218     }
219 
220     @Override
221     public void setZoneLimitation(Integer zoneLimitation) {
222         Object oldValue = getZoneLimitation();
223         editObject.setZoneLimitation(zoneLimitation);
224         firePropertyChange(PROPERTY_ZONE_LIMITATION, oldValue, zoneLimitation);
225     }
226 
227     @Override
228     protected CalcifiedPiecesSamplingDefinition newEntity() {
229         return CalcifiedPiecesSamplingDefinitions.newCalcifiedPiecesSamplingDefinition();
230     }
231 }