Skip to content

Commit 7a35381

Browse files
committed
Replaced ObjectUtils by Objects
1 parent 995658e commit 7a35381

File tree

1 file changed

+226
-0
lines changed

1 file changed

+226
-0
lines changed
Lines changed: 226 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
package fi.helsinki.cs.tmc.model;
2+
3+
import com.google.common.base.Optional;
4+
import fi.helsinki.cs.tmc.events.TmcEvent;
5+
import fi.helsinki.cs.tmc.events.TmcEventBus;
6+
import fi.helsinki.cs.tmc.tailoring.SelectedTailoring;
7+
import fi.helsinki.cs.tmc.tailoring.Tailoring;
8+
import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
9+
import fi.helsinki.cs.tmc.core.domain.Course;
10+
import java.util.Locale;
11+
12+
/**
13+
* A transient saveable collection of all settings of the TMC plugin.
14+
*/
15+
public class NBTmcSettings implements TmcSettings {
16+
private static final String PREF_BASE_URL = "baseUrl";
17+
private static final String PREF_USERNAME = "username";
18+
private static final String PREF_PASSWORD = "password";
19+
private static final String PREF_PROJECT_ROOT_DIR = "projectRootDir";
20+
private static final String PREF_CHECK_FOR_UPDATES_IN_BACKGROUND = "checkForUpdatesInBackground";
21+
private static final String PREF_CHECK_FOR_UNOPENED_AT_STARTUP = "checkForUnopenedAtStartup";
22+
private static final String PREF_SPYWARE_ENABLED = "spywareEnabled";
23+
private static final String PREF_DETAILED_SPYWARE_ENABLED = "detailedSpywareEnabled";
24+
private static final String PREF_ERROR_MSG_LOCALE = "errorMsgLocale";
25+
26+
private static final NBTmcSettings defaultInstance =
27+
new NBTmcSettings(
28+
PersistableSettings.forModule(NBTmcSettings.class),
29+
SelectedTailoring.get(),
30+
TmcEventBus.getDefault()
31+
);
32+
33+
private PersistableSettings settings;
34+
private Tailoring tailoring;
35+
private TmcEventBus eventBus;
36+
private final String api_version = "7";
37+
38+
private String unsavedPassword;
39+
40+
@Override
41+
public boolean userDataExists() {
42+
return !(this.getUsername().isEmpty() || this.getPassword().isEmpty());
43+
}
44+
45+
@Override
46+
public Optional<Course> getCurrentCourse() {
47+
if(CourseDb.getInstance().getCurrentCourse() == null){
48+
return Optional.absent();
49+
} else {
50+
return Optional.of(CourseDb.getInstance().getCurrentCourse());
51+
}
52+
}
53+
54+
@Override
55+
public String apiVersion() {
56+
return this.api_version;
57+
}
58+
59+
@Override
60+
public String getFormattedUserData() {
61+
return this.getUsername() + ":" + this.getPassword();
62+
}
63+
64+
@Override
65+
public String clientName() {
66+
return "netbeans_plugin";
67+
}
68+
69+
@Override
70+
public String clientVersion() {
71+
return "0.8.8";
72+
}
73+
74+
public static class SavedEvent implements TmcEvent {}
75+
76+
public static NBTmcSettings getDefault() {
77+
return defaultInstance;
78+
}
79+
80+
public static NBTmcSettings getTransient() {
81+
return new NBTmcSettings(
82+
PersistableSettings.forModule(NBTmcSettings.class),
83+
SelectedTailoring.get(),
84+
TmcEventBus.getDefault()
85+
);
86+
}
87+
88+
/*package*/ NBTmcSettings(PersistableSettings settings, Tailoring tailoring, TmcEventBus eventBus) {
89+
this.settings = settings;
90+
this.tailoring = tailoring;
91+
this.eventBus = eventBus;
92+
93+
this.unsavedPassword = settings.get(PREF_PASSWORD, "");
94+
}
95+
96+
public void save() {
97+
if (this != defaultInstance) {
98+
throw new IllegalStateException("May only save the default instance of TmcSettings.");
99+
}
100+
settings.saveAll();
101+
eventBus.post(new SavedEvent());
102+
}
103+
104+
@Override
105+
public String getServerAddress() {
106+
return settings.get(PREF_BASE_URL, tailoring.getDefaultServerUrl());
107+
}
108+
109+
public void setServerBaseUrl(String baseUrl) {
110+
baseUrl = stripTrailingSlashes(baseUrl);
111+
settings.put(PREF_BASE_URL, baseUrl);
112+
}
113+
114+
private String stripTrailingSlashes(String s) {
115+
while (s.endsWith("/")) {
116+
s = s.substring(0, s.length() - 1);
117+
}
118+
return s;
119+
}
120+
121+
@Override
122+
public String getUsername() {
123+
return settings.get(PREF_USERNAME, tailoring.getDefaultUsername());
124+
}
125+
126+
public void setUsername(String username) {
127+
settings.put(PREF_USERNAME, username);
128+
}
129+
130+
@Override
131+
public String getPassword() {
132+
return unsavedPassword;
133+
}
134+
135+
public void setPassword(String password) {
136+
unsavedPassword = password;
137+
if (isSavingPassword()) {
138+
settings.put(PREF_PASSWORD, password);
139+
}
140+
}
141+
142+
public void setSavingPassword(boolean shouldSave) {
143+
if (shouldSave) {
144+
settings.put(PREF_PASSWORD, unsavedPassword);
145+
} else {
146+
settings.remove(PREF_PASSWORD);
147+
}
148+
}
149+
150+
public boolean isSavingPassword() {
151+
return settings.get(PREF_PASSWORD, null) != null;
152+
}
153+
154+
@Override
155+
public String getTmcMainDirectory() {
156+
String path = settings.get(PREF_PROJECT_ROOT_DIR, null);
157+
if (path != null) {
158+
return path;
159+
} else {
160+
// Can sometimes take a while. That's why we don't pass it as a default above.
161+
return ProjectMediator.getDefaultProjectRootDir();
162+
}
163+
}
164+
165+
public void setProjectRootDir(String value) {
166+
settings.put(PREF_PROJECT_ROOT_DIR, value);
167+
}
168+
169+
public boolean isCheckingForUpdatesInTheBackground() {
170+
return settings.get(PREF_CHECK_FOR_UPDATES_IN_BACKGROUND, "1").equals("1");
171+
}
172+
173+
public void setCheckingForUpdatesInTheBackground(boolean value) {
174+
settings.put(PREF_CHECK_FOR_UPDATES_IN_BACKGROUND, value ? "1" : "0");
175+
}
176+
177+
public boolean isCheckingForUnopenedAtStartup() {
178+
return settings.get(PREF_CHECK_FOR_UNOPENED_AT_STARTUP, "1").equals("1");
179+
}
180+
181+
public void setCheckingForUnopenedAtStartup(boolean value) {
182+
settings.put(PREF_CHECK_FOR_UNOPENED_AT_STARTUP, value ? "1" : "0");
183+
}
184+
185+
public boolean isSpywareEnabled() {
186+
String defaultValue = tailoring.isSpywareEnabledByDefault() ? "1" : "0";
187+
return settings.get(PREF_SPYWARE_ENABLED, defaultValue).equals("1");
188+
}
189+
190+
public void setIsSpywareEnabled(boolean value) {
191+
settings.put(PREF_SPYWARE_ENABLED, value ? "1" : "0");
192+
}
193+
194+
public boolean isDetailedSpywareEnabled() {
195+
String defaultValue = tailoring.isDetailedSpywareEnabledByDefault() ? "1" : "0";
196+
return settings.get(PREF_DETAILED_SPYWARE_ENABLED, defaultValue).equals("1");
197+
}
198+
199+
public Locale getErrorMsgLocale() {
200+
Locale dflt = tailoring.getDefaultErrorMsgLocale();
201+
return parseLocale(settings.get(PREF_ERROR_MSG_LOCALE, ""), dflt);
202+
}
203+
204+
public void setErrorMsgLocale(Locale locale) {
205+
settings.put(PREF_ERROR_MSG_LOCALE, locale.toString());
206+
}
207+
208+
private Locale parseLocale(String s, Locale dflt) {
209+
if (s.isEmpty()) {
210+
return dflt;
211+
}
212+
String[] parts = s.split("_");
213+
switch (parts.length) {
214+
case 1:
215+
return new Locale(parts[0]);
216+
case 2:
217+
return new Locale(parts[0], parts[1]);
218+
case 3:
219+
return new Locale(parts[0], parts[1], parts[2]);
220+
default:
221+
return dflt;
222+
}
223+
}
224+
225+
}
226+

0 commit comments

Comments
 (0)