Arcturus-Community/src/main/java/com/eu/habbo/habbohotel/users/HabboNavigatorWindowSettings.java

150 lines
4.8 KiB
Java
Raw Normal View History

2018-07-06 15:30:00 +02:00
package com.eu.habbo.habbohotel.users;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.navigation.DisplayMode;
import com.eu.habbo.habbohotel.navigation.ListMode;
import gnu.trove.map.hash.THashMap;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
public class HabboNavigatorWindowSettings
{
private final int userId;
public int x = 100;
public int y = 100;
public int width = 425;
public int height = 535;
public boolean openSearches = false;
public int unknown = 0;
public final THashMap<String, HabboNavigatorPersonalDisplayMode> displayModes = new THashMap<>(2);
public HabboNavigatorWindowSettings(int userId)
{
this.userId = userId;
}
public HabboNavigatorWindowSettings(ResultSet set) throws SQLException
{
this.userId = set.getInt("user_id");
this.x = set.getInt("x");
this.y = set.getInt("y");
this.width = set.getInt("width");
this.height = set.getInt("height");
this.openSearches = set.getString("open_searches").equals("1");
this.unknown = 0;
}
public void addDisplayMode(String category, HabboNavigatorPersonalDisplayMode displayMode)
{
this.displayModes.put(category, displayMode);
}
public boolean hasDisplayMode(String category)
{
return this.displayModes.containsKey(category);
}
public void insertDisplayMode(String category, ListMode listMode, DisplayMode displayMode)
{
if (!this.displayModes.containsKey(category))
{
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection();
PreparedStatement statement = connection.prepareStatement("INSERT INTO users_navigator_settings (user_id, caption, list_type, display) VALUES (?, ?, ?, ?)"))
{
statement.setInt(1, this.userId);
statement.setString(2, category);
statement.setString(3, listMode.name().toLowerCase());
statement.setString(4, displayMode.name().toLowerCase());
statement.execute();
}
catch (SQLException e)
{
Emulator.getLogging().logSQLException(e);
}
this.displayModes.put(category, new HabboNavigatorPersonalDisplayMode(listMode, displayMode));
}
}
public void setDisplayMode(String category, DisplayMode displayMode)
{
HabboNavigatorPersonalDisplayMode personalDisplayMode = this.displayModes.get(category);
if (personalDisplayMode != null)
{
personalDisplayMode.displayMode = displayMode;
}
else
{
2019-03-18 02:22:00 +01:00
this.insertDisplayMode(category, ListMode.LIST, displayMode);
2018-07-06 15:30:00 +02:00
}
}
public void setListMode(String category, ListMode listMode)
{
HabboNavigatorPersonalDisplayMode personalDisplayMode = this.displayModes.get(category);
if (personalDisplayMode != null)
{
personalDisplayMode.listMode = listMode;
}
else
{
2019-03-18 02:22:00 +01:00
this.insertDisplayMode(category, listMode, DisplayMode.VISIBLE);
2018-07-06 15:30:00 +02:00
}
}
public DisplayMode getDisplayModeForCategory(String category)
{
return this.getDisplayModeForCategory(category, DisplayMode.VISIBLE);
}
public DisplayMode getDisplayModeForCategory(String category, DisplayMode standard)
{
if (this.displayModes.containsKey(category))
{
return this.displayModes.get(category).displayMode;
}
return standard;
}
public ListMode getListModeForCategory(String category)
{
return this.getListModeForCategory(category, ListMode.LIST);
}
public ListMode getListModeForCategory(String category, ListMode standard)
{
if (this.displayModes.containsKey(category))
{
return this.displayModes.get(category).listMode;
}
return standard;
}
public void save(Connection connection)
{
try (PreparedStatement statement = connection.prepareStatement("UPDATE users_navigator_settings SET list_type = ?, display = ? WHERE user_id = ? AND caption = ? LIMIT 1"))
{
for (Map.Entry<String, HabboNavigatorPersonalDisplayMode> set : this.displayModes.entrySet())
{
statement.setString(1, set.getValue().listMode.name().toLowerCase());
statement.setString(2, set.getValue().displayMode.name().toLowerCase());
statement.setInt(3, this.userId);
statement.setString(4, set.getKey());
statement.execute();
}
}
catch (SQLException e)
{
Emulator.getLogging().logSQLException(e);
}
}
}