/src/DataSource.java

https://github.com/kpfile/Minecraft-Server-Mod · Java · 391 lines · 179 code · 49 blank · 163 comment · 24 complexity · 72e2a61e93396a44a645cfa3d985d3d1 MD5 · raw file

  1. /* Interface so we can either use MySQL or flat files */
  2. import java.util.List;
  3. import java.util.Map;
  4. import java.util.logging.Level;
  5. import java.util.logging.Logger;
  6. import net.minecraft.server.MinecraftServer;
  7. /**
  8. * DataSource is the abstract class for implementing new data sources.
  9. * @author James
  10. */
  11. public abstract class DataSource {
  12. protected static final Logger log = Logger.getLogger("Minecraft");
  13. protected List<User> users;
  14. protected List<String> reserveList;
  15. protected List<String> whiteList;
  16. protected List<Group> groups;
  17. protected List<Kit> kits;
  18. protected List<Warp> homes;
  19. protected List<Warp> warps;
  20. protected Map<String, Integer> items;
  21. protected MinecraftServer server;
  22. protected final Object userLock = new Object(), groupLock = new Object(), kitLock = new Object();
  23. protected final Object homeLock = new Object(), warpLock = new Object(), itemLock = new Object();
  24. protected final Object whiteListLock = new Object(), reserveListLock = new Object();
  25. /**
  26. * Initializes the data source
  27. */
  28. abstract public void initialize();
  29. /**
  30. * Loads all users
  31. */
  32. abstract public void loadUsers();
  33. /**
  34. * Loads all groups
  35. */
  36. abstract public void loadGroups();
  37. /**
  38. * Loads all kits
  39. */
  40. abstract public void loadKits();
  41. /**
  42. * Loads all homes
  43. */
  44. abstract public void loadHomes();
  45. /**
  46. * Loads all warps
  47. */
  48. abstract public void loadWarps();
  49. /**
  50. * Loads all items
  51. */
  52. abstract public void loadItems();
  53. /**
  54. * Loads the whitelist
  55. */
  56. abstract public void loadWhitelist();
  57. /**
  58. * Loads the reservelist
  59. */
  60. abstract public void loadReserveList();
  61. //abstract public void loadBanList();
  62. /**
  63. * Adds user to the list
  64. * @param user
  65. */
  66. abstract public void addUser(User user);
  67. /**
  68. * Modifies the provided user
  69. * @param user
  70. */
  71. abstract public void modifyUser(User user);
  72. /**
  73. * Returns specified user
  74. * @param name
  75. * @return user
  76. */
  77. public User getUser(String name) {
  78. synchronized (userLock) {
  79. for (User user : users) {
  80. if (user.Name.equalsIgnoreCase(name)) {
  81. return user;
  82. }
  83. }
  84. }
  85. return null;
  86. }
  87. /**
  88. * Adds specified group to the list of groups
  89. * @param group
  90. */
  91. abstract public void addGroup(Group group);
  92. /**
  93. * Modifies group
  94. * @param group
  95. */
  96. abstract public void modifyGroup(Group group);
  97. /**
  98. * Returns specified group
  99. * @param name
  100. * @return group
  101. */
  102. public Group getGroup(String name) {
  103. synchronized (groupLock) {
  104. for (Group group : groups) {
  105. if (group.Name.equalsIgnoreCase(name)) {
  106. return group;
  107. }
  108. }
  109. }
  110. if (!name.equals("")) {
  111. log.log(Level.INFO, "Unable to find group '" + name + "'. Are you sure you have that group?");
  112. }
  113. return null;
  114. }
  115. /**
  116. * Returns the default group
  117. * @return default group
  118. */
  119. public Group getDefaultGroup() {
  120. synchronized (groupLock) {
  121. for (Group group : groups) {
  122. if (group.DefaultGroup) {
  123. return group;
  124. }
  125. }
  126. }
  127. return null;
  128. }
  129. /**
  130. * Adds kit to list of kits
  131. * @param kit
  132. */
  133. abstract public void addKit(Kit kit);
  134. /**
  135. * Modifies kit
  136. * @param kit
  137. */
  138. abstract public void modifyKit(Kit kit);
  139. /**
  140. * Returns specified kit
  141. * @param name
  142. * @return kit
  143. */
  144. public Kit getKit(String name) {
  145. synchronized (kitLock) {
  146. for (Kit kit : kits) {
  147. if (kit.Name.equalsIgnoreCase(name)) {
  148. return kit;
  149. }
  150. }
  151. }
  152. return null;
  153. }
  154. /**
  155. * Returns true if there are any kits
  156. * @return true if there are kits
  157. */
  158. public boolean hasKits() {
  159. synchronized (kitLock) {
  160. return kits.size() > 0;
  161. }
  162. }
  163. /**
  164. * Returns a list of all kits names seperated by commas
  165. * @param player
  166. * @return string list of kits
  167. */
  168. public String getKitNames(String player) {
  169. StringBuilder builder = new StringBuilder();
  170. builder.append(""); //incaseofnull
  171. synchronized (kitLock) {
  172. for (Kit kit : kits) {
  173. if (etc.getInstance().isUserInGroup(player, kit.Group) || kit.Group.equals("")) {
  174. builder.append(kit.Name).append(" ");
  175. }
  176. }
  177. }
  178. return builder.toString();
  179. }
  180. /**
  181. * Adds home to list of homes
  182. * @param home
  183. */
  184. abstract public void addHome(Warp home);
  185. /**
  186. * Modifies home
  187. * @param home
  188. */
  189. abstract public void changeHome(Warp home);
  190. /**
  191. * Returns specified home
  192. * @param name
  193. * @return home
  194. */
  195. public Warp getHome(String name) {
  196. synchronized (homeLock) {
  197. for (Warp home : homes) {
  198. if (home.Name.equalsIgnoreCase(name)) {
  199. return home;
  200. }
  201. }
  202. }
  203. return null;
  204. }
  205. /**
  206. * Adds warp to list of warps
  207. * @param warp
  208. */
  209. abstract public void addWarp(Warp warp);
  210. /**
  211. * Modifies warp
  212. * @param warp
  213. */
  214. abstract public void changeWarp(Warp warp);
  215. /**
  216. * Removes warp from list of warps
  217. * @param warp
  218. */
  219. abstract public void removeWarp(Warp warp);
  220. /**
  221. * Returns specified warp
  222. * @param name
  223. * @return warp
  224. */
  225. public Warp getWarp(String name) {
  226. synchronized (warpLock) {
  227. for (Warp warp : warps) {
  228. if (warp.Name.equalsIgnoreCase(name)) {
  229. return warp;
  230. }
  231. }
  232. }
  233. return null;
  234. }
  235. /**
  236. * Returns true if there are any warps
  237. * @return true if there are warps
  238. */
  239. public boolean hasWarps() {
  240. synchronized (warpLock) {
  241. return warps.size() > 0;
  242. }
  243. }
  244. /**
  245. * Returns a string containing all warp names the player has access to
  246. * @param player
  247. * @return string list of warps
  248. */
  249. public String getWarpNames(String player) {
  250. StringBuilder builder = new StringBuilder();
  251. builder.append(""); //incaseofnull
  252. synchronized (warpLock) {
  253. for (Warp warp : warps) {
  254. if (etc.getInstance().isUserInGroup(player, warp.Group) || warp.Group.equals("")) {
  255. builder.append(warp.Name).append(" ");
  256. }
  257. }
  258. }
  259. return builder.toString();
  260. }
  261. /**
  262. * Returns item id corresponding to item name
  263. * @param name
  264. * @return item id
  265. */
  266. public int getItem(String name) {
  267. synchronized (itemLock) {
  268. if (items.containsKey(name)) {
  269. return items.get(name);
  270. }
  271. }
  272. return 0;
  273. }
  274. /**
  275. * Adds player to whitelist
  276. * @param name
  277. */
  278. abstract public void addToWhitelist(String name);
  279. /**
  280. * Removes player from whitelist
  281. * @param name
  282. */
  283. abstract public void removeFromWhitelist(String name);
  284. /**
  285. * returns true if there is a whitelist
  286. * @return true if whitelist
  287. */
  288. public boolean hasWhitelist() {
  289. synchronized (whiteListLock) {
  290. return !whiteList.isEmpty();
  291. }
  292. }
  293. /**
  294. * Returns true if the player is on the whitelist
  295. * @param user
  296. * @return
  297. */
  298. public boolean isUserOnWhitelist(String user) {
  299. synchronized (whiteListLock) {
  300. for (String name : whiteList) {
  301. if (name.equalsIgnoreCase(user)) {
  302. return true;
  303. }
  304. }
  305. }
  306. return false;
  307. }
  308. /**
  309. * Adds player to reservelist
  310. * @param name
  311. */
  312. abstract public void addToReserveList(String name);
  313. /**
  314. * Removes player from reservelist
  315. * @param name
  316. */
  317. abstract public void removeFromReserveList(String name);
  318. /**
  319. * Returns true if there is a reservelist
  320. * @return true if reservelist
  321. */
  322. public boolean hasReserveList() {
  323. synchronized (reserveList) {
  324. return !reserveList.isEmpty();
  325. }
  326. }
  327. /**
  328. * Returns true if player is on reservelist
  329. * @param user
  330. * @return
  331. */
  332. public boolean isUserOnReserveList(String user) {
  333. synchronized (reserveList) {
  334. for (String name : reserveList) {
  335. if (name.equalsIgnoreCase(user)) {
  336. return true;
  337. }
  338. }
  339. }
  340. return false;
  341. }
  342. }