source: java2python/geniuswebtranslator/geniuswebsrc/geniusweb/bidspace/AllBidsList.java@ 817

Last change on this file since 817 was 810, checked in by wouter, 9 months ago

#287 adding @Nonnull in geniusweb code

File size: 2.0 KB
Line 
1package geniusweb.bidspace;
2
3import java.math.BigInteger;
4import java.util.ArrayList;
5import java.util.HashMap;
6import java.util.List;
7import java.util.Map;
8import java.util.stream.Collectors;
9
10import org.eclipse.jdt.annotation.NonNull;
11
12import geniusweb.issuevalue.Bid;
13import geniusweb.issuevalue.Domain;
14import geniusweb.issuevalue.Value;
15import tudelft.utilities.immutablelist.AbstractImmutableList;
16import tudelft.utilities.immutablelist.ImmutableList;
17import tudelft.utilities.immutablelist.Outer;
18
19/**
20 * A list containing all complete bids in the space. This is an
21 * {@link ImmutableList} so it can contain all bids without pre-computing them.
22 *
23 */
24public class AllBidsList extends AbstractImmutableList<@NonNull Bid> {
25
26 private final @NonNull List<@NonNull String> issues;
27 private final Outer<? extends Value> allValuePermutations;
28
29 /**
30 * This object contains s list containing all bids in the space. This is an
31 * ImmutableList so it can contain all bids without pre-computing them.
32 *
33 * @param domain the {@link Domain}
34 *
35 */
36 public AllBidsList(@NonNull Domain domain) {
37 if (domain == null)
38 throw new IllegalArgumentException("domain=null");
39 issues = new ArrayList<>(domain.getIssuesValues());
40
41 //#PY values = [domain.getValues(issue) for issue in issues]
42 @NonNull
43 List<@NonNull ImmutableList<@NonNull Value>> values = issues.stream()
44 .map(issue -> domain.getValues(issue))
45 .collect(Collectors.toList());
46
47 allValuePermutations = new Outer<@NonNull Value>(values);
48 }
49
50 @Override
51 public @NonNull Bid get(@NonNull BigInteger index) {
52 @NonNull
53 ImmutableList<? extends Value> nextValues = allValuePermutations
54 .get(index);
55
56 @NonNull
57 Map<@NonNull String, @NonNull Value> issueValues = new HashMap<>();
58 for (int n = 0; n < issues.size(); n = n + 1) {
59 issueValues.put(issues.get(n),
60 nextValues.get(BigInteger.valueOf(n)));
61 }
62 return new Bid(issueValues);
63 }
64
65 @Override
66 public @NonNull BigInteger size() {
67 return allValuePermutations.size();
68 }
69
70}
Note: See TracBrowser for help on using the repository browser.