List of usage examples for org.apache.commons.collections.set ListOrderedSet iterator
public Iterator iterator()
From source file:org.apache.ddlutils.platform.mysql.MySqlBuilder.java
/** * {@inheritDoc}/*from www . jav a 2 s .c o m*/ */ protected void processTableStructureChanges(Database currentModel, Database desiredModel, Table sourceTable, Table targetTable, Map parameters, List changes) throws IOException { // in order to utilize the ALTER TABLE ADD COLUMN AFTER statement // we have to apply the add column changes in the correct order // thus we first gather all add column changes and then execute them ArrayList addColumnChanges = new ArrayList(); for (Iterator changeIt = changes.iterator(); changeIt.hasNext();) { TableChange change = (TableChange) changeIt.next(); if (change instanceof AddColumnChange) { addColumnChanges.add((AddColumnChange) change); changeIt.remove(); } } for (Iterator changeIt = addColumnChanges.iterator(); changeIt.hasNext();) { AddColumnChange addColumnChange = (AddColumnChange) changeIt.next(); processChange(currentModel, desiredModel, addColumnChange); changeIt.remove(); } ListOrderedSet changedColumns = new ListOrderedSet(); // we don't have to care about the order because the comparator will have ensured // that a add primary key change comes after all necessary columns are present for (Iterator changeIt = changes.iterator(); changeIt.hasNext();) { TableChange change = (TableChange) changeIt.next(); if (change instanceof RemoveColumnChange) { processChange(currentModel, desiredModel, (RemoveColumnChange) change); changeIt.remove(); } else if (change instanceof AddPrimaryKeyChange) { processChange(currentModel, desiredModel, (AddPrimaryKeyChange) change); changeIt.remove(); } else if (change instanceof PrimaryKeyChange) { processChange(currentModel, desiredModel, (PrimaryKeyChange) change); changeIt.remove(); } else if (change instanceof RemovePrimaryKeyChange) { processChange(currentModel, desiredModel, (RemovePrimaryKeyChange) change); changeIt.remove(); } else if (change instanceof ColumnChange) { // we gather all changed columns because we can use the ALTER TABLE MODIFY COLUMN // statement for them changedColumns.add(((ColumnChange) change).getChangedColumn()); changeIt.remove(); } } for (Iterator columnIt = changedColumns.iterator(); columnIt.hasNext();) { Column sourceColumn = (Column) columnIt.next(); Column targetColumn = targetTable.findColumn(sourceColumn.getName(), getPlatform().isDelimitedIdentifierModeOn()); processColumnChange(sourceTable, targetTable, sourceColumn, targetColumn); } }
From source file:org.dentaku.services.metadata.validator.ValidatingVisitorBase.java
/** * Generic reflective visitor for subclasses * * @param element Element in the AST being visited * @param context Context for accumulating state and whatnot * @throws VisitorException/*from www . j a v a2s .c o m*/ */ public void visit(ModelElement element, Object context) throws VisitorException { Class c = element.getClass(); ListOrderedSet interfaces = getVisitMethodsForClass(c); for (Iterator it = interfaces.iterator(); it.hasNext();) { Method m = (Method) it.next(); try { m.invoke(this, new Object[] { element, context }); } catch (Exception e1) { throw new VisitorException(e1); } } }