Subversion Repositories eFlore/Applications.cel

Rev

Rev 1967 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.modeles.objets;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.google.gwt.i18n.client.Dictionary;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.Window.Location;

/**
 * Classe chargeant certains paramètres de configuration à partir d'un fichier
 * javascript (config.js)
 * 
 * @author aurelien
 * 
 */
public class Configuration {

        /**
         * L'url de base du serveur jrest
         */
        private static String serviceBaseUrl;

        private static String imageBaseUrl;
        
        private static String suiviBugUrl ;
        
        private static String aideBaseUrl ;
        
        private static String emailContact;
        
        private static String referentielGeo ;
        
        private static String cleGoogleMaps ;

        private static String lienEfloreBaseUrl;
        
        private static String refTax;
        
        private static String refTaxVersion;
        
        private static String licence ="";
        
        private static String formatOriginal = "";
        
        private static String formatZoom = "";
        
        private static String formatGalerie = "";
        
        private static String formatListe = "";

        private static String utiliseRedirectionImage;

        private static String imageRedirectUrl;
        
        private static String tailleMaxUpload;
        
        private static List<InfosReferentielNom> referentielsDispos; 
        
        private static Map<String,HashMap<String, String>> groupesChampsEtendus; 
        
        private static String activerSaisieChampsEtendus = "0";

        /**
         * Constructeur sans argument
         */
        public Configuration() {
                // on utilise le dictionnaire d'internationalisation pour lire les
                // variables du fichier javascript
                
                //if(GWT.isScript()) {
                        serviceBaseUrl = Dictionary.getDictionary("configuration").get(
                                        "serviceBaseUrl");
                        
                        emailContact = Dictionary.getDictionary("configuration").get(
                        "emailContact");
                        
                        suiviBugUrl = Dictionary.getDictionary("configuration").get(
                        "suiviBugUrl");
                        
                        imageBaseUrl = Dictionary.getDictionary("configuration").get(
                        "imageBaseUrl");
                        
                        aideBaseUrl = Dictionary.getDictionary("configuration").get(
                        "aideBaseUrl");
                        
                        referentielGeo = Dictionary.getDictionary("configuration").get(
                        "referentielGeo");
                        
                        cleGoogleMaps = Dictionary.getDictionary("configuration").get(
                        "cleGoogleMaps");
                        
                        lienEfloreBaseUrl = Dictionary.getDictionary("configuration").get(
                        "lienEfloreBaseUrl");
                        
                        formatOriginal = Dictionary.getDictionary("configuration").get(
                        "formatOriginal");
                        
                        formatZoom = Dictionary.getDictionary("configuration").get(
                        "formatZoom");
                        
                        formatGalerie = Dictionary.getDictionary("configuration").get(
                        "formatGalerie");
                        
                        formatListe = Dictionary.getDictionary("configuration").get(
                        "formatListe");
                        
                        utiliseRedirectionImage = Dictionary.getDictionary("configuration").get(
                        "utiliseRedirectionImage");
                        
                        imageRedirectUrl = Dictionary.getDictionary("configuration").get(
                        "imageRedirectUrl");
                        
                        tailleMaxUpload = Dictionary.getDictionary("configuration").get(
                        "tailleMaxUpload");
                        
                        referentielsDispos = parserReferentielsDispos(Dictionary.getDictionary("configuration").get(
                                        "referentielsDispos"));
                        
                        activerSaisieChampsEtendus = Dictionary.getDictionary("configuration").get(
                        "activerSaisieChampsEtendus");
                        
                        // Pour test, l'activation de l'ajout des champs étendus est activable ou désactivable par 
                        // l'url 
                        if(Location.getParameter("activerSaisieChampsEtendus") != null) {
                                if(Location.getParameter("activerSaisieChampsEtendus").equals("1")) {
                                        activerSaisieChampsEtendus = "1";
                                } else if(Location.getParameter("activerSaisieChampsEtendus").equals("0")) {
                                        activerSaisieChampsEtendus = "0";
                                } 
                        }
                        
                        groupesChampsEtendus =  new HashMap<String,HashMap<String, String>>(); 
                        if(activerSaisieChampsEtendus.equals("1")) {
                                if(Dictionary.getDictionary("configuration").get("groupesChampsEtendus") != null &&
                                                !Dictionary.getDictionary("configuration").get("groupesChampsEtendus").isEmpty()) {
                                        groupesChampsEtendus = parserGroupesChampsEtendus(Dictionary.getDictionary("configuration").get(
                                                        "groupesChampsEtendus"));
                                }
                        }
        }
        
        private HashMap<String,HashMap<String, String>> parserGroupesChampsEtendus(String groupeChampsEtendusJson) {
                HashMap<String,HashMap<String, String>> groupesChampsEtendus = new HashMap<String,HashMap<String, String>>();
                try {
                        JSONValue groupesJson = JSONParser.parse(groupeChampsEtendusJson);
                        JSONObject groupes = groupesJson.isObject();
                        
                        for (Iterator<String> iterator = groupes.keySet().iterator(); iterator.hasNext();) {
                                String groupe = iterator.next();
                                JSONValue listeClesLabelsJson = groupes.get(groupe);
                                JSONObject listeClesLabels = listeClesLabelsJson.isObject();
                                HashMap<String, String> groupesClesLabel = new HashMap<String, String>();
                                for (Iterator<String> itCleLabels = listeClesLabels.keySet().iterator(); itCleLabels.hasNext();) {
                                        String cle = itCleLabels.next();
                                        String label = listeClesLabels.get(cle).isString().stringValue();       
                                        groupesClesLabel.put(cle, label);
                                }
                                groupesChampsEtendus.put(groupe, groupesClesLabel);
                        }
                } catch (Exception e) {
                        // TODO: handle exception
                }
                
                return groupesChampsEtendus;
        }
        
        private List<InfosReferentielNom> parserReferentielsDispos(String chaineListeReferentiels) {
                String[] tabReferentiels = chaineListeReferentiels.split(";");
                List<InfosReferentielNom> referentiels = new ArrayList<InfosReferentielNom>(tabReferentiels.length);
                for (int i = 0; i < tabReferentiels.length; i++) {
                        InfosReferentielNom infoRef = new InfosReferentielNom(tabReferentiels[i]);
                        referentiels.add(infoRef);
                }
                return referentiels;
        }

        /**
         * Accesseur pour l'url de base du serveur jrest
         * 
         * @return une url de la forme http://emplacement_serveur/jrest
         */
        public static String getServiceBaseUrl() {
                return serviceBaseUrl;
        }
        
        /**
         * Accesseur pour l'url de base du suivi de bug
         * 
         * @return une url pointant vers le suivi des bugs
         */
        public static String getSuiviBugUrl() {
                return suiviBugUrl;
        }
        
        /**
         * Accesseur pour l'url de base des images
         * 
         * @return une url pointant vers la racine du dossier contenant les images
         */
        public static String getImageBaseUrl() {
                return imageBaseUrl ;
        }
        
        /**
         * Accesseur pour l'url de base de l'aide
         * 
         * @return une url pointant vers la racine de l'aide
         */
        public static String getAideBaseUrl() {
                return aideBaseUrl ;
        }
        
        /**
         * Accesseur pour l'email de contact du carnet en ligne
         * 
         * @return une chaine contenant l'email de contact
         */
        public static String getEmailContact() {
                return emailContact;
        }
        
        /**
         * Accesseur pour le référentiel geo
         * 
         * @return le référentiel geo
         */
        public static String getReferentielGeo() {
                return referentielGeo ;
        }
        
        /**
         * Accesseur pour la clé google maps
         * 
         * @return la clé google maps
         */
        public static String getCleGoogleMaps() {
                return cleGoogleMaps ;
        }

        public static String getLienEfloreBaseUrl() {
                return lienEfloreBaseUrl;       
        }
        
        public static String getLicence() {
                return licence;
        }
        
        public static String getFormatOriginal() {
                return formatOriginal;
        }
        
        public static String getFormatZoom() {
                return formatZoom;
        }
        
        public static String getFormatGalerie() {
                return formatGalerie;
        }
        
        public static String getFormatListe() {
                return formatListe;
        }

        public static boolean utiliseRedirectionImages() {      
                return utiliseRedirectionImage.equals("1");
        }

        public static String getImageRedirectUrl() {            
                return imageRedirectUrl;        
        }
        
        public static String getTailleMaxUpload() {
                return tailleMaxUpload;
        }
        
        public static List<InfosReferentielNom> getReferentielsDispos() {
                return referentielsDispos;
        }
        
        public static boolean saisieChampsEtendusActivee() {
                return activerSaisieChampsEtendus.equals("1");
        }
        
        public static Map<String,HashMap<String, String>> getGroupesChampsEtendus() {
                return groupesChampsEtendus;
        }
}