it.swim.servlet.profilo.azioni.RicerchePerUtentiLoggatiServlet.java Source code

Java tutorial

Introduction

Here is the source code for it.swim.servlet.profilo.azioni.RicerchePerUtentiLoggatiServlet.java

Source

/*
Copyright 2012-2015 Stefano Cappa, Jacopo Bulla, Davide Caio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package it.swim.servlet.profilo.azioni;

import it.swim.util.UtenteCollegatoUtil;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import entityBeans.Abilita;
import entityBeans.Utente;
import exceptions.RicercheException;

import sessionBeans.localInterfaces.GestioneAmicizieLocal;
import sessionBeans.localInterfaces.GestioneRegistrazioneLocal;
import sessionBeans.localInterfaces.GestioneRicercheLocal;

/**
 * Servlet implementation class RicerchePerUtentiLoggatiServlet
 */
public class RicerchePerUtentiLoggatiServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @EJB
    private GestioneRegistrazioneLocal registrazione;

    @EJB
    private GestioneRicercheLocal gestioneRicerche;

    @EJB
    private GestioneAmicizieLocal gestioneAmicizie;

    private String tipoRicerca;
    //questa variabile mi serve per sapere se la servlet  stata richiamata da un pulsante submit o no
    private boolean ricerca = false;
    private boolean ricercaGiaEffettuata = false;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public RicerchePerUtentiLoggatiServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // ottengo l'email dell'utente collegato dalla sessione, appoggiandomi
        // ad una classe di utilita'
        String emailUtenteCollegato = (String) UtenteCollegatoUtil.getEmailUtenteCollegato(request);
        this.tipoRicerca = request.getParameter("tipoRicerca");
        // se e' null e' perche' l'utente non e' collegato e allora devo fare il
        // redirect alla home
        /*if (emailUtenteCollegato == null) {
           response.sendRedirect("../home");
           return;
        }*/
        //i visitatori non possono fare la ricerca utenti
        if (emailUtenteCollegato == null && tipoRicerca.equals("utente")) {
            response.sendRedirect("../../home");
            return;
        }
        //ricerca aiuto per visitatori
        else if (emailUtenteCollegato == null && tipoRicerca.equals("aiuto")) {
            tipoRicerca = "aiutoVisitatore";
            request.setAttribute("abilita", gestioneRicerche.insiemeAbilitaGenerali());
            request.setAttribute("tipoRicerca", tipoRicerca);
            request.setAttribute("risultatoRicerca", ricerca);
        }
        //ricerca aiuto
        else if (emailUtenteCollegato != null && tipoRicerca.equals("aiuto")) {
            request.setAttribute("abilita", gestioneRicerche.insiemeAbilitaGenerali());
            request.setAttribute("tipoRicerca", tipoRicerca);
            request.setAttribute("risultatoRicerca", ricerca);
        }
        //ricerca utenti per utenti loggati
        else {
            request.setAttribute("tipoRicerca", tipoRicerca);
            request.setAttribute("risultatoRicerca", ricerca);
        }

        getServletConfig().getServletContext().getRequestDispatcher("/jsp/ricerche.jsp").forward(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        List<FileItem> items;
        String nome = new String();
        String cognome = new String();
        String emailUtenteCollegato = (String) UtenteCollegatoUtil.getEmailUtenteCollegato(request);
        List<Abilita> abilitaRicercate = new ArrayList<Abilita>();
        List<Utente> risultatoRicerca = new ArrayList<Utente>();
        boolean soloAmici = false;
        ricerca = false;
        try {
            items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
            for (FileItem item : items) {
                if (item.isFormField()) {
                    // Process regular form field (input
                    // type="text|radio|checkbox|etc", select, etc).
                    // ... (do your job here)
                    if (item.getFieldName().equals("nomeUtente")) {
                        nome = item.getString().trim();
                    }
                    if (item.getFieldName().equals("cognomeUtente")) {
                        cognome = item.getString().trim();
                    }
                    if (item.getFieldName().equals("abilita")) {
                        abilitaRicercate.add(registrazione.getAbilitaByNome(item.getString()));
                    }
                    if (item.getFieldName().equals("soloAmici")) {
                        soloAmici = true;
                    }
                }
            }
        } catch (FileUploadException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if (tipoRicerca.equals("aiuto")) {
            try {
                risultatoRicerca = gestioneRicerche.ricercaAiuto(abilitaRicercate,
                        (String) UtenteCollegatoUtil.getEmailUtenteCollegato(request));
                if (soloAmici == true) {
                    List<Utente> amiciUtente = gestioneAmicizie.getAmici(emailUtenteCollegato);
                    for (int i = 0; i < risultatoRicerca.size(); i++) {
                        if (!(amiciUtente.contains(risultatoRicerca.get(i)))) {
                            risultatoRicerca.remove(i);
                            i--;
                        }
                    }

                }
            } catch (RicercheException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            ricercaGiaEffettuata = true;
            request.setAttribute("abilita", gestioneRicerche.insiemeAbilitaGenerali());
            request.setAttribute("utenti", risultatoRicerca);
            if (risultatoRicerca.size() > 0)
                ricerca = true;
            request.setAttribute("risultatoRicerca", ricerca);
            request.setAttribute("ricercaGiaEffettuata", ricercaGiaEffettuata);
            request.setAttribute("tipoRicerca", tipoRicerca);
        } else if (tipoRicerca.equals("aiutoVisitatore")) {
            try {
                risultatoRicerca = gestioneRicerche.ricercaAiutoVisitatore(abilitaRicercate);
            } catch (RicercheException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            ricercaGiaEffettuata = true;
            request.setAttribute("abilita", gestioneRicerche.insiemeAbilitaGenerali());
            request.setAttribute("utenti", risultatoRicerca);
            if (risultatoRicerca.size() > 0)
                ricerca = true;
            request.setAttribute("risultatoRicerca", ricerca);
            request.setAttribute("ricercaGiaEffettuata", ricercaGiaEffettuata);
            request.setAttribute("tipoRicerca", tipoRicerca);
        } else {
            try {
                risultatoRicerca = gestioneRicerche.ricercaUtenti(nome, cognome,
                        (String) UtenteCollegatoUtil.getEmailUtenteCollegato(request));
            } catch (RicercheException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            ricercaGiaEffettuata = true;
            request.setAttribute("utenti", risultatoRicerca);
            if (risultatoRicerca.size() > 0)
                ricerca = true;
            request.setAttribute("risultatoRicerca", ricerca);
            request.setAttribute("tipoRicerca", tipoRicerca);
            request.setAttribute("ricercaGiaEffettuata", ricercaGiaEffettuata);
        }
        getServletConfig().getServletContext().getRequestDispatcher("/jsp/ricerche.jsp").forward(request, response);
    }
}