/** * Adds an active reserve to client. Maybe is not used now (because all the reserves given in the * XML are done) but we contemplate the possibility of parsing active reserves. * * @param client * @param r */ public void addActiveReserveToClient(String client, Reserve r) { for (Client c : lstClient) { if (c.compareById(client)) { c.setActiveReserve(r); } } }
@GET @Path("/getclient") @Produces("application/json; charset=utf-8") // http://localhost:8080/ProjetRestFull/eources/getjson public JResponse getEtudiant(@QueryParam("numcli") int numCli) throws ParseException { try { EntityManager em = HibUtil.getEntityManager(); em.getTransaction().begin(); Client c = em.find(Client.class, numCli); Hibernate.initialize(c); // On met le séjour à null, sinon il y a des références circulaires. em.detach(c); c.setSejours(null); GenericEntity<Client> entity = new GenericEntity<Client>(c) {}; JResponse r = JResponse.ok(entity).build(); em.getTransaction().commit(); HibUtil.closeEntityManager(); return r; } catch (Exception e) { // em.getTransaction().commit(); HibUtil.closeEntityManager(); return null; } }
/** * Adds a done reserve to the list of the client. * * @param client id that we use to find the client. * @param r reserve that we will add * @param falta The reserve can have admonishes */ public void addReserveToClient(String client, Reserve r, int falta) { for (Client c : lstClient) { if (c.compareById(client)) { c.addReserveDone(r); c.updateAdmonish(falta); } } }
@Override public void create(Client client) { try { preparedStatement = connection.prepareStatement( "INSERT INTO clients(name,login,phone,email,password)" + " VALUES (?,?,?,?,?)"); preparedStatement.setString(1, client.getName()); preparedStatement.setString(2, client.getLogin()); preparedStatement.setString(3, client.getPhone()); preparedStatement.setString(4, client.getEmail()); preparedStatement.setString(5, client.getPassword()); preparedStatement.execute(); } catch (SQLException e) { e.printStackTrace(); } }
@Override public boolean createOrUpdateVehicle( String electronicShopID, String VIN, String clientID, String vehicleModelID, String warrantyConditionsID, String engineNumber, String plateNumber, Date purchaseDate) { // check if we know that shop if (!ConfigurationProperties.getElectronicShopID().equals(electronicShopID)) { logger.warning("electronicShopID \"" + electronicShopID + "\" not known!"); return false; } Vehicle v = new Vehicle(); try { List<Client> client = Client.queryGetByForeignID(clientID, 0, 1); if (client.size() == 0) { logger.warning("clientID \"" + clientID + "\" not known!"); return false; } List<Vehicle> vl = Vehicle.queryGetByVIN(VIN, 0, 1, client.get(0).getID()); if (vl.size() == 1) { v = vl.get(0); } List<VehicleModel> vehicleModel = VehicleModel.queryGetByForeignID(vehicleModelID, 0, 1); if (vehicleModel.size() == 0) { logger.warning("vehicleModelID \"" + vehicleModelID + "\" not known!"); return false; } List<WarrantyConditions> warrantyConditions = WarrantyConditions.queryGetByForeignID(warrantyConditionsID, 0, 1); if (warrantyConditions.size() == 0) { logger.warning("warrantyConditionsID \"" + warrantyConditionsID + "\" not known!"); return false; } v.setVIN(VIN); v.setClientID(client.get(0).getID()); v.setVehicleModelID(vehicleModel.get(0).getID()); v.setWarrantyConditionsID(warrantyConditions.get(0).getID()); v.setEngineNumber(engineNumber); v.setPlateNumber(plateNumber); v.setPurchaseDate(purchaseDate); v.setMileage(0); // приемаме, че магазина продава само нови автомобили v.setWarrantyOK(Vehicle.WARRANTY_YES); v.writeToDB(); } catch (RuntimeException e) { logger.log(Level.WARNING, "Can't write to DB!", e); return false; } return true; }
@GET @Path("/deleteclient") @Produces("text/plain") public String deleteClient(@QueryParam("numCli") int numCli) throws ParseException { EntityManager em = HibUtil.getEntityManager(); em.getTransaction().begin(); Client cli = em.find(Client.class, numCli); List<Sejour> sejs = cli.getSejours(); for (Sejour s : sejs) { s.removeAllActivites(); em.remove(s); } em.remove(cli); em.getTransaction().commit(); HibUtil.closeEntityManager(); return "ok"; }
@GET @Path("/getclients") @Produces("application/json; charset=utf-8") // http://localhost:8080/ProjetRestFull/eources/getjson public JResponse getEtudiantToJSONText() throws ParseException { EntityManager em = HibUtil.getEntityManager(); em.getTransaction().begin(); List<Client> clis = em.createQuery("from Client").getResultList(); Hibernate.initialize(clis); for (Client c : clis) { // On met le séjour à null, sinon il y a des références circulaires. em.detach(c); c.setSejours(null); } GenericEntity<List<Client>> entity = new GenericEntity<List<Client>>(clis) {}; JResponse r = JResponse.ok(entity).build(); em.getTransaction().commit(); HibUtil.closeEntityManager(); return r; }
/** The admin can see a report of a given month and year. */ private void seeReport() { int m, a; boolean check = false; m = 0; a = 0; // Ask for a month until the number of the month is correct. while (!check) { Consola.escriu("Insert the number of the month you would like to see"); m = Consola.llegeixInt(); if ((0 < m) && (m < 13)) { check = true; } else { Consola.escriu("Your number is incorrect. Please, try it again"); } } check = false; // Ask for a year until the number of the year is correct. while (!check) { Consola.escriu("Insert the number of the year you would like to check"); a = Consola.llegeixInt(); // This can be changed. If the application is running for years, then // sure some years past 2017 would be correct years too. if (0 < a && 2017 >= a) { check = true; } else { Consola.escriu("Your number is incorrect. Please, try it again"); } } Consola.escriu(""); Consola.escriu("**MONTHLY REPORT**"); Consola.escriu(""); for (Client c : lstClient) { c.printDNI(); Consola.escriu("Reserves done by this client: "); c.printReservesByMonthYear(m, a); Consola.escriu("-----------------------"); } }
@Test public void testCreaSequenza() { try { client1 = new Client(TestSequence1.port, TestSequence1.nomeServer); client1.connettiUtente(TestSequence1.nomeTest, TestSequence1.passwordTest); ArrayList<Project> pList = client1.mostraProgetti(); ArrayList<User> uList = client1.mostraContatti(); Project test = pList.get(0); client1.addActivity(test, TestSequence1.nomeA, "", uList.get(0), 0); client1.addActivity(test, TestSequence1.nomeA + "1", "", uList.get(0), 1); client1.startProject(test); assertEquals( "L'attività deve essere in corso", StateActivity.IN_CORSO, test.getListActivities().get(0).getStatoActivity()); assertEquals( "La seconda attività deve essere IN_ATTESA", StateActivity.IN_ATTESA, test.getListActivities().get(1).getStatoActivity()); } catch (Exception e) { e.printStackTrace(); } }
@Override public boolean createOrUpdateCompany( String electronicShopID, String clientID, String name, String contactPerson, String addressCity, String addressLine, String phoneNumber, String mail, String IBANNumber, String SWIFTCode, String registrationNumber, String VATNumber) { // check if we know that shop if (!ConfigurationProperties.getElectronicShopID().equals(electronicShopID)) { logger.warning("electronicShopID \"" + electronicShopID + "\" not known!"); return false; } List<Client> cl = Client.queryGetByForeignID(clientID, 0, 1); List<Company> cmpnl = null; Client c; if (cl.size() == 0) { c = new Client(); } else { c = cl.get(0); cmpnl = Company.queryGetAll(0, 1, c.getID()); } Company cmpn; if ((cmpnl == null) || (cmpnl.size() == 0)) { cmpn = new Company(); } else { cmpn = cmpnl.get(0); } try { c.setForeignID(clientID); c.setAddressCity(addressCity); c.setAddressLine(addressLine); c.setMail(mail); c.setPhoneNumber(phoneNumber); c.setIBANNumber(IBANNumber); c.setSWIFTCode(SWIFTCode); cmpn.setName(name); cmpn.setContactPerson(contactPerson); cmpn.setRegistrationNumber(registrationNumber); if (!"".equals(VATNumber)) { cmpn.setVATNumber(VATNumber); } c.setCompany(cmpn); c.writeToDB(); } catch (RuntimeException e) { logger.log(Level.WARNING, "Can't write to DB!", e); return false; } return true; }
@Override public boolean createOrUpdatePerson( String electronicShopID, String clientID, String name, String family, String addressCity, String addressLine, String phoneNumber, String mail, String IBANNumber, String SWIFTCode) { // check if we know that shop if (!ConfigurationProperties.getElectronicShopID().equals(electronicShopID)) { logger.warning("electronicShopID \"" + electronicShopID + "\" not known!"); return false; } List<Client> cl = Client.queryGetByForeignID(clientID, 0, 1); List<Person> pl = null; Client c; if (cl.size() == 0) { c = new Client(); } else { c = cl.get(0); pl = Person.queryGetAll(0, 1, c.getID()); } Person p; if ((pl == null) || (pl.size() == 0)) { p = new Person(); } else { p = pl.get(0); } try { c.setForeignID(clientID); c.setAddressCity(addressCity); c.setAddressLine(addressLine); c.setMail(mail); c.setPhoneNumber(phoneNumber); c.setIBANNumber(IBANNumber); c.setSWIFTCode(SWIFTCode); p.setName(name); p.setFamily(family); c.setPerson(p); c.writeToDB(); } catch (RuntimeException e) { logger.log(Level.WARNING, "Can't write to DB!", e); return false; } return true; }
@POST @Path("updateclient") @Consumes({MediaType.APPLICATION_JSON}) @Produces("text/plain") public String updateClient(Client cliParam) { EntityManager em = HibUtil.getEntityManager(); em.getTransaction().begin(); Client cli = em.find(Client.class, cliParam.getNumCli()); if (cliParam.getAdrRueCli() != null) { cli.setAdrRueCli(cliParam.getAdrRueCli()); } if (cliParam.getNomCli() != null) { cli.setNomCli(cliParam.getNomCli()); } if (cliParam.getVilleCli() != null) { cli.setVilleCli(cliParam.getVilleCli()); } if (cliParam.getAdrRueCli() != null) { cli.setAdrRueCli(cliParam.getAdrRueCli()); } if (cliParam.getCpCli() != null) { cli.setCpCli(cliParam.getCpCli()); } if (cliParam.getNumPieceCli() != null) { cli.setNumPieceCli(cliParam.getNumPieceCli()); } if (cliParam.getPieceCli() != null) { cli.setPieceCli(cliParam.getPieceCli()); } em.getTransaction().commit(); HibUtil.closeEntityManager(); return "ok"; }
/** The client can book a moto if he/she hasn't an active reserve. */ private void book() { boolean r = ((Client) current).hasActiveReserve(); boolean correct = false; boolean check = false; int hours = 0; int days = 0; int month = 0; int year = 0; Calendar date = null; if (!r) { while (!correct) { Consola.escriu("Insert a date (hh/dd/mm/yyyy)"); String fecha = Consola.llegeixString(); String[] parser = fecha.split("/"); date = Consola.llegeixDataSistema(); try { hours = Integer.parseInt(parser[0]); days = Integer.parseInt(parser[1]); month = Integer.parseInt(parser[2]) - 1; year = Integer.parseInt(parser[3]); while (!check) { check = true; if (hours > 20 || hours <= 8) { check = false; Consola.escriu( "The inserted hour is incorrect (8-20 hours only accepted). Please insert it again"); hours = Consola.llegeixInt(); } } check = false; while (!check) { check = true; if (days > 31 || days <= 0) { check = false; Consola.escriu("The inserted day is incorrect. Please insert it again"); days = Consola.llegeixInt(); } } check = false; while (!check) { check = true; if (month > 12 || month <= 0) { check = false; Consola.escriu("The inserted month is incorrect. Please insert it again"); month = Consola.llegeixInt(); } } check = false; while (!check) { check = true; if (year >= 2017 || year <= 0) { check = false; Consola.escriu("The inserted year is incorrect. Please insert it again"); year = Consola.llegeixInt(); } } date.set(year, month, days, hours, 0); Calendar currentDate = Consola.llegeixDataSistema(); correct = currentDate.before(date); if (!correct) { Consola.escriu("Invalid date, insert again"); } } catch (Exception ex) { Consola.escriu( "There's a invalid character in the date or an enmpy value, please, write again the date:"); } } // Trying to get our starter local. Local localS = bookGetLocalS(); // If it is different from null, then we can keep going. if (localS != null) { // We can try to get our ending local. Local localE = bookGetLocalE(); // And if indeed we can reach up to an ending local, we can keep going. if (localE != null) { // We DON'T have to check the same for the motos, because it is considered that a local is // available // If it has a X amount of motos. So if we reach here, then our starting local is HAS // motos for sure. Moto motoreta = bookGetMoto(localS); Consola.escriu("Insert number of days you would like to reserve:"); int cantDias = Consola.llegeixInt(); Consola.escriu("Insert number of hours you would like to reserve:"); int cantHoras = Consola.llegeixInt(); this.bookPrintInfo(localS, localE, motoreta, date, cantDias, cantHoras); Consola.escriu("Insert an S to confirm or an N to cancel the reserve"); String ans = Consola.llegeixString(); correct = checkYesNo(ans); if (correct) { ((Client) current) .addActiveReserve(localS, localE, date, cantHoras, cantDias, motoreta); String code = new String(); code = ((Client) current).getId() + localS.getId() + localE.getId() + motoreta.getId() + Integer.toString(cantHoras) + Integer.toString(cantDias); code = code + date.get(Calendar.HOUR_OF_DAY) + date.get(Calendar.DAY_OF_MONTH) + Integer.toString(date.get(Calendar.MONTH) + 1) + date.get(Calendar.YEAR); ((Client) current).setCodeToActiveReserve(code); Consola.escriu("Code: " + code); Consola.escriu("The reserve has been done and saved"); } } } } else { Consola.escriu("You have already done a reserve"); } }
/** Manager method. It allows the admin to recieve a moto from a client. */ public void pickUpMoto() { String code, answer; boolean check = false; boolean yesNo; boolean yesNoDesperfecto = true; Client myclient = null; Moto m; Local lend; Consola.escriu("Insert the code"); code = Consola.llegeixString(); code = this.checkCode(code); if (!code.equals("")) { for (int i = 0; i <= this.lstClient.size() && !check; i++) { check = this.lstClient.get(i).compareCode(code); if (check) { myclient = this.lstClient.get(i); } } m = myclient.getMotoFromActiveReserve(); lend = myclient.getLocalEFromActiveReserve(); Consola.escriu("Insert a 'S' if the moto is broken, insert a 'N' otherwise"); answer = Consola.llegeixString(); yesNo = this.checkYesNo(answer); if (!yesNo) { Consola.escriu("Insert a 'S' to admonish a minor flaw, a 'N' otherwise"); answer = Consola.llegeixString(); yesNoDesperfecto = this.checkYesNo(answer); } else { m.changeStatusNonAvailable(); } if (yesNoDesperfecto) { myclient.admonish(); } myclient.printActiveReserve(); Consola.escriu("Insert a 'S' if the moto has been returned with delay or a 'N' otherwise"); answer = Consola.llegeixString(); yesNo = this.checkYesNo(answer); if (yesNo) { myclient.delay(); } Consola.escriu("Write 'S' to confirm or 'N' to cancel"); answer = Consola.llegeixString(); yesNo = this.checkYesNo(answer); if (yesNo) { this.pickUpMakeChange(m, lend); myclient.changeActiveToDone(); } else { myclient.removeAdmonishFromActiveReserve(); myclient.removeDelayFromActiveReserve(); m.changeStatusAvailable(); Consola.escriu("Cancelled"); } } }
/** A supposed existent user tries to login to our system. */ private void logIn() { boolean check; boolean exists = false; int tries = 0; String user, pass; Person pers = null; /** Trying to select the person by its username. Maximum number of tries: 3. */ while (!exists && tries < 3) { int i; Consola.escriu("Insert username: "******"Invalid username, please try again."); tries += 1; } } /** * If we reached the end, we wither have a person or we have more than 3 tries. More than 3 * tries means that exists = false. Let's ask for the password in the case that exists is true. */ if (exists) { exists = false; tries = 0; // You can try 3 times for your password. while (!exists && tries < 3) { Consola.escriu("Insert password: "******"Correct password"); } else { Consola.escriu("Incorrect password."); tries += 1; } } } /** * We can have two situations: either we have a correct person (with correct user and password) * or we have exceeded the maximum tries permited. If we have a correct person, we show the * pertinent menu. If we reach here with more than 3 tries, then you can't log in. */ if (pers instanceof Client && tries < 3) { // Given the client, we have to check if he can logIn // id est, if he has less than 3 admonishes. if (((Client) pers).canLogIn()) { // Succeed, the client can log in and is now in use of our application. current = pers; selectOptionMenuClient(); } else { // Our client can log in =( Inform him/her. Consola.escriu("You have 3 admonishes, you can't log in, sorry."); } } else if (pers instanceof Manager && tries < 3) { current = pers; selectOptionMenuManager(); } else if (pers instanceof Admin && tries < 3) { current = pers; selectOptionMenuAdmin(); } else { Consola.escriu("You've exceeded the maximum permited tries"); } }