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
26 protected static java.util.Hashtable<String,String> listKeyValue = null;
27
28
29
30 protected static String propFileName = AtgConstantes.ATG_CONSTANTES_DEFAULT_FILE_NAME;
31
32
33 protected static AtgConstantesWF instance = null;
34
35
36 public static String STD_JSP_NAME_FIRST_PAGE = "";
37
38
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
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
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
101 listKeyValue.put(newKey, newValue);
102
103
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
145 java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle(getPropFileName(),Locale.getDefault(),unClassloader);
146
147
148
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
159 instance = newConstantes;
160 java.lang.reflect.Field[] fields = instance.getClass().getFields();
161 for (int i = 0; i < fields.length; i++)
162 {
163
164 String res = getValue(fields[i].getName());
165 if (res != null)
166 {
167
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
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225 }
226 }