ScriptBank.java 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. package me.km.snuviscript;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.util.UUID;
  5. import me.hammerle.snuviscript.code.Compiler;
  6. import me.km.KajetansMod;
  7. import me.km.databank.IStatement;
  8. public class ScriptBank
  9. {
  10. public ScriptBank()
  11. {
  12. KajetansMod.databank.execute("CREATE TABLE IF NOT EXISTS scriptdata ("
  13. + "id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, "
  14. + "player_id INT NOT NULL, "
  15. + "var VARCHAR(20) NOT NULL, "
  16. + "value VARCHAR(256) NOT NULL, "
  17. + "UNIQUE INDEX (player_id,var), "
  18. + "FOREIGN KEY (player_id) REFERENCES minecraft.players(id) ON DELETE RESTRICT);");
  19. KajetansMod.databank.execute("CREATE TABLE IF NOT EXISTS scriptmaps ("
  20. + "id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, "
  21. + "map VARCHAR(255) NOT NULL, "
  22. + "keyname VARCHAR(255) NOT NULL, "
  23. + "value VARCHAR(255) NOT NULL, "
  24. + "INDEX (map), "
  25. + "UNIQUE INDEX (map,keyname));");
  26. KajetansMod.databank.execute("CREATE TABLE IF NOT EXISTS scriptdualmaps ("
  27. + "id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, "
  28. + "map VARCHAR(255) NOT NULL, "
  29. + "keyname VARCHAR(255) NOT NULL, "
  30. + "seckeyname VARCHAR(255) NOT NULL, "
  31. + "value VARCHAR(255) NOT NULL, "
  32. + "INDEX (map), "
  33. + "UNIQUE INDEX (map,keyname,seckeyname));");
  34. }
  35. private final IStatement setVar = KajetansMod.databank.createStatement(
  36. "INSERT INTO scriptdata (player_id,var,value) SELECT ?, ?, ? ON DUPLICATE KEY UPDATE scriptdata.value=?;");
  37. public void setVar(String value, String var, UUID uuid)
  38. {
  39. try
  40. {
  41. setVar.validate();
  42. setVar.setInt(1, KajetansMod.playerbank.getPlayerId(uuid));
  43. setVar.setString(2, var);
  44. setVar.setString(3, value);
  45. setVar.setString(4, value);
  46. setVar.executeUpdate();
  47. }
  48. catch(SQLException ex)
  49. {
  50. ex.printStackTrace();
  51. }
  52. }
  53. private final IStatement deleteVar = KajetansMod.databank.createStatement(
  54. "DELETE FROM scriptdata WHERE player_id = ? AND var = ?;");
  55. public void deleteVar(String var, UUID uuid)
  56. {
  57. try
  58. {
  59. deleteVar.validate();
  60. deleteVar.setInt(1, KajetansMod.playerbank.getPlayerId(uuid));
  61. deleteVar.setString(2, var);
  62. deleteVar.executeUpdate();
  63. }
  64. catch(SQLException ex)
  65. {
  66. ex.printStackTrace();
  67. }
  68. }
  69. private final IStatement getVar = KajetansMod.databank.createStatement(
  70. "SELECT value from scriptdata WHERE player_id = ? and var = ?;");
  71. public Object getVar(String var, UUID uuid, Object error)
  72. {
  73. try
  74. {
  75. getVar.validate();
  76. getVar.setInt(1, KajetansMod.playerbank.getPlayerId(uuid));
  77. getVar.setString(2, var);
  78. try(ResultSet rs = getVar.executeQuery())
  79. {
  80. if(rs.next())
  81. {
  82. return Compiler.convert(rs.getString(1));
  83. }
  84. return error;
  85. }
  86. catch(SQLException ex)
  87. {
  88. ex.printStackTrace();
  89. }
  90. }
  91. catch(SQLException ex)
  92. {
  93. ex.printStackTrace();
  94. }
  95. return error;
  96. }
  97. public Object getVar(String var, UUID uuid)
  98. {
  99. return getVar(var, uuid, null);
  100. }
  101. private final IStatement addMapElement = KajetansMod.databank.createStatement(
  102. "INSERT INTO scriptmaps (map,keyname,value) SELECT ?, ?, ? ON DUPLICATE KEY UPDATE value=?;");
  103. public void addMapElement(String map, String key, String value)
  104. {
  105. try
  106. {
  107. addMapElement.validate();
  108. addMapElement.setString(1, map);
  109. addMapElement.setString(2, key);
  110. addMapElement.setString(3, value);
  111. addMapElement.setString(4, value);
  112. addMapElement.executeUpdate();
  113. }
  114. catch(SQLException ex)
  115. {
  116. ex.printStackTrace();
  117. }
  118. }
  119. private final IStatement removeMapElement = KajetansMod.databank.createStatement(
  120. "DELETE FROM scriptmaps WHERE map = ? AND keyname = ?;");
  121. public void removeMapElement(String map, String key)
  122. {
  123. try
  124. {
  125. removeMapElement.validate();
  126. removeMapElement.setString(1, map);
  127. removeMapElement.setString(2, key);
  128. removeMapElement.executeUpdate();
  129. }
  130. catch(SQLException ex)
  131. {
  132. ex.printStackTrace();
  133. }
  134. }
  135. private final IStatement removeMap = KajetansMod.databank.createStatement(
  136. "DELETE FROM scriptmaps WHERE map = ?;");
  137. public void removeMap(String map)
  138. {
  139. try
  140. {
  141. removeMap.validate();
  142. removeMap.setString(1, map);
  143. removeMap.executeUpdate();
  144. }
  145. catch(SQLException ex)
  146. {
  147. ex.printStackTrace();
  148. }
  149. }
  150. private final IStatement getMapValue = KajetansMod.databank.createStatement(
  151. "SELECT value from scriptmaps WHERE map = ? AND keyname = ?;");
  152. public Object getMapValue(String map, String key)
  153. {
  154. try
  155. {
  156. getMapValue.validate();
  157. getMapValue.setString(1, map);
  158. getMapValue.setString(2, key);
  159. try(ResultSet rs = getMapValue.executeQuery())
  160. {
  161. if(rs.next())
  162. {
  163. return Compiler.convert(rs.getString(1));
  164. }
  165. return null;
  166. }
  167. catch(SQLException ex)
  168. {
  169. ex.printStackTrace();
  170. }
  171. }
  172. catch(SQLException ex)
  173. {
  174. ex.printStackTrace();
  175. }
  176. return null;
  177. }
  178. private final IStatement addDualMapElement = KajetansMod.databank.createStatement(
  179. "INSERT INTO scriptdualmaps (map,keyname,seckeyname,value) SELECT ?, ?, ?, ? ON DUPLICATE KEY UPDATE value=?;");
  180. public void addDualMapElement(String map, String key, String key2, String value)
  181. {
  182. try
  183. {
  184. addDualMapElement.validate();
  185. addDualMapElement.setString(1, map);
  186. addDualMapElement.setString(2, key);
  187. addDualMapElement.setString(3, key2);
  188. addDualMapElement.setString(4, value);
  189. addDualMapElement.setString(5, value);
  190. addDualMapElement.executeUpdate();
  191. }
  192. catch(SQLException ex)
  193. {
  194. ex.printStackTrace();
  195. }
  196. }
  197. private final IStatement removeDualMapElement = KajetansMod.databank.createStatement(
  198. "DELETE FROM scriptdualmaps WHERE map = ? AND keyname = ?;");
  199. public void removeDualMapElement(String map, String key)
  200. {
  201. try
  202. {
  203. removeDualMapElement.validate();
  204. removeDualMapElement.setString(1, map);
  205. removeDualMapElement.setString(2, key);
  206. removeDualMapElement.executeUpdate();
  207. }
  208. catch(SQLException ex)
  209. {
  210. ex.printStackTrace();
  211. }
  212. }
  213. private final IStatement removeDualMap = KajetansMod.databank.createStatement(
  214. "DELETE FROM scriptdualmaps WHERE map = ?;");
  215. public void removeDualMap(String map)
  216. {
  217. try
  218. {
  219. removeDualMap.validate();
  220. removeDualMap.setString(1, map);
  221. removeDualMap.executeUpdate();
  222. }
  223. catch(SQLException ex)
  224. {
  225. ex.printStackTrace();
  226. }
  227. }
  228. private final IStatement removeDualMapElement2 = KajetansMod.databank.createStatement(
  229. "DELETE FROM scriptdualmaps WHERE map = ? AND keyname = ? AND seckeyname = ?;");
  230. public void removeDualMapElement(String map, String key, String key2)
  231. {
  232. try
  233. {
  234. removeDualMapElement2.validate();
  235. removeDualMapElement2.setString(1, map);
  236. removeDualMapElement2.setString(2, key);
  237. removeDualMapElement2.setString(3, key2);
  238. removeDualMapElement2.executeUpdate();
  239. }
  240. catch(SQLException ex)
  241. {
  242. ex.printStackTrace();
  243. }
  244. }
  245. private final IStatement getDualMapValue = KajetansMod.databank.createStatement(
  246. "SELECT value from scriptdualmaps WHERE map = ? AND keyname = ? AND seckeyname = ?;");
  247. public Object getDualMapValue(String map, String key, String key2)
  248. {
  249. try
  250. {
  251. getDualMapValue.validate();
  252. getDualMapValue.setString(1, map);
  253. getDualMapValue.setString(2, key);
  254. getDualMapValue.setString(3, key2);
  255. try(ResultSet rs = getDualMapValue.executeQuery())
  256. {
  257. if(rs.next())
  258. {
  259. return Compiler.convert(rs.getString(1));
  260. }
  261. return null;
  262. }
  263. catch(SQLException ex)
  264. {
  265. ex.printStackTrace();
  266. }
  267. }
  268. catch(SQLException ex)
  269. {
  270. ex.printStackTrace();
  271. }
  272. return null;
  273. }
  274. }