001: package com.calipso.reportgenerator.reportmanager;
002:
003: import com.calipso.reportgenerator.common.VersionProperties;
004: import com.calipso.reportgenerator.common.LanguageTraslator;
005: import com.calipso.reportgenerator.common.User;
006: import com.calipso.reportgenerator.common.InfoException;
007:
008: import java.util.*;
009: import java.io.*;
010:
011: /**
012: *
013: * User: jbassino
014: * Date: 10/03/2005
015: * Time: 19:06:23
016: *
017: */
018: public class UserDataRepository {
019: private HashMap users = new HashMap();
020: private String repositoryPath;
021:
022: /**
023: * Crea una instancia de <code>UsersRepository</code>
024: * @param repositoryPath
025: */
026: public UserDataRepository(String repositoryPath)
027: throws InfoException {
028: try {
029: this .repositoryPath = repositoryPath;
030: initialize(new File(repositoryPath));
031: } catch (IOException e) {
032: throw new InfoException(LanguageTraslator.traslate("572"),
033: e);
034: }
035: }
036:
037: /**
038: * Llena un diccionario con los valores del repositorio
039: * en caso de que este ultimo exista
040: * @param repositoryFile
041: * @throws java.io.IOException
042: */
043: private void initialize(File repositoryFile) throws IOException {
044: if (repositoryFile.exists()) {
045: fillUsersMapFrom(repositoryFile);
046: }
047: }
048:
049: /**
050: * Llena un diccionario con los valores del repositorio.
051: * Cada entrada al diccionario contiene el nombre de usuario
052: * mientras que a cada entrada le corresponden las descripciones
053: * de los usuarios.
054: * @param repositoryFile
055: */
056: private void fillUsersMapFrom(File repositoryFile) {
057: try {
058: FileReader fileReader = new FileReader(repositoryFile);
059: BufferedReader bufferedReader = new BufferedReader(
060: fileReader);
061: String line = bufferedReader.readLine();
062: while (line != null) {
063: if (!line.equals("")) {
064: StringTokenizer tokenizer = new StringTokenizer(
065: line, ";");
066: String userId = tokenizer.nextToken();
067: String userName = tokenizer.nextToken();
068: String userCompany = tokenizer.nextToken();
069: Vector data = new Vector(2);
070: data.add(userName);
071: data.add(userCompany);
072: getUsers().put(userId, data);
073: }
074: line = bufferedReader.readLine();
075: }
076: bufferedReader.close();
077: fileReader.close();
078: } catch (FileNotFoundException e) {
079:
080: } catch (IOException e) {
081:
082: }
083: }
084:
085: public Collection getUserData(String userId) {
086: if (getUsers().containsKey(userId)) {
087: return (Collection) getUsers().get(userId);
088: }
089: return null;
090: }
091:
092: /**
093: * Agrega un nuevo usuario al file Userdata (graba una linea de la forma :
094: * "111;Usu1;comp1"), antes validando que el usuario no fuese ya insertado y
095: * que la cantidad de usuarios no supere a la permitida
096: * @param userId
097: * @param name
098: * @param company
099: * @throws InfoException
100: */
101:
102: public void addNewUser(String userId, String name, String company)
103: throws InfoException {
104: try {
105: if (getUsers().containsKey(userId)) {
106: throw new InfoException(LanguageTraslator
107: .traslate("394"));
108: }
109: File outputFile = new File(repositoryPath);
110: FileWriter fileWriter = null;
111: fileWriter = new FileWriter(outputFile.getPath(), true);
112: BufferedWriter bufferedWriter = new BufferedWriter(
113: fileWriter);
114: bufferedWriter.write(userId + ";" + name + ";" + company
115: + '\n');
116: bufferedWriter.close();
117: fileWriter.close();
118: } catch (IOException e) {
119: throw new InfoException(LanguageTraslator.traslate("477"),
120: e);
121: }
122: }
123:
124: /**
125: * Devuelve los usuarios del repositorio
126: * @return mapa de usuarios (con la forma: 111->[usu1,comp1])
127: */
128: private HashMap getUsers() {
129: if (users == null) {
130: users = new HashMap();
131: }
132: return users;
133: }
134:
135: /**
136: * Devuelve una coleccion con todos
137: * los objetos usuario (partiendo desde un mapa,
138: * se forma un Set con todos los ususrios)
139: * @return set con todos los usuarios
140: */
141: public Set getAllUsers() {
142: Iterator it = users.entrySet().iterator();
143: Set listNames = new TreeSet();
144: while (it.hasNext()) {
145: User us;
146: Map.Entry list = (Map.Entry) it.next();
147: Vector list1 = new Vector();
148: list1.addAll((Collection) list.getValue());
149: us = new User((String) list.getKey(),
150: (String) list1.get(0), (String) list1.get(1));
151: listNames.add(us);
152: }
153: return listNames;
154: }
155:
156: /**
157: * Elimina un usuario de la aplicación (del mapa de usuarios y
158: * del file userData )
159: * @param user
160: * @throws InfoException
161: */
162:
163: public void removeUser(String user) throws InfoException {
164: users.remove(user);
165: this .removeUserToFileDataUser();
166:
167: }
168:
169: /**
170: * Carga nuevamente el file UserData,
171: * con el mapa users ya actualizado
172: * @throws InfoException
173: */
174: private void removeUserToFileDataUser() throws InfoException {
175: try {
176: Iterator it = users.entrySet().iterator();
177:
178: File outputFile = new File(repositoryPath);
179: FileWriter fileWriter = null;
180: fileWriter = new FileWriter(outputFile.getPath());
181: BufferedWriter bufferedWriter = new BufferedWriter(
182: fileWriter);
183: while (it.hasNext()) {
184: Map.Entry list = (Map.Entry) it.next();
185: String idUser = (String) list.getKey();
186: String userString = idUser;
187: Vector vector = (Vector) list.getValue();
188: String string = "";
189: for (int i = 0; i < vector.size(); i++) {
190: string += ";";
191: String s = (String) vector.elementAt(i);
192: string += s;
193: }
194:
195: bufferedWriter.write(userString + string + "\n");
196: }
197: bufferedWriter.flush();
198: bufferedWriter.close();
199: fileWriter.close();
200: } catch (IOException e) {
201: throw new InfoException(LanguageTraslator.traslate("478"),
202: e);
203:
204: }
205: }
206:
207: }
|