001// license-header java merge-point 002// 003// Attention: Generated code! Do not modify by hand! 004// Generated by: hibernate/HibernateEntity.vsl in andromda-hibernate-cartridge. 005// 006package fr.ifremer.adagio.core.dao.data.link; 007 008/* 009 * #%L 010 * SIH-Adagio :: Core 011 * $Id:$ 012 * $HeadURL:$ 013 * %% 014 * Copyright (C) 2012 - 2014 Ifremer 015 * %% 016 * This program is free software: you can redistribute it and/or modify 017 * it under the terms of the GNU Affero General Public License as published by 018 * the Free Software Foundation, either version 3 of the License, or 019 * (at your option) any later version. 020 * 021 * This program is distributed in the hope that it will be useful, 022 * but WITHOUT ANY WARRANTY; without even the implied warranty of 023 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 024 * GNU General Public License for more details. 025 * 026 * You should have received a copy of the GNU Affero General Public License 027 * along with this program. If not, see <http://www.gnu.org/licenses/>. 028 * #L% 029 */ 030 031import fr.ifremer.adagio.core.dao.referential.LinkedItemType; 032import fr.ifremer.adagio.core.dao.referential.QualityFlag; 033import java.io.Serializable; 034import java.sql.Timestamp; 035import java.util.Date; 036 037/** 038 * <html> 039 * <head> 040 * <style> 041 * p {padding:0px; margin:0px;} 042 * </style> 043 * </head> 044 * <body> 045 * <p> 046 * Rapprochement d'une entité d'un type donné à une autre, qui peut etre ou 047 * non du meme type. 048 * </p> 049 * <p> 050 * </p> 051 * <p> 052 * Cette classe permet de gérer des objets ayant un identifiant numérique (<i>objectId</i>) 053 * ou un code alphanumérique (<i>objectCode - exemple : Vessel</i>). 054 * L'utilisiation du code ou de l'identifiant est exclusive. 055 * </p> 056 * <p> 057 * </p> 058 * <p> 059 * Un rapprochement peut avoir une période de validité (Optionnel). 060 * </p> 061 * <p> 062 * </p> 063 * <p> 064 * Exemple d'utilisation : A partir des données VMS, on récupère des 065 * informations de navire (Pavillon, nom, dates, etc.) stockées sous la 066 * forme d'un navire (Vessel + VesselRegistrationPeriod, etc); après 067 * chargement des données VMS, un outil de rapprochement permet de 068 * retrouver (ou pas) le navire du fichier flotte national correspondant. 069 * La correspondance trouvée est stockée dans <i>LinkedItem</i>. 070 * A l'exportation des données VMS depuis Adagio, cela permet de restituer 071 * les informations sur le navire telle que présentes dans le flux VMS 072 * d'origine. 073 * </p> 074 * </body> 075 * </html> 076 */ 077// HibernateEntity.vsl annotations merge-point 078public abstract class LinkedItem 079 implements Serializable, Comparable<LinkedItem> 080{ 081 /** 082 * The serial version UID of this class. Needed for serialization. 083 */ 084 private static final long serialVersionUID = 9060531832458899533L; 085 086 // Generate 8 attributes 087 private Integer id; 088 089 /** 090 * Idenfiant interne. Généré par le système. 091 * @return this.id Integer 092 */ 093 public Integer getId() 094 { 095 return this.id; 096 } 097 098 /** 099 * Idenfiant interne. Généré par le système. 100 * @param idIn Integer 101 */ 102 public void setId(Integer idIn) 103 { 104 this.id = idIn; 105 } 106 107 private Integer fromObjectId; 108 109 /** 110 * <html> 111 * <head> 112 * </head> 113 * <body> 114 * <p> 115 * Identifiant interne d'une des deux entités rapprochées. 116 * </p> 117 * <p> 118 * Le type d'entité doit correspondre à celui défini dans 119 * <i>LinkedItemType.fromObjectType</i>. 120 * </p> 121 * </body> 122 * </html> 123 * @return this.fromObjectId Integer 124 */ 125 public Integer getFromObjectId() 126 { 127 return this.fromObjectId; 128 } 129 130 /** 131 * <html> 132 * <head> 133 * </head> 134 * <body> 135 * <p> 136 * Identifiant interne d'une des deux entités rapprochées. 137 * </p> 138 * <p> 139 * Le type d'entité doit correspondre à celui défini dans 140 * <i>LinkedItemType.fromObjectType</i>. 141 * </p> 142 * </body> 143 * </html> 144 * @param fromObjectIdIn Integer 145 */ 146 public void setFromObjectId(Integer fromObjectIdIn) 147 { 148 this.fromObjectId = fromObjectIdIn; 149 } 150 151 private String fromObjectCode; 152 153 /** 154 * 155 * @return this.fromObjectCode String 156 */ 157 public String getFromObjectCode() 158 { 159 return this.fromObjectCode; 160 } 161 162 /** 163 * 164 * @param fromObjectCodeIn String 165 */ 166 public void setFromObjectCode(String fromObjectCodeIn) 167 { 168 this.fromObjectCode = fromObjectCodeIn; 169 } 170 171 private Integer toObjectId; 172 173 /** 174 * <html> 175 * <head> 176 * </head> 177 * <body> 178 * <p> 179 * Identifiant interne d'une des deux entités rapprochées. 180 * </p> 181 * <p> 182 * Le type d'entité doit correspondre à celui défini dans 183 * <i>LinkedItemType.toObjectType</i>. 184 * </p> 185 * </body> 186 * </html> 187 * @return this.toObjectId Integer 188 */ 189 public Integer getToObjectId() 190 { 191 return this.toObjectId; 192 } 193 194 /** 195 * <html> 196 * <head> 197 * </head> 198 * <body> 199 * <p> 200 * Identifiant interne d'une des deux entités rapprochées. 201 * </p> 202 * <p> 203 * Le type d'entité doit correspondre à celui défini dans 204 * <i>LinkedItemType.toObjectType</i>. 205 * </p> 206 * </body> 207 * </html> 208 * @param toObjectIdIn Integer 209 */ 210 public void setToObjectId(Integer toObjectIdIn) 211 { 212 this.toObjectId = toObjectIdIn; 213 } 214 215 private String toObjectCode; 216 217 /** 218 * 219 * @return this.toObjectCode String 220 */ 221 public String getToObjectCode() 222 { 223 return this.toObjectCode; 224 } 225 226 /** 227 * 228 * @param toObjectCodeIn String 229 */ 230 public void setToObjectCode(String toObjectCodeIn) 231 { 232 this.toObjectCode = toObjectCodeIn; 233 } 234 235 private Date startDate; 236 237 /** 238 * Date de début de validité du rapprochement (optionnel). 239 * @return this.startDate Date 240 */ 241 public Date getStartDate() 242 { 243 return this.startDate; 244 } 245 246 /** 247 * Date de début de validité du rapprochement (optionnel). 248 * @param startDateIn Date 249 */ 250 public void setStartDate(Date startDateIn) 251 { 252 this.startDate = startDateIn; 253 } 254 255 private Date endDate; 256 257 /** 258 * Date de fin de validité du rapprochement (optionnel). 259 * Doit être vide, si startDate est vide. 260 * @return this.endDate Date 261 */ 262 public Date getEndDate() 263 { 264 return this.endDate; 265 } 266 267 /** 268 * Date de fin de validité du rapprochement (optionnel). 269 * Doit être vide, si startDate est vide. 270 * @param endDateIn Date 271 */ 272 public void setEndDate(Date endDateIn) 273 { 274 this.endDate = endDateIn; 275 } 276 277 private Timestamp updateDate; 278 279 /** 280 * Date de dernière modification (Mise à jour automatiquement par le système). 281 * @return this.updateDate Timestamp 282 */ 283 public Timestamp getUpdateDate() 284 { 285 return this.updateDate; 286 } 287 288 /** 289 * Date de dernière modification (Mise à jour automatiquement par le système). 290 * @param updateDateIn Timestamp 291 */ 292 public void setUpdateDate(Timestamp updateDateIn) 293 { 294 this.updateDate = updateDateIn; 295 } 296 297 // Generate 2 associations 298 private QualityFlag qualityFlag; 299 300 /** 301 * <html> 302 * <head> 303 * <style> 304 * p {padding:0px; margin:0px;} 305 * </style> 306 * </head> 307 * <body> 308 * <p> 309 * Pour les besoins du rapprochement des navires VMS avec le référentiel 310 * consolidé des navires (mantis #13782), le flag qualité dans la 311 * table LINKED_ITEM permet d'identifier la qualité du rapprochement : 312 * </p> 313 * <p> 314 * - rapprochement complet : même navire + périodes chevauchantes 315 * </p> 316 * <p> 317 * - rapprochement partiel : même navire mais périodes non chevauchantes 318 * (on reçoit des flux VMS quotidien mais des flux navires trimestriels) 319 * </p> 320 * </body> 321 * </html> 322 * @return this.qualityFlag QualityFlag 323 */ 324 public QualityFlag getQualityFlag() 325 { 326 return this.qualityFlag; 327 } 328 329 /** 330 * <html> 331 * <head> 332 * <style> 333 * p {padding:0px; margin:0px;} 334 * </style> 335 * </head> 336 * <body> 337 * <p> 338 * Pour les besoins du rapprochement des navires VMS avec le référentiel 339 * consolidé des navires (mantis #13782), le flag qualité dans la 340 * table LINKED_ITEM permet d'identifier la qualité du rapprochement : 341 * </p> 342 * <p> 343 * - rapprochement complet : même navire + périodes chevauchantes 344 * </p> 345 * <p> 346 * - rapprochement partiel : même navire mais périodes non chevauchantes 347 * (on reçoit des flux VMS quotidien mais des flux navires trimestriels) 348 * </p> 349 * </body> 350 * </html> 351 * @param qualityFlagIn QualityFlag 352 */ 353 public void setQualityFlag(QualityFlag qualityFlagIn) 354 { 355 this.qualityFlag = qualityFlagIn; 356 } 357 358 private LinkedItemType linkedItemType; 359 360 /** 361 * Type de rapprochement effectué. 362 * Le type de rapprochement défini les types d'entités mis en jeux dans le rapprochement. 363 * @return this.linkedItemType LinkedItemType 364 */ 365 public LinkedItemType getLinkedItemType() 366 { 367 return this.linkedItemType; 368 } 369 370 /** 371 * Type de rapprochement effectué. 372 * Le type de rapprochement défini les types d'entités mis en jeux dans le rapprochement. 373 * @param linkedItemTypeIn LinkedItemType 374 */ 375 public void setLinkedItemType(LinkedItemType linkedItemTypeIn) 376 { 377 this.linkedItemType = linkedItemTypeIn; 378 } 379 380 /** 381 * Returns <code>true</code> if the argument is an LinkedItem instance and all identifiers for this entity 382 * equal the identifiers of the argument entity. Returns <code>false</code> otherwise. 383 */ 384 @Override 385 public boolean equals(Object object) 386 { 387 if (this == object) 388 { 389 return true; 390 } 391 if (!(object instanceof LinkedItem)) 392 { 393 return false; 394 } 395 final LinkedItem that = (LinkedItem)object; 396 if (this.id == null || that.getId() == null || !this.id.equals(that.getId())) 397 { 398 return false; 399 } 400 return true; 401 } 402 403 /** 404 * Returns a hash code based on this entity's identifiers. 405 */ 406 @Override 407 public int hashCode() 408 { 409 int hashCode = 0; 410 hashCode = 29 * hashCode + (this.id == null ? 0 : this.id.hashCode()); 411 412 return hashCode; 413 } 414 415 /** 416 * Constructs new instances of {@link LinkedItem}. 417 */ 418 public static final class Factory 419 { 420 /** 421 * Constructs a new instance of {@link LinkedItem}. 422 * @return new LinkedItemImpl() 423 */ 424 public static LinkedItem newInstance() 425 { 426 return new LinkedItemImpl(); 427 } 428 429 /** 430 * Constructs a new instance of {@link LinkedItem}, taking all required and/or 431 * read-only properties as arguments, except for identifiers. 432 * @param updateDate Timestamp 433 * @param qualityFlag QualityFlag 434 * @param linkedItemType LinkedItemType 435 * @return newInstance 436 */ 437 public static LinkedItem newInstance(Timestamp updateDate, QualityFlag qualityFlag, LinkedItemType linkedItemType) 438 { 439 final LinkedItem entity = new LinkedItemImpl(); 440 entity.setUpdateDate(updateDate); 441 entity.setQualityFlag(qualityFlag); 442 entity.setLinkedItemType(linkedItemType); 443 return entity; 444 } 445 446 /** 447 * Constructs a new instance of {@link LinkedItem}, taking all possible properties 448 * (except the identifier(s))as arguments. 449 * @param fromObjectId Integer 450 * @param fromObjectCode String 451 * @param toObjectId Integer 452 * @param toObjectCode String 453 * @param startDate Date 454 * @param endDate Date 455 * @param updateDate Timestamp 456 * @param qualityFlag QualityFlag 457 * @param linkedItemType LinkedItemType 458 * @return newInstance LinkedItem 459 */ 460 public static LinkedItem newInstance(Integer fromObjectId, String fromObjectCode, Integer toObjectId, String toObjectCode, Date startDate, Date endDate, Timestamp updateDate, QualityFlag qualityFlag, LinkedItemType linkedItemType) 461 { 462 final LinkedItem entity = new LinkedItemImpl(); 463 entity.setFromObjectId(fromObjectId); 464 entity.setFromObjectCode(fromObjectCode); 465 entity.setToObjectId(toObjectId); 466 entity.setToObjectCode(toObjectCode); 467 entity.setStartDate(startDate); 468 entity.setEndDate(endDate); 469 entity.setUpdateDate(updateDate); 470 entity.setQualityFlag(qualityFlag); 471 entity.setLinkedItemType(linkedItemType); 472 return entity; 473 } 474 } 475 476 /** 477 * @see Comparable#compareTo 478 */ 479 public int compareTo(LinkedItem o) 480 { 481 int cmp = 0; 482 if (this.getId() != null) 483 { 484 cmp = this.getId().compareTo(o.getId()); 485 } 486 else 487 { 488 if (this.getFromObjectId() != null) 489 { 490 cmp = (cmp != 0 ? cmp : this.getFromObjectId().compareTo(o.getFromObjectId())); 491 } 492 if (this.getFromObjectCode() != null) 493 { 494 cmp = (cmp != 0 ? cmp : this.getFromObjectCode().compareTo(o.getFromObjectCode())); 495 } 496 if (this.getToObjectId() != null) 497 { 498 cmp = (cmp != 0 ? cmp : this.getToObjectId().compareTo(o.getToObjectId())); 499 } 500 if (this.getToObjectCode() != null) 501 { 502 cmp = (cmp != 0 ? cmp : this.getToObjectCode().compareTo(o.getToObjectCode())); 503 } 504 if (this.getStartDate() != null) 505 { 506 cmp = (cmp != 0 ? cmp : this.getStartDate().compareTo(o.getStartDate())); 507 } 508 if (this.getEndDate() != null) 509 { 510 cmp = (cmp != 0 ? cmp : this.getEndDate().compareTo(o.getEndDate())); 511 } 512 if (this.getUpdateDate() != null) 513 { 514 cmp = (cmp != 0 ? cmp : this.getUpdateDate().compareTo(o.getUpdateDate())); 515 } 516 } 517 return cmp; 518 } 519// HibernateEntity.vsl merge-point 520// LinkedItem.java merge-point 521}