progress on requests

This commit is contained in:
Len 2024-01-13 18:34:32 +01:00
parent de04c6b80a
commit 94484593f1
5 changed files with 99 additions and 10 deletions

View File

@ -13,6 +13,7 @@ import com.alttd.chat.nicknames.Nicknames;
import com.alttd.chat.nicknames.NicknamesEvents;
import com.alttd.chat.objects.channels.Channel;
import com.alttd.chat.objects.channels.CustomChannel;
import com.alttd.chat.requests.RequestHandler;
import com.alttd.chat.util.ALogger;
import com.alttd.chat.util.Utility;
import org.bukkit.Bukkit;
@ -29,6 +30,7 @@ public class ChatPlugin extends JavaPlugin {
private ChatAPI chatAPI;
private ChatHandler chatHandler;
private RequestHandler requestHandler;
private String messageChannel;
private ServerConfig serverConfig;
@ -40,6 +42,8 @@ public class ChatPlugin extends JavaPlugin {
chatAPI = new ChatImplementation();
chatHandler = new ChatHandler();
DatabaseConnection.initialize();
requestHandler = new RequestHandler();
requestHandler.loadRequests();
serverConfig = new ServerConfig(Bukkit.getServerName());
registerListener(new PlayerListener(serverConfig), new ChatListener(), new BookListener());
if(serverConfig.GLOBALCHAT) {
@ -105,6 +109,10 @@ public class ChatPlugin extends JavaPlugin {
return chatHandler;
}
public RequestHandler getRequestHandler() {
return requestHandler;
}
public boolean serverGlobalChatEnabled() {
return serverConfig.GLOBALCHAT;
}

View File

@ -10,6 +10,11 @@ public class NickNameRequest extends Request {
this.requestType = RequestType.NICKNAME;
}
public NickNameRequest(UUID requester, String request, boolean completed, UUID completedBy, long dateRequested, long dateCompleted) {
super(requester, request, completed, completedBy, dateRequested, dateCompleted);
this.requestType = RequestType.NICKNAME;
}
@Override
public boolean processRequest(UUID processor) {
return false;

View File

@ -10,6 +10,12 @@ public class PrefixRequest extends Request{
this.requestType = RequestType.PREFIX;
}
public PrefixRequest(UUID requester, String request, boolean completed, UUID completedBy, long dateRequested, long dateCompleted) {
super(requester, request, completed, completedBy, dateRequested, dateCompleted);
this.requestType = RequestType.NICKNAME;
}
@Override
public boolean processRequest(UUID processor) {
return false;

View File

@ -2,6 +2,7 @@ package com.alttd.chat.requests;
import org.bukkit.Bukkit;
import java.util.Date;
import java.util.UUID;
public abstract class Request {
@ -11,12 +12,25 @@ public abstract class Request {
protected String serverName;
protected String request;
protected boolean completed;
protected boolean acceptedBy;
protected UUID completedBy;
protected long dateRequested;
protected long dateCompleted;
Request(UUID requester, String request) {
this.requester = requester;
this.request = request;
this.serverName = Bukkit.getServerName();
this.dateRequested = new Date().getTime();
saveRequest();
}
Request(UUID requester, String request, boolean completed, UUID completedBy, long dateRequested, long dateCompleted) {
this.requester = requester;
this.request = request;
this.completed = completed;
this.completedBy = completedBy;
this.dateRequested = dateRequested;
this.dateCompleted = dateCompleted;
}
public static Request of(UUID requester, RequestType requestType, String request) {
@ -26,10 +40,30 @@ public abstract class Request {
};
}
public abstract boolean processRequest(UUID processor);
public static Request load(UUID requester, RequestType requestType, String request, boolean completed, UUID completedBy, long dateRequested, long dateCompleted) {
return switch (requestType) {
case PREFIX -> new PrefixRequest(requester, request, completed, completedBy, dateRequested, dateCompleted);
case NICKNAME -> new NickNameRequest(requester, request, completed, completedBy, dateRequested, dateCompleted);
};
}
public boolean processRequest(UUID completedBy) {
completeRequest(completedBy);
return true;
}
public boolean isCompleted() {
return completed;
}
void completeRequest(UUID completedBy) {
this.completed = true;
this.completedBy = completedBy;
this.dateCompleted = new Date().getTime();
saveRequest();
}
public void saveRequest() {
// upsert into database
}
}

View File

@ -1,25 +1,61 @@
package com.alttd.chat.requests;
import java.util.*;
import com.alttd.chat.config.Config;
import com.alttd.chat.database.DatabaseConnection;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
public class RequestHandler {
private final HashMap<UUID, Request> requests;
private final List<Request> requests;
public RequestHandler() {
requests = new HashMap<>();
requests = new ArrayList<>();
}
public void addRequest(Request request) {
requests.putIfAbsent(request.requester, request);
public boolean addRequest(Request request) {
return requests.add(request);
}
public void removeRequest(Request request) {
requests.remove(request.requester);
public boolean removeRequest(Request request) {
return requests.remove(request);
}
public HashMap<UUID, Request> getRequests() {
public List<Request> getRequests() {
return requests;
}
public void loadRequests() {
long time = new Date().getTime() - Config.NICK_WAIT_TIME;
// Load all requests that have not been completed yet
String query = "SELECT * FROM requests WHERE completed=false and (datechanged = 0 or datechanged > " + time + ")";
try {
Connection connection = DatabaseConnection.getConnection();
ResultSet resultSet = connection.prepareStatement(query).executeQuery();
while (resultSet.next()) {
UUID requester = UUID.fromString(resultSet.getString("requester"));
RequestType requestType = RequestType.valueOf(resultSet.getString("requesttype"));
String requestString = resultSet.getString("request");
boolean completed = resultSet.getBoolean("completed");
UUID completedby = UUID.fromString(resultSet.getString("completedby"));
long dateRequested = resultSet.getLong("daterequested");
long dateCompleted = resultSet.getLong("datecompleted");
Request request = Request.load(requester, requestType, requestString, completed, completedby, dateRequested, dateCompleted);
addRequest(request);
}
} catch (SQLException exception) {
exception.printStackTrace();
}
}
}