1 package fr.orsay.lri.varna.applications;
4 import java.io.FileReader;
5 import java.io.FileWriter;
7 import java.io.StreamTokenizer;
8 import java.util.ArrayList;
9 import java.util.Arrays;
10 import java.util.Hashtable;
13 public class BasicINI {
15 private Hashtable<String,Hashtable<String,String>> _data = new Hashtable<String,Hashtable<String,String>>();
18 public void addItem(String category, String key, String val)
20 if (!_data.containsKey(category))
22 _data.put(category, new Hashtable<String,String>());
24 System.out.println("[E]"+key+"->"+val);
25 _data.get(category).put(key,val);
29 public String getItem(String category, String key)
32 if (_data.containsKey(category))
34 if (_data.get(category).containsKey(key))
36 result = _data.get(category).get(key);
42 public ArrayList<String> getItemList(String category)
44 ArrayList<String> result = new ArrayList<String>();
45 if (_data.containsKey(category))
47 for (String key: _data.get(category).keySet())
49 result.add(_data.get(category).get(key));
59 public static void saveINI(BasicINI data, String filename)
63 FileWriter out = new FileWriter(filename);
64 Set<String> cats = data._data.keySet();
65 String[] sortedCats = new String[cats.size()];
66 sortedCats = cats.toArray(sortedCats);
67 Arrays.sort(sortedCats);
68 for (int i=0;i<sortedCats.length;i++)
70 String cat = sortedCats[i];
71 out.write("["+cat+"]\n");
72 Hashtable<String,String> vals = data._data.get(cat);
73 Set<String> keys = vals.keySet();
74 String[] sortedKeys = new String[keys.size()];
75 sortedKeys = keys.toArray(sortedKeys);
76 for(int j=0;j<sortedKeys.length;j++)
78 String key = sortedKeys[j];
79 String val = vals.get(key);
80 out.write(key+"="+val+"\n");
86 {e3.printStackTrace();}
89 public static BasicINI loadINI(String filename)
91 BasicINI result = new BasicINI();
93 // Etats du parsing simplifie ...
94 final int CATEGORY = 0;
104 System.out.println("Loading "+new File(filename).getAbsolutePath());
106 Reader r = new FileReader(filename);
107 StreamTokenizer s = new StreamTokenizer(r);
109 s.eolIsSignificant(true);
110 s.wordChars('\u0000','\u00FF');
111 s.whitespaceChars('\u0000','\u000F');
115 int token = s.nextToken();
116 while(token != StreamTokenizer.TT_EOF)
135 case(StreamTokenizer.TT_EOL) :
140 result.addItem(category, key, val);
145 case(StreamTokenizer.TT_WORD) :
147 String word = s.sval;
169 token = s.nextToken();
172 catch(Exception exc1)
173 {exc1.printStackTrace();}