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 package com.healthmarketscience.jackcess;
29
30 import java.util.Collections;
31 import java.util.List;
32 import java.util.ArrayList;
33
34
35
36
37
38
39 public class Relationship {
40
41
42 private static final int ONE_TO_ONE_FLAG = 0x00000001;
43
44 private static final int NO_REFERENTIAL_INTEGRITY_FLAG = 0x00000002;
45
46 private static final int CASCADE_UPDATES_FLAG = 0x00000100;
47
48 private static final int CASCADE_DELETES_FLAG = 0x00001000;
49
50 private static final int LEFT_OUTER_JOIN_FLAG = 0x01000000;
51
52 private static final int RIGHT_OUTER_JOIN_FLAG = 0x02000000;
53
54
55 private final String _name;
56
57 private final Table _fromTable;
58
59 private final Table _toTable;
60
61
62 private List<Column> _toColumns;
63
64
65 private List<Column> _fromColumns;
66
67 private final int _flags;
68
69 public Relationship(String name, Table fromTable, Table toTable, int flags,
70 int numCols)
71 {
72 _name = name;
73 _fromTable = fromTable;
74 _fromColumns = new ArrayList<Column>(
75 Collections.nCopies(numCols, (Column)null));
76 _toTable = toTable;
77 _toColumns = new ArrayList<Column>(
78 Collections.nCopies(numCols, (Column)null));
79 _flags = flags;
80 }
81
82 public String getName() {
83 return _name;
84 }
85
86 public Table getFromTable() {
87 return _fromTable;
88 }
89
90 public List<Column> getFromColumns() {
91 return _fromColumns;
92 }
93
94 public Table getToTable() {
95 return _toTable;
96 }
97
98 public List<Column> getToColumns() {
99 return _toColumns;
100 }
101
102 public int getFlags() {
103 return _flags;
104 }
105
106 public boolean isOneToOne() {
107 return hasFlag(ONE_TO_ONE_FLAG);
108 }
109
110 public boolean hasReferentialIntegrity() {
111 return !hasFlag(NO_REFERENTIAL_INTEGRITY_FLAG);
112 }
113
114 public boolean cascadeUpdates() {
115 return hasFlag(CASCADE_UPDATES_FLAG);
116 }
117
118 public boolean cascadeDeletes() {
119 return hasFlag(CASCADE_DELETES_FLAG);
120 }
121
122 public boolean isLeftOuterJoin() {
123 return hasFlag(LEFT_OUTER_JOIN_FLAG);
124 }
125
126 public boolean isRightOuterJoin() {
127 return hasFlag(RIGHT_OUTER_JOIN_FLAG);
128 }
129
130 private boolean hasFlag(int flagMask) {
131 return((getFlags() & flagMask) != 0);
132 }
133
134 @Override
135 public String toString() {
136 StringBuilder rtn = new StringBuilder();
137 rtn.append("\tName: " + _name);
138 rtn.append("\n\tFromTable: " + _fromTable.getName());
139 rtn.append("\n\tFromColumns: " + _fromColumns);
140 rtn.append("\n\tToTable: " + _toTable.getName());
141 rtn.append("\n\tToColumns: " + _toColumns);
142 rtn.append("\n\tFlags: " + Integer.toHexString(_flags));
143 rtn.append("\n\n");
144 return rtn.toString();
145 }
146
147 }