View Javadoc
1   package fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter;
2   
3   /*
4    * #%L
5    * Tutti :: UI
6    * %%
7    * Copyright (C) 2012 - 2014 Ifremer
8    * %%
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU General Public License as
11   * published by the Free Software Foundation, either version 3 of the 
12   * License, or (at your option) any later version.
13   * 
14   * This program is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Public License for more details.
18   * 
19   * You should have received a copy of the GNU General Public 
20   * License along with this program.  If not, see
21   * <http://www.gnu.org/licenses/gpl-3.0.html>.
22   * #L%
23   */
24  
25  import com.google.common.collect.Lists;
26  import fr.ifremer.adagio.core.dao.referential.ObjectTypeCode;
27  import fr.ifremer.tutti.persistence.entities.data.Attachment;
28  import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
29  import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatch;
30  import fr.ifremer.tutti.persistence.entities.data.MarineLitterBatchs;
31  import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
32  import fr.ifremer.tutti.type.WeightUnit;
33  import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
34  import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware;
35  import org.nuiton.util.beans.Binder;
36  import org.nuiton.util.beans.BinderFactory;
37  
38  import java.util.Collection;
39  import java.util.List;
40  
41  /**
42   * Define a MarineLitter batch row.
43   *
44   * @author Tony Chemit - chemit@codelutin.com
45   * @since 0.2
46   */
47  public class MarineLitterBatchRowModel extends AbstractTuttiBeanUIModel<MarineLitterBatch, MarineLitterBatchRowModel> implements AttachmentModelAware, MarineLitterBatch {
48  
49      private static final long serialVersionUID = 1L;
50  
51      /**
52       * Delegate edit object.
53       *
54       * @since 1.3
55       */
56      protected final MarineLitterBatch editObject =
57              MarineLitterBatchs.newMarineLitterBatch();
58  
59      /**
60       * Attachments (should never be null).
61       *
62       * @since 0.2
63       */
64      protected final List<Attachment> attachment = Lists.newArrayList();
65  
66      /**
67       * Weight unit.
68       *
69       * @since 2.5
70       */
71      protected final WeightUnit weightUnit;
72  
73      protected static final Binder<MarineLitterBatch, MarineLitterBatchRowModel> fromBeanBinder =
74              BinderFactory.newBinder(MarineLitterBatch.class,
75                                      MarineLitterBatchRowModel.class);
76  
77      protected static final Binder<MarineLitterBatchRowModel, MarineLitterBatch> toBeanBinder =
78              BinderFactory.newBinder(MarineLitterBatchRowModel.class,
79                                      MarineLitterBatch.class);
80  
81      public MarineLitterBatchRowModel(WeightUnit weightUnit) {
82          super(fromBeanBinder, toBeanBinder);
83          this.weightUnit = weightUnit;
84      }
85  
86      public MarineLitterBatchRowModel(WeightUnit weightUnit,
87                                       MarineLitterBatch entity) {
88          this(weightUnit);
89          fromEntity(entity);
90      }
91  
92      //------------------------------------------------------------------------//
93      //-- AbstractTuttiBeanUIModel                                           --//
94      //------------------------------------------------------------------------//
95  
96      @Override
97      protected MarineLitterBatch newEntity() {
98          return MarineLitterBatchs.newMarineLitterBatch();
99      }
100 
101     @Override
102     public void fromEntity(MarineLitterBatch entity) {
103         super.fromEntity(entity);
104 
105         // convert weight
106         setWeight(weightUnit.fromEntity(getWeight()));
107     }
108 
109     @Override
110     public MarineLitterBatch toEntity() {
111         MarineLitterBatch result = super.toEntity();
112 
113         // convert weight
114         result.setWeight(weightUnit.toEntity(getWeight()));
115         return result;
116     }
117 
118     //------------------------------------------------------------------------//
119     //-- MarineLitterBatch                                               --//
120     //------------------------------------------------------------------------//
121 
122     @Override
123     public CaracteristicQualitativeValue getMarineLitterCategory() {
124         return editObject.getMarineLitterCategory();
125     }
126 
127     @Override
128     public void setMarineLitterCategory(CaracteristicQualitativeValue marineLitterCategory) {
129         Object oldValue = getMarineLitterCategory();
130         editObject.setMarineLitterCategory(marineLitterCategory);
131         firePropertyChange(PROPERTY_MARINE_LITTER_CATEGORY, oldValue, marineLitterCategory);
132     }
133 
134     @Override
135     public CaracteristicQualitativeValue getMarineLitterSizeCategory() {
136         return editObject.getMarineLitterSizeCategory();
137     }
138 
139     @Override
140     public void setMarineLitterSizeCategory(CaracteristicQualitativeValue marineLitterSizeCategory) {
141         Object oldValue = getMarineLitterSizeCategory();
142         editObject.setMarineLitterSizeCategory(marineLitterSizeCategory);
143         firePropertyChange(PROPERTY_MARINE_LITTER_SIZE_CATEGORY, oldValue, marineLitterSizeCategory);
144     }
145 
146     @Override
147     public FishingOperation getFishingOperation() {
148         return editObject.getFishingOperation();
149     }
150 
151     @Override
152     public void setFishingOperation(FishingOperation fishingOperation) {
153         editObject.setFishingOperation(fishingOperation);
154     }
155 
156     @Override
157     public Float getWeight() {
158         return editObject.getWeight();
159     }
160 
161     @Override
162     public void setWeight(Float weight) {
163         Object oldValue = getWeight();
164         editObject.setWeight(weight);
165         firePropertyChange(PROPERTY_WEIGHT, oldValue, weight);
166     }
167 
168     @Override
169     public Integer getNumber() {
170         return editObject.getNumber();
171     }
172 
173     @Override
174     public void setNumber(Integer number) {
175         Object oldValue = getNumber();
176         editObject.setNumber(number);
177         firePropertyChange(PROPERTY_NUMBER, oldValue, number);
178     }
179 
180     @Override
181     public String getComment() {
182         return editObject.getComment();
183     }
184 
185     @Override
186     public void setComment(String comment) {
187         Object oldValue = getComment();
188         editObject.setComment(comment);
189         firePropertyChange(PROPERTY_COMMENT, oldValue, comment);
190     }
191 
192     @Override
193     public Integer getRankOrder() {
194         return editObject.getRankOrder();
195     }
196 
197     @Override
198     public void setRankOrder(Integer rankOrder) {
199         editObject.setRankOrder(rankOrder);
200     }
201 
202     //------------------------------------------------------------------------//
203     //-- AttachmentModelAware                                               --//
204     //------------------------------------------------------------------------//
205 
206     @Override
207     public ObjectTypeCode getObjectType() {
208         return ObjectTypeCode.BATCH;
209     }
210 
211     @Override
212     public Integer getObjectId() {
213         return getIdAsInt();
214     }
215 
216     @Override
217     public List<Attachment> getAttachment() {
218         return attachment;
219     }
220 
221     @Override
222     public void addAllAttachment(Collection<Attachment> attachments) {
223         this.attachment.addAll(attachments);
224         firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachment());
225     }
226 
227     @Override
228     public void addAttachment(Attachment attachment) {
229         this.attachment.add(attachment);
230         firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachment());
231     }
232 
233     @Override
234     public void removeAllAttachment(Collection<Attachment> attachments) {
235         this.attachment.removeAll(attachments);
236         firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachment());
237     }
238 
239     @Override
240     public void removeAttachment(Attachment attachment) {
241         this.attachment.remove(attachment);
242         firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachment());
243     }
244 }