Example usage for org.apache.commons.collections.iterators CollatingIterator CollatingIterator

List of usage examples for org.apache.commons.collections.iterators CollatingIterator CollatingIterator

Introduction

In this page you can find the example usage for org.apache.commons.collections.iterators CollatingIterator CollatingIterator.

Prototype

public CollatingIterator(final Comparator comp) 

Source Link

Document

Constructs a new CollatingIterator that will used the specified comparator for ordering.

Usage

From source file:com.bigdata.dastor.service.RangeSliceResponseResolver.java

public List<Row> resolve(Collection<Message> responses) throws DigestMismatchException, IOException {
    CollatingIterator collator = new CollatingIterator(new Comparator<Pair<Row, InetAddress>>() {
        public int compare(Pair<Row, InetAddress> o1, Pair<Row, InetAddress> o2) {
            return partitioner.getToken(o1.left.key).compareTo(partitioner.getToken(o2.left.key));
        }//from   w ww . j a v a2s .  com
    });

    int n = 0;
    for (Message response : responses) {
        RangeSliceReply reply = RangeSliceReply.read(response.getMessageBody());
        n = Math.max(n, reply.rows.size());
        collator.addIterator(new RowIterator(reply.rows.iterator(), response.getFrom()));
    }

    // for each row, compute the combination of all different versions seen, and repair incomplete versions
    ReducingIterator<Pair<Row, InetAddress>, Row> iter = new ReducingIterator<Pair<Row, InetAddress>, Row>(
            collator) {
        List<ColumnFamily> versions = new ArrayList<ColumnFamily>(sources.size());
        List<InetAddress> versionSources = new ArrayList<InetAddress>(sources.size());
        String key;

        @Override
        protected boolean isEqual(Pair<Row, InetAddress> o1, Pair<Row, InetAddress> o2) {
            return o1.left.key.equals(o2.left.key);
        }

        public void reduce(Pair<Row, InetAddress> current) {
            key = current.left.key;
            versions.add(current.left.cf);
            versionSources.add(current.right);
        }

        protected Row getReduced() {
            ColumnFamily resolved = ReadResponseResolver.resolveSuperset(versions);
            ReadResponseResolver.maybeScheduleRepairs(resolved, table, key, versions, versionSources);
            versions.clear();
            versionSources.clear();
            return new Row(key, resolved);
        }
    };

    List<Row> resolvedRows = new ArrayList<Row>(n);
    while (iter.hasNext())
        resolvedRows.add(iter.next());

    return resolvedRows;
}

From source file:com.bigdata.dastor.utils.FBUtilities.java

public static <T extends Comparable<T>> CollatingIterator getCollatingIterator() {
    // CollatingIterator will happily NPE if you do not specify a comparator explicitly
    return new CollatingIterator(new Comparator<T>() {
        public int compare(T o1, T o2) {
            return o1.compareTo(o2);
        }/*from  ww  w  .  java  2 s  . c  o m*/
    });
}

From source file:org.apache.cassandra.service.RangeSliceResponseResolver.java

public Iterable<Row> resolve() throws IOException {
    CollatingIterator collator = new CollatingIterator(new Comparator<Pair<Row, InetAddress>>() {
        public int compare(Pair<Row, InetAddress> o1, Pair<Row, InetAddress> o2) {
            return o1.left.key.compareTo(o2.left.key);
        }/*from   www .ja  v  a 2s.  c  o m*/
    });

    int n = 0;
    for (Message response : responses) {
        RangeSliceReply reply = RangeSliceReply.read(response.getMessageBody(), response.getVersion());
        n = Math.max(n, reply.rows.size());
        collator.addIterator(new RowIterator(reply.rows.iterator(), response.getFrom()));
    }

    // for each row, compute the combination of all different versions seen, and repair incomplete versions

    return new ReducingIterator<Pair<Row, InetAddress>, Row>(collator) {
        List<ColumnFamily> versions = new ArrayList<ColumnFamily>(sources.size());
        List<InetAddress> versionSources = new ArrayList<InetAddress>(sources.size());
        DecoratedKey key;

        @Override
        protected boolean isEqual(Pair<Row, InetAddress> o1, Pair<Row, InetAddress> o2) {
            return o1.left.key.equals(o2.left.key);
        }

        public void reduce(Pair<Row, InetAddress> current) {
            key = current.left.key;
            versions.add(current.left.cf);
            versionSources.add(current.right);
        }

        protected Row getReduced() {
            ColumnFamily resolved = RowRepairResolver.resolveSuperset(versions);
            RowRepairResolver.maybeScheduleRepairs(resolved, table, key, versions, versionSources);
            versions.clear();
            versionSources.clear();
            return new Row(key, resolved);
        }
    };
}

From source file:org.apache.cassandra.service.RowRepairResolver.java

static ColumnFamily resolveSuperset(List<ColumnFamily> versions) {
    assert versions.size() > 0;

    ColumnFamily resolved = null;//from   ww w.j a va 2  s.  com
    for (ColumnFamily cf : versions) {
        if (cf == null)
            continue;

        if (resolved == null)
            resolved = cf.cloneMeShallow();
        else
            resolved.delete(cf);
    }
    if (resolved == null)
        return null;

    // mimic the collectCollatedColumn + removeDeleted path that getColumnFamily takes.
    // this will handle removing columns and subcolumns that are supressed by a row or
    // supercolumn tombstone.
    QueryFilter filter = new QueryFilter(null, new QueryPath(resolved.metadata().cfName),
            new IdentityQueryFilter());
    CollatingIterator iter = new CollatingIterator(resolved.metadata().comparator.columnComparator);
    for (ColumnFamily version : versions) {
        if (version == null)
            continue;
        iter.addIterator(version.getColumnsMap().values().iterator());
    }
    filter.collectCollatedColumns(resolved, iter, Integer.MIN_VALUE);
    return ColumnFamilyStore.removeDeleted(resolved, Integer.MIN_VALUE);
}

From source file:org.apache.cassandra.utils.FBUtilities.java

public static CollatingIterator getCollatingIterator() {
    // CollatingIterator will happily NPE if you do not specify a comparator explicitly
    return new CollatingIterator(new Comparator() {
        public int compare(Object o1, Object o2) {
            return ((Comparable) o1).compareTo(o2);
        }//  w w w.  ja  v  a 2  s .  c  om
    });
}