~ubuntu-branches/ubuntu/wily/gs-collections/wily

« back to all changes in this revision

Viewing changes to collections/src/main/java/com/gs/collections/impl/lazy/parallel/set/ParallelCollectIterable.java

  • Committer: Package Import Robot
  • Author(s): Emmanuel Bourg
  • Date: 2015-07-23 12:42:30 UTC
  • Revision ID: package-import@ubuntu.com-20150723124230-2rjvfv6elyn2m7d4
Tags: upstream-5.1.0
ImportĀ upstreamĀ versionĀ 5.1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright 2014 Goldman Sachs.
 
3
 *
 
4
 * Licensed under the Apache License, Version 2.0 (the "License");
 
5
 * you may not use this file except in compliance with the License.
 
6
 * You may obtain a copy of the License at
 
7
 *
 
8
 *     http://www.apache.org/licenses/LICENSE-2.0
 
9
 *
 
10
 * Unless required by applicable law or agreed to in writing, software
 
11
 * distributed under the License is distributed on an "AS IS" BASIS,
 
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
13
 * See the License for the specific language governing permissions and
 
14
 * limitations under the License.
 
15
 */
 
16
 
 
17
package com.gs.collections.impl.lazy.parallel.set;
 
18
 
 
19
import java.util.concurrent.ExecutorService;
 
20
 
 
21
import com.gs.collections.api.LazyIterable;
 
22
import com.gs.collections.api.annotation.Beta;
 
23
import com.gs.collections.api.block.function.Function;
 
24
import com.gs.collections.api.block.predicate.Predicate;
 
25
import com.gs.collections.api.block.procedure.Procedure;
 
26
import com.gs.collections.impl.block.factory.Functions;
 
27
import com.gs.collections.impl.block.factory.Predicates;
 
28
import com.gs.collections.impl.lazy.parallel.AbstractParallelIterable;
 
29
import com.gs.collections.impl.lazy.parallel.AbstractParallelIterableImpl;
 
30
import com.gs.collections.impl.lazy.parallel.Batch;
 
31
 
 
32
@Beta
 
33
public class ParallelCollectIterable<T, V> extends AbstractParallelIterableImpl<V, Batch<V>>
 
34
{
 
35
    private final AbstractParallelIterable<T, ? extends Batch<T>> parallelIterable;
 
36
    private final Function<? super T, ? extends V> function;
 
37
 
 
38
    public ParallelCollectIterable(AbstractParallelIterable<T, ? extends Batch<T>> parallelIterable, Function<? super T, ? extends V> function)
 
39
    {
 
40
        this.parallelIterable = parallelIterable;
 
41
        this.function = function;
 
42
    }
 
43
 
 
44
    @Override
 
45
    public ExecutorService getExecutorService()
 
46
    {
 
47
        return this.parallelIterable.getExecutorService();
 
48
    }
 
49
 
 
50
    @Override
 
51
    public LazyIterable<Batch<V>> split()
 
52
    {
 
53
        return this.parallelIterable.split().collect(new Function<Batch<T>, Batch<V>>()
 
54
        {
 
55
            public Batch<V> valueOf(Batch<T> eachBatch)
 
56
            {
 
57
                return eachBatch.collect(ParallelCollectIterable.this.function);
 
58
            }
 
59
        });
 
60
    }
 
61
 
 
62
    public void forEach(Procedure<? super V> procedure)
 
63
    {
 
64
        this.parallelIterable.forEach(Functions.bind(procedure, this.function));
 
65
    }
 
66
 
 
67
    public boolean anySatisfy(Predicate<? super V> predicate)
 
68
    {
 
69
        return this.parallelIterable.anySatisfy(Predicates.attributePredicate(this.function, predicate));
 
70
    }
 
71
 
 
72
    public boolean allSatisfy(Predicate<? super V> predicate)
 
73
    {
 
74
        return this.parallelIterable.allSatisfy(Predicates.attributePredicate(this.function, predicate));
 
75
    }
 
76
 
 
77
    public V detect(Predicate<? super V> predicate)
 
78
    {
 
79
        T resultItem = this.parallelIterable.detect(Predicates.attributePredicate(this.function, predicate));
 
80
        return resultItem == null ? null : this.function.valueOf(resultItem);
 
81
    }
 
82
}