| /******************************************************************************* |
| * Copyright (c) 2006, 2008 Oracle. All rights reserved. |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v1.0, which accompanies this distribution |
| * and is available at http://www.eclipse.org/legal/epl-v10.html. |
| * |
| * Contributors: |
| * Oracle - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.jpt.gen.internal; |
| |
| import org.eclipse.jpt.db.ForeignKey; |
| import org.eclipse.jpt.utility.internal.StringTools; |
| |
| /** |
| * This object is shared by the two gen tables that make up the relation. |
| * Upon construction, 'mappedBy' will be 'null'. The first gen table to be |
| * used to generate an entity will fill in 'mappedBy' with the appropriate |
| * attribute (field/property) name. |
| */ |
| class ManyToManyRelation { |
| private final GenTable joinGenTable; |
| private final ForeignKey owningForeignKey; |
| private final GenTable owningGenTable; |
| private final ForeignKey nonOwningForeignKey; |
| private final GenTable nonOwningGenTable; |
| private String mappedBy; // set while generating entities |
| |
| |
| ManyToManyRelation( |
| GenTable joinGenTable, |
| ForeignKey owningForeignKey, |
| GenTable owningGenTable, |
| ForeignKey nonOwningForeignKey, |
| GenTable nonOwningGenTable |
| ) { |
| super(); |
| this.joinGenTable = joinGenTable; |
| |
| this.owningForeignKey = owningForeignKey; |
| this.owningGenTable = owningGenTable; |
| owningGenTable.addOwnedManyToManyRelation(this); |
| |
| this.nonOwningForeignKey = nonOwningForeignKey; |
| this.nonOwningGenTable = nonOwningGenTable; |
| nonOwningGenTable.addNonOwnedManyToManyRelation(this); |
| } |
| |
| GenTable getJoinGenTable() { |
| return this.joinGenTable; |
| } |
| |
| ForeignKey getOwningForeignKey() { |
| return this.owningForeignKey; |
| } |
| |
| GenTable getOwningGenTable() { |
| return this.owningGenTable; |
| } |
| |
| ForeignKey getNonOwningForeignKey() { |
| return this.nonOwningForeignKey; |
| } |
| |
| GenTable getNonOwningGenTable() { |
| return this.nonOwningGenTable; |
| } |
| |
| String getOwnedAttributeName() { |
| return this.nonOwningGenTable.getCollectionAttributeName(); |
| } |
| |
| String getNonOwnedAttributeName() { |
| return this.owningGenTable.getCollectionAttributeName(); |
| } |
| |
| /** |
| * the scope clears the join table relation if there are any references |
| * to the join table |
| */ |
| void clear() { |
| this.owningGenTable.removeOwnedManyToManyRelation(this); |
| this.nonOwningGenTable.removeNonOwnedManyToManyRelation(this); |
| } |
| |
| String getMappedBy() { |
| return this.mappedBy; |
| } |
| |
| void setMappedBy(String mappedBy) { |
| this.mappedBy = mappedBy; |
| } |
| |
| String getOwningEntityName() { |
| return this.owningGenTable.getEntityName(); |
| } |
| |
| String getNonOwningEntityName() { |
| return this.nonOwningGenTable.getEntityName(); |
| } |
| |
| boolean joinTableNameIsDefault() { |
| return this.joinGenTable.joinTableNameIsDefault(); |
| } |
| |
| @Override |
| public String toString() { |
| return StringTools.buildToStringFor(this, this.joinGenTable); |
| } |
| |
| } |