View Javadoc

1   package atg.service.constante;
2   
3   import java.util.Locale;
4   import atg.service.log.AtgLogManager;
5   /**
6    * Titre :        Gestion des constantes applicatives et du système<BR>
7    * Description :  Accès aux constantes du système<BR>
8    * <p>Copyright : FERRARI Olivier</p>
9    * @author BOSC Frédéric repris et modifié par FERRARI Olivier
10   * @version 1.0
11   * Ce logiciel est régi par la licence CeCILL soumise au droit français et
12   * respectant les principes de diffusion des logiciels libres. Vous pouvez
13   * utiliser, modifier et/ou redistribuer ce programme sous les conditions
14   * de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 
15   *  sur le site http://www.cecill.info.
16   * 
17   * Le fait que vous puissiez accéder à cet en-tête signifie que vous avez 
18   * pris connaissance de la licence CeCILL, et que vous en avez accepté les
19   * termes.
20   */
21  
22  
23   public class AtgConstantesWF
24  {
25    // Liste des constantes : clé / valeur
26    protected static java.util.Hashtable<String,String> listKeyValue = null;
27  
28    // Nom du fichier de constantes (fichier properties)
29    // Initialisé par défaut à "constantes.properties"
30    protected static String propFileName = AtgConstantes.ATG_CONSTANTES_DEFAULT_FILE_NAME;
31  
32    // Instance unique
33    protected static AtgConstantesWF instance = null;
34  
35    // Constante contenant le nom de la première page JSP
36    public static String STD_JSP_NAME_FIRST_PAGE = "";
37  
38    // Constantes de connexion à un serveur LDAP
39    public static String LDAP_PROVIDER_URL = "";
40    public static String LDAP_INITIAL_CONTEXT_FACTORY = "";
41    public static String LDAP_DN = "";
42    public static String LDAP_ADMIN_PASSWD = "";
43    public static String LDAP_ADMIN_DN = "";
44  
45    // Constantes de connexion à une base de donnees
46    public static String DB_DRIVER_NAME = "";
47    public static String DB_USER_NAME = "";
48    public static String DB_PWD = "";
49    public static String DB_DB_NAME = "";
50  
51    // Constantes messagerie mail
52    public static String STD_MAIL_SERVEUR_IP = "";
53    public static String STD_MAIL_SERVEUR_USER = "";
54    public static String STD_MAIL_SERVEUR_PASSWD = "";
55  
56  
57    public AtgConstantesWF()
58    {
59      listKeyValue = new java.util.Hashtable<String,String>();
60    }
61  
62    /**
63     * Retourne la valeur d'une constante
64     * @param aKey Nom de la constante
65     * @return Valeur
66     */
67    public static String getValue(String aKey)
68    {
69      return listKeyValue.get(aKey);
70    }
71  
72  
73    /**
74     * Retourne le nom du fichier properties
75     * @return Nom du fichier
76     */
77    public static String getPropFileName()
78    {
79      return propFileName;
80    }
81  
82  
83    /**
84     * Fixe le nom du fichier properties
85     * @param newFileName Nom du fichier
86     */
87    public static void setPropFileName(String newFileName)
88    {
89      propFileName = newFileName;
90    }
91  
92  
93    /**
94     * Ajoute une nouvelle constante
95     * @param newKey Nom de la constante
96     * @param newValue Valeur de la constante
97     */
98    public static void setValue(String newKey, String newValue)
99    {
100     // ajout dans la hashtable
101     listKeyValue.put(newKey, newValue);
102 
103     // mise à jour de la variable de classe
104     java.lang.reflect.Field field = null;
105     try
106     {
107        field = instance.getClass().getField(newKey);
108     }
109     catch (java.lang.NoSuchFieldException e)
110     {
111       return;
112     }
113     try
114     {
115       field.set(instance, newValue);
116     }
117     catch (java.lang.IllegalAccessException e)
118     {
119       AtgLogManager.getDefaultLog().warning("Impossible d'ajouter la constante '" + newKey + "' de valeur '" + newValue + " : " + e.getMessage());
120     }
121   }
122 
123 
124   /**
125    * Retourne la valeur d'une entrée du fichier de constantes<BR>
126    * Si la clé n'est pas trouvée la valeur retournée est la clé elle même
127    * @param resource Ressource correpondant au fichier
128    * @param key Nom de la constante
129    * @return String Valeur de la constante
130    */
131   protected static String getString(java.util.ResourceBundle resource, String key)
132   {
133     String result = resource.getString(key);
134 
135     if (result == null)
136       result = key;
137 
138     return result;
139   }
140 
141   public static void init(AtgConstantesWF newConstantes, ClassLoader unClassloader)
142   {
143     listKeyValue = new java.util.Hashtable<String,String>();
144     // ouverture du fichier
145     java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle(getPropFileName(),Locale.getDefault(),unClassloader);
146 
147     // parcours du fichier
148     // 1- ajout des valeurs dans la hashtable
149     String key, value;
150     java.util.Enumeration enumKey = resource.getKeys();
151     while (enumKey.hasMoreElements())
152     {
153       key = enumKey.nextElement().toString();
154       value = getString(resource, key);
155       listKeyValue.put(key, value);
156     }
157 
158     // 2- initialisation des variables de classe (permet un accès direct)
159     instance = newConstantes;
160     java.lang.reflect.Field[] fields = instance.getClass().getFields();
161     for (int i = 0; i < fields.length; i++)
162     {
163       // parcours de l'ensemble des variables
164       String res = getValue(fields[i].getName());
165       if (res != null)
166       {
167         // la variable est presente dans le fichier
168         try
169         {
170           fields[i].set(instance, res);
171         }
172         catch (java.lang.IllegalAccessException e)
173         {
174           AtgLogManager.getDefaultLog().warning("Impossible d'ajouter la constante '" + fields[i].getName() + "' de valeur '" + res + " : " + e.getMessage());
175         }
176       }
177     }
178   }
179 
180 
181   /**
182    * Initialise les valeurs des différentes constantes
183    * @param newConstantes Constantes de l'application
184    */
185   public static void init(AtgConstantesWF newConstantes)
186   {
187     AtgConstantesWF.init(newConstantes,new AtgConstantesWF().getClass().getClassLoader());
188 /*   listKeyValue = new java.util.Hashtable();
189 
190     // ouverture du fichier
191     java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle(getPropFileName());
192 
193 
194     // parcours du fichier
195     // 1- ajout des valeurs dans la hashtable
196     String key, value;
197     java.util.Enumeration enumKey = resource.getKeys();
198     while (enumKey.hasMoreElements())
199     {
200       key = enumKey.nextElement().toString();
201       value = getString(resource, key);
202       listKeyValue.put(key, value);
203     }
204 
205     // 2- initialisation des variables de classe (permet un accès direct)
206     instance = newConstantes;
207     java.lang.reflect.Field[] fields = instance.getClass().getFields();
208     for (int i = 0; i < fields.length; i++)
209     {
210       // parcours de l'ensemble des variables
211       String res = getValue(fields[i].getName());
212       if (res != null)
213       {
214         // la variable est presente dans le fichier
215         try
216         {
217           fields[i].set(instance, res);
218         }
219         catch (java.lang.IllegalAccessException e)
220         {
221           AtgLogManager.getDefaultLog().warning("Impossible d'ajouter la constante '" + fields[i].getName() + "' de valeur '" + res + " : " + e.getMessage());
222         }
223       }
224     }*/
225   }
226 }