View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package com.github.dexecutor.executor;
19  
20  import java.util.ArrayList;
21  import java.util.List;
22  /**
23   * Wrapper class around @ExecutionResult
24   * 
25   * @author Nadeem Mohammad
26   *
27   * @param <T> Type of Node/Task ID
28   * @param <R> Type of Node/Task result
29   */
30  
31  public final class ExecutionResults<T, R> {
32  
33  	private List<ExecutionResult<T, R>> results = new ArrayList<ExecutionResult<T, R>>();
34  
35  	/**
36  	 * adds {@code result} to existing collection of results
37  	 *
38  	 * @param result Result to be added to all results
39  	 */
40  	public void add(final ExecutionResult<T, R> result) {
41  		this.results.add(result);
42  	}
43  	/**
44  	 *  
45  	 * @return the first {@link ExecutionResult in the collection}
46  	 */
47  	public ExecutionResult<T, R> getFirst() {
48  		if (this.results.isEmpty()) {
49  			return null;
50  		} else {
51  			return this.results.iterator().next();
52  		}
53  	}
54  	/**
55  	 *
56  	 * @return {@code true} If there is any result
57  	 * {@code false} if no result
58  	 */
59  	public boolean hasAnyParentResult() {
60  		if (this.results.isEmpty()) {
61  			return false;
62  		} else {
63  			return true;
64  		}
65  	}
66  	/**
67  	 * 
68  	 * @return all result in the collection
69  	 */
70  	public List<ExecutionResult<T, R>> getAll() {
71  		return new ArrayList<ExecutionResult<T, R>>(this.results);
72  	}
73  
74  	@Override
75  	public String toString() {
76  		return this.results.toString();
77  	}
78  }