1 /*
2 * ============================================================================
3 * Project betoffice-storage
4 * Copyright (c) 2000-2016 by Andre Winkler. All rights reserved.
5 * ============================================================================
6 * GNU GENERAL PUBLIC LICENSE
7 * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 *
23 */
24
25 package de.winkler.betoffice.dao;
26
27 import java.util.List;
28 import java.util.Optional;
29
30 import de.winkler.betoffice.storage.Game;
31 import de.winkler.betoffice.storage.GameList;
32 import de.winkler.betoffice.storage.Team;
33
34 /**
35 * Dieses DAO sucht nach bestimmten Spielpaarungen.
36 *
37 * @author by Andre Winkler
38 */
39 public interface MatchDao extends CommonDao<Game> {
40
41 /**
42 * Sucht nach einer bestimmten Spielpaarung für einen Spieltag.
43 *
44 * @param round
45 * Der zu untersuchende Spieltag.
46 * @param homeTeam
47 * Die Heimmannschaft.
48 * @param guestTeam
49 * Die Gastmannschaft.
50 * @return Das gefundene Spiel oder <code>null</code>, wenn kein Spiel mit
51 * diesem Bedingungen vorhanden.
52 */
53 public Optional<Game> find(GameList round, Team homeTeam, Team guestTeam);
54
55 /**
56 * Sucht nach allen Spielpaarungen mit der beteiligten Heimmannschaft.
57 *
58 * @param homeTeam
59 * Die gesuchte Heimmannschaft.
60 * @return Eine Liste von {@link de.winkler.betoffice.storage.Game}
61 * Objekten.
62 */
63 public List<Game> findByHomeTeam(Team homeTeam);
64
65 /**
66 * Sucht nach allen Spielpaarungen mit der beteiligten Gastmannschaft.
67 *
68 * @param guestTeam
69 * Die gesuchte Gastmannschaft.
70 * @return Eine Liste von {@link de.winkler.betoffice.storage.Game}
71 * Objekten.
72 */
73 public List<Game> findByGuestTeam(Team guestTeam);
74
75 /**
76 * Sucht nach allen Spielpaarungen mit der beteiligten Heim- und
77 * Gastmannschaft.
78 *
79 * @param homeTeam
80 * Die gesuchte Heimmannschaft.
81 * @param guestTeam
82 * Die gesuchte Gastmannschaft.
83 * @return Eine Liste von {@link de.winkler.betoffice.storage.Game}
84 * Objekten.
85 */
86 public List<Game> find(Team homeTeam, Team guestTeam);
87
88 /**
89 * Sucht nach allen Spielpaarungen mit den beteiligten Mannschaften.
90 *
91 * @param team1
92 * Die erste gesuchte Mannschaft (Heim wie auswärts).
93 * @param team2
94 * Die zweite gesuchte Mannschaft (Heim wie auswärts).
95 * @return Eine Liste von {@link de.winkler.betoffice.storage.Game}
96 * Objekten.
97 */
98 public List<Game> findAll(Team team1, Team team2);
99
100 /**
101 * Legt eine neue Spielpaarung persistent an.
102 *
103 * @param match
104 * Eine Spielpaarung.
105 */
106 public void save(Game match);
107
108 /**
109 * Legt mehrere neue Spielpaarungen an.
110 *
111 * @param matches
112 * Eine Liste von Spielpaarungen.
113 */
114 public void saveAll(List<Game> matches);
115
116 /**
117 * Eine Update-Operation.
118 *
119 * @param match
120 * Eine Spielpaarung.
121 */
122 public void update(Game match);
123
124 /**
125 * Löscht eine Spielpaarung.
126 *
127 * @param match
128 * Die zu löschende Spielpaarung.
129 */
130 public void delete(Game match);
131
132 /**
133 * Löscht alle übergebenen Spielpaarungen.
134 *
135 * @param matches
136 * Die zu Spielpaarungen.
137 */
138 public void deleteAll(List<Game> matches);
139
140 }