package org.voxe.android.model; import com.google.common.base.Optional; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; public class Election { public String id; public String name; public String namespace; public boolean published; public List<Tag> tags; public List<Candidacy> candidacies; private transient List<Candidate> mainCandidates; public List<Candidate> getMainCandidates() { if (mainCandidates == null) { mainCandidates = new ArrayList<Candidate>(); if (candidacies != null) { for (Candidacy candidacy : candidacies) { if (candidacy.published) { Optional<Candidate> mainCandidate = candidacy.getMainCandidate(); if (mainCandidate.isPresent()) { mainCandidates.add(mainCandidate.get()); } } } } Collections.sort(mainCandidates); } return mainCandidates; } public Tag tagFromId(String tagId) { if (tagId != "") { for (Tag tag : tags) { if (tag.id.equals(tagId)) { return tag; } } } return null; } public List<Candidate> selectedCandidatesByCandidateIds(Set<String> candidateIds) { List<Candidate> selectedCandidates = new ArrayList<Candidate>(); for (Candidate candidate : getMainCandidates()) { if (candidateIds.contains(candidate.id)) { selectedCandidates.add(candidate); } } return selectedCandidates; } }