2
* $Id: PgConstraint.java 80 2007-09-01 20:25:45Z fordfrog $
4
package cz.startnet.utils.pgdiff.schema;
6
import cz.startnet.utils.pgdiff.PgDiffUtils;
8
import java.util.regex.Pattern;
12
* Stores table constraint information.
15
* @version $Id: PgConstraint.java 80 2007-09-01 20:25:45Z fordfrog $
17
public class PgConstraint {
19
* Pattern for checking whether the constraint is PRIMARY KEY
22
private static final Pattern PATTERN_PRIMARY_KEY =
23
Pattern.compile(".*PRIMARY[\\s]+KEY.*", Pattern.CASE_INSENSITIVE);
26
* Definition of the constraint.
28
private String definition;
31
* Name of the constraint.
36
* Name of the table the constraint is defined on.
38
private String tableName;
41
* Creates a new PgConstraint object.
43
* @param name {@link #name}
45
public PgConstraint(String name) {
50
* Creates and returns SQL for creation of the constraint.
52
* @param quoteNames whether names should be quoted
56
public String getCreationSQL(final boolean quoteNames) {
57
final StringBuilder sbSQL = new StringBuilder();
58
sbSQL.append("ALTER TABLE ");
59
sbSQL.append(PgDiffUtils.getQuotedName(getTableName(), quoteNames));
60
sbSQL.append("\n\tADD CONSTRAINT ");
61
sbSQL.append(PgDiffUtils.getQuotedName(getName(), quoteNames));
63
sbSQL.append(getDefinition());
66
return sbSQL.toString();
70
* Setter for {@link #definition}.
72
* @param definition {@link #definition}
74
public void setDefinition(final String definition) {
75
this.definition = definition;
79
* Getter for {@link #definition}.
81
* @return {@link #definition}
83
public String getDefinition() {
88
* Creates and returns SQL for dropping the constraint.
90
* @param quoteNames whether names should be quoted
94
public String getDropSQL(final boolean quoteNames) {
95
final StringBuilder sbSQL = new StringBuilder();
96
sbSQL.append("ALTER TABLE ");
97
sbSQL.append(PgDiffUtils.getQuotedName(getTableName(), quoteNames));
98
sbSQL.append("\n\tDROP CONSTRAINT ");
99
sbSQL.append(PgDiffUtils.getQuotedName(getName(), quoteNames));
102
return sbSQL.toString();
106
* Setter for {@link #name}.
108
* @param name {@link #name}
110
public void setName(final String name) {
115
* Getter for {@link #name}.
117
* @return {@link #name}
119
public String getName() {
124
* Returns true if this is a PRIMARY KEY constraint, otherwise
127
* @return true if this is a PRIMARY KEY constraint, otherwise false
129
public boolean isPrimaryKeyConstraint() {
130
return PATTERN_PRIMARY_KEY.matcher(definition).matches();
134
* Setter for {@link #tableName}.
136
* @param tableName {@link #tableName}
138
public void setTableName(final String tableName) {
139
this.tableName = tableName;
143
* Getter for {@link #tableName}.
145
* @return {@link #tableName}
147
public String getTableName() {
154
* @param object {@inheritDoc}
156
* @return {@inheritDoc}
159
public boolean equals(final Object object) {
160
boolean equals = false;
162
if (this == object) {
164
} else if (object instanceof PgConstraint) {
165
final PgConstraint constraint = (PgConstraint) object;
167
definition.equals(constraint.definition)
168
&& name.equals(constraint.name)
169
&& tableName.equals(constraint.tableName);
178
* @return {@inheritDoc}
181
public int hashCode() {
182
return (getClass().getName() + "|" + definition + "|" + name + "|"
183
+ tableName).hashCode();