From a3828fcedf037cdc8f14f0aae18d101efe1c5f75 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 26 Mar 2017 13:08:36 -0400 Subject: [PATCH] cache: split npc exporter from dumper --- .../main/java/net/runelite/cache/Cache.java | 6 +- .../cache/{NpcDumper.java => NpcManager.java} | 33 ++++------ .../definitions/exporters/NpcExporter.java | 60 +++++++++++++++++++ ...NpcDumperTest.java => NpcManagerTest.java} | 14 ++--- 4 files changed, 80 insertions(+), 33 deletions(-) rename cache/src/main/java/net/runelite/cache/{NpcDumper.java => NpcManager.java} (82%) create mode 100644 cache/src/main/java/net/runelite/cache/definitions/exporters/NpcExporter.java rename cache/src/test/java/net/runelite/cache/{NpcDumperTest.java => NpcManagerTest.java} (93%) diff --git a/cache/src/main/java/net/runelite/cache/Cache.java b/cache/src/main/java/net/runelite/cache/Cache.java index 8a2ed12596..6312f8ec25 100644 --- a/cache/src/main/java/net/runelite/cache/Cache.java +++ b/cache/src/main/java/net/runelite/cache/Cache.java @@ -196,10 +196,10 @@ public class Cache private static void dumpNpcs(Store store, File npcdir) throws IOException { - NpcDumper dumper = new NpcDumper(store, npcdir, npcdir); + NpcManager dumper = new NpcManager(store); dumper.load(); - dumper.dump(); - dumper.java(); + dumper.dump(npcdir); + dumper.java(npcdir); } private static void dumpObjects(Store store, File objectdir) throws IOException diff --git a/cache/src/main/java/net/runelite/cache/NpcDumper.java b/cache/src/main/java/net/runelite/cache/NpcManager.java similarity index 82% rename from cache/src/main/java/net/runelite/cache/NpcDumper.java rename to cache/src/main/java/net/runelite/cache/NpcManager.java index 70e5ace827..f1d1327130 100644 --- a/cache/src/main/java/net/runelite/cache/NpcDumper.java +++ b/cache/src/main/java/net/runelite/cache/NpcManager.java @@ -24,39 +24,28 @@ */ package net.runelite.cache; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import java.io.File; -import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import net.runelite.cache.definitions.NpcDefinition; +import net.runelite.cache.definitions.exporters.NpcExporter; import net.runelite.cache.definitions.loaders.NpcLoader; import net.runelite.cache.fs.Archive; import net.runelite.cache.fs.Index; import net.runelite.cache.fs.Store; -import net.runelite.cache.io.InputStream; import net.runelite.cache.util.Namer; -public class NpcDumper +public class NpcManager { private final Store store; - private final File out, java; - private final Gson gson; private final List npcs = new ArrayList<>(); private final Namer namer = new Namer(); - public NpcDumper(Store store, File out, File java) + public NpcManager(Store store) { this.store = store; - this.out = out; - this.java = java; - - GsonBuilder builder = new GsonBuilder() - .setPrettyPrinting(); - gson = builder.create(); } public void load() throws IOException @@ -73,20 +62,20 @@ public class NpcDumper } } - public void dump() throws IOException + public void dump(File out) throws IOException { + out.mkdirs(); + for (NpcDefinition def : npcs) { - out.mkdirs(); - java.io.File targ = new java.io.File(out, def.id + ".json"); - try (FileWriter fw = new FileWriter(targ)) - { - fw.write(gson.toJson(def)); - } + NpcExporter exporter = new NpcExporter(def); + + File targ = new File(out, def.id + ".json"); + exporter.exportTo(targ); } } - public void java() throws IOException + public void java(File java) throws IOException { java.mkdirs(); java.io.File targ = new java.io.File(java, "NpcID.java"); diff --git a/cache/src/main/java/net/runelite/cache/definitions/exporters/NpcExporter.java b/cache/src/main/java/net/runelite/cache/definitions/exporters/NpcExporter.java new file mode 100644 index 0000000000..eec1be340b --- /dev/null +++ b/cache/src/main/java/net/runelite/cache/definitions/exporters/NpcExporter.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2016-2017, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.cache.definitions.exporters; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import net.runelite.cache.definitions.NpcDefinition; + +public class NpcExporter +{ + private final NpcDefinition npc; + private final Gson gson; + + public NpcExporter(NpcDefinition npc) + { + this.npc = npc; + + GsonBuilder builder = new GsonBuilder() + .setPrettyPrinting(); + gson = builder.create(); + } + + public String export() + { + return gson.toJson(npc); + } + + public void exportTo(File file) throws IOException + { + try (FileWriter fw = new FileWriter(file)) + { + fw.write(export()); + } + } +} diff --git a/cache/src/test/java/net/runelite/cache/NpcDumperTest.java b/cache/src/test/java/net/runelite/cache/NpcManagerTest.java similarity index 93% rename from cache/src/test/java/net/runelite/cache/NpcDumperTest.java rename to cache/src/test/java/net/runelite/cache/NpcManagerTest.java index 2803bee0d8..cdccac0cfb 100644 --- a/cache/src/test/java/net/runelite/cache/NpcDumperTest.java +++ b/cache/src/test/java/net/runelite/cache/NpcManagerTest.java @@ -33,9 +33,9 @@ import org.junit.rules.TemporaryFolder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class NpcDumperTest +public class NpcManagerTest { - private static final Logger logger = LoggerFactory.getLogger(NpcDumperTest.class); + private static final Logger logger = LoggerFactory.getLogger(NpcManagerTest.class); @Rule public TemporaryFolder folder = StoreLocation.getTemporaryFolder(); @@ -50,14 +50,12 @@ public class NpcDumperTest { store.load(); - NpcDumper dumper = new NpcDumper( - store, - dumpDir, - javaDir + NpcManager dumper = new NpcManager( + store ); dumper.load(); - dumper.dump(); - dumper.java(); + dumper.dump(dumpDir); + dumper.java(javaDir); } logger.info("Dumped to {}, java {}", dumpDir, javaDir);