From c58df94b3cd99f65de29f677d2f2ec356c176f73 Mon Sep 17 00:00:00 2001 From: Waverunner Date: Fri, 5 Jun 2015 10:37:04 -0400 Subject: [PATCH] Refactored ClientFactory to be used statically --- src/resources/client_info/ClientFactory.java | 19 +++++++++++++------ .../client_info/visitors/ObjectData.java | 7 ++----- .../objects/buildouts/BuildoutLoader.java | 10 ++++------ .../buildouts/TerrainBuildoutLoader.java | 10 ++++------ src/services/commands/CommandService.java | 7 +++---- src/services/map/MapService.java | 13 ++++++------- src/services/objects/ObjectCreator.java | 10 ++++------ src/services/player/ZoneService.java | 16 +++++++--------- 8 files changed, 43 insertions(+), 49 deletions(-) diff --git a/src/resources/client_info/ClientFactory.java b/src/resources/client_info/ClientFactory.java index d232b5980..0f24c210b 100644 --- a/src/resources/client_info/ClientFactory.java +++ b/src/resources/client_info/ClientFactory.java @@ -46,7 +46,8 @@ import resources.client_info.visitors.SlotDescriptorData; import utilities.ByteUtilities; public class ClientFactory { - + private static ClientFactory instance; + private Map dataMap = new HashMap(); private Map typeMap = new HashMap(); @@ -81,11 +82,17 @@ public class ClientFactory { * A null instance of {@link ClientData} means that parsing for the type of file is not done, or a file was entered that doesn't exist on the * file system. */ - public synchronized ClientData getInfoFromFile(String file, boolean saveInfo) { - ClientData data = dataMap.get(file); + public synchronized static ClientData getInfoFromFile(String file, boolean saveInfo) { + ClientFactory factory = ClientFactory.instance; + if (factory == null) { + ClientFactory.instance = new ClientFactory(); + factory = ClientFactory.instance; + } + + ClientData data = factory.dataMap.get(file); if (data == null) { - data = readFile(file); + data = factory.readFile(file); if (data == null) { return null; } @@ -100,7 +107,7 @@ public class ClientFactory { return data; } - public synchronized ClientData getInfoFromFile(String file) { + public synchronized static ClientData getInfoFromFile(String file) { return getInfoFromFile(file, true); } @@ -184,7 +191,7 @@ public class ClientFactory { switch (c) { case "CrcStringTableData": return new CrcStringTableData(); case "DatatableData": return new DatatableData(); - case "ObjectData": return new ObjectData(this); + case "ObjectData": return new ObjectData(); case "ProfTemplateData": return new ProfTemplateData(); case "SlotDescriptorData": return new SlotDescriptorData(); case "SlotDefinitionData": return new SlotDefinitionData(); diff --git a/src/resources/client_info/visitors/ObjectData.java b/src/resources/client_info/visitors/ObjectData.java index e6c8a1498..d596fb423 100644 --- a/src/resources/client_info/visitors/ObjectData.java +++ b/src/resources/client_info/visitors/ObjectData.java @@ -39,7 +39,6 @@ import utilities.ByteUtilities; public class ObjectData extends ClientData { private Map attributes = new HashMap(); - private ClientFactory factory; private List parsedFiles = new ArrayList(); public static final String APPEARANCE_FILE = "appearanceFilename"; @@ -50,9 +49,7 @@ public class ObjectData extends ClientData { public static final String PORTAL_LAYOUT = "portalLayoutFilename"; public static final String SLOT_DESCRIPTOR = "slotDescriptorFilename"; - public ObjectData(ClientFactory factory) { - this.factory = factory; - } + public ObjectData() {} @Override public void handleData(String node, ByteBuffer data, int size) { @@ -64,7 +61,7 @@ public class ObjectData extends ClientData { if (parsedFiles.contains(file)) // some DERVXXX were repeated and we do not want to replace any attributes unless they're overriden by a more specific obj break; - ClientData attrData = factory.getInfoFromFile(file); + ClientData attrData = ClientFactory.getInfoFromFile(file); if (attrData == null || !(attrData instanceof ObjectData)) { System.out.println("Could not load attribute data from file " + file + "!"); return; // break out of whole method as we should only continue if we have all the extended attributes diff --git a/src/resources/objects/buildouts/BuildoutLoader.java b/src/resources/objects/buildouts/BuildoutLoader.java index d4228b6aa..a071a5346 100644 --- a/src/resources/objects/buildouts/BuildoutLoader.java +++ b/src/resources/objects/buildouts/BuildoutLoader.java @@ -39,9 +39,7 @@ import resources.objects.SWGObject; import resources.server_info.Log; public class BuildoutLoader { - - private static final ClientFactory clientFactory = new ClientFactory(); - private static final CrcStringTableData crcTable = (CrcStringTableData) clientFactory.getInfoFromFile("misc/object_template_crc_string_table.iff"); + private static final CrcStringTableData crcTable = (CrcStringTableData) ClientFactory.getInfoFromFile("misc/object_template_crc_string_table.iff"); public static List loadAllBuildouts() { List objects = new LinkedList(); @@ -51,10 +49,10 @@ public class BuildoutLoader { } public static List loadBuildoutsForTerrain(Terrain terrain) { - DatatableData table = (DatatableData) clientFactory.getInfoFromFile("datatables/buildout/buildout_scenes.iff"); + DatatableData table = (DatatableData) ClientFactory.getInfoFromFile("datatables/buildout/buildout_scenes.iff"); for (int row = 0; row < table.getRowCount(); row++) { if (table.getCell(row, 0).equals(terrain.name().toLowerCase(Locale.ENGLISH))) { - TerrainBuildoutLoader loader = new TerrainBuildoutLoader(clientFactory, crcTable, terrain); + TerrainBuildoutLoader loader = new TerrainBuildoutLoader(crcTable, terrain); loader.load(row); return loader.getObjects(); } @@ -65,7 +63,7 @@ public class BuildoutLoader { } private static List getTerrainsToLoad() { - DatatableData table = (DatatableData) clientFactory.getInfoFromFile("datatables/buildout/buildout_scenes.iff"); + DatatableData table = (DatatableData) ClientFactory.getInfoFromFile("datatables/buildout/buildout_scenes.iff"); List terrains = new LinkedList(); for (int row = 0; row < table.getRowCount(); row++) { Terrain t = Terrain.getTerrainFromName((String) table.getCell(row, 0)); diff --git a/src/resources/objects/buildouts/TerrainBuildoutLoader.java b/src/resources/objects/buildouts/TerrainBuildoutLoader.java index 722683437..086420750 100644 --- a/src/resources/objects/buildouts/TerrainBuildoutLoader.java +++ b/src/resources/objects/buildouts/TerrainBuildoutLoader.java @@ -45,15 +45,13 @@ import services.objects.ObjectCreator; class TerrainBuildoutLoader { private static final String BASE_PATH = "datatables/buildout/"; - - private final ClientFactory clientFactory; + private final CrcStringTableData crcTable; private final Terrain terrain; private final Map objectTable; private final List objects; - public TerrainBuildoutLoader(ClientFactory clientFactory, CrcStringTableData crcTable, Terrain terrain) { - this.clientFactory = clientFactory; + public TerrainBuildoutLoader(CrcStringTableData crcTable, Terrain terrain) { this.crcTable = crcTable; this.terrain = terrain; this.objectTable = new Hashtable(12*1024); @@ -72,7 +70,7 @@ class TerrainBuildoutLoader { private void loadAreas(int sceneNumber) { objects.clear(); String file = BASE_PATH+"areas_"+terrain.getName()+".iff"; - DatatableData areaTable = (DatatableData) clientFactory.getInfoFromFile(file); + DatatableData areaTable = (DatatableData) ClientFactory.getInfoFromFile(file); for (int row = 0; row < areaTable.getRowCount(); row++) { BuildoutArea area = new BuildoutArea(); area.load(areaTable.getRow(row), sceneNumber, row); @@ -84,7 +82,7 @@ class TerrainBuildoutLoader { private void loadArea(BuildoutArea area) { String file = BASE_PATH+terrain.getName()+"/"+area.getName().replace("server", "client")+".iff"; - DatatableData areaTable = (DatatableData) clientFactory.getInfoFromFile(file); + DatatableData areaTable = (DatatableData) ClientFactory.getInfoFromFile(file); BuildoutRow buildoutRow = new BuildoutRow(area); for (int row = 0; row < areaTable.getRowCount(); row++) { buildoutRow.load(areaTable.getRow(row), crcTable); diff --git a/src/services/commands/CommandService.java b/src/services/commands/CommandService.java index 46e8588ec..96f6d0dee 100644 --- a/src/services/commands/CommandService.java +++ b/src/services/commands/CommandService.java @@ -128,17 +128,16 @@ public class CommandService extends Service { } private void loadBaseCommands() { - final ClientFactory factory = new ClientFactory(); final String [] commandTables = new String [] {"command_table", "client_command_table", "command_table_ground"}; clearCommands(); for (String table : commandTables) { - loadBaseCommands(factory, table); + loadBaseCommands(table); } } - private void loadBaseCommands(ClientFactory factory, String table) { - DatatableData baseCommands = (DatatableData) factory.getInfoFromFile("datatables/command/"+table+".iff"); + private void loadBaseCommands(String table) { + DatatableData baseCommands = (DatatableData) ClientFactory.getInfoFromFile("datatables/command/"+table+".iff"); for (int row = 0; row < baseCommands.getRowCount(); row++) { Object [] cmdRow = baseCommands.getRow(row); diff --git a/src/services/map/MapService.java b/src/services/map/MapService.java index 87dba757c..0c0aef138 100644 --- a/src/services/map/MapService.java +++ b/src/services/map/MapService.java @@ -69,9 +69,8 @@ public class MapService extends Service { dynamicMapLocations = new ConcurrentHashMap<>(); persistentMapLocations = new ConcurrentHashMap<>(); - ClientFactory clientFactory = new ClientFactory(); - loadMapCategories(clientFactory); - loadMappingTemplates(clientFactory); + loadMapCategories(); + loadMappingTemplates(); } @Override @@ -129,8 +128,8 @@ public class MapService extends Service { player.sendPacket(responseMessage); } - private void loadMapCategories(ClientFactory clientFactory) { - DatatableData table = (DatatableData) clientFactory.getInfoFromFile("datatables/player/planet_map_cat.iff"); + private void loadMapCategories() { + DatatableData table = (DatatableData) ClientFactory.getInfoFromFile("datatables/player/planet_map_cat.iff"); for (int row = 0; row < table.getRowCount(); row++) { MapCategory category = new MapCategory(); category.setName(table.getCell(row, 0).toString()); @@ -144,8 +143,8 @@ public class MapService extends Service { } } - private void loadMappingTemplates(ClientFactory clientFactory) { - DatatableData table = (DatatableData) clientFactory.getInfoFromFile("map_locations.iff"); + private void loadMappingTemplates() { + DatatableData table = (DatatableData) ClientFactory.getInfoFromFile("map_locations.iff"); for (int row = 0; row < table.getRowCount(); row++) { MappingTemplate template = new MappingTemplate(); template.setTemplate(ClientFactory.formatToSharedFile(table.getCell(row, 0).toString())); diff --git a/src/services/objects/ObjectCreator.java b/src/services/objects/ObjectCreator.java index 85e7d200b..09eacbaea 100644 --- a/src/services/objects/ObjectCreator.java +++ b/src/services/objects/ObjectCreator.java @@ -50,9 +50,7 @@ import resources.objects.waypoint.WaypointObject; import resources.objects.weapon.WeaponObject; public final class ObjectCreator { - - private static final ClientFactory clientFac = new ClientFactory(); - + public static final SWGObject createObjectFromTemplate(long objectId, String template) { if (!template.startsWith("object/")) return null; @@ -93,7 +91,7 @@ public final class ObjectCreator { } private static void addObjectAttributes(SWGObject obj, String template) { - ObjectData attributes = (ObjectData) clientFac.getInfoFromFile(ClientFactory.formatToSharedFile(template)); + ObjectData attributes = (ObjectData) ClientFactory.getInfoFromFile(ClientFactory.formatToSharedFile(template)); String stf = (String) attributes.getAttribute(ObjectData.OBJ_STF); String detailStf = (String) attributes.getAttribute(ObjectData.DETAIL_STF); @@ -122,7 +120,7 @@ public final class ObjectCreator { private static void createObjectSlots(SWGObject object) { if (object.getTemplateAttribute(ObjectData.SLOT_DESCRIPTOR) != null) { // These are the slots that the object *HAS* - SlotDescriptorData descriptor = (SlotDescriptorData) clientFac.getInfoFromFile((String) object.getTemplateAttribute(ObjectData.SLOT_DESCRIPTOR)); + SlotDescriptorData descriptor = (SlotDescriptorData) ClientFactory.getInfoFromFile((String) object.getTemplateAttribute(ObjectData.SLOT_DESCRIPTOR)); for (String slotName : descriptor.getSlots()) { object.getSlots().put(slotName, null); @@ -131,7 +129,7 @@ public final class ObjectCreator { if (object.getTemplateAttribute(ObjectData.ARRANGEMENT_FILE) != null) { // This is what slots the created object is able to go into/use - SlotArrangementData arrangementData = (SlotArrangementData) clientFac.getInfoFromFile((String) object.getTemplateAttribute(ObjectData.ARRANGEMENT_FILE)); + SlotArrangementData arrangementData = (SlotArrangementData) ClientFactory.getInfoFromFile((String) object.getTemplateAttribute(ObjectData.ARRANGEMENT_FILE)); object.setArrangement(arrangementData.getArrangement()); } } diff --git a/src/services/player/ZoneService.java b/src/services/player/ZoneService.java index 2ec76f79b..706f5cf3f 100644 --- a/src/services/player/ZoneService.java +++ b/src/services/player/ZoneService.java @@ -102,7 +102,6 @@ public class ZoneService extends Service { private final Map lockedNames; private final Map profTemplates; - private final ClientFactory clientFac; private final NameFilter nameFilter; private final SWGNameGenerator nameGenerator; private final CharacterCreationRestriction creationRestriction; @@ -114,7 +113,6 @@ public class ZoneService extends Service { public ZoneService() { lockedNames = new HashMap(); profTemplates = new ConcurrentHashMap(); - clientFac = new ClientFactory(); nameFilter = new NameFilter("namegen/bad_word_list.txt", "namegen/reserved_words.txt", "namegen/fiction_reserved.txt"); nameGenerator = new SWGNameGenerator(nameFilter); creationRestriction = new CharacterCreationRestriction(2); @@ -488,13 +486,13 @@ public class ZoneService extends Service { } private void loadProfTemplates() { - profTemplates.put("crafting_artisan", (ProfTemplateData) clientFac.getInfoFromFile("creation/profession_defaults_combat_brawler.iff")); - profTemplates.put("combat_brawler", (ProfTemplateData) clientFac.getInfoFromFile("creation/profession_defaults_combat_brawler.iff")); - profTemplates.put("social_entertainer", (ProfTemplateData) clientFac.getInfoFromFile("creation/profession_defaults_social_entertainer.iff")); - profTemplates.put("combat_marksman", (ProfTemplateData) clientFac.getInfoFromFile("creation/profession_defaults_combat_marksman.iff")); - profTemplates.put("science_medic", (ProfTemplateData) clientFac.getInfoFromFile("creation/profession_defaults_science_medic.iff")); - profTemplates.put("outdoors_scout", (ProfTemplateData) clientFac.getInfoFromFile("creation/profession_defaults_outdoors_scout.iff")); - profTemplates.put("jedi", (ProfTemplateData) clientFac.getInfoFromFile("creation/profession_defaults_jedi.iff")); + profTemplates.put("crafting_artisan", (ProfTemplateData) ClientFactory.getInfoFromFile("creation/profession_defaults_combat_brawler.iff")); + profTemplates.put("combat_brawler", (ProfTemplateData) ClientFactory.getInfoFromFile("creation/profession_defaults_combat_brawler.iff")); + profTemplates.put("social_entertainer", (ProfTemplateData) ClientFactory.getInfoFromFile("creation/profession_defaults_social_entertainer.iff")); + profTemplates.put("combat_marksman", (ProfTemplateData) ClientFactory.getInfoFromFile("creation/profession_defaults_combat_marksman.iff")); + profTemplates.put("science_medic", (ProfTemplateData) ClientFactory.getInfoFromFile("creation/profession_defaults_science_medic.iff")); + profTemplates.put("outdoors_scout", (ProfTemplateData) ClientFactory.getInfoFromFile("creation/profession_defaults_outdoors_scout.iff")); + profTemplates.put("jedi", (ProfTemplateData) ClientFactory.getInfoFromFile("creation/profession_defaults_jedi.iff")); } private boolean lockName(String name, Player player) {