From f4f17ffb53dfe08e5d9a41a032f710fcfb562ba8 Mon Sep 17 00:00:00 2001 From: Oct-autumn Date: Sun, 14 Nov 2021 00:01:59 +0800 Subject: [PATCH] Development update -Updated nickname registration and refresh -Updated channel registration to join --- README.md | 5 ++ .../Channel/ChannelInfo.java | 49 +++++++++++++++ .../ConsoleController/Processors.java | 59 +++++++++++++++++++ .../OverWriteMethod/Out.java | 34 +++++++++++ .../ReturnParams/BoolWithMsg.java | 23 ++++++++ .../resources/config/application.properties | 3 + src/main/resources/logback-spring.xml | 11 ++++ 7 files changed, 184 insertions(+) create mode 100644 src/main/java/cn/CSUOSA/ChattingRoomServer/Channel/ChannelInfo.java create mode 100644 src/main/java/cn/CSUOSA/ChattingRoomServer/ConsoleController/Processors.java create mode 100644 src/main/java/cn/CSUOSA/ChattingRoomServer/OverWriteMethod/Out.java create mode 100644 src/main/java/cn/CSUOSA/ChattingRoomServer/ReturnParams/BoolWithMsg.java create mode 100644 src/main/resources/config/application.properties create mode 100644 src/main/resources/logback-spring.xml diff --git a/README.md b/README.md index 40f0234..c56bbd4 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,7 @@ # ChattingRoom-server + CSU-OSA Chatting Room (server) + +CSU-OSA 聊天室(服务端) + +使用SpringBoot编写,目前采用Http通信。 diff --git a/src/main/java/cn/CSUOSA/ChattingRoomServer/Channel/ChannelInfo.java b/src/main/java/cn/CSUOSA/ChattingRoomServer/Channel/ChannelInfo.java new file mode 100644 index 0000000..9f6a7ae --- /dev/null +++ b/src/main/java/cn/CSUOSA/ChattingRoomServer/Channel/ChannelInfo.java @@ -0,0 +1,49 @@ +package cn.CSUOSA.ChattingRoomServer.Channel; + +import cn.CSUOSA.ChattingRoomServer.User.UserInfo; + +import java.util.ArrayList; +import java.util.List; + +public class ChannelInfo +{ + private final List members; + private final String name; + private final String ticket; + + public ChannelInfo(String name, String ticket) + { + this.name = name; + this.ticket = ticket; + members = new ArrayList<>(); + } + + public boolean addMember(UserInfo member) + { + if (!members.contains(member)) + { + members.add(member); + return true; + } + return false; + } + + public boolean removeMember(UserInfo member) + { + if (members.contains(member)) + { + members.remove(member); + return true; + } + return false; + } + + public String getName() {return name;} + + public String getTicket() {return ticket;} + + public List getMembers() + { + return members; + } +} diff --git a/src/main/java/cn/CSUOSA/ChattingRoomServer/ConsoleController/Processors.java b/src/main/java/cn/CSUOSA/ChattingRoomServer/ConsoleController/Processors.java new file mode 100644 index 0000000..a0a73ed --- /dev/null +++ b/src/main/java/cn/CSUOSA/ChattingRoomServer/ConsoleController/Processors.java @@ -0,0 +1,59 @@ +package cn.CSUOSA.ChattingRoomServer.ConsoleController; + +import cn.CSUOSA.ChattingRoomServer.Channel.ChannelInfo; +import cn.CSUOSA.ChattingRoomServer.Main; +import cn.CSUOSA.ChattingRoomServer.OverWriteMethod.Out; +import cn.CSUOSA.ChattingRoomServer.User.UserInfo; + +public class Processors +{ + public static void listObject(String[] args) + { + switch (args[1]) + { + case "-u", "--user" -> { + if (Main.UserList.isEmpty()) + Out.Warn("No User Online."); + else + { + UserInfo userInfo; + StringBuilder strBuilder = new StringBuilder().append("\n"); + strBuilder.append("User Count: ").append(Main.UserList.size()).append("\n"); + for (String nowKey : Main.UserList.keySet()) + { + userInfo = Main.UserList.get(nowKey); + strBuilder.append(userInfo.getNick()) + .append(" ") + .append(userInfo.leftTime) + .append("\n"); + } + strBuilder.append("\n"); + + Out.Info(strBuilder.toString()); + } + } + case "-g", "--group" -> { + if (Main.ChannelList.isEmpty()) + Out.Warn("No Channel Opened."); + else + { + ChannelInfo channelInfo; + StringBuilder strBuilder = new StringBuilder().append("\n"); + strBuilder.append("Channel Count: ").append(Main.ChannelList.size()).append("\n"); + for (String nowKey : Main.ChannelList.keySet()) + { + channelInfo = Main.ChannelList.get(nowKey); + strBuilder.append(channelInfo.getName()) + .append(" ") + .append(channelInfo.getTicket().isEmpty() ? "-null" : channelInfo.getTicket()) + .append("\n"); + } + strBuilder.append("\n"); + + Out.Info(strBuilder.toString()); + } + } + } + + } +} diff --git a/src/main/java/cn/CSUOSA/ChattingRoomServer/OverWriteMethod/Out.java b/src/main/java/cn/CSUOSA/ChattingRoomServer/OverWriteMethod/Out.java new file mode 100644 index 0000000..2adc2bd --- /dev/null +++ b/src/main/java/cn/CSUOSA/ChattingRoomServer/OverWriteMethod/Out.java @@ -0,0 +1,34 @@ +package cn.CSUOSA.ChattingRoomServer.OverWriteMethod; + +import cn.CSUOSA.ChattingRoomServer.Main; + +import java.text.SimpleDateFormat; +import java.util.Date; + +public class Out +{ + private static void println(String s) + { + Main.lineReader.printAbove(getDateTime() + " " + s); + } + + public static void Info(String info) + { + println("\033[36m[Info]\t" + info + "\033[m"); + } + + public static void Warn(String info) + { + println("\033[33m[Warn]\t" + info + "\033[m"); + } + + public static void Err(String info) + { + println("\033[31m[Err]\t" + info + "\033[m"); + } + + private static String getDateTime() + { + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + } +} diff --git a/src/main/java/cn/CSUOSA/ChattingRoomServer/ReturnParams/BoolWithMsg.java b/src/main/java/cn/CSUOSA/ChattingRoomServer/ReturnParams/BoolWithMsg.java new file mode 100644 index 0000000..68a5088 --- /dev/null +++ b/src/main/java/cn/CSUOSA/ChattingRoomServer/ReturnParams/BoolWithMsg.java @@ -0,0 +1,23 @@ +package cn.CSUOSA.ChattingRoomServer.ReturnParams; + +public class BoolWithMsg +{ + boolean success; + String msg; + + public BoolWithMsg(boolean b, String msg) + { + success = b; + this.msg = msg; + } + + public boolean getSuccess() + { + return success; + } + + public String getMsg() + { + return msg; + } +} diff --git a/src/main/resources/config/application.properties b/src/main/resources/config/application.properties new file mode 100644 index 0000000..42e2ce9 --- /dev/null +++ b/src/main/resources/config/application.properties @@ -0,0 +1,3 @@ +server.port=8003 +server.servlet.context-path=/chat +logging.file=baeldung-disabled-console.log \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..cff072e --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file