/* * Copyright (c) 2017-2020. Developed by Hedgecode. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.hedgecode.snooker.json; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.hedgecode.snooker.api.Round; import org.hedgecode.snooker.api.Rounds; import org.hedgecode.snooker.compare.RoundComparators; /** * Rounds Entity (set of {@link Round}) to JSON deserialize. * * @author Dmitry Samoshin aka gotty */ public class JsonRounds extends JsonCollectionEntity implements Rounds, Serializable { private static final long serialVersionUID = -292582814222405882L; private static final JsonRounds EMPTY = new JsonRounds(new Round[0]); JsonRounds(Round[] entities) { super(entities); } JsonRounds(List entities) { super(entities); } @Override public Round byRound(int roundId) { for (Round round : this) if (round.round() == roundId) return round; return null; } @Override public Rounds byRoundName(String roundName) { if (roundName == null || roundName.isEmpty()) return EMPTY; List rounds = new ArrayList<>(); for (Round round : this) if (roundName.equals(round.roundName())) rounds.add(round); return rounds.isEmpty() ? EMPTY : new JsonRounds(rounds); } @Override public Rounds byEvent(int eventId) { List rounds = new ArrayList<>(); for (Round round : this) if (round.eventId() == eventId) rounds.add(round); return rounds.isEmpty() ? EMPTY : new JsonRounds(rounds); } @Override public Rounds byMainEvent(int mainEventId) { List rounds = new ArrayList<>(); for (Round round : this) if (round.mainEventId() == mainEventId) rounds.add(round); return rounds.isEmpty() ? EMPTY : new JsonRounds(rounds); } @Override public void sortByRound() { sort( RoundComparators.ROUND.comparator() ); } @Override public void sortByEvent() { sort( RoundComparators.EVENT.comparator() ); } }