SeprozoService.UserServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for SeprozoService.UserServiceImpl.java

Source

/*
 * 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";

    }

}