1 package de.fhdw.wtf.persistence.meta; 2 3 /** 4 * A class to represent an association between an owning user type and a object. 5 * 6 */ 7 public abstract class Association extends ModelItem { 8 9 /** 10 * The Owning side of the association. 11 */ 12 private final UserType owner; 13 14 /** 15 * 16 * The target side of the association. 17 */ 18 private final Type target; 19 20 /** 21 * A boolean flag, indicating whether a modification of the objects, which are instances of this association should 22 * be affecting the owner of this association. 23 */ 24 private final boolean essential; 25 26 /** 27 * A boolean flag indicating whether this association is set-valued. If it is false it is possible to have more than 28 * links, which are instance of this and have the same owner. 29 */ 30 private final boolean unique; 31 32 /** 33 * Getter for essential. 34 * 35 * @return Provides true whether this association has an essential flag. 36 */ 37 public boolean isEssential() { 38 return this.essential; 39 } 40 41 /** 42 * Getter for unique. 43 * 44 * @return Provides true whether this association has an unique flag. 45 */ 46 public boolean isUnique() { 47 return this.unique; 48 } 49 50 /** 51 * Getter for the owner of the association. 52 * 53 * @return Provides the owner type of the association. 54 */ 55 public UserType getOwner() { 56 return this.owner; 57 } 58 59 /** 60 * Getter for the target of the association. 61 * 62 * @return Provides the target type of the association. 63 */ 64 public Type getTarget() { 65 return this.target; 66 } 67 68 /** 69 * Constructor for a new association. It should only be calles by the class facade or unit tests because the Ids are 70 * provided by the database. 71 * 72 * @param id 73 * The Id of the association in the database. 74 * @param name 75 * The name of the UnidirectionalAssociation. 76 * @param owner 77 * The Owner type of the association. 78 * @param target 79 * The target type of the association. 80 * @param essential 81 * A flag indicating whether this association essential- 82 * @param unique 83 * A flag indicating whether the association is set-valued or not. 84 */ 85 public Association(final long id, 86 final String name, 87 final UserType owner, 88 final Type target, 89 final boolean essential, 90 final boolean unique) { 91 super(id, name); 92 this.owner = owner; 93 this.target = target; 94 this.essential = essential; 95 this.unique = unique; 96 } 97 98 @Override 99 public boolean isTheSameAs(final java.lang.Object other) { 100 if (!(other instanceof Association)) { 101 return false; 102 } 103 104 final Association asso = (Association) other; 105 106 // id because owner/target(/key) takes to long time and the id is unique for all associations. 107 return this.getId() == asso.getId(); 108 } 109 110 }