progress on requests
This commit is contained in:
parent
de04c6b80a
commit
94484593f1
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user