Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package SeprozoService; import SeprozoEntities.Comment; import SeprozoEntities.Deelname; import SeprozoEntities.Event; import SeprozoEntities.Gebruiker; import SeprozoEntities.Zorgafnemer; import SeprozoTypes.EventCategorie; import SeprozoTypes.EventType; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.ejb.Local; import javax.ejb.Stateless; import javax.inject.Inject; import org.apache.commons.codec.digest.DigestUtils; /** * * @author rens */ @Local(UserService.class) @Stateless public class UserServiceImpl implements UserService { @Inject EntityStorage es; public UserServiceImpl() { } @Override public boolean registreerZorgafnemer(String email, String wachtwoord, String naam) { Gebruiker emailCheck = es.zoekGebruikerOpEmail(email); if (emailCheck == null) { String familiecode = versleutel(naam + wachtwoord + email); String versleuteldWachtwoord = versleutel(wachtwoord); Zorgafnemer z = new Zorgafnemer(email, versleuteldWachtwoord, naam, -1, "", "", familiecode, ""); es.save(z); return true; } else return false; } @Override public void configureerZorgafnemer(Zorgafnemer zorgafnemer, String naam, int leeftijd, String interesses, String aandoening, String familieWachtwoord) { zorgafnemer.setNaam(naam); zorgafnemer.setLeeftijd(leeftijd); zorgafnemer.setAandoening(aandoening); zorgafnemer.setInteresses(interesses); zorgafnemer.setFamilieWachtwoord(familieWachtwoord); } @Override public Zorgafnemer zoekZorgafnemer(Gebruiker g) { System.out.println(g); return es.zoekZorgafnemerOpId(g.getId()); } @Override public SeprozoSessionKey login(String email, String wachtwoord) { Gebruiker gebruiker = es.zoekGebruikerOpEmail(email); if (gebruiker != null) { String versleuteldWachtwoord = versleutel(wachtwoord); String opgeslagenWachtwoord = gebruiker.getWachtwoord(); if (opgeslagenWachtwoord.equals(versleuteldWachtwoord)) { String sessionKey = genereerSessionKey(email, wachtwoord); Calendar c = Calendar.getInstance(); Date currentTime = c.getTime(); c.add(Calendar.DATE, 7); Date expiryTime = c.getTime(); gebruiker.addLogin(currentTime, expiryTime); es.save(gebruiker); return new SeprozoSessionKey(sessionKey, gebruiker); } return null; } return null; } @Override public String addEvent(Gebruiker g, String titel, String datumEnTijd, String locatie, String categorie, String opmerking, String type) { try { Zorgafnemer zorgafnemer = zoekZorgafnemer(g); SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy-HH-mm"); Date convertedDatumEnTijd = format.parse(datumEnTijd); Event event = new Event(titel, convertedDatumEnTijd, locatie, opmerking, EventCategorie.valueOf(categorie.toUpperCase()), EventType.valueOf(type.toUpperCase())); Deelname deelname = new Deelname(zorgafnemer, event, true); es.save(deelname); return "SUCCESS"; } catch (ParseException ex) { Logger.getLogger(UserServiceImpl.class.getName()).log(Level.SEVERE, null, ex); } return "ERROR"; } @Override public String updateEvent(Gebruiker g, String eventid, String titel, String datumEnTijd, String locatie, String categorie, String opmerking, String type) { try { Zorgafnemer zorgafnemer = zoekZorgafnemer(g); SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy-HH-mm"); Date convertedDatumEnTijd = format.parse(datumEnTijd); List<Deelname> deelnames = es.getDeelnamesVoorGebruiker(g.getId()); for (Deelname d : deelnames) { if (d.getEvent().getPublicId() == Long.valueOf(eventid)) { if (d.getDeelnemer().getEmail().equals(zorgafnemer.getEmail())) { Event e = d.getEvent(); e.setNaam(titel); e.setDatumEnTijd(convertedDatumEnTijd); e.setLocatie(locatie); e.setEventCategorie(EventCategorie.valueOf(categorie)); e.setOpmerking(opmerking); e.setEventType(EventType.valueOf(type)); es.save(e); return "ERROR"; } } } } catch (ParseException ex) { Logger.getLogger(UserServiceImpl.class.getName()).log(Level.SEVERE, null, ex); } return "SUCCESS"; } @Override public String joinEvent(Gebruiker g, String eventId) { Zorgafnemer zorgafnemer = es.zoekZorgafnemerOpId(g.getId()); Event event = es.zoekEventOpId(Long.valueOf(eventId)); if (zorgafnemer != null && event != null) { List<Deelname> deelnames = es.getDeelnamesVoorGebruiker(g.getId()); for (Deelname d : deelnames) { if (d.getEvent().equals(event)) { return "DUPE"; } } Deelname deelname = new Deelname(zorgafnemer, event, false); es.save(deelname); return "SUCCESS"; } return "ERROR"; } @Override public List<Deelname> zoekDeelnamesVoorZorgafnemer(Zorgafnemer zorgafnemer) { return es.getDeelnamesVoorGebruiker(zorgafnemer.getId()); } @Override public boolean veranderWachtwoord(Gebruiker g, String oudWachtwoord, String nieuwWachtwoord) { String versleuteldOudWachtwoord = versleutel(oudWachtwoord); if (g.getWachtwoord().equals(versleuteldOudWachtwoord)) { String versleuteldNieuwWachtwoord = versleutel(nieuwWachtwoord); g.setWachtwoord(versleuteldNieuwWachtwoord); es.save(g); return true; } return false; } @Override public Comment addComment(Gebruiker g, long eventid, String comment) { Zorgafnemer z = es.zoekZorgafnemerOpId(g.getId()); List<Deelname> deelnames = zoekDeelnamesVoorZorgafnemer(z); for (Deelname d : deelnames) { if (d.getEvent().getEventId() == eventid) { Comment c = d.getEvent().addComment(comment, z.getId(), g.getNaam()); return c; } } return null; } private String genereerSessionKey(String naam, String wachtwoord) { Date tijd = new Date(); DateFormat df = DateFormat.getInstance(); return versleutel(naam + wachtwoord + df.format(tijd)); } private String versleutel(String tekst) { try { MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(tekst.getBytes("UTF-8")); String versleuteldeTekst = DigestUtils.sha256Hex(new String(md.digest())); return versleuteldeTekst; } catch (UnsupportedEncodingException | NoSuchAlgorithmException ex) { Logger.getLogger(UserServiceImpl.class.getName()).log(Level.SEVERE, null, ex); return null; } } @Override public List<Event> getAllEvents() { List<Event> events = es.getAllEvents(); return events; } @Override public Event getEvent(String eventid) { return es.zoekEventOpId(Long.valueOf(eventid)); } @Override public String leaveEvent(Gebruiker gebruiker, String eventid) { List<Deelname> deelnames = es.getDeelnamesVoorGebruiker(gebruiker.getId()); long id = Long.valueOf(eventid); for (Deelname d : deelnames) { if (d.getEvent().getEventId() == id) { es.removeDeelname(gebruiker.getId(), id); return "SUCCESS"; } } return "ERROR"; } @Override public String removeEvent(Gebruiker gebruiker, String eventid) { List<Deelname> deelnames = es.getDeelnamesVoorGebruiker(gebruiker.getId()); long id = Long.valueOf(eventid); for (Deelname d : deelnames) { if (d.getEvent().getEventId() == id && d.getEigenaar() == true) { es.removeEvent(id); return "SUCCESS"; } } return "ERROR"; } }