Skip to content

Commit 9d518c5

Browse files
committed
Add back legacy XML support
1 parent 86a453b commit 9d518c5

File tree

12 files changed

+56
-33
lines changed

12 files changed

+56
-33
lines changed

Bukkit/src/main/java/net/avicus/compendium/AvicusBukkitCommandManager.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package net.avicus.compendium;
22

3-
import net.avicus.compendium.commands.AvicusCommandsRegistration;
43
import org.bukkit.command.CommandSender;
54
import org.bukkit.command.ConsoleCommandSender;
65

Bukkit/src/main/java/net/avicus/compendium/locale/LocaleStrings.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,14 @@
11
package net.avicus.compendium.locale;
22

3-
import com.google.common.base.Preconditions;
43
import java.io.IOException;
5-
import java.io.InputStream;
64
import java.nio.file.Path;
75
import java.util.HashMap;
86
import java.util.Locale;
97
import java.util.Map;
10-
import java.util.Optional;
118
import lombok.Getter;
129
import lombok.ToString;
1310
import net.avicus.compendium.utils.FileBackedKVSet;
14-
import net.avicus.compendium.utils.Strings;
1511
import net.md_5.bungee.api.ChatColor;
16-
import org.jdom2.Content;
17-
import org.jdom2.Document;
18-
import org.jdom2.Element;
19-
import org.jdom2.JDOMException;
20-
import org.jdom2.input.SAXBuilder;
2112

2213
/**
2314
* A key->value represtantation of strings for a specific {@link Locale} that can be retrieved for

Bukkit/src/main/java/net/avicus/compendium/locale/TranslationProvider.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,13 @@
22

33
import com.google.common.base.Joiner;
44
import java.io.IOException;
5-
import java.io.InputStream;
65
import java.lang.reflect.Field;
76
import java.lang.reflect.Modifier;
87
import java.nio.file.Paths;
98
import java.util.ArrayList;
109
import java.util.List;
1110
import java.util.Locale;
12-
import net.avicus.compendium.locale.LocaleBundle;
13-
import net.avicus.compendium.locale.LocaleStrings;
1411
import net.avicus.compendium.locale.text.LocalizedFormat;
15-
import org.bukkit.plugin.Plugin;
16-
import org.jdom2.JDOMException;
1712

1813
public class TranslationProvider {
1914

Bukkit/src/main/java/net/avicus/compendium/menu/inventory/ClickableInventoryHandler.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package net.avicus.compendium.menu.inventory;
22

33
import java.util.Optional;
4-
import org.bukkit.event.inventory.ClickType;
54
import org.bukkit.event.inventory.InventoryClickEvent;
65

76
/**

Bukkit/src/main/java/net/avicus/compendium/menu/inventory/ClickableInventoryMenuItem.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package net.avicus.compendium.menu.inventory;
22

33
import net.avicus.compendium.menu.MenuItem;
4-
import org.bukkit.event.inventory.ClickType;
54
import org.bukkit.event.inventory.InventoryClickEvent;
65

76
/**

Bukkit/src/main/java/net/avicus/compendium/menu/inventory/InventoryHandler.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package net.avicus.compendium.menu.inventory;
22

33
import java.util.Optional;
4-
import org.bukkit.event.inventory.ClickType;
54
import org.bukkit.event.inventory.InventoryClickEvent;
65

76
/**

Bukkit/src/main/java/net/avicus/compendium/menu/inventory/InventoryMenuAdapter.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import lombok.AccessLevel;
44
import lombok.Getter;
5-
import org.bukkit.World;
65
import org.bukkit.inventory.Inventory;
76
import org.bukkit.inventory.InventoryHolder;
87

Bukkit/src/main/java/net/avicus/compendium/plugin/CompendiumPlugin.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,17 @@
66
import com.sk89q.minecraft.util.commands.CommandUsageException;
77
import com.sk89q.minecraft.util.commands.WrappedCommandException;
88
import java.io.File;
9-
import java.io.IOException;
10-
import java.util.ArrayList;
11-
import java.util.List;
12-
import java.util.Locale;
139
import lombok.Getter;
1410
import net.avicus.compendium.AvicusBukkitCommandManager;
11+
import net.avicus.compendium.AvicusCommandsManager;
1512
import net.avicus.compendium.boss.BossBarManager;
1613
import net.avicus.compendium.boss.LegacyBossBarContext;
17-
import net.avicus.compendium.AvicusCommandsManager;
1814
import net.avicus.compendium.commands.AvicusCommandsRegistration;
1915
import net.avicus.compendium.commands.UtilityCommands;
2016
import net.avicus.compendium.commands.exception.AbstractTranslatableCommandException;
2117
import net.avicus.compendium.countdown.CountdownCommands;
2218
import net.avicus.compendium.countdown.CountdownManager;
2319
import net.avicus.compendium.locale.LocaleBundle;
24-
import net.avicus.compendium.locale.LocaleStrings;
2520
import net.avicus.compendium.locale.TranslationProvider;
2621
import net.avicus.compendium.locale.text.UnlocalizedText;
2722
import net.avicus.compendium.menu.inventory.InventoryListener;
@@ -32,7 +27,6 @@
3227
import org.bukkit.plugin.PluginManager;
3328
import org.bukkit.plugin.java.JavaPlugin;
3429
import org.bukkit.scheduler.BukkitScheduler;
35-
import org.jdom2.JDOMException;
3630

3731
public class CompendiumPlugin extends JavaPlugin {
3832

@@ -118,6 +112,6 @@ public boolean onCommand(CommandSender sender, Command command, String name, Str
118112
}
119113

120114
private void locales() throws IllegalStateException {
121-
bundle = TranslationProvider.loadBundle(getDataFolder().getAbsolutePath() + File.separator + "locales", "en_US", "en_ES");
115+
bundle = TranslationProvider.loadBundle(getDataFolder().getAbsolutePath() + File.separator + "locales", "en_US", "es_ES");
122116
}
123117
}

Bukkit/src/main/java/net/avicus/compendium/utils/FileBackedKVSet.java

Lines changed: 52 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.avicus.compendium.utils;
22

3+
import com.google.common.collect.Maps;
34
import java.io.FileInputStream;
45
import java.io.IOException;
56
import java.io.InputStream;
@@ -11,6 +12,10 @@
1112
import java.util.Map.Entry;
1213
import java.util.Optional;
1314
import java.util.Properties;
15+
import org.jdom2.Content;
16+
import org.jdom2.Document;
17+
import org.jdom2.Element;
18+
import org.jdom2.input.SAXBuilder;
1419

1520
/**
1621
* A key->value representation of objects which can be parsed from .properties and .txt files.
@@ -50,13 +55,10 @@ public void load(Path root) throws IOException {
5055
.forEach(
5156
(f) -> {
5257
String file = f.toString();
53-
if (file.endsWith(".properties") || file.endsWith(".xml")) {
58+
if (file.endsWith(".properties")) {
5459
try (InputStream stream = new FileInputStream(file)) {
5560
Properties prop = new Properties();
56-
if (file.endsWith(".xml"))
57-
prop.loadFromXML(stream);
58-
else
59-
prop.load(stream);
61+
prop.load(stream);
6062
for (Entry<Object, Object> entry : prop.entrySet()) {
6163
Object k = entry.getKey();
6264
Object v = entry.getValue();
@@ -76,10 +78,55 @@ public void load(Path root) throws IOException {
7678
} catch (IOException e) {
7779
e.printStackTrace();
7880
}
81+
} else if (file.endsWith(".xml")) {
82+
SAXBuilder sax = new SAXBuilder();
83+
try (InputStream stream = new FileInputStream(file)) {
84+
Document doc = sax.build(stream);
85+
addAll(fromXml(doc.getRootElement()));
86+
} catch (Exception e) {
87+
e.printStackTrace();
88+
}
7989
}
8090
});
8191
}
8292

93+
/**
94+
* Create from an XML element.
95+
*
96+
* @param el The &lt;locale lang="en" country="us"/&gt;
97+
*/
98+
public Map<String, V> fromXml(Element el) {
99+
Map<String, V> data = Maps.newHashMap();
100+
for (Content content : el.getDescendants()) {
101+
if (content instanceof Element) {
102+
Element child = (Element) content;
103+
104+
if (child.getChildren().size() > 0) {
105+
continue;
106+
}
107+
108+
String path = getPath(el, child);
109+
data.put(path, parse(child.getTextTrim().replaceAll(" +", " ")));
110+
}
111+
}
112+
113+
return data;
114+
}
115+
116+
private static String getPath(Element exclude, Element nested) {
117+
String result = nested.getName();
118+
Element curr = nested.getParentElement();
119+
while (!curr.equals(exclude)) {
120+
result = curr.getName() + "." + result;
121+
curr = curr.getParentElement();
122+
}
123+
return result;
124+
}
125+
126+
public void addAll(Map<String, V> toAdd) {
127+
data.putAll(toAdd);
128+
}
129+
83130
/**
84131
* Add a value represented by a key to the collection of parsed data
85132
*

Bukkit/src/main/resources/locales/en_US.xml renamed to Bukkit/src/main/resources/locales/en_US/en_US.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?xml version="1.0" encoding="utf-8" ?>
2+
<!DOCTYPE locale>
23
<locale country="us" lang="en">
34
<generic>
45
<settings>Settings</settings>

Bukkit/src/main/resources/locales/es_ES.xml renamed to Bukkit/src/main/resources/locales/es_ES/es_ES.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?xml version="1.0" encoding="utf-8" ?>
2+
<!DOCTYPE locale>
23
<locale country="es" lang="es">
34
<generic>
45
<settings>Opciones</settings>

Bukkit/src/test/java/net/avicus/compendium/LocaleTests.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package net.avicus.compendium;
22

33
import java.io.IOException;
4-
import java.io.InputStream;
54
import java.net.URISyntaxException;
65
import java.net.URL;
76
import java.nio.file.Paths;

0 commit comments

Comments
 (0)