123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- package com.l2jserver.gameserver.model;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import com.l2jserver.commons.database.pool.impl.ConnectionFactory;
- import com.l2jserver.gameserver.data.xml.impl.UIData;
- public class UIKeysSettings
- {
- private static final Logger _log = Logger.getLogger(UIKeysSettings.class.getName());
-
- private final int _playerObjId;
- private Map<Integer, List<ActionKey>> _storedKeys;
- private Map<Integer, List<Integer>> _storedCategories;
- private boolean _saved = true;
-
- public UIKeysSettings(int playerObjId)
- {
- _playerObjId = playerObjId;
- loadFromDB();
- }
-
- public void storeAll(Map<Integer, List<Integer>> catMap, Map<Integer, List<ActionKey>> keyMap)
- {
- _saved = false;
- _storedCategories = catMap;
- _storedKeys = keyMap;
- }
-
- public void storeCategories(Map<Integer, List<Integer>> catMap)
- {
- _saved = false;
- _storedCategories = catMap;
- }
-
- public Map<Integer, List<Integer>> getCategories()
- {
- return _storedCategories;
- }
-
- public void storeKeys(Map<Integer, List<ActionKey>> keyMap)
- {
- _saved = false;
- _storedKeys = keyMap;
- }
-
- public Map<Integer, List<ActionKey>> getKeys()
- {
- return _storedKeys;
- }
-
- public void loadFromDB()
- {
- getCatsFromDB();
- getKeysFromDB();
- }
-
-
- public void saveInDB()
- {
- String query;
- if (_saved)
- {
- return;
- }
-
-
- query = "REPLACE INTO character_ui_categories (`charId`, `catId`, `order`, `cmdId`) VALUES ";
- for (int category : _storedCategories.keySet())
- {
- int order = 0;
- for (int key : _storedCategories.get(category))
- {
- query += "(" + _playerObjId + ", " + category + ", " + (order++) + ", " + key + "),";
- }
- }
- query = query.substring(0, query.length() - 1) + "; ";
- try (Connection con = ConnectionFactory.getInstance().getConnection();
- PreparedStatement statement = con.prepareStatement(query))
- {
- statement.execute();
- }
- catch (Exception e)
- {
- _log.log(Level.WARNING, "Exception: saveInDB(): " + e.getMessage(), e);
- }
-
- query = "REPLACE INTO character_ui_actions (`charId`, `cat`, `order`, `cmd`, `key`, `tgKey1`, `tgKey2`, `show`) VALUES";
- for (List<ActionKey> keyLst : _storedKeys.values())
- {
- int order = 0;
- for (ActionKey key : keyLst)
- {
- query += key.getSqlSaveString(_playerObjId, order++) + ",";
- }
- }
- query = query.substring(0, query.length() - 1) + ";";
-
- try (Connection con = ConnectionFactory.getInstance().getConnection();
- PreparedStatement statement = con.prepareStatement(query))
- {
- statement.execute();
- }
- catch (Exception e)
- {
- _log.log(Level.WARNING, "Exception: saveInDB(): " + e.getMessage(), e);
- }
- _saved = true;
- }
-
- public void getCatsFromDB()
- {
- if (_storedCategories != null)
- {
- return;
- }
-
- _storedCategories = new HashMap<>();
-
- try (Connection con = ConnectionFactory.getInstance().getConnection();
- PreparedStatement ps = con.prepareStatement("SELECT * FROM character_ui_categories WHERE `charId` = ? ORDER BY `catId`, `order`"))
- {
- ps.setInt(1, _playerObjId);
- try (ResultSet rs = ps.executeQuery())
- {
- while (rs.next())
- {
- UIData.addCategory(_storedCategories, rs.getInt("catId"), rs.getInt("cmdId"));
- }
- }
- }
- catch (Exception e)
- {
- _log.log(Level.WARNING, "Exception: getCatsFromDB(): " + e.getMessage(), e);
- }
-
- if (_storedCategories.isEmpty())
- {
- _storedCategories = UIData.getInstance().getCategories();
- }
- }
-
- public void getKeysFromDB()
- {
- if (_storedKeys != null)
- {
- return;
- }
-
- _storedKeys = new HashMap<>();
-
- try (Connection con = ConnectionFactory.getInstance().getConnection();
- PreparedStatement ps = con.prepareStatement("SELECT * FROM character_ui_actions WHERE `charId` = ? ORDER BY `cat`, `order`"))
- {
- ps.setInt(1, _playerObjId);
- try (ResultSet rs = ps.executeQuery())
- {
- while (rs.next())
- {
- int cat = rs.getInt("cat");
- int cmd = rs.getInt("cmd");
- int key = rs.getInt("key");
- int tgKey1 = rs.getInt("tgKey1");
- int tgKey2 = rs.getInt("tgKey2");
- int show = rs.getInt("show");
- UIData.addKey(_storedKeys, cat, new ActionKey(cat, cmd, key, tgKey1, tgKey2, show));
- }
- }
- }
- catch (Exception e)
- {
- _log.log(Level.WARNING, "Exception: getKeysFromDB(): " + e.getMessage(), e);
- }
-
- if (_storedKeys.isEmpty())
- {
- _storedKeys = UIData.getInstance().getKeys();
- }
- }
-
- public boolean isSaved()
- {
- return _saved;
- }
- }
|