public void cloneTo(SQLForeignKeyImpl x) { super.cloneTo(x); if (referencedTable != null) { x.setReferencedTable(referencedTable.clone()); } for (SQLName column : referencingColumns) { SQLName columnClone = column.clone(); columnClone.setParent(x); x.getReferencingColumns().add(columnClone); } for (SQLName column : referencedColumns) { SQLName columnClone = column.clone(); columnClone.setParent(x); x.getReferencedColumns().add(columnClone); } }
@Override protected void accept0(SQLASTVisitor visitor) { if (visitor.visit(this)) { acceptChild(visitor, this.getName()); acceptChild(visitor, this.getReferencedTableName()); acceptChild(visitor, this.getReferencingColumns()); acceptChild(visitor, this.getReferencedColumns()); } visitor.endVisit(this); }
@Override public boolean visit(SQLForeignKeyImpl x) { for (SQLName column : x.getReferencingColumns()) { column.accept(this); } String table = x.getReferencedTableName().getSimpleName(); TableStat stat = getTableStat(x.getReferencedTableName()); stat.incrementReferencedCount(); for (SQLName column : x.getReferencedColumns()) { String columnName = column.getSimpleName(); addColumn(table, columnName); } return false; }
@Override public boolean visit(SQLForeignKeyImpl x) { if (x.getName() != null) { print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); print(' '); } print0(ucase ? "FOREIGN KEY (" : "foreign key ("); printAndAccept(x.getReferencingColumns(), ", "); print(')'); this.indentCount++; println(); print0(ucase ? "REFERENCES " : "references "); x.getReferencedTableName().accept(this); if (x.getReferencedColumns().size() > 0) { print0(" ("); printAndAccept(x.getReferencedColumns(), ", "); print(')'); } if (x.isOnDeleteCascade()) { println(); print0(ucase ? "ON DELETE CASCADE" : "on delete cascade"); } else if (x.isOnDeleteSetNull()) { print0(ucase ? "ON DELETE SET NULL" : "on delete set null"); } this.indentCount--; return false; }
public SQLForeignKeyConstraint parseForeignKey() { accept(Token.FOREIGN); accept(Token.KEY); SQLForeignKeyImpl fk = createForeignKey(); accept(Token.LPAREN); this.names(fk.getReferencingColumns(), fk); accept(Token.RPAREN); accept(Token.REFERENCES); fk.setReferencedTableName(this.name()); if (lexer.token == Token.LPAREN) { lexer.nextToken(); this.names(fk.getReferencedColumns(), fk); accept(Token.RPAREN); } if (lexer.token == Token.ON) { lexer.nextToken(); accept(Token.DELETE); if (lexer.identifierEquals(FnvHash.Constants.CASCADE)) { lexer.nextToken(); fk.setOnDeleteCascade(true); } else { accept(Token.SET); accept(Token.NULL); fk.setOnDeleteSetNull(true); } } return fk; }
public void cloneTo(SQLForeignKeyImpl x) { super.cloneTo(x); if (referencedTable != null) { x.setReferencedTable(referencedTable.clone()); } for (SQLName column : referencingColumns) { SQLName columnClone = column.clone(); columnClone.setParent(x); x.getReferencingColumns().add(columnClone); } for (SQLName column : referencedColumns) { SQLName columnClone = column.clone(); columnClone.setParent(x); x.getReferencedColumns().add(columnClone); } }
@Override protected void accept0(SQLASTVisitor visitor) { if (visitor.visit(this)) { acceptChild(visitor, this.getName()); acceptChild(visitor, this.getReferencedTableName()); acceptChild(visitor, this.getReferencingColumns()); acceptChild(visitor, this.getReferencedColumns()); } visitor.endVisit(this); }
@Override public boolean visit(SQLForeignKeyImpl x) { for (SQLName column : x.getReferencingColumns()) { column.accept(this); } String table = x.getReferencedTableName().getSimpleName(); TableStat stat = getTableStat(x.getReferencedTableName()); stat.incrementReferencedCount(); for (SQLName column : x.getReferencedColumns()) { String columnName = column.getSimpleName(); addColumn(table, columnName); } return false; }
@Override public boolean visit(SQLForeignKeyImpl x) { if (x.getName() != null) { print0(ucase ? "CONSTRAINT " : "constraint "); x.getName().accept(this); print(' '); } print0(ucase ? "FOREIGN KEY (" : "foreign key ("); printAndAccept(x.getReferencingColumns(), ", "); print(')'); this.indentCount++; println(); print0(ucase ? "REFERENCES " : "references "); x.getReferencedTableName().accept(this); if (x.getReferencedColumns().size() > 0) { print0(" ("); printAndAccept(x.getReferencedColumns(), ", "); print(')'); } if (x.isOnDeleteCascade()) { println(); print0(ucase ? "ON DELETE CASCADE" : "on delete cascade"); } else if (x.isOnDeleteSetNull()) { print0(ucase ? "ON DELETE SET NULL" : "on delete set null"); } this.indentCount--; return false; }
public SQLForeignKeyConstraint parseForeignKey() { accept(Token.FOREIGN); accept(Token.KEY); SQLForeignKeyImpl fk = createForeignKey(); accept(Token.LPAREN); this.names(fk.getReferencingColumns(), fk); accept(Token.RPAREN); accept(Token.REFERENCES); fk.setReferencedTableName(this.name()); if (lexer.token == Token.LPAREN) { lexer.nextToken(); this.names(fk.getReferencedColumns(), fk); accept(Token.RPAREN); } if (lexer.token == Token.ON) { lexer.nextToken(); accept(Token.DELETE); if (lexer.identifierEquals(FnvHash.Constants.CASCADE)) { lexer.nextToken(); fk.setOnDeleteCascade(true); } else { accept(Token.SET); accept(Token.NULL); fk.setOnDeleteSetNull(true); } } return fk; }