diff --git a/src/resources/radial/RadialItem.java b/src/resources/radial/RadialItem.java index 5551fa5db..221f9d83e 100644 --- a/src/resources/radial/RadialItem.java +++ b/src/resources/radial/RadialItem.java @@ -4,127 +4,329 @@ import java.util.Hashtable; import java.util.Map; public enum RadialItem { - UNKNOWN (""), - COMBAT_TARGET (""), - COMBAT_UNTARGET (""), - COMBAT_ATTACK (""), - COMBAT_PEACE (""), - COMBAT_DUEL (""), - COMBAT_DEATH_BLOW (""), - EXAMINE (""), - EXAMINE_CHARACTERSHEET (""), - TRADE_START (""), - TRADE_ACCEPT (""), - ITEM_PICKUP (""), - ITEM_EQUIP (""), - ITEM_UNEQUIP (""), - ITEM_DROP (""), - ITEM_DESTROY (""), - ITEM_TOKEN (""), - ITEM_OPEN (""), - ITEM_OPEN_NEW_WINDOW (""), - ITEM_ACTIVATE (""), - ITEM_DEACTIVATE (""), - ITEM_USE (""), - ITEM_USE_SELF (""), - ITEM_USE_OTHER (""), - ITEM_SIT (""), - ITEM_MAIL (""), - CONVERSE_START (""), - CONVERSE_RESPOND (""), - CONVERSE_RESPONSE (""), - CONVERSE_STOP (""), - CRAFT_OPTIONS (""), - CRAFT_START (""), - CRAFT_HOPPER_INPUT (""), - CRAFT_HOPPER_OUTPUT (""), - TERMINAL_MISSION_LIST (""), - MISSION_DETAILS (""), - LOOT (""), - LOOT_ALL (""), - GROUP_INVITE (""), - GROUP_JOIN (""), - GROUP_LEAVE (""), - GROUP_KICK (""), - GROUP_DISBAND (""), - GROUP_DECLINE (""), - EXTRACT_OBJECT (""), - PET_CALL (""), - TERMINAL_AUCTION_USE (""), - CREATURE_FOLLOW (""), - CREATURE_STOP_FOLLOW (""), - SPLIT (""), - IMAGEDESIGN (""), - SET_NAME (""), - ITEM_ROTATE (""), - ITEM_ROTATE_RIGHT (""), - ITEM_ROTATE_LEFT (""), - ITEM_MOVE (""), - ITEM_MOVE_FORWARD (""), - ITEM_MOVE_BACK (""), - ITEM_MOVE_UP (""), - ITEM_MOVE_DOWN (""), - PET_STORE (""), - VEHICLE_GENERATE (""), - VEHICLE_STORE (""), - MISSION_ABORT (""), - MISSION_END_DUTY (""), - SHIP_MANAGE_COMPONENTS (""), - WAYPOINT_AUTOPILOT (""), - PROGRAM_DROID (""), - VEHICLE_OFFER_RIDE (""), - ITEM_PUBLIC_CONTAINER_USE1 (""), - COLLECTIONS (""), - GROUP_MASTER_LOOTER (""), - GROUP_MAKE_LEADER (""), - GROUP_LOOT (""), - ITEM_ROTATE_FORWARD (""), - ITEM_ROTATE_BACKWARD (""), - ITEM_ROTATE_CLOCKWISE (""), - ITEM_ROTATE_COUNTERCLOCKWISE (""), - ITEM_ROTATE_RANDOM (""), - ITEM_ROTATE_RANDOM_YAW (""), - ITEM_ROTATE_RANDOM_PITCH (""), - ITEM_ROTATE_RANDOM_ROLL (""), - ITEM_ROTATE_RESET (""), - ITEM_ROTATE_COPY (""), - ITEM_MOVE_COPY_LOCATION (""), - ITEM_MOVE_COPY_HEIGHT (""), - GROUP_TELL (""), - ITEM_WP_SETCOLOR (""), - ITEM_WP_SETCOLOR_BLUE (""), - ITEM_WP_SETCOLOR_GREEN (""), - ITEM_WP_SETCOLOR_ORANGE (""), - ITEM_WP_SETCOLOR_YELLOW (""), - ITEM_WP_SETCOLOR_PURPLE (""), - ITEM_WP_SETCOLOR_WHITE (""), - ITEM_MOVE_LEFT (""), - ITEM_MOVE_RIGHT (""), - ROTATE_APPLY (""), - ROTATE_RESET (""), - WINDOW_LOCK (""), - WINDOW_UNLOCK (""), - GROUP_CREATE_PICKUP_POINT (""), - GROUP_USE_PICKUP_POINT (""), - GROUP_USE_PICKUP_POINT_NOCAMP (""), - VOICE_SHORTLIST_REMOVE (""), - VOICE_INVITE (""), - VOICE_KICK (""), - ITEM_EQUIP_APPEARANCE (""), - ITEM_UNEQUIP_APPEARANCE (""), - OPEN_STORYTELLER_RECIPE (""), - CLIENT_MENU_LAST (""), - SERVER_MENU1 (""), - SERVER_MENU2 (""), - SERVER_PET_MOUNT (""), - SERVER_VEHICLE_ENTER_EXIT (""), - BANK_TRANSFER ("@sui:bank_credits"), - BANK_ITEMS ("@sui:bank_items"), - BANK_WITHDRAW_ALL ("@sui:bank_withdrawall"), - BANK_DEPOSIT_ALL ("@sui:bank_depositall"), - BANK_RESERVE ("@sui:bank_galactic_reserve"), - BANK_RESERVE_WITHDRAW ("@sui:bank_galactic_reserve_withdraw"), - BANK_RESERVE_DEPOSIT ("@sui:bank_galactic_reserve_deposit"); + UNKNOWN (""), + COMBAT_TARGET (""), + COMBAT_UNTARGET (""), + COMBAT_ATTACK (""), + COMBAT_PEACE (""), + COMBAT_DUEL (""), + COMBAT_DEATH_BLOW (""), + EXAMINE (""), + EXAMINE_CHARACTERSHEET (""), + TRADE_START (""), + TRADE_ACCEPT (""), + ITEM_PICKUP (""), + ITEM_EQUIP (""), + ITEM_UNEQUIP (""), + ITEM_DROP (""), + ITEM_DESTROY (""), + ITEM_TOKEN (""), + ITEM_OPEN (""), + ITEM_OPEN_NEW_WINDOW (""), + ITEM_ACTIVATE (""), + ITEM_DEACTIVATE (""), + ITEM_USE (""), + ITEM_USE_SELF (""), + ITEM_USE_OTHER (""), + ITEM_SIT (""), + ITEM_MAIL (""), + CONVERSE_START (""), + CONVERSE_RESPOND (""), + CONVERSE_RESPONSE (""), + CONVERSE_STOP (""), + CRAFT_OPTIONS (""), + CRAFT_START (""), + CRAFT_HOPPER_INPUT (""), + CRAFT_HOPPER_OUTPUT (""), + MISSION_TERMINAL_LIST (""), + MISSION_DETAILS (""), + LOOT (""), + LOOT_ALL (""), + GROUP_INVITE (""), + GROUP_JOIN (""), + GROUP_LEAVE (""), + GROUP_KICK (""), + GROUP_DISBAND (""), + GROUP_DECLINE (""), + EXTRACT_OBJECT (""), + PET_CALL (""), + TERMINAL_AUCTION_USE (""), + CREATURE_FOLLOW (""), + CREATURE_STOP_FOLLOW (""), + SPLIT (""), + IMAGEDESIGN (""), + SET_NAME (""), + ITEM_ROTATE (""), + ITEM_ROTATE_LEFT (""), + ITEM_MOVE (""), + ITEM_MOVE_FORWARD (""), + ITEM_MOVE_BACK (""), + ITEM_MOVE_UP (""), + ITEM_MOVE_DOWN (""), + PET_STORE (""), + VEHICLE_GENERATE (""), + VEHICLE_STORE (""), + MISSION_ABORT (""), + MISSION_END_DUTY (""), + SHIP_MANAGE_COMPONENTS (""), + WAYPOINT_AUTOPILOT (""), + PROGRAM_DROID (""), + VEHICLE_OFFER_RIDE (""), + ITEM_PUBLIC_CONTAINER_USE1 (""), + COLLECTIONS (""), + GROUP_MASTER_LOOTER (""), + GROUP_MAKE_LEADER (""), + GROUP_LOOT (""), + ITEM_ROTATE_BACKWARD (""), + ITEM_ROTATE_COUNTERCLOCKWISE (""), + ITEM_ROTATE_RANDOM (""), + ITEM_ROTATE_RANDOM_YAW (""), + ITEM_ROTATE_RANDOM_PITCH (""), + ITEM_ROTATE_RANDOM_ROLL (""), + ITEM_ROTATE_RESET (""), + ITEM_ROTATE_COPY (""), + ITEM_MOVE_COPY_LOCATION (""), + ITEM_MOVE_COPY_HEIGHT (""), + GROUP_TELL (""), + ITEM_WP_SETCOLOR (""), + ITEM_WP_SETCOLOR_BLUE (""), + ITEM_WP_SETCOLOR_GREEN (""), + ITEM_WP_SETCOLOR_ORANGE (""), + ITEM_WP_SETCOLOR_YELLOW (""), + ITEM_WP_SETCOLOR_PURPLE (""), + ITEM_WP_SETCOLOR_WHITE (""), + ITEM_MOVE_LEFT (""), + ITEM_MOVE_RIGHT (""), + ROTATE_APPLY (""), + ROTATE_RESET (""), + WINDOW_LOCK (""), + WINDOW_UNLOCK (""), + GROUP_CREATE_PICKUP_POINT (""), + GROUP_USE_PICKUP_POINT (""), + GROUP_USE_PICKUP_POINT_NOCAMP (""), + VOICE_SHORTLIST_REMOVE (""), + VOICE_INVITE (""), + VOICE_KICK (""), + ITEM_EQUIP_APPEARANCE (""), + ITEM_UNEQUIP_APPEARANCE (""), + OPEN_STORYTELLER_RECIPE (""), + SERVER_DIVIDER (""), + SERVER_MENU1 (""), + SERVER_MENU2 (""), + SERVER_MENU3 (""), + SERVER_MENU4 (""), + SERVER_MENU5 (""), + SERVER_MENU6 (""), + SERVER_MENU7 (""), + SERVER_MENU8 (""), + SERVER_MENU9 (""), + SERVER_MENU10 (""), + SERVER_MENU11 (""), + SERVER_MENU12 (""), + SERVER_MENU13 (""), + SERVER_MENU14 (""), + SERVER_MENU15 (""), + SERVER_MENU16 (""), + SERVER_MENU17 (""), + SERVER_MENU18 (""), + SERVER_MENU19 (""), + SERVER_MENU20 (""), + SERVER_MENU21 (""), + SERVER_MENU22 (""), + SERVER_MENU23 (""), + SERVER_MENU24 (""), + SERVER_MENU25 (""), + SERVER_MENU26 (""), + SERVER_MENU27 (""), + SERVER_MENU28 (""), + SERVER_MENU29 (""), + SERVER_MENU30 (""), + SERVER_MENU31 (""), + SERVER_MENU32 (""), + SERVER_MENU33 (""), + SERVER_MENU34 (""), + SERVER_MENU35 (""), + SERVER_MENU36 (""), + SERVER_MENU37 (""), + SERVER_MENU38 (""), + SERVER_MENU39 (""), + SERVER_MENU40 (""), + SERVER_MENU41 (""), + SERVER_MENU42 (""), + SERVER_MENU43 (""), + SERVER_MENU44 (""), + SERVER_MENU45 (""), + SERVER_MENU46 (""), + SERVER_MENU47 (""), + SERVER_MENU48 (""), + SERVER_MENU49 (""), + SERVER_MENU50 (""), + SERVER_HARVESTER_MANAGE (""), + SERVER_HOUSE_MANAGE (""), + SERVER_FACTION_HALL_MANAGE (""), + SERVER_HUE (""), + SERVER_OBSERVE (""), + SERVER_STOP_OBSERVING (""), + SERVER_TRAVEL_OPTIONS (""), + SERVER_BAZAAR_OPTIONS (""), + SERVER_SHIPPING_OPTIONS (""), + SERVER_HEAL_WOUND (""), + SERVER_HEAL_WOUND_HEALTH (""), + SERVER_HEAL_WOUND_ACTION (""), + SERVER_HEAL_WOUND_STRENGTH (""), + SERVER_HEAL_WOUND_CONSTITUTION (""), + SERVER_HEAL_WOUND_QUICKNESS (""), + SERVER_HEAL_WOUND_STAMINA (""), + SERVER_HEAL_DAMAGE (""), + SERVER_HEAL_STATE (""), + SERVER_HEAL_STATE_STUNNED (""), + SERVER_HEAL_STATE_BLINDED (""), + SERVER_HEAL_STATE_DIZZY (""), + SERVER_HEAL_STATE_INTIMIDATED (""), + SERVER_HEAL_ENHANCE (""), + SERVER_HEAL_ENHANCE_HEALTH (""), + SERVER_HEAL_ENHANCE_ACTION (""), + SERVER_HEAL_ENHANCE_STRENGTH (""), + SERVER_HEAL_ENHANCE_CONSTITUTION (""), + SERVER_HEAL_ENHANCE_QUICKNESS (""), + SERVER_HEAL_ENHANCE_STAMINA (""), + SERVER_HEAL_FIRSTAID (""), + SERVER_HEAL_CURE_POISON (""), + SERVER_HEAL_CURE_DISEASE (""), + SERVER_HEAL_APPLY_POISON (""), + SERVER_HEAL_APPLY_DISEASE (""), + SERVER_HARVEST_CORPSE (""), + SERVER_PERFORMANCE_LISTEN (""), + SERVER_PERFORMANCE_WATCH (""), + SERVER_PERFORMANCE_LISTEN_STOP (""), + SERVER_PERFORMANCE_WATCH_STOP (""), + SERVER_TERMINAL_PERMISSIONS (""), + SERVER_TERMINAL_MANAGEMENT (""), + SERVER_TERMINAL_PERMISSIONS_ENTER (""), + SERVER_TERMINAL_PERMISSIONS_BANNED (""), + SERVER_TERMINAL_PERMISSIONS_ADMIN (""), + SERVER_TERMINAL_PERMISSIONS_VENDOR (""), + SERVER_TERMINAL_PERMISSIONS_HOPPER (""), + SERVER_TERMINAL_MANAGEMENT_STATUS (""), + SERVER_TERMINAL_MANAGEMENT_PRIVACY (""), + SERVER_TERMINAL_MANAGEMENT_TRANSFER (""), + SERVER_TERMINAL_MANAGEMENT_RESIDENCE (""), + SERVER_TERMINAL_MANAGEMENT_DESTROY (""), + SERVER_TERMINAL_MANAGEMENT_PAY (""), + SERVER_TERMINAL_CREATE_VENDOR (""), + SERVER_GIVE_VENDOR_MAINTENANCE (""), + SERVER_ITEM_OPTIONS (""), + SERVER_SURVEY_TOOL_RANGE (""), + SERVER_SURVEY_TOOL_RESOLUTION (""), + SERVER_SURVEY_TOOL_CLASS (""), + SERVER_PROBE_DROID_TRACK_TARGET (""), + SERVER_PROBE_DROID_FIND_TARGET (""), + SERVER_PROBE_DROID_ACTIVATE (""), + SERVER_PROBE_DROID_BUY (""), + SERVER_TEACH (""), + PET_COMMAND (""), + PET_FOLLOW (""), + PET_STAY (""), + PET_GUARD (""), + PET_FRIEND (""), + PET_ATTACK (""), + PET_PATROL (""), + PET_GET_PATROL_POINT (""), + PET_CLEAR_PATROL_POINTS (""), + PET_ASSUME_FORMATION_1 (""), + PET_ASSUME_FORMATION_2 (""), + PET_TRANSFER (""), + PET_RELEASE (""), + PET_TRICK_1 (""), + PET_TRICK_2 (""), + PET_TRICK_3 (""), + PET_TRICK_4 (""), + PET_GROUP (""), + PET_TAME (""), + PET_FEED (""), + PET_SPECIAL_ATTACK_ONE (""), + PET_SPECIAL_ATTACK_TWO (""), + PET_RANGED_ATTACK (""), + DICE_ROLL (""), + DICE_TWO_FACE (""), + DICE_THREE_FACE (""), + DICE_FOUR_FACE (""), + DICE_FIVE_FACE (""), + DICE_SIX_FACE (""), + DICE_SEVEN_FACE (""), + DICE_EIGHT_FACE (""), + DICE_COUNT_ONE (""), + DICE_COUNT_TWO (""), + DICE_COUNT_THREE (""), + DICE_COUNT_FOUR (""), + CREATE_BALLOT (""), + VOTE (""), + BOMBING_RUN (""), + SELF_DESTRUCT (""), + THIRTY_SEC (""), + FIFTEEN_SEC (""), + SERVER_CAMP_DISBAND (""), + SERVER_CAMP_ASSUME_OWNERSHIP (""), + SERVER_PROBE_DROID_PROGRAM (""), + SERVER_GUILD_CREATE ("@guild:menu_create"), + SERVER_GUILD_INFO (""), + SERVER_GUILD_MEMBERS (""), + SERVER_GUILD_SPONSORED (""), + SERVER_GUILD_ENEMIES (""), + SERVER_GUILD_SPONSOR (""), + SERVER_GUILD_DISBAND (""), + SERVER_GUILD_NAMECHANGE (""), + SERVER_GUILD_GUILD_MANAGEMENT (""), + SERVER_GUILD_MEMBER_MANAGEMENT (""), + SERVER_MANF_HOPPER_INPUT (""), + SERVER_MANF_HOPPER_OUTPUT (""), + SERVER_MANF_STATION_SCHEMATIC (""), + ELEVATOR_UP (""), + ELEVATOR_DOWN (""), + SERVER_PET_OPEN (""), + SERVER_PET_DPAD (""), + SERVER_MED_TOOL_DIAGNOSE (""), + SERVER_MED_TOOL_TENDWOUND (""), + SERVER_MED_TOOL_TENDDAMAGE (""), + SERVER_PET_DISMOUNT (""), + SERVER_PET_TRAIN_MOUNT (""), + SERVER_VEHICLE_ENTER (""), + SERVER_VEHICLE_EXIT (""), + OPEN_NAVICOMP_DPAD (""), + INIT_NAVICOMP_DPAD (""), + CITY_STATUS (""), + CITY_CITIZENS (""), + CITY_STRUCTURES (""), + CITY_TREASURY (""), + CITY_MANAGEMENT (""), + CITY_NAME (""), + CITY_MILITIA (""), + CITY_TAXES (""), + CITY_TREASURY_DEPOSIT (""), + CITY_TREASURY_WITHDRAW (""), + CITY_REGISTER (""), + CITY_RANK (""), + CITY_ADMIN_1 (""), + CITY_ADMIN_2 (""), + CITY_ADMIN_3 (""), + CITY_ADMIN_4 (""), + CITY_ADMIN_5 (""), + CITY_ADMIN_6 (""), + MEMORY_CHIP_PROGRAM (""), + MEMORY_CHIP_TRANSFER (""), + MEMORY_CHIP_ANALYZE (""), + EQUIP_DROID_ON_SHIP (""), + BIO_LINK (""), + LANDMINE_DISARM (""), + LANDMINE_REVERSE_TRIGGER (""), + REWARD_TRADE_IN (""), + BANK_TRANSFER ("@sui:bank_credits"), + BANK_ITEMS ("@sui:bank_items"), + BANK_WITHDRAW_ALL ("@sui:bank_withdrawall"), + BANK_DEPOSIT_ALL ("@sui:bank_depositall"), + BANK_RESERVE ("@sui:bank_galactic_reserve"), + BANK_RESERVE_WITHDRAW ("@sui:bank_galactic_reserve_withdraw"), + BANK_RESERVE_DEPOSIT ("@sui:bank_galactic_reserve_deposit"); private static final Map INT_TO_ITEM = new Hashtable<>(values().length); private int id; diff --git a/src/resources/server_info/RelationalServerData.java b/src/resources/server_info/RelationalServerData.java index 639c264aa..4c930901d 100644 --- a/src/resources/server_info/RelationalServerData.java +++ b/src/resources/server_info/RelationalServerData.java @@ -58,8 +58,8 @@ public class RelationalServerData extends RelationalDatabase { insertTableMetadata = prepareStatement("INSERT INTO "+META_TABLE+" (table_name, last_imported) VALUES (?, ?)"); } - public boolean linkTableWithSdb(String table, String sdbPath) { - File sdb = new File(sdbPath); + public boolean linkTableWithSdb(String table, String filepath) { + File sdb = new File(filepath); if (!sdb.isFile()) return false; long sdbModified = sdb.lastModified(); diff --git a/src/resources/server_info/RelationalServerFactory.java b/src/resources/server_info/RelationalServerFactory.java new file mode 100644 index 000000000..1cc0ad57f --- /dev/null +++ b/src/resources/server_info/RelationalServerFactory.java @@ -0,0 +1,46 @@ +package resources.server_info; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; + +public class RelationalServerFactory { + + private static final RelationalServerFactory INSTANCE = new RelationalServerFactory(); + private static final String BASE_PATH = "serverdata/"; + private static final Map FILE_LOAD_LOCKING = new HashMap<>(); + + public static RelationalServerData getServerData(String file, String ... tables) { + return INSTANCE.getData(file, tables); + } + + private RelationalServerData getData(String file, String ... tables) { + final Object lock = getFileLocking(file); + synchronized (lock) { + File f = new File(BASE_PATH + file); + File parent = f.getParentFile(); + RelationalServerData data = new RelationalServerData(BASE_PATH + file); + for (String table : tables) { + String path; + if (table.contains("/")) { + path = BASE_PATH + table + ".sdb"; + table = table.substring(table.lastIndexOf('/')+1); + } else + path = parent.getPath() + File.separator + table + ".sdb"; + if (!data.linkTableWithSdb(table, path)) + return null; + } + return data; + } + } + + private Object getFileLocking(String file) { + synchronized (FILE_LOAD_LOCKING) { + Object o = FILE_LOAD_LOCKING.get(file); + if (o == null) + FILE_LOAD_LOCKING.put(file, o = new Object()); + return o; + } + } + +} diff --git a/src/services/galaxy/terminals/TerminalService.java b/src/services/galaxy/terminals/TerminalService.java index 0345835f4..11a4249b2 100644 --- a/src/services/galaxy/terminals/TerminalService.java +++ b/src/services/galaxy/terminals/TerminalService.java @@ -18,11 +18,12 @@ import resources.radial.RadialOption; import resources.radial.Radials; import resources.server_info.Log; import resources.server_info.RelationalServerData; +import resources.server_info.RelationalServerFactory; public class TerminalService extends Service { - private static final String GET_ALL_TEMPLATES_SQL = "SELECT iff FROM iff_to_script"; - private static final String GET_SCRIPT_FOR_IFF_SQL = "SELECT script FROM iff_to_script WHERE iff = ?"; + private static final String GET_ALL_TEMPLATES_SQL = "SELECT iff FROM radials"; + private static final String GET_SCRIPT_FOR_IFF_SQL = "SELECT script FROM radials WHERE iff = ?"; private final Set templates; private final RelationalServerData iffDatabase; @@ -31,9 +32,8 @@ public class TerminalService extends Service { public TerminalService() { templates = new HashSet<>(); - iffDatabase = new RelationalServerData("serverdata/radial/radials.db"); - - if (!iffDatabase.linkTableWithSdb("iff_to_script", "serverdata/radial/radials.sdb")) + iffDatabase = RelationalServerFactory.getServerData("radial/radials.db", "radials"); + if (iffDatabase == null) throw new main.ProjectSWG.CoreException("Unable to load sdb files for StaticService"); getAllTemplatesStatement = iffDatabase.prepareStatement(GET_ALL_TEMPLATES_SQL); diff --git a/src/services/map/CityService.java b/src/services/map/CityService.java index 5865d9c59..bfdebc16d 100644 --- a/src/services/map/CityService.java +++ b/src/services/map/CityService.java @@ -17,6 +17,7 @@ import resources.player.Player; import resources.player.PlayerEvent; import resources.server_info.Log; import resources.server_info.RelationalServerData; +import resources.server_info.RelationalServerFactory; public class CityService extends Service { @@ -26,8 +27,8 @@ public class CityService extends Service { private final PreparedStatement getAllCitiesStatement; public CityService() { - spawnDatabase = new RelationalServerData("serverdata/map/cities.db"); - if (!spawnDatabase.linkTableWithSdb("cities", "serverdata/map/cities.sdb")) + spawnDatabase = RelationalServerFactory.getServerData("map/cities.db", "cities"); + if (spawnDatabase == null) throw new main.ProjectSWG.CoreException("Unable to load sdb files for StaticService"); getAllCitiesStatement = spawnDatabase.prepareStatement(GET_ALL_CITIES_FROM_TERRAIN); } diff --git a/src/services/objects/ClientObjectLoader.java b/src/services/objects/ClientObjectLoader.java index 488e97217..e7b3201b4 100644 --- a/src/services/objects/ClientObjectLoader.java +++ b/src/services/objects/ClientObjectLoader.java @@ -13,10 +13,10 @@ import resources.objects.SWGObject; import resources.objects.cell.CellObject; import resources.server_info.Log; import resources.server_info.RelationalServerData; +import resources.server_info.RelationalServerFactory; public class ClientObjectLoader { - private static final String FILE_PREFIX = "serverdata/buildout/"; private static final String GET_CLIENT_OBJECTS_SQL = "SELECT objects.*, areas.adjust_coordinates, areas.terrain " + "FROM objects, areas " + "WHERE areas.event == '' AND objects.area_id = areas.id " @@ -27,15 +27,15 @@ public class ClientObjectLoader { public ClientObjectLoader() { strings = (CrcStringTableData) ClientFactory.getInfoFromFile("misc/object_template_crc_string_table.iff"); - clientSdb = new RelationalServerData(FILE_PREFIX+"buildouts.db"); + clientSdb = RelationalServerFactory.getServerData("buildout/buildouts.db", "areas", "objects"); + if (clientSdb == null) + throw new main.ProjectSWG.CoreException("Unable to load sdb files for ClientObjectLoader"); } public Map loadClientObjects(Terrain terrain) { System.out.println("ClientObjectLoader: Loading client objects..."); Log.i("ClientObjectLoader", "Loading client objects..."); Map objects = new Hashtable<>(4*1024); - if (!loadTables()) - return objects; try (ResultSet set = clientSdb.prepareStatement(GET_CLIENT_OBJECTS_SQL).executeQuery()) { set.setFetchSize(1500); ColumnIndexes ind = new ColumnIndexes(set); @@ -68,15 +68,6 @@ public class ClientObjectLoader { return obj; } - private boolean loadTables() { - if (!clientSdb.linkTableWithSdb("areas", FILE_PREFIX+"areas.sdb") || !clientSdb.linkTableWithSdb("objects", FILE_PREFIX+"objects.sdb")) { - System.err.println("ObjectManager: Failed to load client objects! Cannot link SDB"); - Log.e("ObjectManager", "Failed to load client object SDB files!"); - return false; - } - return true; - } - private static class ColumnIndexes { public final int idInd; diff --git a/src/services/player/CharacterCreationService.java b/src/services/player/CharacterCreationService.java index 96967c608..1a24fe054 100644 --- a/src/services/player/CharacterCreationService.java +++ b/src/services/player/CharacterCreationService.java @@ -289,6 +289,10 @@ public class CharacterCreationService extends Service { return null; } + private CreatureObject createCreature(ObjectManager objManager, String template, Location location, String buildingId, String cell) { + return null; + } + private PlayerObject createPlayer(ObjectManager objManager, String template) { SWGObject obj = objManager.createObject(template); if (obj instanceof PlayerObject) diff --git a/src/services/spawn/SpawnerService.java b/src/services/spawn/SpawnerService.java index ab6e81177..a80c36c80 100644 --- a/src/services/spawn/SpawnerService.java +++ b/src/services/spawn/SpawnerService.java @@ -41,6 +41,7 @@ import resources.control.Service; import resources.objects.building.BuildingObject; import resources.objects.SWGObject; import resources.server_info.RelationalServerData; +import resources.server_info.RelationalServerFactory; import resources.spawn.SpawnerType; import resources.spawn.Spawner; import services.objects.ObjectManager; @@ -56,12 +57,9 @@ public final class SpawnerService extends Service { public SpawnerService(ObjectManager objectManager) { this.objectManager = objectManager; spawners = new ArrayList<>(); - spawnerDatabase = new RelationalServerData("serverdata/spawn/static.db"); - - if(!(spawnerDatabase.linkTableWithSdb("static", "serverdata/spawn/static.sdb") && - spawnerDatabase.linkTableWithSdb("buildings", "serverdata/building/buildings.sdb"))) { + spawnerDatabase = RelationalServerFactory.getServerData("spawn/static.db", "static", "building/buildings"); + if (spawnerDatabase == null) throw new main.ProjectSWG.CoreException("Unable to load sdb files for SpawnerService"); - } } @Override diff --git a/src/services/spawn/StaticService.java b/src/services/spawn/StaticService.java index 3f11855dc..478a14d99 100644 --- a/src/services/spawn/StaticService.java +++ b/src/services/spawn/StaticService.java @@ -40,6 +40,7 @@ import resources.objects.SWGObject; import resources.objects.building.BuildingObject; import resources.server_info.Log; import resources.server_info.RelationalServerData; +import resources.server_info.RelationalServerFactory; import services.objects.ObjectManager; public class StaticService extends Service { @@ -55,12 +56,10 @@ public class StaticService extends Service { this.databaseMutex = new Object(); this.objectManager = objectManager; - spawnDatabase = new RelationalServerData("serverdata/static/spawns.db"); - - if (!spawnDatabase.linkTableWithSdb("spawns", "serverdata/static/spawns.sdb") || - !spawnDatabase.linkTableWithSdb("types", "serverdata/static/types.sdb")) { + spawnDatabase = RelationalServerFactory.getServerData("static/spawns.db", "spawns", "types"); + if (spawnDatabase == null) throw new main.ProjectSWG.CoreException("Unable to load sdb files for StaticService"); - } + getSupportingStatement = spawnDatabase.prepareStatement(GET_SUPPORTING_SQL); }