001    
002    /*
003     * Copyright (C) 2011 Archie L. Cobbs. All rights reserved.
004     *
005     * $Id: SchemaUpdateEdgeLister.java 209 2012-01-12 15:52:06Z archie.cobbs $
006     */
007    
008    package org.dellroad.stuff.schema;
009    
010    import java.util.Set;
011    
012    import org.dellroad.stuff.graph.TopologicalSorter.EdgeLister;
013    
014    /**
015     * {@link EdgeLister} implementation reflecting {@link SchemaUpdate} predecessor constraints.
016     *
017     * <p>
018     * Graph edges will exist from each update to its predecessors. Note, this is the reverse of the actual
019     * desired ordering of the updates.
020     *
021     * @param <T> database transaction type
022     */
023    public class SchemaUpdateEdgeLister<T> implements EdgeLister<SchemaUpdate<T>> {
024    
025        @Override
026        public Set<SchemaUpdate<T>> getOutEdges(SchemaUpdate<T> update) {
027            return update.getRequiredPredecessors();
028        }
029    }
030