Просмотр исходного кода

Caching class data that is loaded.

Sam Jaffe 8 лет назад
Родитель
Сommit
bc5c07b8ec
1 измененных файлов с 10 добавлено и 3 удалено
  1. 10 3
      src/org/leumasjaffe/charsheet/model/DDClass.java

+ 10 - 3
src/org/leumasjaffe/charsheet/model/DDClass.java

@@ -2,7 +2,9 @@ package org.leumasjaffe.charsheet.model;
 
 import java.io.File;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 
@@ -38,11 +40,16 @@ public class DDClass {
 	
 	@Getter(AccessLevel.PACKAGE) @NonNull Optional<DDSpellList> spells;
 	
+	static Map<String, DDClass> store = new HashMap<>();
+	
 	@SneakyThrows
 	public static DDClass getFromResource(final String name) {
-		final ObjectMapper mapper = new ObjectMapper();
-		mapper.registerModule(new Jdk8Module());
-		return mapper.readValue(new File("resources/classes/" + name + ".json"), DDClass.class);
+		if (!store.containsKey(name)) {
+			final ObjectMapper mapper = new ObjectMapper();
+			mapper.registerModule(new Jdk8Module());
+			store.put(name, mapper.readValue(new File("resources/classes/" + name + ".json"), DDClass.class));
+		}
+		return store.get(name);
 	}
 	
 	public Collection<DDSpell> getSpellList( int level ) {