![JAR search and dependency download from the Maven repository](/logo.png)
net.sf.jsqlparser.statement.alter.AlterExpression Maven / Gradle / Ivy
The newest version!
/*
* #%L
* JSQLParser library
* %%
* Copyright (C) 2004 - 2016 JSQLParser
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 2.1 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Lesser Public License for more details.
*
* You should have received a copy of the GNU General Lesser Public
* License along with this program. If not, see
* .
* #L%
*/
package net.sf.jsqlparser.statement.alter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import net.sf.jsqlparser.statement.create.table.ColDataType;
import net.sf.jsqlparser.statement.create.table.Index;
import net.sf.jsqlparser.statement.select.PlainSelect;
/**
*
* @author toben & wrobstory
*/
public class AlterExpression {
private AlterOperation operation;
private String columnName;
//private ColDataType dataType;
private List colDataTypeList;
private List pkColumns;
private List ukColumns;
private String ukName;
private Index index = null;
private String constraintName;
private boolean constraintIfExists;
private boolean onDeleteRestrict;
private boolean onDeleteSetNull;
private boolean onDeleteCascade;
private List fkColumns;
private String fkSourceTable;
private List fkSourceColumns;
private List constraints;
private List parameters;
public AlterOperation getOperation() {
return operation;
}
public void setOperation(AlterOperation operation) {
this.operation = operation;
}
public boolean isOnDeleteCascade() {
return onDeleteCascade;
}
public void setOnDeleteCascade(boolean onDeleteCascade) {
this.onDeleteCascade = onDeleteCascade;
}
public boolean isOnDeleteRestrict() {
return onDeleteRestrict;
}
public void setOnDeleteRestrict(boolean onDeleteRestrict) {
this.onDeleteRestrict = onDeleteRestrict;
}
public boolean isOnDeleteSetNull() {
return onDeleteSetNull;
}
public void setOnDeleteSetNull(boolean onDeleteSetNull) {
this.onDeleteSetNull = onDeleteSetNull;
}
public List getFkColumns() {
return fkColumns;
}
public void setFkColumns(List fkColumns) {
this.fkColumns = fkColumns;
}
public String getFkSourceTable() {
return fkSourceTable;
}
public void setFkSourceTable(String fkSourceTable) {
this.fkSourceTable = fkSourceTable;
}
public List getColDataTypeList() {
return colDataTypeList;
}
public void addColDataType(String columnName, ColDataType colDataType) {
addColDataType(new ColumnDataType(columnName, false, colDataType, null));
}
public void addColDataType(ColumnDataType columnDataType) {
if (colDataTypeList == null) {
colDataTypeList = new ArrayList();
}
colDataTypeList.add(columnDataType);
}
public List getFkSourceColumns() {
return fkSourceColumns;
}
public void setFkSourceColumns(List fkSourceColumns) {
this.fkSourceColumns = fkSourceColumns;
}
public String getColumnName() {
return columnName;
}
public void setColumnName(String columnName) {
this.columnName = columnName;
}
public String getConstraintName() {
return this.constraintName;
}
public void setConstraintName(final String constraintName) {
this.constraintName = constraintName;
}
public boolean isConstraintIfExists() {
return constraintIfExists;
}
public void setConstraintIfExists( boolean constraintIfExists ) {
this.constraintIfExists = constraintIfExists;
}
public List getPkColumns() {
return pkColumns;
}
public void setPkColumns(List pkColumns) {
this.pkColumns = pkColumns;
}
public List getUkColumns() {
return ukColumns;
}
public void setUkColumns(List ukColumns) {
this.ukColumns = ukColumns;
}
public String getUkName() {
return ukName;
}
public void setUkName(String ukName) {
this.ukName = ukName;
}
public Index getIndex() {
return index;
}
public void setIndex(Index index) {
this.index = index;
}
public List getConstraints() {
return constraints;
}
public void setConstraints(List constraints) {
this.constraints = constraints;
}
public void addParameters(String... params) {
if (parameters == null) {
parameters = new ArrayList();
}
parameters.addAll(Arrays.asList(params));
}
public List getParameters() {
return parameters;
}
@Override
public String toString() {
StringBuilder b = new StringBuilder();
b.append(operation).append(" ");
if (columnName != null) {
b.append("COLUMN ").append(columnName);
} else if (getColDataTypeList() != null) {
if (colDataTypeList.size() > 1) {
b.append("(");
} else {
b.append("COLUMN ");
}
b.append(PlainSelect.getStringList(colDataTypeList));
if (colDataTypeList.size() > 1) {
b.append(")");
}
} else if (constraintName != null) {
b.append("CONSTRAINT ");
if(constraintIfExists) {
b.append("IF EXISTS ");
}
b.append(constraintName);
} else if (pkColumns != null) {
b.append("PRIMARY KEY (").append(PlainSelect.getStringList(pkColumns)).append(')');
} else if (ukColumns != null) {
b.append("UNIQUE");
if (ukName != null) {
b.append(" KEY ").append(ukName);
}
b.append(" (").append(PlainSelect.getStringList(ukColumns)).append(")");
} else if (fkColumns != null) {
b.append("FOREIGN KEY (").append(PlainSelect.getStringList(fkColumns)).
append(") REFERENCES ").append(fkSourceTable).append(" (").append(
PlainSelect.getStringList(fkSourceColumns)).append(")");
if (isOnDeleteCascade()) {
b.append(" ON DELETE CASCADE");
} else if (isOnDeleteRestrict()) {
b.append(" ON DELETE RESTRICT");
} else if (isOnDeleteSetNull()) {
b.append(" ON DELETE SET NULL");
}
} else if (index != null) {
b.append(index);
}
if (getConstraints() != null && !getConstraints().isEmpty()) {
b.append(' ').append(PlainSelect.getStringList(constraints, false, false));
}
if (parameters!=null && !parameters.isEmpty()) {
b.append(' ').append(PlainSelect.getStringList(parameters, false, false));
}
return b.toString();
}
public static class ColumnDataType {
private final String columnName;
private final boolean withType;
private final ColDataType colDataType;
private final List columnSpecs;
public ColumnDataType(String columnName, boolean withType, ColDataType colDataType, List columnSpecs) {
this.columnName = columnName;
this.withType = withType;
this.colDataType = colDataType;
this.columnSpecs = columnSpecs;
}
public String getColumnName() {
return columnName;
}
public ColDataType getColDataType() {
return colDataType;
}
public List getColumnSpecs() {
if (columnSpecs == null) {
return Collections.emptyList();
}
return Collections.unmodifiableList(columnSpecs);
}
@Override
public String toString() {
return columnName + ( withType ? " TYPE " : " " ) + colDataType + parametersToString();
}
private String parametersToString() {
if (columnSpecs == null || columnSpecs.isEmpty()) {
return "";
}
return " " + PlainSelect.getStringList(columnSpecs, false, false);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy