Source code: org/dma/ihm/game/calendar/events/GameCalendarStopBeforeGamedayEvent.java
1 package org.dma.ihm.game.calendar.events;
2
3 import java.util.*;
4 import org.dma.ihm.controller.*;
5 import org.dma.ihm.controller.data.*;
6 import org.dma.ihm.game.league.*;
7 import org.dma.ihm.game.league.helper.*;
8
9 import org.dma.ihm.game.match.*;
10
11 /**
12 * GameCalendarStopBeforeGamedayEvent Special class that contains all gameDays
13 * of a specific date, and stops for a "gui break"
14 *
15 * @author Bernhard von Gunten / Arik Dasen
16 * @created December 29, 2001
17 */
18 public class GameCalendarStopBeforeGamedayEvent extends GameCalendarEvent {
19
20 /** Vector of all gamedays */
21 private Vector gameCalendarGameDayEvents = null;
22
23
24 /**
25 * Create new event
26 *
27 * @param source The source of this event
28 * @param day The day of this event
29 */
30 public GameCalendarStopBeforeGamedayEvent(Object source, Calendar day) {
31 super(source, day, "GameCalendarStopBeforeGamedayEvent");
32 this.gameCalendarGameDayEvents = new Vector();
33 }
34
35
36 /**
37 * Add new gameDay on this "gui break"
38 *
39 * @param gameCalendarGameDayEvent The gameDay to be added to this event
40 */
41 public void addGameCalendarGameDayEvent(GameCalendarGameDayEvent gameCalendarGameDayEvent) {
42 this.gameCalendarGameDayEvents.add(gameCalendarGameDayEvent);
43 }
44
45
46 /**
47 * Returns if online is needed by userinterests
48 *
49 * @return Returns true if online is "wished"
50 */
51 public boolean needsOnline() {
52 return (getInterestedUsers().size() > 0);
53 }
54
55
56 /**
57 * Returns users that are interested in this stopBeforeGameDayEvent
58 *
59 * @return All users interested in this event
60 */
61 public Vector getInterestedUsers() {
62 // Result with all users who want to stop
63 Vector interestedUsers = new Vector();
64
65 // Gell all users playing this great game
66 User[] allUsers = Controller.getScenario().getUsers();
67
68 // Check if anyone is interested in these games.
69 for (int i = 0; i < allUsers.length; i++) {
70 if (allUsers[i].isInterestedInLeagueElements(getLeagueElements())) {
71 // Check if user is intersted in leagueElement
72 if (allUsers[i].getStopForGames() == User.STOP_FOR_ALL_GAMES) {
73 // User want's to stop for all games in element
74 interestedUsers.add(allUsers[i]);
75 } else {
76 // User only wants to stop for games he'll really play
77 Vector players = Controller.getScenario().getUsersWithinMatches(getMatches(), true);
78 if (players.indexOf(allUsers[i]) > -1) {
79 interestedUsers.add(allUsers[i]);
80 }
81 }
82 }
83 }
84
85 return interestedUsers;
86 }
87
88
89 /**
90 * Returns all matches of all gameDays
91 *
92 * @return All matches of all gameDays
93 */
94 public Vector getMatches() {
95 Vector result = new Vector();
96 for (int i = 0; i < gameCalendarGameDayEvents.size(); i++) {
97 GameCalendarGameDayEvent tmp = (GameCalendarGameDayEvent) gameCalendarGameDayEvents.get(i);
98 Vector matches = tmp.getMatches();
99 for (int n = 0; n < matches.size(); n++) {
100 result.add(matches.get(n));
101 }
102 }
103 return result;
104 }
105
106
107 /**
108 * Returns gameDayEvent for a single User
109 *
110 * @param user The user looking for
111 * @return The gameDay for a user (if found)
112 */
113 public GameCalendarGameDayEvent getGameCalendarGameDayEvent(User user) {
114 for (int i = 0; i < gameCalendarGameDayEvents.size(); i++) {
115 GameCalendarGameDayEvent tmp = (GameCalendarGameDayEvent) gameCalendarGameDayEvents.get(i);
116 if (tmp.isUserInvolved(user)) {
117 return tmp;
118 }
119 }
120 return null;
121 }
122
123
124 /**
125 * Returns all leagueElements
126 *
127 * @return All leagueElements of this event
128 */
129 public Vector getLeagueElements() {
130 Vector result = new Vector();
131 for (int i = 0; i < gameCalendarGameDayEvents.size(); i++) {
132 GameCalendarGameDayEvent tmp = (GameCalendarGameDayEvent) gameCalendarGameDayEvents.get(i);
133 result.add(tmp.getLeagueElement());
134 }
135 return result;
136 }
137
138
139 /** Plays the event */
140 public void play() {
141 super.play();
142 }
143
144 }