Skip to content

Commit df52aa2

Browse files
committed
improve config system; ConfigReader -> ConfigurationManager
1 parent cb924a1 commit df52aa2

File tree

5 files changed

+155
-69
lines changed

5 files changed

+155
-69
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,4 @@ bin/
4343
/API
4444
/logs
4545
/src/main/java/test
46+
/test.slsd

src/main/java/pl/nightdev701/OpenAPI.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import pl.nightdev701.database.DatabaseConnector;
1515
import pl.nightdev701.database.formular.DatabaseFormular;
1616
import pl.nightdev701.database.type.DatabaseType;
17-
import pl.nightdev701.io.ConfigReader;
17+
import pl.nightdev701.io.ConfigurationManager;
1818
import pl.nightdev701.io.ScorpionFileReader;
1919
import pl.nightdev701.key.UniqueValueKey;
2020
import pl.nightdev701.key.ValueKey;
@@ -111,17 +111,17 @@ public static ScorpionFileReader getFileReader(String path) {
111111
* @param path
112112
* @param logger
113113
*/
114-
public static ConfigReader getConfigReader(String path, AbstractLogger logger) {
115-
return new ConfigReader(path, logger);
114+
public static ConfigurationManager getConfigurationManager(String path, AbstractLogger logger) {
115+
return new ConfigurationManager(path, logger);
116116
}
117117

118118
/**
119119
* Config reader
120120
*
121121
* @param path
122122
*/
123-
public static ConfigReader getConfigReader(String path) {
124-
return getConfigReader(path, new DefaultLogger());
123+
public static ConfigurationManager getConfigurationManager(String path) {
124+
return getConfigurationManager(path, new DefaultLogger());
125125
}
126126

127127
/**

src/main/java/pl/nightdev701/io/ConfigReader.java

-60
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
package pl.nightdev701.io;
2+
3+
/*
4+
5+
Lukas - 16:08
6+
18.12.2023
7+
https://github.com/NightDev701
8+
9+
© SunLightScorpion 2020 - 2023
10+
11+
*/
12+
13+
import pl.nightdev701.logger.AbstractLogger;
14+
15+
import java.io.*;
16+
import java.util.LinkedHashMap;
17+
import java.util.Map;
18+
import java.util.logging.Level;
19+
20+
public class ConfigurationManager {
21+
22+
private final Map<String, String> dataMap;
23+
private final String path;
24+
private final AbstractLogger logger;
25+
26+
public ConfigurationManager(String path, AbstractLogger logger) {
27+
this.logger = logger;
28+
this.path = path;
29+
this.dataMap = new LinkedHashMap<>();
30+
31+
readConfig(path);
32+
}
33+
34+
private void readConfig(String filePath) {
35+
36+
logger.log(Level.CONFIG, "Read config...");
37+
38+
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
39+
String line;
40+
while ((line = br.readLine()) != null) {
41+
if (line.charAt(0) == '#') {
42+
continue;
43+
}
44+
String[] parts = line.split("=");
45+
if (parts.length == 2) {
46+
dataMap.put(parts[0].trim(), parts[1].trim());
47+
}
48+
}
49+
50+
logger.log(Level.INFO, "Config read!");
51+
} catch (IOException e) {
52+
logger.log(Level.WARNING, "Failed to read config: " + e.getMessage());
53+
}
54+
}
55+
56+
public String getData(String key) {
57+
return dataMap.get(key);
58+
}
59+
60+
public boolean containsKey(String key) {
61+
return dataMap.containsKey(key);
62+
}
63+
64+
public boolean isSet(String base) {
65+
try {
66+
FileReader fileReader = new FileReader(path);
67+
BufferedReader reader = new BufferedReader(fileReader);
68+
String line;
69+
while ((line = reader.readLine()) != null) {
70+
if (line.contains(base+"=")) {
71+
reader.close();
72+
return true;
73+
}
74+
}
75+
reader.close();
76+
} catch (FileNotFoundException e) {
77+
logger.log(Level.WARNING, "The file was not found: " + e.getMessage());
78+
} catch (IOException e) {
79+
logger.log(Level.WARNING, "Error while reading the file: " + e.getMessage());
80+
}
81+
return false;
82+
}
83+
84+
public void add(String base, String value) {
85+
86+
if(isSet(base)){
87+
logger.log(Level.WARNING, "Line already exist: " + base);
88+
return;
89+
}
90+
91+
try {
92+
FileWriter fileWriter = new FileWriter(path, true);
93+
BufferedWriter writer = new BufferedWriter(fileWriter);
94+
writer.write(base + "=" + value);
95+
writer.newLine();
96+
writer.close();
97+
98+
} catch (IOException e) {
99+
logger.log(Level.WARNING, "Error while writing to the file: " + e.getMessage());
100+
}
101+
102+
readConfig(path);
103+
}
104+
105+
public void set(String base, String value) {
106+
if (isSet(base)) {
107+
try {
108+
File inputFile = new File(path);
109+
File tempFile = new File("tempFile.txt");
110+
111+
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
112+
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
113+
114+
String lineToRemove = base + "=";
115+
116+
String currentLine;
117+
while ((currentLine = reader.readLine()) != null) {
118+
if (currentLine.startsWith(lineToRemove)) {
119+
writer.write(base + "=" + value);
120+
} else {
121+
writer.write(currentLine);
122+
}
123+
writer.newLine();
124+
}
125+
writer.close();
126+
reader.close();
127+
128+
if (inputFile.delete()) {
129+
if (!tempFile.renameTo(inputFile)) {
130+
logger.log(Level.WARNING, "Error while renaming temp file to original file");
131+
}
132+
} else {
133+
logger.log(Level.WARNING, "Error while deleting original file");
134+
}
135+
} catch (IOException e) {
136+
logger.log(Level.WARNING, "Error while updating the file: " + e.getMessage());
137+
}
138+
} else {
139+
add(base, value);
140+
}
141+
142+
readConfig(path);
143+
}
144+
145+
}

src/main/java/pl/nightdev701/io/ScorpionFileReader.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ public ScorpionFileReader(String filePath, AbstractLogger logger) {
2323
bufferedReader = new BufferedReader(fileReader);
2424
currentLine = bufferedReader.readLine();
2525
} catch (FileNotFoundException e) {
26-
logger.log(Level.WARNING, "Die Datei wurde nicht gefunden: " + e.getMessage());
26+
logger.log(Level.WARNING, "The file was not found: " + e.getMessage());
2727
} catch (IOException e) {
28-
logger.log(Level.WARNING, "Fehler beim Lesen der Datei: " + e.getMessage());
28+
logger.log(Level.WARNING, "Error while reading the file: " + e.getMessage());
2929
}
3030
}
3131

@@ -37,7 +37,7 @@ public void readNextLine() {
3737
try {
3838
currentLine = bufferedReader.readLine();
3939
} catch (IOException e) {
40-
logger.log(Level.WARNING, "Fehler beim Lesen der nächsten Zeile: " + e.getMessage());
40+
logger.log(Level.WARNING, "Error while reading the next line: " + e.getMessage());
4141
}
4242
}
4343

@@ -47,7 +47,7 @@ public void close() {
4747
bufferedReader.close();
4848
}
4949
} catch (IOException e) {
50-
logger.log(Level.WARNING, "Fehler beim Schließen des Readers: " + e.getMessage());
50+
logger.log(Level.WARNING, "Error while closing the reader: " + e.getMessage());
5151
}
5252
}
5353

0 commit comments

Comments
 (0)