001: package com.calipso.reportgenerator.reportmanager;
002:
003: import com.calipso.reportgenerator.common.InfoException;
004:
005: import java.util.*;
006: import java.io.*;
007:
008: import com.calipso.reportgenerator.common.LanguageTraslator;
009: import com.calipso.reportgenerator.common.Rol;
010:
011: /**
012: *
013: * User: alozada
014: * Date: 13/09/2005
015: * Time: 10:44:29
016: *
017: */
018: public class RolDataRepository {
019: private String repositoryPath;
020: private HashMap rols = new HashMap();
021:
022: /**
023: * Crea una instancia de <code>RolDataRepository</code>
024: * @param repositoryPath
025: */
026: public RolDataRepository(String repositoryPath)
027: throws InfoException {
028: this .repositoryPath = repositoryPath;
029: initialize(new File(repositoryPath));
030: }
031:
032: /**
033: * Llena un diccionario con los valores del repositorio
034: * en caso de que este ultimo exista
035: * @param repositoryFile
036: * @throws InfoException
037: */
038: private void initialize(File repositoryFile) throws InfoException {
039: if (repositoryFile.exists()) {
040: fillRolsMapFrom(repositoryFile);
041: }
042: }
043:
044: /**
045: * Agrega un nuevo rol (con su id y descripcion) al file Roldata (por ejemplo "rol1;rol1")
046: * @param rolId
047: * @param name
048: * @throws InfoException
049: */
050: public void addNewRol(String rolId, String name)
051: throws InfoException {
052: try {
053: if (getRols().containsKey(rolId)) {
054: throw new InfoException(LanguageTraslator
055: .traslate("452"));
056: }
057: File outputFile = new File(repositoryPath);
058: FileWriter fileWriter = null;
059: fileWriter = new FileWriter(outputFile.getPath(), true);
060: BufferedWriter bufferedWriter = new BufferedWriter(
061: fileWriter);
062: bufferedWriter.write(rolId + ";" + name + '\n');
063: bufferedWriter.close();
064: fileWriter.close();
065: } catch (IOException e) {
066: throw new InfoException(LanguageTraslator.traslate("475"),
067: e);
068: }
069: }
070:
071: /**
072: * Llena un diccionario con los valores del repositorio.
073: * Cada entrada al diccionario contiene el id de rol
074: * mientras que a cada entrada le corresponden las descripciones
075: * de los roles.
076: * @param repositoryFile
077: */
078: private void fillRolsMapFrom(File repositoryFile)
079: throws InfoException {
080: try {
081: FileReader fileReader = new FileReader(repositoryFile);
082: BufferedReader bufferedReader = new BufferedReader(
083: fileReader);
084: String line = bufferedReader.readLine();
085: while (line != null) {
086: if (!line.equals("")) {
087: StringTokenizer tokenizer = new StringTokenizer(
088: line, ";");
089: String rolId = tokenizer.nextToken();
090: String rolName = tokenizer.nextToken();
091: Vector data = new Vector(1);
092: data.add(rolName);
093: getRols().put(rolId, data);
094: }
095: line = bufferedReader.readLine();
096: }
097: bufferedReader.close();
098: fileReader.close();
099: } catch (FileNotFoundException e) {
100: throw new InfoException(LanguageTraslator.traslate("570"),
101: e);
102: } catch (IOException e) {
103: throw new InfoException(LanguageTraslator.traslate("570"),
104: e);
105: }
106: }
107:
108: /**
109: * Devuelve los roles del repositorio
110: * @return
111: */
112: private HashMap getRols() {
113: if (rols == null) {
114: rols = new HashMap();
115: }
116: return rols;
117: }
118:
119: public Collection getRolData(String rolId) {
120: if (getRols().containsKey(rolId)) {
121: return (Collection) getRols().get(rolId);
122: }
123: return null;
124: }
125:
126: /**
127: * Devuelve una coleccion con todos
128: * los objetos Rol (recorre el mapa rols, lo itera y genera la coleccion de roles)
129: * @return lista de objetos roles
130: */
131: public List getAllRols() {
132: Iterator it = rols.entrySet().iterator();
133: Set listNames = new TreeSet();
134: List list = new ArrayList();
135:
136: while (it.hasNext()) {
137: Rol rol;
138: Map.Entry map = (Map.Entry) it.next();
139: Vector vector = new Vector();
140: vector.addAll((Collection) map.getValue());
141: rol = new Rol((String) map.getKey(), (String) vector.get(0));
142: listNames.add(rol);
143: }
144: list.addAll(listNames);
145: return list;
146: }
147:
148: /**
149: * Elimina un rol de la aplicación (del mapa rols y del file RolData)
150: * @param rol
151: * @throws InfoException
152: */
153: public void removeRol(String rol) throws InfoException {
154: rols.remove(rol);
155: this .removeRolToFileDataRol();
156: }
157:
158: /**
159: * Carga nuevamente el file RolData,
160: * con los valores ya modificados en el mapa rols
161: * @throws InfoException
162: */
163: private void removeRolToFileDataRol() throws InfoException {
164: try {
165: Iterator it = rols.entrySet().iterator();
166: File outputFile = new File(repositoryPath);
167: FileWriter fileWriter = null;
168: fileWriter = new FileWriter(outputFile.getPath());
169: BufferedWriter bufferedWriter = new BufferedWriter(
170: fileWriter);
171: while (it.hasNext()) {
172: Map.Entry list = (Map.Entry) it.next();
173: String idRol = (String) list.getKey();
174: String rolString = idRol;
175: Vector vector = (Vector) list.getValue();
176: String string = "";
177: for (int i = 0; i < vector.size(); i++) {
178: string += ";";
179: String s = (String) vector.elementAt(i);
180: string += s;
181: }
182: bufferedWriter.write(rolString + string + '\n');
183: }
184: bufferedWriter.flush();
185: bufferedWriter.close();
186: fileWriter.close();
187: } catch (IOException e) {
188: throw new InfoException(LanguageTraslator.traslate("476"),
189: e);
190: }
191: }
192: }
|