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 }