Example usage for org.apache.commons.collections.set ListOrderedSet iterator

List of usage examples for org.apache.commons.collections.set ListOrderedSet iterator

Introduction

In this page you can find the example usage for org.apache.commons.collections.set ListOrderedSet iterator.

Prototype

public Iterator iterator() 

Source Link

Usage

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);
        }
    }
}