Skip to content

Commit f8483e2

Browse files
author
Arun Prasaad
committed
Refactor usage of level file
1 parent 6b43b7e commit f8483e2

File tree

2 files changed

+69
-20
lines changed

2 files changed

+69
-20
lines changed

src/main/java/ihm/Editor.java

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import logic.TileType;
2121
import logic.Controller;
22+
import logic.LevelFile;
2223

2324
public class Editor extends JFrame implements MouseListener, MouseMotionListener {
2425
@VisibleForTesting
@@ -103,21 +104,13 @@ public Editor (int rowCount, int columnCount, String name) throws IOException {
103104

104105
createQuitButton(name);
105106

106-
back.addActionListener(new ActionListener() {
107-
@Override
108-
public void actionPerformed(ActionEvent e) {
109-
dispose();
110-
try {
111-
File level_drop = new File(new File(".").getCanonicalPath() + "/levels/" + name + ".txt");
112-
level_drop.delete();
113-
} catch (IOException e2) {
114-
LOGGER.log(Level.SEVERE, "Error while deleting level file when going back: " + name, e2);
115-
}
116-
new HomeWindow();
107+
back.addActionListener(_ -> {
108+
dispose();
109+
LevelFile.of(name).delete();
110+
new HomeWindow();
111+
});
117112

118-
}
119-
});
120-
save.addActionListener(new ActionListener() {
113+
save.addActionListener(new ActionListener() {
121114
@Override
122115
public void actionPerformed(ActionEvent e) {
123116

@@ -230,12 +223,7 @@ private void createQuitButton(String name) {
230223
quit.setName(Component.QUIT_BUTTON.name());
231224
quit.setBounds(windowWidth + 20, 250, 110, 30);
232225
quit.addActionListener(_ -> {
233-
try {
234-
File level_drop = new File(new File(".").getCanonicalPath() + "/levels/" + name + ".txt");
235-
level_drop.delete();
236-
} catch (IOException e) {
237-
LOGGER.log(Level.SEVERE, "Error while deleting level file: " + name, e);
238-
}
226+
LevelFile.of(name).delete();
239227
defaultExitHandler().exit(ExitHandler.SUCCESS);
240228
});
241229
this.add(quit);

src/main/java/logic/LevelFile.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package logic;
2+
3+
import java.io.File;
4+
import java.io.IOException;
5+
import java.nio.file.Files;
6+
import java.nio.file.Path;
7+
import java.util.logging.Level;
8+
import java.util.logging.Logger;
9+
10+
/**
11+
* Thrown when an error occurs during level file operations.
12+
*/
13+
class LevelFileException extends RuntimeException {
14+
public LevelFileException(String message, Throwable cause) {
15+
super(message, cause);
16+
}
17+
}
18+
19+
/**
20+
* Simple utility class for handling level file paths.
21+
*/
22+
public class LevelFile {
23+
private static final Logger LOGGER = Logger.getLogger(LevelFile.class.getName());
24+
private static final String LEVELS_DIR = "levels";
25+
/**
26+
* Creates a new LevelFile instance for the given level name.
27+
* @param levelName the name of the level (without .txt extension)
28+
* @return a new LevelFile instance
29+
*/
30+
public static LevelFile of(String levelName) {
31+
return new LevelFile(levelName);
32+
}
33+
34+
/**
35+
* Deletes the level file if it exists.
36+
* @return true if the file was successfully deleted, false otherwise
37+
*/
38+
public boolean delete() {
39+
try {
40+
return Files.deleteIfExists(getFilePath());
41+
} catch (IOException e) {
42+
String errorMsg = "Error while deleting level file: %s".formatted(levelName);
43+
LOGGER.log(Level.SEVERE, errorMsg, e);
44+
return false;
45+
}
46+
}
47+
48+
private final String levelName;
49+
50+
private LevelFile(String levelName) {
51+
this.levelName = levelName + ".txt";
52+
}
53+
54+
private Path getFilePath() throws IOException {
55+
return getLevelsDirectory().resolve(levelName);
56+
}
57+
58+
private Path getLevelsDirectory() throws IOException {
59+
return new File(".").getCanonicalFile().toPath().resolve(LEVELS_DIR);
60+
}
61+
}

0 commit comments

Comments
 (0)