fr.univlorraine.mondossierweb.photo.PhotoUnivLorraineImpl.java Source code

Java tutorial

Introduction

Here is the source code for fr.univlorraine.mondossierweb.photo.PhotoUnivLorraineImpl.java

Source

/**
 *
 *  ESUP-Portail MONDOSSIERWEB - Copyright (c) 2016 ESUP-Portail consortium
 *
 *
 *  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 fr.univlorraine.mondossierweb.photo;

import java.net.InetAddress;
import java.net.UnknownHostException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Component;

import com.vaadin.server.WebBrowser;

import fr.univlorraine.mondossierweb.GenericUI;
import fr.univlorraine.mondossierweb.MainUI;
import fr.univlorraine.mondossierweb.MdwTouchkitUI;
import fr.univnancy2.PhotoClient.beans.Category;
import fr.univnancy2.PhotoClient.beans.PhotoClient;
import fr.univnancy2.PhotoClient.beans.TicketClient;
import fr.univnancy2.PhotoClient.exception.PhotoClientException;

/**
 * classe pour la gestion des photos (notament la rcupration du ticket).
 * @author Charlie Dubois
 */

@Scope(value = "session", proxyMode = ScopedProxyMode.DEFAULT)
@Component(value = "photoUnivLorraineImpl")
public class PhotoUnivLorraineImpl implements IPhoto {
    /**
     * Un logger.
     */
    private static final Logger LOG = LoggerFactory.getLogger(PhotoUnivLorraineImpl.class);

    /*@Resource
    private transient UserController userController;
     */

    /**
     * vrai si l'utilisateur est un enseignant.
     */
    //private boolean utilisateurEnseignant;

    /**
     * dlai avant expiration du ticket.
     */
    private static final int DELAI_TICKET_SEC = 200;

    /**
     * url du serveur de photo.
     */
    private String ressourceurl;
    /**
     * url du serveur de photo pour le ticket.
     */
    private String ticketurl;
    /**
     * vrai si le ticket en cours est pour le serveur.
     */
    private boolean forserver;
    /**
     * le code de l'application pour le serveur de photos.
     */
    private String codeapp;
    /**
     *  ticket pour le serveur de photos.
     */
    private TicketClient tc;

    /**
     * client photo.
     */
    private PhotoClient photoClient;

    /**
     * constructeur vide.
     */
    public PhotoUnivLorraineImpl() {
        super();
        forserver = false;

    }

    public String toString() {
        return "Bean PhotoUnivLorraineImpl : tc=" + tc.getCode();
    }

    /**
     * @see org.esupportail.mondossierweb.web.photo.IPhoto#urlPhoto(java.lang.String)
     */
    public String getUrlPhoto(final String cod_ind, String cod_etu, boolean isUtilisateurEnseignant,
            String loginUser) {
        String url = "";

        if (cod_etu == null)
            cod_etu = "00000000";

        checkTicket(cod_etu, isUtilisateurEnseignant, loginUser);

        if (tc != null && tc.isValid(DELAI_TICKET_SEC)) {

            try {
                url = photoClient.computeURLforCode(Category.ETUDIANT, cod_etu, tc);

            } catch (PhotoClientException e) {
                LOG.error("PhotoUnivLorraineImplCodEtu-Erreur getUrlPhoto cod_ind:" + cod_ind + " , cod_etu:"
                        + cod_etu, e);
            }
        }

        return url;
    }

    public String getUrlPhotoTrombinoscopePdf(final String cod_ind, String cod_etu, boolean isUtilisateurEnseignant,
            String loginUser) {
        String url = "";

        if (cod_etu == null)
            cod_etu = "00000000";
        //on refait le ticket pour le serveur qui genere le pdf:
        /*utilisateurEnseignant = userController.isEnseignant();
        String loginUser = userController.getCurrentUserName();*/

        if (!forserver || tc == null || (tc != null && !tc.isValid(DELAI_TICKET_SEC))) {
            initForServer(loginUser);
        }
        if (tc != null && tc.isValid(DELAI_TICKET_SEC)) {

            try {
                url = photoClient.computeURLforCode(Category.ETUDIANT, cod_etu, tc);

            } catch (PhotoClientException e) {
                LOG.error("PhotoUnivLorraineImplCodEtu-Erreur getUrlPhotoTrombinoscopePdf cod_ind : " + cod_ind
                        + ", cod_etu:" + cod_etu, e);
            }
        }

        //on retourne la nouvelle url:
        return url;
    }

    /**
     * @see org.esupportail.mondossierweb.web.photo.IPhoto#ticketBon(int)
     */
    public void checkTicket(final String cod_etu, boolean isUtilisateurEnseignant, String loginUser) {

        if (forserver || tc == null || (tc != null && !tc.isValid(DELAI_TICKET_SEC))) {

            /*   utilisateurEnseignant = userController.isEnseignant();
               String loginUser = userController.getCurrentUserName();*/

            if (!isUtilisateurEnseignant) {
                init(cod_etu, loginUser);
            } else {
                init(loginUser);
            }

        }

    }

    public void initForServer(String loginUser) {

        String hostadress = "";
        try {
            hostadress = InetAddress.getLocalHost().getHostAddress();

            tc = photoClient.getTicket(PhotoClient.MODE_NORMAL, hostadress, "ID", "NONE", loginUser);

        } catch (UnknownHostException e1) {
            LOG.error("PhotoUnivLorraineImplCodEtu-Erreur initForServer loginUser:" + loginUser + " hostadress : "
                    + hostadress, e1);
        } catch (PhotoClientException e) {
            LOG.error("PhotoUnivLorraineImplCodEtu-Erreur initForServer loginUser:" + loginUser + " hostadress : "
                    + hostadress, e);
            tc = null;

        }
        forserver = true;
    }

    /**
     * initialise un ticket pour la photo d'un tudiant.
     * @param cod_etu
     */
    public void init(final String cod_etu, String loginUser) {

        String remoteadress = getRemoteAdresse();
        // Paramtres du client photos
        if (photoClient == null) {
            photoClient = new PhotoClient();
            photoClient.setTicketURLPattern(getTicketurl());
            photoClient.setRessourceURLPattern(getRessourceurl());
            photoClient.setApplicationCode(getCodeapp());

        }
        // Demande d'un ticket au serveur de photos
        if (forserver || tc == null || (tc != null && !tc.isValid(DELAI_TICKET_SEC))) {
            try {
                tc = photoClient.getTicket(PhotoClient.MODE_NORMAL, remoteadress, "ID", cod_etu, loginUser);

            } catch (PhotoClientException e) {
                LOG.error("PhotoUnivLorraineImplCodEtu-Erreur init cod_etu:" + cod_etu + " loginUser:" + loginUser
                        + " remoteadress :-" + remoteadress + "-", e);
                tc = null;

            }
        }
        forserver = false;

    }

    /**
     * initialise un ticket pour avoir accs  toutes les photos.
     */
    public void init(String loginUser) {

        String remoteadress = getRemoteAdresse();

        // Paramtres du client photos
        if (photoClient == null) {
            photoClient = new PhotoClient();
            photoClient.setTicketURLPattern(getTicketurl());
            photoClient.setRessourceURLPattern(getRessourceurl());
            photoClient.setApplicationCode(getCodeapp());
        }
        // Demande d'un ticket au serveur de photos
        if (forserver || tc == null || (tc != null && !tc.isValid(DELAI_TICKET_SEC))) {
            try {

                tc = photoClient.getTicket(PhotoClient.MODE_NORMAL, remoteadress, "ID", "NONE", loginUser);

            } catch (PhotoClientException e) {
                LOG.error("PhotoUnivLorraineImplCodEtu-Erreur init loginUser:" + loginUser + " remoteadress :-"
                        + remoteadress + "-", e);
                tc = null;

            }
        }
        forserver = false;

    }

    /**
     * @return l'adresse ip de l'utilisateur
     */
    public String getRemoteAdresse() {
        WebBrowser browser;
        //String ip =  getIpAddr();
        String ip = GenericUI.getCurrent().getIpClient();
        LOG.debug("IP client via VaadinService Headers : " + ip);

        //Recuperation de l'IP pour info
        if (GenericUI.getCurrent() instanceof MainUI) {
            MainUI mainUI = MainUI.getCurrent();
            browser = mainUI.getPage().getWebBrowser();
            LOG.debug("browser IP client MainUI : " + browser.getAddress());

        }
        if (GenericUI.getCurrent() instanceof MdwTouchkitUI) {
            MdwTouchkitUI mdwTouchkitUI = MdwTouchkitUI.getCurrent();
            browser = mdwTouchkitUI.getPage().getWebBrowser();
            LOG.debug("browser IP client MdwTouchkitUI : " + browser.getAddress());

        }

        if (ip != null) {
            ip = ip.trim();
        }
        return ip;
    }

    /**
     * getter pour l'url de la ressource renseign dans domain.xml.
     * @return l'url de la ressource.
     */
    public String getRessourceurl() {
        if (ressourceurl == null) {
            ressourceurl = System.getProperty("context.param.photoserver.ressourceurl");
        }
        return ressourceurl;
    }

    /**
     * setter pour l'url de la ressource renseign dans domain.xml.
     * @param ressourceurl
     */
    public void setRessourceurl(final String ressourceurl) {
        this.ressourceurl = ressourceurl;
    }

    /**
     * getter pour l'url de demande de ticket renseign dans domain.xml.
     * @return l'url pour rcuprer le ticket.
     */
    public String getTicketurl() {
        if (ticketurl == null) {
            ticketurl = System.getProperty("context.param.photoserver.ticketurl");
        }
        return ticketurl;
    }

    /**
     * setter pour l'url de demande de ticket renseign dans domain.xml.
     * @param ticketurl
     */
    public void setTicketurl(final String ticketurl) {
        this.ticketurl = ticketurl;
    }

    /**
     * @return photoClient
     */
    public PhotoClient getPhotoClient() {
        return photoClient;
    }

    /**
     * @param photoClient
     */
    public void setPhotoClient(final PhotoClient photoClient) {
        this.photoClient = photoClient;
    }

    /*public boolean isUtilisateurEnseignant() {
       return utilisateurEnseignant;
    }
        
    public void setUtilisateurEnseignant(boolean utilisateurEnseignant) {
       this.utilisateurEnseignant = utilisateurEnseignant;
    }*/

    public String getCodeapp() {

        if (codeapp == null) {
            codeapp = System.getProperty("context.param.photoserver.codeapp");
        }

        return codeapp;
    }

    public void setCodeapp(String codeapp) {
        this.codeapp = codeapp;
    }

    @Override
    public boolean isOperationnel() {
        return true;
    }

}