Skip to main content
summaryrefslogtreecommitdiffstats
blob: 87adbdccd4d84e36d71cbfe91ee4ad76635138f1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*******************************************************************************
 * Copyright (c) 2004, 2007 Boeing.
 * 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:
 *     Boeing - initial API and implementation
 *******************************************************************************/
package org.eclipse.osee.database.schema.internal.data;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
 * @author Roberto E. Escobar
 */
public class ForeignKey extends ConstraintElement {

   List<ReferenceClause> references;

   public ForeignKey(ConstraintTypes constraintType, String schema, String id, boolean deferrable) {
      super(constraintType, schema, id, deferrable);
      references = new ArrayList<ReferenceClause>();
   }

   public void addReference(ReferenceClause reference) {
      references.add(reference);
   }

   public List<ReferenceClause> getReferences() {
      return references;
   }

   public Set<String> getReferencedTables() {
      Set<String> refTables = new TreeSet<String>();
      for (ReferenceClause ref : references) {
         refTables.add(ref.getFullyQualifiedTableName());
      }
      return refTables;
   }

   @Override
   public String toString() {
      String toReturn = super.toString();
      for (ReferenceClause reference : references) {
         toReturn += "\n\t\t" + reference.toString();
      }
      return toReturn;
   }

   @Override
   public Element toXml(Document doc) {
      Element parent = super.toXml(doc);
      for (ReferenceClause reference : references) {
         parent.appendChild(reference.toXml(doc));
      }
      return parent;
   }
}

Back to the top