Premier commit - Inclusion dans le système git
This commit is contained in:
commit
eb4dfd6613
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
.classpath
|
||||
.settings
|
||||
.project
|
||||
bin/
|
||||
34
src/com/bernard/juliateam/JuliaGame.java
Normal file
34
src/com/bernard/juliateam/JuliaGame.java
Normal file
@ -0,0 +1,34 @@
|
||||
package com.bernard.juliateam;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import net.dv8tion.jda.core.entities.Guild;
|
||||
import net.dv8tion.jda.core.entities.Member;
|
||||
import net.dv8tion.jda.core.entities.TextChannel;
|
||||
import net.dv8tion.jda.core.entities.VoiceChannel;
|
||||
|
||||
public class JuliaGame {
|
||||
|
||||
public String name;
|
||||
public Guild g;
|
||||
public List<String> teamsNames;
|
||||
public List<Set<Member>> teams;
|
||||
|
||||
|
||||
public List<VoiceChannel> teamsChannels;
|
||||
public TextChannel channel;
|
||||
public Set<Member> unAnswered;
|
||||
public boolean started = false;
|
||||
public JuliaGame(String name, Guild g, List<String> teamsNames, List<Set<Member>> teams) {
|
||||
this.name = name;
|
||||
this.g = g;
|
||||
this.teamsNames = teamsNames;
|
||||
this.teams = teams;
|
||||
for(Set<Member> team : teams)
|
||||
unAnswered.addAll(team);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
185
src/com/bernard/juliateam/TeamManager.java
Normal file
185
src/com/bernard/juliateam/TeamManager.java
Normal file
@ -0,0 +1,185 @@
|
||||
package com.bernard.juliateam;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import net.dv8tion.jda.core.Permission;
|
||||
import net.dv8tion.jda.core.entities.Category;
|
||||
import net.dv8tion.jda.core.entities.Guild;
|
||||
import net.dv8tion.jda.core.entities.Member;
|
||||
import net.dv8tion.jda.core.entities.Role;
|
||||
import net.dv8tion.jda.core.entities.TextChannel;
|
||||
import net.dv8tion.jda.core.entities.VoiceChannel;
|
||||
import net.dv8tion.jda.core.managers.GuildController;
|
||||
|
||||
public class TeamManager {
|
||||
|
||||
public static final String DB_CONNECTION_FILEPATH = "/var/julia/juliateam.conn";
|
||||
public static TeamManager instance = new TeamManager();
|
||||
Connection connexion;
|
||||
|
||||
|
||||
public TeamManager() {
|
||||
try (BufferedReader bis = new BufferedReader(new FileReader(DB_CONNECTION_FILEPATH))){
|
||||
String url = bis.readLine();
|
||||
String name = bis.readLine();
|
||||
String password = bis.readLine();
|
||||
connexion = DriverManager.getConnection(url, name, password);
|
||||
} catch (FileNotFoundException e) {
|
||||
System.err.println("Cannot find the file "+DB_CONNECTION_FILEPATH+" for getting connection informations");
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
System.err.println("Cannot read the file "+DB_CONNECTION_FILEPATH+" for getting connection informations");
|
||||
e.printStackTrace();
|
||||
} catch (SQLException e) {
|
||||
System.err.println("Cannot initiate the connexion with data inside "+DB_CONNECTION_FILEPATH);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void requestGame(String name,Guild g,List<Set<Member>> teams,List<String> teamNames) {
|
||||
initGameContext(name, g, teams, teamNames);
|
||||
}
|
||||
|
||||
public void acceptGame(Member m) {
|
||||
try {
|
||||
PreparedStatement gameStatement = connexion.prepareStatement("UPDATE juliateam_players SET accepted=1 WHERE memberID=?");
|
||||
gameStatement.setLong(1, m.getUser().getIdLong());
|
||||
gameStatement.executeQuery();
|
||||
} catch (SQLException e) {
|
||||
System.err.println("Cannot execute query to make user accept game");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void refuseGame(Member m) {
|
||||
try {
|
||||
PreparedStatement gameStatement = connexion.prepareStatement("UPDATE juliateam_players SET accepted=0 WHERE memberID=?");
|
||||
gameStatement.setLong(1, m.getUser().getIdLong());
|
||||
gameStatement.executeQuery();
|
||||
} catch (SQLException e) {
|
||||
System.err.println("Cannot execute query to make user refuse game");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void endGame(TextChannel chan) {
|
||||
Guild g = chan.getGuild();
|
||||
try {
|
||||
|
||||
PreparedStatement gameNameStatement = connexion.prepareStatement("SELECT * FROM juliateam_games WHERE textChannelID=?");
|
||||
gameNameStatement.setLong(1, chan.getIdLong());
|
||||
ResultSet game = gameNameStatement.executeQuery();
|
||||
|
||||
PreparedStatement teamNameStatement = connexion.prepareStatement("SELECT * FROM juliateam_teams WHERE gameID=?");
|
||||
teamNameStatement.setInt(1, game.getInt("ID"));
|
||||
ResultSet team = teamNameStatement.executeQuery();
|
||||
|
||||
PreparedStatement playerNameStatement = connexion.prepareStatement("SELECT * FROM juliateam_player WHERE gameID=?");
|
||||
playerNameStatement.setInt(1, game.getInt("ID"));
|
||||
ResultSet player = playerNameStatement.executeQuery();
|
||||
|
||||
Role role = g.getRoleById(game.getLong("roleID"));
|
||||
|
||||
//Remove PLAYER
|
||||
do {
|
||||
g.getController().removeRolesFromMember(g.getMemberById(player.getLong("memberID")), role).complete();
|
||||
}while(player.next());
|
||||
|
||||
PreparedStatement playersStatement = connexion.prepareStatement("DELETE FROM juliateam_players WHERE gameID=?");
|
||||
playersStatement.setInt(1, game.getInt("ID"));
|
||||
playersStatement.executeUpdate();
|
||||
|
||||
|
||||
//Remove TEAM
|
||||
do {
|
||||
g.getVoiceChannelById(team.getLong("voiceChannelID")).delete().complete();
|
||||
}while(team.next());
|
||||
|
||||
PreparedStatement teamsStatement = connexion.prepareStatement("DELETE FROM juliateam_teams WHERE gameID=?");
|
||||
teamsStatement.setInt(1, game.getInt("ID"));
|
||||
teamsStatement.executeUpdate();
|
||||
|
||||
//Remove GAME
|
||||
TextChannel channel = g.getTextChannelById(game.getLong("textChannelID"));
|
||||
Category category = chan.getParent();
|
||||
channel.delete().complete();
|
||||
category.delete().complete();
|
||||
role.delete().complete();
|
||||
|
||||
PreparedStatement gameStatement = connexion.prepareStatement("DELETE FROM juliateam_games WHERE ID=?");
|
||||
gameStatement.setInt(1, game.getInt("ID"));
|
||||
gameStatement.executeUpdate();
|
||||
|
||||
|
||||
} catch (SQLException e) {
|
||||
System.err.println("Cannot remove the game : mysql error");
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void initGameContext(String name,Guild guild,List<Set<Member>> teams,List<String> teamNames) {
|
||||
GuildController g = guild.getController();
|
||||
|
||||
try {
|
||||
|
||||
//Creating GAME
|
||||
Role role = g.createRole().setName(name + " player").complete();
|
||||
EnumSet<Permission> roleAllow = EnumSet.of(Permission.VOICE_CONNECT, Permission.VIEW_CHANNEL, Permission.MESSAGE_READ, Permission.MESSAGE_WRITE, Permission.VOICE_CONNECT, Permission.VOICE_SPEAK);
|
||||
Category category = (Category) g.createCategory(name + " game")
|
||||
.addPermissionOverride(role, roleAllow, null)
|
||||
.addPermissionOverride(guild.getPublicRole(), null, Permission.getPermissions(Permission.ALL_PERMISSIONS))
|
||||
.complete();
|
||||
TextChannel channel = (TextChannel) g.createTextChannel(name).setParent(category).complete();
|
||||
|
||||
|
||||
PreparedStatement gameStatement = connexion.prepareStatement("INSERT INTO juliateam_games (name,guildID,textChannelID,roleID) VALUES (?,?,?,?);SELECT LAST_INSERT_ID();");
|
||||
gameStatement.setString(1, name);
|
||||
gameStatement.setLong(2, guild.getIdLong());
|
||||
gameStatement.setLong(3, channel.getIdLong());
|
||||
gameStatement.setLong(4, role.getIdLong());
|
||||
int gameID = gameStatement.executeQuery().getInt(1);
|
||||
|
||||
//Creating TEAMS
|
||||
|
||||
for(int i = 0;i < teamNames.size();i++) {
|
||||
VoiceChannel chan = (VoiceChannel) g.createVoiceChannel("Team "+teamNames.get(i)).setParent(category).complete();
|
||||
|
||||
PreparedStatement teamStatement = connexion.prepareStatement("INSERT INTO juliateam_teams (gameID,teamName,voiceChannelID) VALUES (?,?,?);SELECT LAST_INSERT_ID();");
|
||||
teamStatement.setInt(1, gameID);
|
||||
teamStatement.setString(2, teamNames.get(i));
|
||||
teamStatement.setLong(3, chan.getIdLong());
|
||||
int teamID = teamStatement.executeQuery().getInt(1);
|
||||
|
||||
//Creating PLAYERS
|
||||
for(Member m : teams.get(i)) {
|
||||
g.addRolesToMember(m, role);
|
||||
|
||||
PreparedStatement playerStatement = connexion.prepareStatement("INSERT INTO juliateam_players (memberID,gameID,teamID) VALUES (?,?,?);SELECT LAST_INSERT_ID();");
|
||||
playerStatement.setLong(1, m.getUser().getIdLong());
|
||||
playerStatement.setInt(2, gameID);
|
||||
playerStatement.setInt(3, teamID);
|
||||
playerStatement.executeQuery();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
} catch (SQLException e) {
|
||||
System.err.println("Cannot create game : SQL problem");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user