5 import java.util.ResourceBundle;
6 import java.util.Vector;
8 import javax.jws.WebMethod;
9 import javax.jws.WebService;
11 import configuration.ConfigXML;
12 import configuration.UtilDate;
13 import dataAccess.DataAccess;
14 import domain.AdminUser;
17 import domain.Forecast;
18 import domain.Question;
19 import domain.RegularUser;
21 import exceptions.EventFinished;
22 import exceptions.QuestionAlreadyExist;
23 import exceptions.UserAlreadyExistException;
26 * It implements the business logic as a web service.
28 @WebService(endpointInterface = "businessLogic.BLFacade")
29 public class BLFacadeImplementation implements BLFacade {
32 public BLFacadeImplementation() {
33 System.out.println("Creating BLFacadeImplementation instance");
34 ConfigXML c = ConfigXML.getInstance();
36 if (c.getDataBaseOpenMode().equals("initialize")) {
37 dbManager = new DataAccess(c.getDataBaseOpenMode().equals("initialize"));
38 dbManager.initializeDB();
44 public BLFacadeImplementation(DataAccess da) {
46 System.out.println("Creating BLFacadeImplementation instance with DataAccess parameter");
47 ConfigXML c = ConfigXML.getInstance();
49 if (c.getDataBaseOpenMode().equals("initialize")) {
59 * This method creates a question for an event, with a question text and the
62 * @param event to which question is added
63 * @param question text of the question
64 * @param betMinimum minimum quantity of the bet
65 * @return the created question, or null, or an exception
66 * @throws EventFinished if current data is after data of the event
67 * @throws QuestionAlreadyExist if the same question already exists for the
72 public Question createQuestion(Event event, String question, float betMinimum)
73 throws EventFinished, QuestionAlreadyExist {
75 // The minimum bed must be greater than 0
76 dbManager.open(false);
79 if (new Date().compareTo(event.getEventDate()) > 0)
80 throw new EventFinished(ResourceBundle.getBundle("Etiquetas").getString("ErrorEventHasFinished"));
82 qry = dbManager.createQuestion(event, question, betMinimum);
90 public Vector<Question> getAllQuestions() {
91 dbManager.open(false);
92 Vector<Question> questions = dbManager.getAllQuestions();
98 public boolean deleteEvent(Event evento) {
99 dbManager.open(false);
100 boolean res = dbManager.deleteEvent(evento);
106 * This method invokes the data access to retrieve the events of a given date
108 * @param date in which events are retrieved
109 * @return collection of events
113 public Vector<Event> getEvents(Date date) {
114 dbManager.open(false);
115 Vector<Event> events = dbManager.getEvents(date);
121 * This method invokes the data access to retrieve the events of a given date
123 * @param date in which events are retrieved
124 * @return collection of events
128 public Vector<Event> getAllEvents() {
129 dbManager.open(false);
130 Vector<Event> events = dbManager.getAllEvents();
136 * This method invokes the data access to retrieve the dates a month for which
139 * @param date of the month for which days with events want to be retrieved
140 * @return collection of dates
144 public Vector<Date> getEventsMonth(Date date) {
145 dbManager.open(false);
146 Vector<Date> dates = dbManager.getEventsMonth(date);
151 public void close() {
152 DataAccess dB4oManager = new DataAccess(false);
159 * This method invokes the data access to initialize the database with some
160 * events and questions. It is invoked only when the option "initialize" is
161 * declared in the tag dataBaseOpenMode of resources/config.xml file
165 public void initializeBD() {
166 dbManager.open(false);
167 dbManager.initializeDB();
172 // public RegularUser login(String userName, String password)
173 // throws UserDoesNotExistException, IncorrectPassException {
174 // dbManager.open(false);
175 // User login = dbManager.login(userName, password);
176 // dbManager.close();
180 // public boolean validoUsuario(String puser) {
181 // dbManager.open(false);
182 // boolean usuarioBD = dbManager.validoUsuario(puser);
183 // dbManager.close();
188 public RegularUser registrar(String user, String pass, String name, String lastName, String birthDate, String email,
189 String account, Integer numb, String address, float balance) throws UserAlreadyExistException {
190 dbManager.open(false);
191 RegularUser u = dbManager.registrar(user, pass, name, lastName, birthDate, email, account, numb, address,
198 public boolean insertEvent(Event pEvento) {
199 dbManager.open(false);
200 boolean inserted = dbManager.insertEvent(pEvento);
207 public int getNumberEvents() {
208 dbManager.open(false);
209 int n = dbManager.getNumberEvents();
215 public boolean existEvent(Event event) {
216 dbManager.open(false);
217 boolean result = dbManager.existEvent(event);
223 public int getNumberForecasts() {
224 dbManager.open(false);
225 int n = dbManager.getNumberForecasts();
231 public boolean existForecast(Forecast f) {
232 dbManager.open(false);
233 boolean result = dbManager.existForecast(f);
239 public boolean insertForecast(Question question, String forecast, float fee) {
240 dbManager.open(false);
241 Forecast inserted = dbManager.insertForecast(question, forecast, fee);
242 if (inserted == null) {
250 public Vector<Forecast> getForecasts() {
251 dbManager.open(false);
252 Vector<Forecast> result = dbManager.getForecasts();
258 public Vector<Forecast> getForecasts(Question pregunta) {
259 dbManager.open(false);
260 Vector<Forecast> result = dbManager.getForecasts(pregunta);
266 public boolean editarPerfilUsuario(String pContraseña, String pUsername, String pNombre, String pApellido,
267 String pEmail, String pCuentaBancaria) {
269 dbManager.open(false);
271 boolean res = dbManager.editarPerfilUsuario(pContraseña, pUsername, pNombre, pApellido, pEmail,
280 public boolean editarPerfilUsuarioSinPass(String pUsername, String pNombre, String pApellido, String pEmail,
281 String pCuentaBancaria) {
283 dbManager.open(false);
285 boolean res = dbManager.editarPerfilUsuarioSinPass(pUsername, pNombre, pApellido, pEmail, pCuentaBancaria);
293 public Vector<User> getAllUsers() {
295 dbManager.open(false);
297 Vector<User> users = dbManager.getAllUsers();
304 public Integer getMaxIdInDB() {
306 dbManager.open(false);
307 Integer maxid = dbManager.getMaxIdInDB();
314 public boolean doLogin(String username, String pass) {
315 dbManager.open(false);
316 boolean bo = dbManager.doLogin(username, pass);
322 public boolean isAdmin(String pusername, String ppassword) {
323 dbManager.open(false);
324 boolean bo = dbManager.isAdmin(pusername, ppassword);
330 public RegularUser getRegularUserByUsername(String pusername) {
331 dbManager.open(false);
332 RegularUser ru = dbManager.getRegularUserByUsername(pusername);
338 public AdminUser getAdminUserByUsername(String pusername) {
339 dbManager.open(false);
340 AdminUser au = dbManager.getAdminUserByUsername(pusername);
347 public int createApuesta(Forecast pselectedAnswer, RegularUser pselectedClient, Float pselectedAmount) {
348 dbManager.open(false);
349 int inserted = dbManager.createApuesta(pselectedAnswer, pselectedClient, pselectedAmount);
354 public boolean closeEvent(Event e, Question q, Forecast f) {
355 dbManager.open(false);
356 boolean closed = dbManager.closeEvent(e, q, f);
361 public boolean anularApuesta(Bet pApuesta) {
363 dbManager.open(false);
365 boolean result = dbManager.anularApuesta(pApuesta);
371 public Vector<Bet> getApuestasAbiertas(RegularUser pUser) {
372 dbManager.open(false);
373 Vector<Bet> result = dbManager.getApuestasAbiertas(pUser);
379 public Vector<Bet> getApuestasCerradas(RegularUser pUser) {
380 dbManager.open(false);
381 Vector<Bet> result = dbManager.getApuestasCerradas(pUser);
387 public Vector<Bet> getApuestasGanadas(RegularUser pUser) {
388 dbManager.open(false);
389 Vector<Bet> result = dbManager.getApuestasGanadas(pUser);
395 public Vector<Bet> getApuestasPerdidas(RegularUser pUser) {
396 dbManager.open(false);
397 Vector<Bet> result = dbManager.getApuestasPerdidas(pUser);
403 public Vector<Bet> getApuestasAnuladas(RegularUser pUser) {
404 dbManager.open(false);
405 Vector<Bet> result = dbManager.getApuestasAnuladas(pUser);
411 public Vector<Bet> getApuestasByUser(RegularUser user) {
412 dbManager.open(false);
413 Vector<Bet> result = dbManager.getApuestasByUser(user);
419 public boolean aplicarBonoBienvenida(String user) {
421 dbManager.open(false);
422 boolean result = dbManager.aplicarBonoBienvenida(user);
427 public boolean recargarSaldo(String user, Float importe) {
429 dbManager.open(false);
430 boolean result = dbManager.recargarSaldo(user, importe);
435 public boolean definirResultados(Event pselectedEvent, Question pselectedQuestion, Forecast pselectedForecast) {
436 dbManager.open(false);
437 boolean result = dbManager.definirResultados(pselectedEvent, pselectedQuestion, pselectedForecast);
441 public static void main(String[] args) {
443 BLFacadeImplementation controlador = new BLFacadeImplementation();
444 RegularUser usuario = new RegularUser("usuario", "Usuario1?", "Nombre", "Apellido", "01/01/2000",
445 "usuario@gmail.com", "ES11 1111 1111 1111", 123456789, "", 0);
446 Event ev1 = new Event(69, "Eibar-Eibar", UtilDate.newDate(2015, 4, 17));
447 Question pregunta = new Question("pregunta", 2, ev1);
448 Forecast pronostico = new Forecast("Madrid", 17, pregunta);
449 Bet apuesta = new Bet(pronostico, usuario, 13);
451 System.out.println(controlador.anularApuesta(apuesta));
456 public Vector<Question> getOpenedQuestions(Event ev) {
457 dbManager.open(false);
458 Vector<Question> ArrayListQuestions = dbManager.getOpenedQuestions(ev);
459 return ArrayListQuestions;
462 public boolean getEstadoEvento(Event ev) {
464 dbManager.open(false);
465 boolean result = dbManager.getEstadoEvento(ev);
470 public Vector<Event> getEventosMedioCerrados(){
472 dbManager.open(false);
474 Vector<Event> result = dbManager.getEventosMedioCerrados();