mirror of
https://github.com/OMGeeky/ATCS.git
synced 2025-12-27 14:58:55 +01:00
improve GameDataCategory lookup time
by changing it to something backed by a HashMap with the id as key things can be found without looping over every element. This reduced the startup time on my machine to about half of the original time
This commit is contained in:
@@ -290,7 +290,7 @@ public class Project implements ProjectTreeNode, Serializable, JsonSerializable
|
||||
public void linkAll() {
|
||||
for (ProjectTreeNode node : baseContent.gameData.v.getNonEmptyIterable()) {
|
||||
if (node instanceof GameDataCategory<?>) {
|
||||
for (GameDataElement e : ((GameDataCategory<?>) node)) {
|
||||
for (GameDataElement e : ((GameDataCategory<?>) node).toList()) {
|
||||
e.link();
|
||||
}
|
||||
}
|
||||
@@ -300,7 +300,7 @@ public class Project implements ProjectTreeNode, Serializable, JsonSerializable
|
||||
}
|
||||
for (ProjectTreeNode node : alteredContent.gameData.v.getNonEmptyIterable()) {
|
||||
if (node instanceof GameDataCategory<?>) {
|
||||
for (GameDataElement e : ((GameDataCategory<?>) node)) {
|
||||
for (GameDataElement e : ((GameDataCategory<?>) node).toList()) {
|
||||
e.link();
|
||||
}
|
||||
}
|
||||
@@ -310,7 +310,7 @@ public class Project implements ProjectTreeNode, Serializable, JsonSerializable
|
||||
}
|
||||
for (ProjectTreeNode node : createdContent.gameData.v.getNonEmptyIterable()) {
|
||||
if (node instanceof GameDataCategory<?>) {
|
||||
for (GameDataElement e : ((GameDataCategory<?>) node)) {
|
||||
for (GameDataElement e : ((GameDataCategory<?>) node).toList()) {
|
||||
e.link();
|
||||
}
|
||||
}
|
||||
@@ -937,14 +937,14 @@ public class Project implements ProjectTreeNode, Serializable, JsonSerializable
|
||||
|
||||
public void moveToCreated(JSONElement target) {
|
||||
target.childrenRemoved(new ArrayList<ProjectTreeNode>());
|
||||
((GameDataCategory<?>) target.getParent()).remove(target);
|
||||
((GameDataCategory<?>) target.getParent()).removeGeneric(target);
|
||||
target.state = GameDataElement.State.created;
|
||||
createdContent.gameData.addElement(target);
|
||||
}
|
||||
|
||||
public void moveToAltered(JSONElement target) {
|
||||
target.childrenRemoved(new ArrayList<ProjectTreeNode>());
|
||||
((GameDataCategory<?>) target.getParent()).remove(target);
|
||||
((GameDataCategory<?>) target.getParent()).removeGeneric(target);
|
||||
target.state = GameDataElement.State.created;
|
||||
((JSONElement) target).jsonFile = new File(baseContent.gameData.getGameDataElement(((JSONElement) target).getClass(), target.id).jsonFile.getAbsolutePath());
|
||||
alteredContent.gameData.addElement((JSONElement) target);
|
||||
@@ -1202,18 +1202,18 @@ public class Project implements ProjectTreeNode, Serializable, JsonSerializable
|
||||
public List<String> writeDataDeltaForDataType(GameDataCategory<? extends JSONElement> created, GameDataCategory<? extends JSONElement> altered, GameDataCategory<? extends JSONElement> source, Class<? extends JSONElement> gdeClass, File targetFolder) {
|
||||
List<String> filenamesToWrite = new LinkedList<String>();
|
||||
Map<String, List<Map>> dataToWritePerFilename = new LinkedHashMap<String, List<Map>>();
|
||||
for (JSONElement gde : altered) {
|
||||
for (JSONElement gde : altered.toList()) {
|
||||
if (!filenamesToWrite.contains(gde.jsonFile.getName())) {
|
||||
filenamesToWrite.add(gde.jsonFile.getName());
|
||||
}
|
||||
}
|
||||
for (JSONElement gde : created) {
|
||||
for (JSONElement gde : created.toList()) {
|
||||
if (!filenamesToWrite.contains(gde.jsonFile.getName())) {
|
||||
filenamesToWrite.add(gde.jsonFile.getName());
|
||||
}
|
||||
}
|
||||
for (String fName : filenamesToWrite) {
|
||||
for (JSONElement gde : source) {
|
||||
for (JSONElement gde : source.toList()) {
|
||||
if (gde.jsonFile.getName().equals(fName)) {
|
||||
if (dataToWritePerFilename.get(fName) == null) {
|
||||
dataToWritePerFilename.put(fName, new ArrayList<Map>());
|
||||
@@ -1222,7 +1222,7 @@ public class Project implements ProjectTreeNode, Serializable, JsonSerializable
|
||||
dataToWritePerFilename.get(fName).add(getGameDataElement(gdeClass, gde.id).toJson());
|
||||
}
|
||||
}
|
||||
for (JSONElement gde : created) {
|
||||
for (JSONElement gde : created.toList()) {
|
||||
if (gde.jsonFile.getName().equals(fName)) {
|
||||
if (dataToWritePerFilename.get(fName) == null) {
|
||||
dataToWritePerFilename.put(fName, new ArrayList<Map>());
|
||||
|
||||
Reference in New Issue
Block a user