Skip to content

Commit 6595cfe

Browse files
Add ProgramSettingsManager for handle settings not found or empty cases
1 parent 3116c7f commit 6595cfe

File tree

11 files changed

+74
-10
lines changed

11 files changed

+74
-10
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>szczepanski.gerard</groupId>
55
<artifactId>runit-parent</artifactId>
6-
<version>0.9</version>
6+
<version>0.9.2</version>
77
<packaging>pom</packaging>
88

99
<properties>

runit-common/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>szczepanski.gerard</groupId>
55
<artifactId>runit-parent</artifactId>
6-
<version>0.9</version>
6+
<version>0.9.2</version>
77
</parent>
88
<artifactId>runit-common</artifactId>
99
</project>

runit-program/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>szczepanski.gerard</groupId>
66
<artifactId>runit-parent</artifactId>
7-
<version>0.9</version>
7+
<version>0.9.2</version>
88
</parent>
99
<artifactId>runit-program</artifactId>
1010

runit-program/src/main/java/szczepanski/gerard/runit/program/config/DependenciesConfig.java

+6
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import szczepanski.gerard.runnit.view.tab.factory.SettingsDirTabFactory;
4949
import szczepanski.gerard.runnit.view.tab.factory.SettingsGeneralTabFactory;
5050
import szczepanski.gerard.runnit.view.tab.factory.SettingsWebTabFactory;
51+
import szczepanski.gerard.runnit.view.util.ProgramSettingsManager;
5152

5253
@Configuration
5354
public class DependenciesConfig {
@@ -199,5 +200,10 @@ private List<SearchAlgorithm> searchAlgorithms() {
199200
public SearchTermMatcher searchTermMatcher() {
200201
return new SimpleSearchTermMatcher();
201202
}
203+
204+
@Bean
205+
public ProgramSettingsManager programSettingsManager() {
206+
return new ProgramSettingsManager(settingsLoader(), settingsWriter());
207+
}
202208

203209
}

runit-program/src/main/java/szczepanski/gerard/runit/program/main/Main.java

+8
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import szczepanski.gerard.runit.program.util.ProgramHotKeyListener;
1919
import szczepanski.gerard.runit.program.util.ProgramWindowMoveListener;
2020
import szczepanski.gerard.runnit.view.scene.factory.MainSceneFactory;
21+
import szczepanski.gerard.runnit.view.util.ProgramSettingsManager;
2122
import szczepanski.gerard.runnit.view.util.ProgramTrayManager;
2223

2324
public class Main extends Application {
@@ -40,6 +41,7 @@ public void start(Stage primaryStage) throws Exception {
4041
ProgramTrayManager.installInSystemTray(primaryStage);
4142
ProgramHotKeyListener.getInstance().registerProgramHotKey();
4243
ProgramWindowMoveListener.makeStageDraggable(primaryStage, (Pane) mainScene.getRoot());
44+
loadSettingsOnProgramStart();
4345
});
4446

4547
primaryStage.initStyle(StageStyle.UNDECORATED);
@@ -59,4 +61,10 @@ private static void initComponents() {
5961
ctx = new AnnotationConfigApplicationContext(DependenciesConfig.class);
6062
}
6163

64+
private static void loadSettingsOnProgramStart() {
65+
LOG.debug("Initial Loading Settings");
66+
ProgramSettingsManager programSettingsManager = ctx.getBean(ProgramSettingsManager.class);
67+
programSettingsManager.loadSettings();
68+
}
69+
6270
}

runit-search-service/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>szczepanski.gerard</groupId>
66
<artifactId>runit-parent</artifactId>
7-
<version>0.9</version>
7+
<version>0.9.2</version>
88
</parent>
99
<artifactId>runit-search-service</artifactId>
1010

runit-settings-service/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>szczepanski.gerard</groupId>
88
<artifactId>runit-parent</artifactId>
9-
<version>0.9</version>
9+
<version>0.9.2</version>
1010
</parent>
1111

1212
<artifactId>runit-settings-service</artifactId>

runit-settings-service/src/main/java/szczepanski/gerard/runit/settings/service/loader/Settings.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,14 @@
88
@Builder
99
@Getter
1010
public class Settings {
11-
11+
1212
private List<String> rootDirectioresToScan;
1313
private List<String> fileExtensions;
1414
private List<Alias> webAliases;
1515
private List<Alias> dirAliases;
16-
16+
17+
public boolean areSettingsNotDefined() {
18+
return rootDirectioresToScan.isEmpty() && fileExtensions.isEmpty() && webAliases.isEmpty()
19+
&& dirAliases.isEmpty();
20+
}
1721
}

runit-view/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>szczepanski.gerard</groupId>
66
<artifactId>runit-parent</artifactId>
7-
<version>0.9</version>
7+
<version>0.9.2</version>
88
</parent>
99
<artifactId>runit-view</artifactId>
1010

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package szczepanski.gerard.runnit.view.util;
2+
3+
import org.apache.log4j.Logger;
4+
5+
import lombok.RequiredArgsConstructor;
6+
import szczepanski.gerard.runit.common.exception.RunitRuntimeException;
7+
import szczepanski.gerard.runit.settings.service.loader.Settings;
8+
import szczepanski.gerard.runit.settings.service.loader.SettingsLoader;
9+
import szczepanski.gerard.runit.settings.service.writer.SettingsWriter;
10+
11+
/**
12+
* This class is responsible for load Settings if exist,
13+
* and then check if settings are initialized. If not, then
14+
* invoke SettingsWriter restoreDefaults.
15+
*
16+
* If Settings file is not exist, then ProgramSettingsManager will create settings file,
17+
* with default configuration.
18+
*
19+
* @author Gerard Szczepanski
20+
*/
21+
@RequiredArgsConstructor
22+
public class ProgramSettingsManager {
23+
private static final Logger LOG = Logger.getLogger(ProgramSettingsManager.class);
24+
25+
private final SettingsLoader settingsLoader;
26+
private final SettingsWriter settingsWriter;
27+
28+
public void loadSettings() {
29+
LOG.debug("Loading settings");
30+
31+
try {
32+
Settings initialSettings = settingsLoader.getSettings();
33+
restoreSettingsIfNotDefined(initialSettings);
34+
} catch (RunitRuntimeException e) {
35+
LOG.debug("Settings file is not created yet. Creating default settings file");
36+
settingsWriter.restoreDefaultSettings();
37+
}
38+
}
39+
40+
private void restoreSettingsIfNotDefined(Settings initialSettings) {
41+
if (initialSettings.areSettingsNotDefined()) {
42+
LOG.debug("Settings are not defined. Injecting default settings");
43+
settingsWriter.restoreDefaultSettings();
44+
}
45+
}
46+
47+
}

runit.xml

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<dontWrapJar>false</dontWrapJar>
44
<headerType>gui</headerType>
55
<jar>C:\Users\Ziemniak\Documents\runit\runit-program\target\runit-program-0.9.jar</jar>
6-
<outfile>C:\Users\Ziemniak\Desktop\runit-exe\runit-0.9.exe</outfile>
6+
<outfile>C:\Users\Ziemniak\Desktop\runit-exe\runit-0.9.1.exe</outfile>
77
<errTitle></errTitle>
88
<cmdLine></cmdLine>
99
<chdir>.</chdir>
@@ -22,6 +22,5 @@
2222
<maxVersion></maxVersion>
2323
<jdkPreference>preferJre</jdkPreference>
2424
<runtimeBits>64/32</runtimeBits>
25-
<maxHeapSize>64</maxHeapSize>
2625
</jre>
2726
</launch4jConfig>

0 commit comments

Comments
 (0)