View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: Generated code! Do not modify by hand!
4   // Generated by: hibernate/HibernateEntity.vsl in andromda-hibernate-cartridge.
5   //
6   package fr.ifremer.quadrige2.core.dao.administration.strategy;
7   
8   /*-
9    * #%L
10   * Quadrige2 Core :: Server API
11   * %%
12   * Copyright (C) 2017 Ifremer
13   * %%
14   * This program is free software: you can redistribute it and/or modify
15   * it under the terms of the GNU Affero General Public License as published by
16   * the Free Software Foundation, either version 3 of the License, or
17   * (at your option) any later version.
18   * 
19   * This program is distributed in the hope that it will be useful,
20   * but WITHOUT ANY WARRANTY; without even the implied warranty of
21   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22   * GNU General Public License for more details.
23   * 
24   * You should have received a copy of the GNU Affero General Public License
25   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
26   * #L%
27   */
28  
29  import fr.ifremer.quadrige2.core.dao.administration.user.Department;
30  import fr.ifremer.quadrige2.core.dao.referential.Frequency;
31  import fr.ifremer.quadrige2.core.dao.referential.monitoringLocation.MonitoringLocation;
32  import fr.ifremer.quadrige2.core.dao.referential.taxon.ReferenceTaxon;
33  import fr.ifremer.quadrige2.core.dao.referential.taxon.TaxonGroup;
34  import java.io.Serializable;
35  import java.sql.Timestamp;
36  import java.util.Collection;
37  import java.util.HashSet;
38  
39  /**
40   * Identifie les conditions d'application locale de la stratégie pour une période donnée.
41   */
42  // HibernateEntity.vsl annotations merge-point
43  public abstract class AppliedStrategy
44      implements Serializable, Comparable<AppliedStrategy>
45  {
46      /**
47       * The serial version UID of this class. Needed for serialization.
48       */
49      private static final long serialVersionUID = -4588146578960943350L;
50  
51      // Generate 2 attributes
52      private Integer appliedStratId;
53  
54      /**
55       * 
56       * @return this.appliedStratId Integer
57       */
58      public Integer getAppliedStratId()
59      {
60          return this.appliedStratId;
61      }
62  
63      /**
64       * 
65       * @param appliedStratIdIn Integer
66       */
67      public void setAppliedStratId(Integer appliedStratIdIn)
68      {
69          this.appliedStratId = appliedStratIdIn;
70      }
71  
72      private Timestamp updateDt;
73  
74      /**
75       * Date de modification de l'objet, mise à jour par le système
76       * @return this.updateDt Timestamp
77       */
78      public Timestamp getUpdateDt()
79      {
80          return this.updateDt;
81      }
82  
83      /**
84       * Date de modification de l'objet, mise à jour par le système
85       * @param updateDtIn Timestamp
86       */
87      public void setUpdateDt(Timestamp updateDtIn)
88      {
89          this.updateDt = updateDtIn;
90      }
91  
92      // Generate 8 associations
93      private TaxonGroup taxonGroup;
94  
95      /**
96       * Liste l'ensemble de taxons ayant les mêmes caractéristiques pour le critère pris en compte.
97       * @return this.taxonGroup TaxonGroup
98       */
99      public TaxonGroup getTaxonGroup()
100     {
101         return this.taxonGroup;
102     }
103 
104     /**
105      * Liste l'ensemble de taxons ayant les mêmes caractéristiques pour le critère pris en compte.
106      * @param taxonGroupIn TaxonGroup
107      */
108     public void setTaxonGroup(TaxonGroup taxonGroupIn)
109     {
110         this.taxonGroup = taxonGroupIn;
111     }
112 
113     private ReferenceTaxon referenceTaxon;
114 
115     /**
116      * Liste des taxons qui sont la référence.
117      * l'ID référent est indépendant des ID taxon car les taxons peuvent être référents à un moment
118      * et ne
119      * plus l'être par la suite.
120      * Toutes les données du système doivent donc être reliées au référent et non au taxon qui sont
121      * référents à un moment mais ne peuvent plus l'être par la suite.
122      * Le fonctionnement dans la table TAXON_NAME est le suivant :
123      * - REF_TAXON_ID est toujours renseigné
124      * - si TAXON_NAME_IS_REFER est à vrai, il s'agit d'un taxon référent (toujours le cas s'il
125      * s'agit d'un
126      * taxon virtuel)
127      * - sinon c'est un synonyme
128      * Un taxon référent qui devient synonyme voit donc son statut TAXON_NAME_IS_REFER changer et le
129      * nouveau taxon référent qui le remplace récupère l'information REF_TAXON_ID
130      * NB : c'était le comportement initialement prévu.
131      * En réalité, lorsqu'un taxon référent T1-R1 devient synonyme d'un nouveau taxon référent T2,
132      * le taxon
133      * T2 prend un nouveau code référent R2 et donc le taxon T1 est lié à R2 (et tous les synonymes
134      * et les
135      * résultats qu'il pouvait avoir).
136      * Ce mécanisme a été adopté car il fallait distinguer 2 cas :
137      * 1- cas d'un taxon référent T1-R1 qui devient synonyme d'un référent qu'on crée T2 : on aurait
138      * alors
139      * pu utiliser le même REF_TAXON_ID R1 au lieu d'en créer un et ne pas mettre à jour les autres
140      * synonymes, résultats...
141      * 2- cas d'un taxon référent T1-R1 qui devient synonyme d'un référent qui existe déjà T2-R2 (et
142      * qui
143      * aurait déjà d'autres synonymes, résultats...), dans ce cas le remplacement de la référence R1
144      * pour
145      * R2 est nécessaire
146      * La modélisation pourrait être revue car la table REFENCE_TAXON ne se justifie alors plus, on
147      * pourrait directement utiliser une référence à la colonne TAXON_NAME_ID pour désigner les
148      * référents
149      * @return this.referenceTaxon ReferenceTaxon
150      */
151     public ReferenceTaxon getReferenceTaxon()
152     {
153         return this.referenceTaxon;
154     }
155 
156     /**
157      * Liste des taxons qui sont la référence.
158      * l'ID référent est indépendant des ID taxon car les taxons peuvent être référents à un moment
159      * et ne
160      * plus l'être par la suite.
161      * Toutes les données du système doivent donc être reliées au référent et non au taxon qui sont
162      * référents à un moment mais ne peuvent plus l'être par la suite.
163      * Le fonctionnement dans la table TAXON_NAME est le suivant :
164      * - REF_TAXON_ID est toujours renseigné
165      * - si TAXON_NAME_IS_REFER est à vrai, il s'agit d'un taxon référent (toujours le cas s'il
166      * s'agit d'un
167      * taxon virtuel)
168      * - sinon c'est un synonyme
169      * Un taxon référent qui devient synonyme voit donc son statut TAXON_NAME_IS_REFER changer et le
170      * nouveau taxon référent qui le remplace récupère l'information REF_TAXON_ID
171      * NB : c'était le comportement initialement prévu.
172      * En réalité, lorsqu'un taxon référent T1-R1 devient synonyme d'un nouveau taxon référent T2,
173      * le taxon
174      * T2 prend un nouveau code référent R2 et donc le taxon T1 est lié à R2 (et tous les synonymes
175      * et les
176      * résultats qu'il pouvait avoir).
177      * Ce mécanisme a été adopté car il fallait distinguer 2 cas :
178      * 1- cas d'un taxon référent T1-R1 qui devient synonyme d'un référent qu'on crée T2 : on aurait
179      * alors
180      * pu utiliser le même REF_TAXON_ID R1 au lieu d'en créer un et ne pas mettre à jour les autres
181      * synonymes, résultats...
182      * 2- cas d'un taxon référent T1-R1 qui devient synonyme d'un référent qui existe déjà T2-R2 (et
183      * qui
184      * aurait déjà d'autres synonymes, résultats...), dans ce cas le remplacement de la référence R1
185      * pour
186      * R2 est nécessaire
187      * La modélisation pourrait être revue car la table REFENCE_TAXON ne se justifie alors plus, on
188      * pourrait directement utiliser une référence à la colonne TAXON_NAME_ID pour désigner les
189      * référents
190      * @param referenceTaxonIn ReferenceTaxon
191      */
192     public void setReferenceTaxon(ReferenceTaxon referenceTaxonIn)
193     {
194         this.referenceTaxon = referenceTaxonIn;
195     }
196 
197     private Collection<AppliedPeriod> appliedPeriods = new HashSet<AppliedPeriod>();
198 
199     /**
200      * Liste des périodes durant lesquels une stratégie est appliquée en un lieu.
201      * @return this.appliedPeriods Collection<AppliedPeriod>
202      */
203     public Collection<AppliedPeriod> getAppliedPeriods()
204     {
205         return this.appliedPeriods;
206     }
207 
208     /**
209      * Liste des périodes durant lesquels une stratégie est appliquée en un lieu.
210      * @param appliedPeriodsIn Collection<AppliedPeriod>
211      */
212     public void setAppliedPeriods(Collection<AppliedPeriod> appliedPeriodsIn)
213     {
214         this.appliedPeriods = appliedPeriodsIn;
215     }
216 
217     /**
218      * Liste des périodes durant lesquels une stratégie est appliquée en un lieu.
219      * @param elementToAdd AppliedPeriod
220      * @return <tt>true</tt> if this collection changed as a result of the
221      *         call
222      */
223     public boolean addAppliedPeriods(AppliedPeriod elementToAdd)
224     {
225         return this.appliedPeriods.add(elementToAdd);
226     }
227 
228     /**
229      * Liste des périodes durant lesquels une stratégie est appliquée en un lieu.
230      * @param elementToRemove AppliedPeriod
231      * @return <tt>true</tt> if this collection changed as a result of the
232      *         call
233      */
234     public boolean removeAppliedPeriods(AppliedPeriod elementToRemove)
235     {
236         return this.appliedPeriods.remove(elementToRemove);
237     }
238 
239     private MonitoringLocation monitoringLocation;
240 
241     /**
242      * Liste les lieux associés aux programmes de surveillance.
243      * @return this.monitoringLocation MonitoringLocation
244      */
245     public MonitoringLocation getMonitoringLocation()
246     {
247         return this.monitoringLocation;
248     }
249 
250     /**
251      * Liste les lieux associés aux programmes de surveillance.
252      * @param monitoringLocationIn MonitoringLocation
253      */
254     public void setMonitoringLocation(MonitoringLocation monitoringLocationIn)
255     {
256         this.monitoringLocation = monitoringLocationIn;
257     }
258 
259     private Strategy strategy;
260 
261     /**
262      * Définie les paramètres à mesurer dans un programme particulier.
263      * @return this.strategy Strategy
264      */
265     public Strategy getStrategy()
266     {
267         return this.strategy;
268     }
269 
270     /**
271      * Définie les paramètres à mesurer dans un programme particulier.
272      * @param strategyIn Strategy
273      */
274     public void setStrategy(Strategy strategyIn)
275     {
276         this.strategy = strategyIn;
277     }
278 
279     private Frequency frequency;
280 
281     /**
282      * Liste des fréquences d'application des stratégies.
283      * @return this.frequency Frequency
284      */
285     public Frequency getFrequency()
286     {
287         return this.frequency;
288     }
289 
290     /**
291      * Liste des fréquences d'application des stratégies.
292      * @param frequencyIn Frequency
293      */
294     public void setFrequency(Frequency frequencyIn)
295     {
296         this.frequency = frequencyIn;
297     }
298 
299     private Department department;
300 
301     /**
302      * Liste les départements ou services auxquels sont rattachés les agents
303      * @return this.department Department
304      */
305     public Department getDepartment()
306     {
307         return this.department;
308     }
309 
310     /**
311      * Liste les départements ou services auxquels sont rattachés les agents
312      * @param departmentIn Department
313      */
314     public void setDepartment(Department departmentIn)
315     {
316         this.department = departmentIn;
317     }
318 
319     private Collection<PmfmAppliedStrategy> pmfmAppliedStrategies = new HashSet<PmfmAppliedStrategy>();
320 
321     /**
322      * PMSF associés à une stratégie pour un lieu données.
323      * @return this.pmfmAppliedStrategies Collection<PmfmAppliedStrategy>
324      */
325     public Collection<PmfmAppliedStrategy> getPmfmAppliedStrategies()
326     {
327         return this.pmfmAppliedStrategies;
328     }
329 
330     /**
331      * PMSF associés à une stratégie pour un lieu données.
332      * @param pmfmAppliedStrategiesIn Collection<PmfmAppliedStrategy>
333      */
334     public void setPmfmAppliedStrategies(Collection<PmfmAppliedStrategy> pmfmAppliedStrategiesIn)
335     {
336         this.pmfmAppliedStrategies = pmfmAppliedStrategiesIn;
337     }
338 
339     /**
340      * PMSF associés à une stratégie pour un lieu données.
341      * @param elementToAdd PmfmAppliedStrategy
342      * @return <tt>true</tt> if this collection changed as a result of the
343      *         call
344      */
345     public boolean addPmfmAppliedStrategies(PmfmAppliedStrategy elementToAdd)
346     {
347         return this.pmfmAppliedStrategies.add(elementToAdd);
348     }
349 
350     /**
351      * PMSF associés à une stratégie pour un lieu données.
352      * @param elementToRemove PmfmAppliedStrategy
353      * @return <tt>true</tt> if this collection changed as a result of the
354      *         call
355      */
356     public boolean removePmfmAppliedStrategies(PmfmAppliedStrategy elementToRemove)
357     {
358         return this.pmfmAppliedStrategies.remove(elementToRemove);
359     }
360 
361     /**
362      * Returns <code>true</code> if the argument is an AppliedStrategy instance and all identifiers for this entity
363      * equal the identifiers of the argument entity. Returns <code>false</code> otherwise.
364      */
365     @Override
366     public boolean equals(Object object)
367     {
368         if (this == object)
369         {
370             return true;
371         }
372         if (!(object instanceof AppliedStrategy))
373         {
374             return false;
375         }
376         final AppliedStrategy that = (AppliedStrategy)object;
377         if (this.appliedStratId == null || that.getAppliedStratId() == null || !this.appliedStratId.equals(that.getAppliedStratId()))
378         {
379             return false;
380         }
381         return true;
382     }
383 
384     /**
385      * Returns a hash code based on this entity's identifiers.
386      */
387     @Override
388     public int hashCode()
389     {
390         int hashCode = 0;
391         hashCode = 29 * hashCode + (this.appliedStratId == null ? 0 : this.appliedStratId.hashCode());
392 
393         return hashCode;
394     }
395 
396     /**
397      * Constructs new instances of {@link AppliedStrategy}.
398      */
399     public static final class Factory
400     {
401         /**
402          * Constructs a new instance of {@link AppliedStrategy}.
403          * @return new AppliedStrategyImpl()
404          */
405         public static AppliedStrategy newInstance()
406         {
407             return new AppliedStrategyImpl();
408         }
409 
410         /**
411          * Constructs a new instance of {@link AppliedStrategy}, taking all required and/or
412          * read-only properties as arguments, except for identifiers.
413          * @param updateDt Timestamp
414          * @param monitoringLocation MonitoringLocation
415          * @param strategy Strategy
416          * @return newInstance
417          */
418         public static AppliedStrategy newInstance(Timestamp updateDt, MonitoringLocation monitoringLocation, Strategy strategy)
419         {
420             final AppliedStrategy entity = new AppliedStrategyImpl();
421             entity.setUpdateDt(updateDt);
422             entity.setMonitoringLocation(monitoringLocation);
423             entity.setStrategy(strategy);
424             return entity;
425         }
426 
427         /**
428          * Constructs a new instance of {@link AppliedStrategy}, taking all possible properties
429          * (except the identifier(s))as arguments.
430          * @param updateDt Timestamp
431          * @param taxonGroup TaxonGroup
432          * @param referenceTaxon ReferenceTaxon
433          * @param appliedPeriods Collection<AppliedPeriod>
434          * @param monitoringLocation MonitoringLocation
435          * @param strategy Strategy
436          * @param frequency Frequency
437          * @param department Department
438          * @param pmfmAppliedStrategies Collection<PmfmAppliedStrategy>
439          * @return newInstance AppliedStrategy
440          */
441         public static AppliedStrategy newInstance(Timestamp updateDt, TaxonGroup taxonGroup, ReferenceTaxon referenceTaxon, Collection<AppliedPeriod> appliedPeriods, MonitoringLocation monitoringLocation, Strategy strategy, Frequency frequency, Department department, Collection<PmfmAppliedStrategy> pmfmAppliedStrategies)
442         {
443             final AppliedStrategy entity = new AppliedStrategyImpl();
444             entity.setUpdateDt(updateDt);
445             entity.setTaxonGroup(taxonGroup);
446             entity.setReferenceTaxon(referenceTaxon);
447             entity.setAppliedPeriods(appliedPeriods);
448             entity.setMonitoringLocation(monitoringLocation);
449             entity.setStrategy(strategy);
450             entity.setFrequency(frequency);
451             entity.setDepartment(department);
452             entity.setPmfmAppliedStrategies(pmfmAppliedStrategies);
453             return entity;
454         }
455     }
456 
457     /**
458      * @see Comparable#compareTo
459      */
460     public int compareTo(AppliedStrategy o)
461     {
462         int cmp = 0;
463         if (this.getAppliedStratId() != null)
464         {
465             cmp = this.getAppliedStratId().compareTo(o.getAppliedStratId());
466         }
467         else
468         {
469             if (this.getUpdateDt() != null)
470             {
471                 cmp = (cmp != 0 ? cmp : this.getUpdateDt().compareTo(o.getUpdateDt()));
472             }
473         }
474         return cmp;
475     }
476 // HibernateEntity.vsl merge-point
477 // AppliedStrategy.java merge-point
478 }