Source code: plugins/CsBeagle/ServerList.java
1 /*
2 * ServerList.java
3 *
4 * Created on October 28, 2002, 8:13 PM
5 */
6
7 package plugins.CsBeagle;
8
9 /**
10 *
11 * @author Tobias Riemer
12 */
13 import java.util.Vector;
14 import java.util.StringTokenizer;
15 import java.io.*;
16
17 public class ServerList {
18
19 static final String ADDRESS = "address";
20 static final String PORT = "port";
21 static final String NAME = "name";
22 static final String FAVORITE = "favorite";
23
24 String fname;
25 Vector servers = new Vector();
26 protected Vector dcls = new Vector();
27 /** Creates a new instance of ServerList */
28 public ServerList() {
29 }
30
31 public void setFileName(String fname) {
32 this.fname = fname;
33 }
34
35 public void addDataChangeListener(ServerChangeListener dcl) {
36 if (!dcls.contains(dcl))
37 dcls.add(dcl);
38 }
39
40 public void removeDataChangeListener(ServerChangeListener dcl) {
41 dcls.remove(dcl);
42 }
43
44 public void fireDataInserted(int index) {
45 for(int i=0;i<dcls.size();i++)
46 ((ServerChangeListener) dcls.get(i)).serverInserted(this,index);
47 }
48
49
50
51 public void fireDataChanged() {
52 for(int i=0;i<dcls.size();i++)
53 ((ServerChangeListener) dcls.get(i)).serverChanged(this);
54 }
55
56 public void add(Server server) {
57 servers.add(server);
58 this.fireDataInserted(servers.size()-1);
59 }
60
61 public void remove(Server server) {
62 servers.remove(server);
63 this.fireDataChanged();
64 }
65
66 public void remove(int i) {
67 servers.remove(i);
68 this.fireDataChanged();
69 }
70
71 public void removeAllEnlments() {
72 servers.removeAllElements();
73 }
74
75 public int size() {
76 return servers.size();
77 }
78
79 public Server get(int i) {
80 return (Server) servers.get(i);
81 }
82
83 public void loadList() throws FileNotFoundException, IOException {
84
85 BufferedReader rf = new BufferedReader(new FileReader(fname));
86
87 String ip = new String();
88 String port = new String();
89 String name = new String();
90 String line = "";
91
92 while ((line = rf.readLine()) != null) {
93 FavoriteLine fline = new FavoriteLine(line);
94 if (fline.getKey().equals(ADDRESS))
95 ip = fline.getValue();
96 if (fline.getKey().equals(PORT))
97 port = fline.getValue();
98 if (fline.getKey().equals(NAME))
99 name = fline.getValue();
100 if (fline.getKey().equals(FAVORITE)) {
101 String f = fline.getValue();
102
103 boolean favorite;
104 if (f.compareTo("1") == 0) { favorite = true; }
105 else favorite = false;
106
107 int p = new Integer(port).intValue();
108 if ((p>0) && (p<99999)) {
109 if (favorite)
110 add(new Server(ip,p,favorite,name));
111 }
112 }
113
114 }
115 }
116
117 class FavoriteLine {
118
119 private String key = "";
120 private String value = "";
121 FavoriteLine(String line) {
122 line = line.trim();
123 int begKey = line.indexOf('\"');
124 if (begKey == -1) return ;
125 int endKey = line.indexOf('\"',begKey+1);
126 if (endKey == -1) return ;
127 key = line.substring(begKey+1,endKey);
128
129 int begValue = line.indexOf('\"',endKey+1);
130 if (begValue == -1) return ;
131 int endValue = line.indexOf('\"',begValue+1);
132 if (endValue == -1) return ;
133
134 value = line.substring(begValue+1,endValue);
135 }
136
137 public String getKey() {
138 return key;
139 }
140
141 public String getValue() {
142 return value;
143 }
144
145 public String toString() {
146 return "(" + key + "," + value + ")";
147 }
148 }
149
150 public void saveList() throws IOException {
151 BufferedWriter wf = new BufferedWriter(new FileWriter(fname));
152 wf.write("{");
153 wf.newLine();
154 for(int i=0;i<size();i++) {
155 //System.out.println("writing: " + ((Server) get(i)));
156 ((Server) get(i)).writeServerToFile(wf);
157 }
158 wf.write("}");
159 wf.newLine();
160
161 wf.flush();
162 wf.close();
163 }
164
165 }