KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.calipso.reportgenerator.reportmanager;
2
3 import com.calipso.reportgenerator.common.VersionProperties;
4 import com.calipso.reportgenerator.common.LanguageTraslator;
5 import com.calipso.reportgenerator.common.User;
6 import com.calipso.reportgenerator.common.InfoException;
7
8 import java.util.*;
9 import java.io.*;
10
11 /**
12  *
13  * User: jbassino
14  * Date: 10/03/2005
15  * Time: 19:06:23
16  *
17  */

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

26   public UserDataRepository(String JavaDoc repositoryPath) throws InfoException {
27     try {
28       this.repositoryPath = repositoryPath;
29       initialize(new File(repositoryPath));
30     } catch (IOException e) {
31       throw new InfoException(LanguageTraslator.traslate("572"), e);
32     }
33   }
34
35   /**
36    * Llena un diccionario con los valores del repositorio
37    * en caso de que este ultimo exista
38    * @param repositoryFile
39    * @throws java.io.IOException
40    */

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

54   private void fillUsersMapFrom(File repositoryFile) {
55     try {
56       FileReader fileReader = new FileReader(repositoryFile);
57       BufferedReader bufferedReader = new BufferedReader(fileReader);
58       String JavaDoc line = bufferedReader.readLine();
59       while(line != null) {
60         if(!line.equals("")) {
61           StringTokenizer tokenizer = new StringTokenizer(line, ";");
62           String JavaDoc userId = tokenizer.nextToken();
63           String JavaDoc userName = tokenizer.nextToken();
64           String JavaDoc userCompany = tokenizer.nextToken();
65           Vector data = new Vector(2);
66           data.add(userName);
67           data.add(userCompany);
68           getUsers().put(userId, data);
69         }
70         line = bufferedReader.readLine();
71       }
72       bufferedReader.close();
73       fileReader.close();
74     } catch(FileNotFoundException e) {
75
76     } catch(IOException e) {
77
78     }
79   }
80
81   public Collection getUserData(String JavaDoc userId) {
82     if(getUsers().containsKey(userId)) {
83       return (Collection)getUsers().get(userId);
84     }
85     return null;
86   }
87
88   /**
89    * Agrega un nuevo usuario al file Userdata (graba una linea de la forma :
90    * "111;Usu1;comp1"), antes validando que el usuario no fuese ya insertado y
91    * que la cantidad de usuarios no supere a la permitida
92    * @param userId
93    * @param name
94    * @param company
95    * @throws InfoException
96    */

97
98   public void addNewUser(String JavaDoc userId, String JavaDoc name, String JavaDoc company) throws InfoException {
99     try {
100       if(getUsers().containsKey(userId)){
101         throw new InfoException(LanguageTraslator.traslate("394"));
102       }
103       File outputFile = new File(repositoryPath);
104       FileWriter fileWriter = null;
105       fileWriter = new FileWriter(outputFile.getPath(), true);
106       BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
107       bufferedWriter.write(userId + ";" + name + ";" + company + '\n');
108       bufferedWriter.close();
109       fileWriter.close();
110     } catch(IOException e) {
111       throw new InfoException(LanguageTraslator.traslate("477"),e);
112     }
113   }
114
115   /**
116    * Devuelve los usuarios del repositorio
117    * @return mapa de usuarios (con la forma: 111->[usu1,comp1])
118    */

119   private HashMap getUsers() {
120     if(users == null) {
121       users = new HashMap();
122     }
123     return users;
124   }
125   /**
126    * Devuelve una coleccion con todos
127    * los objetos usuario (partiendo desde un mapa,
128    * se forma un Set con todos los ususrios)
129    * @return set con todos los usuarios
130    */

131   public Set getAllUsers(){
132       Iterator it = users.entrySet().iterator();
133       Set listNames = new TreeSet();
134     while (it.hasNext()){
135          User us;
136          Map.Entry list = (Map.Entry) it.next();
137          Vector list1 = new Vector();
138          list1.addAll((Collection) list.getValue() );
139          us = new User((String JavaDoc)list.getKey(),(String JavaDoc)list1.get(0),(String JavaDoc)list1.get(1));
140          listNames.add(us);
141         }
142       return listNames;
143   }
144   /**
145    * Elimina un usuario de la aplicación (del mapa de usuarios y
146    * del file userData )
147    * @param user
148    * @throws InfoException
149    */

150
151   public void removeUser(String JavaDoc user) throws InfoException {
152     users.remove(user);
153     this.removeUserToFileDataUser();
154
155   }
156   /**
157    * Carga nuevamente el file UserData,
158    * con el mapa users ya actualizado
159    * @throws InfoException
160    */

161   private void removeUserToFileDataUser() throws InfoException {
162    try{
163      Iterator it = users.entrySet().iterator();
164
165      File outputFile = new File(repositoryPath);
166      FileWriter fileWriter = null;
167      fileWriter = new FileWriter(outputFile.getPath());
168      BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
169      while (it.hasNext()) {
170        Map.Entry list = (Map.Entry) it.next();
171        String JavaDoc idUser = (String JavaDoc)list.getKey();
172        String JavaDoc userString = idUser;
173        Vector vector = (Vector)list.getValue();
174        String JavaDoc string = "";
175        for (int i = 0; i < vector.size(); i++) {
176          string += ";";
177          String JavaDoc s = (String JavaDoc) vector.elementAt(i);
178           string += s ;
179          }
180
181       bufferedWriter.write (userString + string + "\n");
182      }
183      bufferedWriter.flush();
184      bufferedWriter.close();
185      fileWriter.close();
186   } catch(IOException e) {
187      throw new InfoException(LanguageTraslator.traslate("478"),e);
188
189     }
190       }
191
192
193 }
194
195
Popular Tags