2
* Copyright 2006 StartNet s.r.o.
4
* Distributed under MIT license
1
6
package cz.startnet.utils.pgdiff.schema;
3
8
import cz.startnet.utils.pgdiff.PgDiffUtils;
9
import java.util.ArrayList;
10
import java.util.Collections;
11
import java.util.List;
6
14
* Stores view information.
38
50
* @param columnNames {@link #columnNames}
40
public void setColumnNames(final String columnNames) {
52
@SuppressWarnings("AssignmentToCollectionOrArrayFieldFromParameter")
53
public void setColumnNames(final List<String> columnNames) {
41
54
this.columnNames = columnNames;
45
* Getter for {@link #columnNames}.
58
* Getter for {@link #columnNames}. The list cannot be modified.
47
60
* @return {@link #columnNames}
49
public String getColumnNames() {
62
public List<String> getColumnNames() {
63
return Collections.unmodifiableList(columnNames);
54
67
* Creates and returns SQL for creation of the view.
56
* @param quoteNames whether names should be quoted
58
* @return created SQL command
69
* @return created SQL statement
60
public String getCreationSQL(final boolean quoteNames) {
61
final StringBuilder sbSQL = new StringBuilder();
71
public String getCreationSQL() {
72
final StringBuilder sbSQL = new StringBuilder(query.length() * 2);
62
73
sbSQL.append("CREATE VIEW ");
63
sbSQL.append(PgDiffUtils.getQuotedName(name, quoteNames));
74
sbSQL.append(PgDiffUtils.getQuotedName(name));
65
if ((columnNames != null) && (columnNames.length() > 0)) {
76
if (columnNames != null && !columnNames.isEmpty()) {
66
77
sbSQL.append(" (");
67
sbSQL.append(columnNames);
79
for (int i = 0; i < columnNames.size(); i++) {
84
sbSQL.append(PgDiffUtils.getQuotedName(columnNames.get(i)));
72
90
sbSQL.append(query);
93
for (final DefaultValue defaultValue : defaultValues) {
94
sbSQL.append("\n\nALTER VIEW ");
95
sbSQL.append(PgDiffUtils.getQuotedName(name));
96
sbSQL.append(" ALTER COLUMN ");
98
PgDiffUtils.getQuotedName(defaultValue.getColumnName()));
99
sbSQL.append(" SET DEFAULT ");
100
sbSQL.append(defaultValue.getDefaultValue());
75
104
return sbSQL.toString();
79
* Creates and returns SQL command for dropping the view.
81
* @param quoteNames whether names should be quoted
83
* @return created SQL command
108
* Creates and returns SQL statement for dropping the view.
110
* @return created SQL statement
85
public String getDropSQL(final boolean quoteNames) {
86
return "DROP VIEW " + PgDiffUtils.getQuotedName(getName(), quoteNames)
112
public String getDropSQL() {
113
return "DROP VIEW " + PgDiffUtils.getQuotedName(getName()) + ";";
113
139
public String getQuery() {
144
* Adds/replaces column default value specification.
146
* @param columnName column name
147
* @param defaultValue default value
149
public void addColumnDefaultValue(final String columnName,
150
final String defaultValue) {
151
removeColumnDefaultValue(columnName);
152
defaultValues.add(new DefaultValue(columnName, defaultValue));
156
* Removes column default value if present.
158
* @param columnName column name
160
public void removeColumnDefaultValue(final String columnName) {
161
for (final DefaultValue item : defaultValues) {
162
if (item.getColumnName().equals(columnName)) {
163
defaultValues.remove(item);
170
* Getter for {@link #defaultValues}.
172
* @return {@link #defaultValues}
174
public List<DefaultValue> getDefaultValues() {
175
return Collections.unmodifiableList(defaultValues);
179
* Contains information about default value of column.
181
@SuppressWarnings("PublicInnerClass")
182
public class DefaultValue {
187
private final String columnName;
191
private final String defaultValue;
194
* Creates new instance of DefaultValue.
196
* @param columnName {@link #columnName}
197
* @param defaultValue {@link #defaultValue}
199
DefaultValue(final String columnName, final String defaultValue) {
200
this.columnName = columnName;
201
this.defaultValue = defaultValue;
205
* Getter for {@link #columnName}.
207
* @return {@link #columnName}
209
public String getColumnName() {
214
* Getter for {@link #defaultValue}.
216
* @return {@link #defaultValue}
218
public String getDefaultValue() {