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