EAA_MOD/src/main/java/net/saltymc/eaa/util/database/DB_Tag.java

141 lines
3.6 KiB
Java

package net.saltymc.eaa.util.database;
import net.minecraft.util.Formatting;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class DB_Tag {
public static final String tableName = "Tag";
int id;
DB_Player player;
int grade;
Type type;
Date tagDate;
public DB_Tag(DB_Player db_player){
this.player = db_player;
}
public DB_Tag(DB_Player db_player, Type type, int grade){
this.player = db_player;
this.type = type;
this.grade = grade;
}
public void put(){
putTag(this);
}
public static void putTag(DB_Tag tag){
try {
PreparedStatement statement = Postgre.getStatement(
"INSERT INTO " + tableName + " (Player_ID, Grade, TagType, TagDate) " +
"VALUES (?, ?, ?, ?);");
statement.setInt(1, tag.player.getId());
statement.setInt(2,tag.grade);
statement.setString(3, tag.type.name());
statement.setDate(4 , new java.sql.Date(new Date().getTime()));
statement.execute();
} catch (SQLException e){
throw new RuntimeException("Could not save Tag!", e);
}
}
public static List<DB_Tag> getTagsFromPlayer(DB_Player player){
if (player == null)
return new ArrayList<>();
try {
PreparedStatement statement = Postgre.getStatement("SELECT * FROM " + tableName + " WHERE Player_ID = ? ORDER BY TagDate ASC;");
statement.setInt(1, player.getId());
ResultSet rs = statement.executeQuery();
List<DB_Tag> ret = new ArrayList<>();
while (rs.next()){
DB_Tag tmp = new DB_Tag(player);
tmp.id = rs.getInt("ID");
tmp.grade = rs.getInt("Grade");
tmp.type = Type.valueOf(rs.getString("TagType"));
tmp.tagDate = rs.getDate("TagDate");
ret.add(tmp);
}
return ret;
} catch (SQLException e){
throw new RuntimeException("Error getting Tag!", e);
}
}
public DB_Player getPlayer() {
return player;
}
public int getGrade() {
return grade;
}
public Type getType() {
return type;
}
public Date getTagDate() {
return tagDate;
}
public enum Type {
HACKER(
"HAX", "PLayer who hacks", 0xaa0000, Formatting.RED
), FRIENDLY(
"FND", "Player you like", 0x55ff55, Formatting.GREEN
), GOODPLAYER(
"PRO", "Fair player with good skill", 0xffaa00, Formatting.GOLD
), IDIOT(
"BAD", "Person who is annoying and bad", 0x55ffff, Formatting.AQUA
), NOTTAGGED(
"NaN", "Player is not tagged", 0x555555, Formatting.DARK_GRAY
), NOTLOADED(
"---", "PLayer not loaded", 0xffffff, Formatting.WHITE
);
String tag, description;
int color;
Formatting formatting;
Type(String tag, String description, int color, Formatting formatting){
this.tag = tag;
this.description = description;
this.color = color;
this.formatting = formatting;
}
public String getTag() {
return tag;
}
public String getDescription() {
return description;
}
public int getColor() {
return color;
}
public Formatting getFormatting(){
return formatting;
}
}
}