~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/list/ParallelCollectListIterable.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.list;
 
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
 
 
29
@Beta
 
30
class ParallelCollectListIterable<T, V> extends AbstractParallelListIterable<V, ListBatch<V>>
 
31
{
 
32
    private final AbstractParallelListIterable<T, ? extends ListBatch<T>> parallelIterable;
 
33
    private final Function<? super T, ? extends V> function;
 
34
 
 
35
    ParallelCollectListIterable(AbstractParallelListIterable<T, ? extends ListBatch<T>> parallelIterable, Function<? super T, ? extends V> function)
 
36
    {
 
37
        this.parallelIterable = parallelIterable;
 
38
        this.function = function;
 
39
    }
 
40
 
 
41
    @Override
 
42
    public ExecutorService getExecutorService()
 
43
    {
 
44
        return this.parallelIterable.getExecutorService();
 
45
    }
 
46
 
 
47
    @Override
 
48
    public LazyIterable<ListBatch<V>> split()
 
49
    {
 
50
        return this.parallelIterable.split().collect(new Function<ListBatch<T>, ListBatch<V>>()
 
51
        {
 
52
            public ListBatch<V> valueOf(ListBatch<T> eachBatch)
 
53
            {
 
54
                return eachBatch.collect(ParallelCollectListIterable.this.function);
 
55
            }
 
56
        });
 
57
    }
 
58
 
 
59
    public void forEach(Procedure<? super V> procedure)
 
60
    {
 
61
        this.parallelIterable.forEach(Functions.bind(procedure, this.function));
 
62
    }
 
63
 
 
64
    public boolean anySatisfy(Predicate<? super V> predicate)
 
65
    {
 
66
        return this.parallelIterable.anySatisfy(Predicates.attributePredicate(this.function, predicate));
 
67
    }
 
68
 
 
69
    public boolean allSatisfy(Predicate<? super V> predicate)
 
70
    {
 
71
        return this.parallelIterable.allSatisfy(Predicates.attributePredicate(this.function, predicate));
 
72
    }
 
73
 
 
74
    public V detect(Predicate<? super V> predicate)
 
75
    {
 
76
        T resultItem = this.parallelIterable.detect(Predicates.attributePredicate(this.function, predicate));
 
77
        return resultItem == null ? null : this.function.valueOf(resultItem);
 
78
    }
 
79
}