Skip to content

Commit 2986123

Browse files
committed
fix index out of bounds
fix addon-parts being unknown fix config save path
1 parent 2204f53 commit 2986123

File tree

5 files changed

+29
-16
lines changed

5 files changed

+29
-16
lines changed

src/main/java/de/idrinth/waraddonclient/gui/Window.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import de.idrinth.waraddonclient.service.Backup;
66
import de.idrinth.waraddonclient.model.Addon;
77
import de.idrinth.waraddonclient.model.GuiAddonList;
8+
import de.idrinth.waraddonclient.model.NoAddon;
89
import java.io.IOException;
910
import java.net.URISyntaxException;
1011
import net.lingala.zip4j.exception.ZipException;
@@ -26,7 +27,7 @@
2627

2728
public class Window extends JFrame {
2829

29-
private Addon activeAddon = new de.idrinth.waraddonclient.model.NoAddon();
30+
private Addon activeAddon = new NoAddon();
3031

3132
private final GuiAddonList addonList;
3233

@@ -755,7 +756,10 @@ private class TableListener implements ListSelectionListener {
755756
@Override
756757
public void valueChanged(ListSelectionEvent event) {
757758
try {
758-
activeAddon = addonList.get(addonListTable.convertRowIndexToModel(addonListTable.getSelectedRow()));
759+
int row = addonListTable.getSelectedRow();
760+
if (row != -1) {
761+
activeAddon = addonList.get(addonListTable.convertRowIndexToModel(row));
762+
}
759763
} catch (java.lang.ArrayIndexOutOfBoundsException exception) {
760764
logger.error(exception);
761765
return;

src/main/java/de/idrinth/waraddonclient/model/ActualAddon.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -279,23 +279,28 @@ private void writeMetaDataFile(ZipFile zipFile) throws IOException {
279279
tmp.mkdirs();
280280
zipFile.extractAll(tmp.getAbsolutePath());
281281
StringBuilder sb = new StringBuilder();
282+
ArrayList<String> folders = new ArrayList<>();
282283
for (File folder : tmp.listFiles()) {
283284
sb.append("<folder>");
284285
sb.append(folder.getName());
285286
sb.append("</folder>");
287+
folders.add(folder.getName());
286288
}
287289
Utils.deleteFolder(tmp);
288290
File target = find(name);
291+
folders.add(target.getName());
289292
target.mkdirs();
290-
FileUtils.writeStringToFile(
291-
new File(target.getAbsoluteFile() + config.getVersionFile()),
292-
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><UiMod>"
293-
+ "<name>" + name + "</name>"
294-
+ "<version>" + version + "</version>"
295-
+ "<folders>" + sb + "</folders>"
296-
+ "</UiMod>",
297-
StandardCharsets.UTF_8
298-
);
293+
for (String folder : folders) {
294+
FileUtils.writeStringToFile(
295+
new File(config.getAddonFolder() + folder + config.getVersionFile()),
296+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><UiMod>"
297+
+ "<name>" + name + "</name>"
298+
+ "<version>" + version + "</version>"
299+
+ "<folders>" + sb + "</folders>"
300+
+ "</UiMod>",
301+
StandardCharsets.UTF_8
302+
);
303+
}
299304
}
300305
}
301306

src/main/java/de/idrinth/waraddonclient/model/AddonList.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,13 @@ public AddonList(Request client, BaseLogger logger, XmlParser parser, Config con
3434
}
3535

3636
protected void processAddonDir() {
37-
for (File folder : new File(config.getAddonFolder()).listFiles()) {
38-
if (folder.isDirectory()) {
37+
File addonFolder = new File(config.getAddonFolder());
38+
if (!addonFolder.isDirectory()) {
39+
return;
40+
}
41+
for (File folder : addonFolder.listFiles()) {
42+
File version = new File(folder.getAbsolutePath() + config.getVersionFile());
43+
if (folder.isDirectory() && !version.exists()) {
3944
try {
4045
add(new UnknownAddon(folder, client, logger, parser, config));
4146
unknowns.put(folder.getName(), rows.get(rows.size() - 1).getName());

src/main/java/de/idrinth/waraddonclient/model/UnknownAddon.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ public UnknownAddon(File folder, Request client, BaseLogger logger, XmlParser pa
4848
throw new InvalidArgumentException("Folder is known Add-On folder.");
4949
}
5050
for (java.io.File fileEntry : folder.listFiles()) {
51-
if (!fileEntry.isDirectory()
52-
&& FilenameUtils.getExtension(fileEntry.getName()).equalsIgnoreCase("mod")) {
51+
if (!fileEntry.isDirectory() && FilenameUtils.getExtension(fileEntry.getName()).equalsIgnoreCase("mod")) {
5352
try {
5453
NodeList list = parser.parse(fileEntry).getElementsByTagName("UiMod");
5554
installed = list.item(0).getAttributes().getNamedItem("version").getTextContent();

src/main/java/de/idrinth/waraddonclient/service/Config.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class Config {
4040

4141
private static final String VERSION_FILE = "/self.idrinth";
4242

43-
private final Preferences prefs = Preferences.userRoot().node(Config.class.getClass().getName());
43+
private final Preferences prefs = Preferences.userRoot().node(Config.class.getCanonicalName());
4444

4545
private final String version;
4646

0 commit comments

Comments
 (0)