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

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

Introduction

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

Prototype

public void addIterator(final Iterator iterator) 

Source Link

Document

Adds the given Iterator to the iterators being collated.

Usage

From source file:com.bigdata.dastor.io.CompactionIterator.java

@SuppressWarnings("unchecked")
protected static CollatingIterator getCollatingIterator(Iterable<SSTableReader> sstables) throws IOException {
    CollatingIterator iter = FBUtilities.<IteratingRow>getCollatingIterator();
    for (SSTableReader sstable : sstables) {
        iter.addIterator(sstable.getScanner(FILE_BUFFER_SIZE));
    }/*w  ww.  java2 s .c  o  m*/
    return iter;
}

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  w  w . j a v a  2s.c o  m
    });

    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:org.apache.cassandra.db.compaction.CompactionIterator.java

@SuppressWarnings("unchecked")
protected static CollatingIterator getCollatingIterator(Iterable<SSTableReader> sstables) throws IOException {
    // TODO CollatingIterator iter = FBUtilities.<SSTableIdentityIterator>getCollatingIterator();
    CollatingIterator iter = FBUtilities.getCollatingIterator();
    for (SSTableReader sstable : sstables) {
        iter.addIterator(sstable.getDirectScanner(FILE_BUFFER_SIZE));
    }//from www  .  j  a  v a 2  s . com
    return iter;
}

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);
        }/*w ww .  j a v a2s.co 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;/*w  w  w .  ja va2  s. c o m*/
    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);
}