浏览代码

Caching class data that is loaded.

Sam Jaffe 8 年之前
父节点
当前提交
29cffc64a5
共有 1 个文件被更改,包括 11 次插入3 次删除
  1. 11 3
      src/org/leumasjaffe/charsheet/model/DDClass.java

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

@@ -1,7 +1,10 @@
 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;
 
@@ -36,11 +39,16 @@ public class DDClass {
 	
 	@Getter(AccessLevel.NONE) @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 boolean isClassSkill(final String skillName) {