/**********************************************************************
* Copyright (c) 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
�*
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
package net.sourceforge.phpdt.httpquery.config;
import net.sourceforge.phpdt.phphelp.PHPHelpPlugin;
/**
*
*/
public class Configuration implements IConfiguration, Comparable {
private static final String MEMENTO_ID = "id";
private static final String MEMENTO_NAME = "name";
private static final String MEMENTO_USER = "user";
private static final String MEMENTO_URL = "url";
private static final String MEMENTO_PASSWORD = "password";
private static final String MEMENTO_TYPE_ID = "type-id";
protected String fId = "";
protected String fName = "";
protected String fUrl = "";
protected String fPassword = "";
protected String fUser = "";
protected String fType = "";
private static final char[] SCRAMBLING_TABLE = new char[] {
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
114,
120,
53,
79,
96,
109,
72,
108,
70,
64,
76,
67,
116,
74,
68,
87,
111,
52,
75,
119,
49,
34,
82,
81,
95,
65,
112,
86,
118,
110,
122,
105,
41,
57,
83,
43,
46,
102,
40,
89,
38,
103,
45,
50,
42,
123,
91,
35,
125,
55,
54,
66,
124,
126,
59,
47,
92,
71,
115,
78,
88,
107,
106,
56,
36,
121,
117,
104,
101,
100,
69,
73,
99,
63,
94,
93,
39,
37,
61,
48,
58,
113,
32,
90,
44,
98,
60,
51,
33,
97,
62,
77,
84,
80,
85,
223,
225,
216,
187,
166,
229,
189,
222,
188,
141,
249,
148,
200,
184,
136,
248,
190,
199,
170,
181,
204,
138,
232,
218,
183,
255,
234,
220,
247,
213,
203,
226,
193,
174,
172,
228,
252,
217,
201,
131,
230,
197,
211,
145,
238,
161,
179,
160,
212,
207,
221,
254,
173,
202,
146,
224,
151,
140,
196,
205,
130,
135,
133,
143,
246,
192,
159,
244,
239,
185,
168,
215,
144,
139,
165,
180,
157,
147,
186,
214,
176,
227,
231,
219,
169,
175,
156,
206,
198,
129,
164,
150,
210,
154,
177,
134,
127,
182,
128,
158,
208,
162,
132,
167,
209,
149,
241,
153,
251,
237,
236,
171,
195,
243,
233,
253,
240,
194,
250,
191,
155,
142,
137,
245,
235,
163,
242,
178,
152 };
/**
* Construct a Configuration with the defult type:
* net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin.HTTP_QUERY
*
*/
public Configuration() {
this(PHPHelpPlugin.HTTP_QUERY); // default type
}
/**
* Construct a Configuration with a type
* @param type Example: net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin.HTTP_QUERY
*
* @see net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin
*/
public Configuration(String type) {
this.fType = type;
}
public String getId() {
return fId;
}
public String getName() {
return fName;
}
public String getURL() {
return fUrl;
}
public String getPassword() {
return fPassword;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.monitor.internal.IConfiguration#getLocalPort()
*/
public String getUser() {
return fUser;
}
/**
*/
public String getType() {
return fType;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.monitor.internal.IConfiguration#isRunning()
*/
public boolean isActive() {
return ConfigurationManager.getInstance().isActive(this);
}
public void delete() {
ConfigurationManager.getInstance().removeConfiguration(this);
}
public boolean isWorkingCopy() {
return false;
}
public IConfigurationWorkingCopy getWorkingCopy() {
return new ConfigurationWorkingCopy(this);
}
protected void setInternal(IConfiguration monitor) {
fId = monitor.getId();
fName = monitor.getName();
fUrl = monitor.getURL();
fPassword = monitor.getPassword();
fUser = monitor.getUser();
fType = monitor.getType();
}
protected void save(IMemento memento) {
memento.putString(MEMENTO_ID, fId);
memento.putString(MEMENTO_NAME, fName);
memento.putString(MEMENTO_TYPE_ID, fType);
memento.putString(MEMENTO_USER, fUser);
memento.putString(MEMENTO_URL, fUrl);
String result = 'A' + scramblePassword(fPassword);
memento.putString(MEMENTO_PASSWORD, result);
}
protected void load(IMemento memento) {
fId = memento.getString(MEMENTO_ID);
if (fId == null) {
fId = "";
}
fName = memento.getString(MEMENTO_NAME);
if (fName == null) {
fName = "";
}
fType = memento.getString(MEMENTO_TYPE_ID);
if (fType == null) {
fType = "";
}
fUser = memento.getString(MEMENTO_USER);
if (fUser == null) {
fUser = "";
}
fUrl = memento.getString(MEMENTO_URL);
if (fUrl == null) {
fUrl = "";
}
String result = memento.getString(MEMENTO_PASSWORD);
if (result == null) {
fPassword = "";
} else {
fPassword = scramblePassword(result.substring(1));
}
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#toString()
*/
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append(fName);
buffer.append(" - ");
buffer.append(fUser);
buffer.append(" - ");
buffer.append(fUrl);
buffer.append(" - ");
buffer.append(fType);
return buffer.toString();
}
/*
* (non-Javadoc)
*
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
public int compareTo(Object o) {
if (o instanceof IConfiguration) {
return fName.compareTo(((IConfiguration) o).getName());
}
return 1;
}
private static String scramblePassword(String password) {
int length = password.length();
char[] out = new char[length];
for (int i = 0; i < length; i++) {
char value = password.charAt(i);
out[i] = SCRAMBLING_TABLE[value];
}
return new String(out);
}
public boolean isUserComplete() {
if (fUser == null || fUser.equals("")) {
return false;
}
if (fPassword == null || fPassword.equals("")) {
return false;
}
return true;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(Object obj) {
if (obj instanceof Configuration) {
if (fName == null || ((Configuration) obj).fName == null) {
return false;
}
return fName.equals(((Configuration) obj).fName);
}
return false;
}
}