KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > calipso > reportgenerator > reportmanager > UsersRepository


1 package com.calipso.reportgenerator.reportmanager;
2
3 import com.calipso.reportgenerator.common.InfoException;
4
5 import java.util.HashMap JavaDoc;
6 import java.util.StringTokenizer JavaDoc;
7 import java.util.Iterator JavaDoc;
8 import java.io.*;
9
10 import com.calipso.reportgenerator.common.LanguageTraslator;
11 import com.calipso.reportgenerator.common.VersionProperties;
12
13 /**
14  * Representa el repositorio de los usuarios con
15  * sus respectivas contrasenas
16  */

17
18 public class UsersRepository {
19
20   private HashMap JavaDoc users;
21   private String JavaDoc repositoryPath;
22
23   /**
24    * Crea una instancia de <code>UsersRepository</code>
25    * @param repositoryPath
26    */

27   public UsersRepository(String JavaDoc repositoryPath) throws InfoException {
28     this.repositoryPath = repositoryPath;
29     initialize(new File(repositoryPath));
30   }
31
32   /**
33    * Llena un diccionario con los valores del repositorio
34    * en caso de que este ultimo exista
35    * @param repositoryFile
36    * @throws InfoException
37    */

38   private void initialize(File repositoryFile) throws InfoException {
39     if(repositoryFile.exists()) {
40       fillUsersMapFrom(repositoryFile);
41     }
42   }
43
44   /**
45    * Llena un diccionario con los valores del repositorio.
46    * Cada entrada al diccionario contiene el nombre de usuario
47    * mientras que a cada entrada le corresponden las contrasenas
48    * de los usuarios.
49    * @param repositoryFile
50    */

51   private void fillUsersMapFrom(File repositoryFile) throws InfoException {
52     FileReader fileReader = null;
53     try {
54       fileReader = new FileReader(repositoryFile);
55     } catch (FileNotFoundException e) {
56       throw new InfoException(LanguageTraslator.traslate("479"),e);
57     }
58     BufferedReader bufferedReader = new BufferedReader(fileReader);
59     String JavaDoc line = null;
60     try {
61       line = bufferedReader.readLine();
62       while(line != null) {
63         if(!line.equals("")) {
64           StringTokenizer JavaDoc tokenizer = new StringTokenizer JavaDoc(line, "=");
65           String JavaDoc user = tokenizer.nextToken();
66           String JavaDoc password = tokenizer.nextToken();
67           getUsers().put(user, password);
68         }
69         line = bufferedReader.readLine();
70       }
71       bufferedReader.close();
72       fileReader.close();
73     } catch (IOException e) {
74       throw new InfoException(LanguageTraslator.traslate("480"),e);
75     }
76
77   }
78
79   /**
80    * Valida un usuario. En caso de ser un usuario inexistente
81    * permite dar de alta el usuario siempre y cuando se ingrese
82    * la contrasena de root o admin. Por ello solo root puede dar
83    * de alta usuarios.
84    * @param userName nombre de usuario
85    * @param password contrasena de usuario
86    * @return
87    */

88   public boolean validate(String JavaDoc userName, String JavaDoc password) throws InfoException {
89     boolean returnVal = false;
90     if(getUsers().containsKey(userName)) {
91       String JavaDoc encryptPassword = PasswordEncryptor.getEncryptedPassword(password);
92       String JavaDoc storedPassword = getUsers().get(userName).toString();
93       if(storedPassword.trim().equalsIgnoreCase(encryptPassword.trim())) {
94         returnVal = true;
95       }
96     }
97     return returnVal;
98   }
99
100   /**
101    * Cambia la contrasena de un usuario
102    * @param userName nombre de usuario
103    * @param newPasswd nueva contrasena
104    */

105   public void changePasswd(String JavaDoc userName, String JavaDoc newPasswd) throws InfoException {
106     getUsers().remove(userName);
107     getUsers().put(userName, newPasswd);
108     updateChanges();
109   }
110
111   /**
112    * Borra un usuario del repositorio
113    * @param userName
114    */

115   public void deleteUser(String JavaDoc userName) throws InfoException {
116     getUsers().remove(userName);
117     updateChanges();
118   }
119
120   /**
121    * Actualiza los cambios realizados en el repositorio.
122    */

123   private void updateChanges() throws InfoException {
124     try{
125       File outputFile = new File(repositoryPath);
126       FileWriter fileWriter = null;
127       fileWriter = new FileWriter(outputFile.getPath(), true);
128       BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
129       Iterator JavaDoc iterator = getUsers().keySet().iterator();
130       while(iterator.hasNext()) {
131         String JavaDoc currentUserName = iterator.next().toString();
132         String JavaDoc hashedPasswd = getUsers().get(currentUserName).toString();
133         bufferedWriter.write(currentUserName + "=" + hashedPasswd + '\n');
134       }
135       bufferedWriter.close();
136       fileWriter.close();
137     }catch(Exception JavaDoc e){
138       throw new InfoException(LanguageTraslator.traslate("481"),e);
139     }
140   }
141
142   /**
143    * Agrega un nuevo usuario.
144    * @param userName
145    * @param password
146    */

147   public void addNewUser(String JavaDoc userName, String JavaDoc password) throws InfoException {
148       if(getUsers().containsKey(userName)){
149         throw new InfoException(LanguageTraslator.traslate("394"));
150       }
151       File outputFile = new File(repositoryPath);
152       FileWriter fileWriter = null;
153       try {
154         fileWriter = new FileWriter(outputFile.getPath(), true);
155         BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
156         bufferedWriter.write(userName + "=" + PasswordEncryptor.getEncryptedPassword(password) + '\n');
157         bufferedWriter.close();
158         fileWriter.close();
159       }catch(Exception JavaDoc e){
160         throw new InfoException(LanguageTraslator.traslate("482"),e);
161       }
162   }
163
164   /**
165    * Devuelve los usuarios del repositorio
166    * @return
167    */

168   private HashMap JavaDoc getUsers() {
169     if(users == null) {
170       users = new HashMap JavaDoc();
171     }
172     return users;
173   }
174 }
175
Popular Tags