View Javadoc
1   package fr.ifremer.dali.ui.swing.content.observation.operation.measurement.grouped.shared;
2   
3   /*
4    * #%L
5    * Dali :: UI
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2014 - 2015 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (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 Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  import com.google.common.collect.ArrayListMultimap;
27  import com.google.common.collect.Multimap;
28  import fr.ifremer.dali.dto.configuration.control.PreconditionRuleDTO;
29  import fr.ifremer.dali.dto.data.measurement.MeasurementDTO;
30  import fr.ifremer.dali.dto.data.sampling.SamplingOperationDTO;
31  import fr.ifremer.dali.dto.referential.TaxonDTO;
32  import fr.ifremer.dali.dto.referential.TaxonGroupDTO;
33  import fr.ifremer.dali.dto.referential.pmfm.PmfmDTO;
34  import fr.ifremer.dali.ui.swing.content.observation.ObservationUIHandler;
35  import fr.ifremer.dali.ui.swing.content.observation.ObservationUIModel;
36  import fr.ifremer.dali.ui.swing.content.observation.operation.measurement.OperationMeasurementsTabUIModel;
37  import fr.ifremer.dali.ui.swing.content.observation.operation.measurement.grouped.OperationMeasurementsFilter;
38  import fr.ifremer.dali.ui.swing.content.observation.operation.measurement.grouped.OperationMeasurementsGroupedRowModel;
39  import fr.ifremer.dali.ui.swing.util.table.AbstractDaliTableUIModel;
40  
41  import java.util.Collection;
42  import java.util.List;
43  
44  /**
45   * Modele pour les mesures des prelevements (ecran prelevements/mesure).
46   */
47  public abstract class AbstractOperationMeasurementsGroupedTableUIModel<
48          B extends MeasurementDTO,
49          R extends OperationMeasurementsGroupedRowModel,
50          M extends AbstractOperationMeasurementsGroupedTableUIModel<B, R, M>
51      >
52      extends AbstractDaliTableUIModel<B, R, M> {
53  
54      public static final String PROPERTY_SURVEY = "survey";
55      public static final String PROPERTY_MEASUREMENT_FILTER = "measurementFilter";
56      // property identifier used to propagate row sampling operation property change to parent
57      public static final String PROPERTY_SAMPLING_OPERATION = "samplingOperation";
58      public static final String PROPERTY_ADJUSTING = "adjusting";
59      public static final String PROPERTY_MEASUREMENTS_LOADED = "measurementsLoaded";
60  
61      private OperationMeasurementsTabUIModel parentModel;
62      private ObservationUIModel survey;
63      private ObservationUIHandler observationHandler;
64      private OperationMeasurementsFilter measurementFilter;
65      private boolean measurementsLoaded;
66      // pmfms with unique constraint
67      private List<PmfmDTO> uniquePmfms;
68      // map holding preconditions per pmfm id
69      private Multimap<Integer, PreconditionRuleDTO> preconditionRulesByPmfmIdMap;
70      private boolean adjusting;
71  
72      /**
73       * Constructor.
74       */
75      public AbstractOperationMeasurementsGroupedTableUIModel() {
76          super();
77      }
78  
79      public OperationMeasurementsTabUIModel getParentModel() {
80          return parentModel;
81      }
82  
83      public void setParentModel(OperationMeasurementsTabUIModel parentModel) {
84          this.parentModel = parentModel;
85      }
86  
87      /**
88       * <p>Getter for the field <code>survey</code>.</p>
89       *
90       * @return a {@link ObservationUIModel} object.
91       */
92      public ObservationUIModel getSurvey() {
93          return survey;
94      }
95  
96      /**
97       * <p>Setter for the field <code>survey</code>.</p>
98       *
99       * @param survey a {@link ObservationUIModel} object.
100      */
101     public void setSurvey(ObservationUIModel survey) {
102         this.survey = survey;
103         firePropertyChange(PROPERTY_SURVEY, null, survey);
104     }
105 
106     public ObservationUIHandler getObservationUIHandler() {
107         return observationHandler;
108     }
109 
110     public void setObservationHandler(ObservationUIHandler observationHandler) {
111         this.observationHandler = observationHandler;
112     }
113 
114     /**
115      * <p>getSamplingOperations.</p>
116      *
117      * @return a {@link List} object.
118      */
119     public List<SamplingOperationDTO> getSamplingOperations() {
120         return survey == null ? null : (List<SamplingOperationDTO>) survey.getSamplingOperations();
121     }
122 
123     /**
124      * <p>Setter for the field <code>measurementFilter</code>.</p>
125      *
126      * @param measurementFilter a {@link OperationMeasurementsFilter} object.
127      */
128     public void setMeasurementFilter(OperationMeasurementsFilter measurementFilter) {
129         this.measurementFilter = measurementFilter;
130         firePropertyChange(PROPERTY_MEASUREMENT_FILTER, null, measurementFilter);
131     }
132 
133     /**
134      * <p>getTaxonGroupFilter.</p>
135      *
136      * @return a {@link TaxonGroupDTO} object.
137      */
138     public TaxonGroupDTO getTaxonGroupFilter() {
139         return measurementFilter == null ? null : measurementFilter.getTaxonGroup();
140     }
141 
142     /**
143      * <p>getTaxonFilter.</p>
144      *
145      * @return a {@link TaxonDTO} object.
146      */
147     public TaxonDTO getTaxonFilter() {
148         return measurementFilter == null ? null : measurementFilter.getTaxon();
149     }
150 
151     /**
152      * <p>getSamplingFilter.</p>
153      *
154      * @return a {@link SamplingOperationDTO} object.
155      */
156     public SamplingOperationDTO getSamplingFilter() {
157         return measurementFilter == null ? null : measurementFilter.getSamplingOperation();
158     }
159 
160     /**
161      * <p>Getter for the field <code>uniquePmfms</code>.</p>
162      *
163      * @return a {@link List} object.
164      */
165     public List<PmfmDTO> getUniquePmfms() {
166         return uniquePmfms;
167     }
168 
169     /**
170      * <p>Setter for the field <code>uniquePmfms</code>.</p>
171      *
172      * @param uniquePmfms a {@link List} object.
173      */
174     public void setUniquePmfms(List<PmfmDTO> uniquePmfms) {
175         this.uniquePmfms = uniquePmfms;
176     }
177 
178     public Multimap<Integer, PreconditionRuleDTO> getPreconditionRulesByPmfmIdMap() {
179         if (preconditionRulesByPmfmIdMap == null) preconditionRulesByPmfmIdMap = ArrayListMultimap.create();
180         return preconditionRulesByPmfmIdMap;
181     }
182 
183     public void addPreconditionRuleByPmfmId(Integer pmfmId, PreconditionRuleDTO precondition) {
184         getPreconditionRulesByPmfmIdMap().put(pmfmId, precondition);
185     }
186 
187     public boolean isPmfmIdHasPreconditions(int pmfmId) {
188         return getPreconditionRulesByPmfmIdMap().containsKey(pmfmId);
189     }
190 
191     public Collection<PreconditionRuleDTO> getPreconditionRulesByPmfmId(int pmfmId) {
192         return getPreconditionRulesByPmfmIdMap().get(pmfmId);
193     }
194 
195     public boolean isAdjusting() {
196         return adjusting;
197     }
198 
199     public void setAdjusting(boolean adjusting) {
200         this.adjusting = adjusting;
201     }
202 
203     public boolean isMeasurementsLoaded() {
204         return measurementsLoaded;
205     }
206 
207     public void setMeasurementsLoaded(boolean measurementsLoaded) {
208         this.measurementsLoaded = measurementsLoaded;
209         firePropertyChange(PROPERTY_MEASUREMENTS_LOADED, null, measurementsLoaded);
210     }
211 
212 }