添加 删除 修改

master
yaoxin 2024-04-18 20:19:39 +08:00
parent c080d456bf
commit 0b48922e6e
3 changed files with 216 additions and 23 deletions

View File

@ -268,10 +268,141 @@ class ClientHandler implements Runnable {
} }
public String insertBookInfo(String clientMessage){ public String insertBookInfo(String clientMessage){
String substring = clientMessage.substring(clientMessage.indexOf("BookInfo(") + 9, clientMessage.indexOf(")")); try {
return null; String statsString = clientMessage.substring(clientMessage.indexOf("BookInfo(") + 9, clientMessage.indexOf(")"));
String[] statsSplit = statsString.split(",");
String valueString = clientMessage.substring(clientMessage.indexOf("values (") + 8, clientMessage.indexOf(");"));
String[] valueSplit = valueString.split(",");
BookInfo bookInfo = new BookInfo();
Class<? extends BookInfo> aClass = bookInfo.getClass();
if (statsSplit.length!=valueSplit.length){
return "error:属性:"+statsSplit.length+"位,属性值:"+valueSplit.length+"位";
}
if (!clientMessage.contains("name")){
return "error:name不能为空";
}
if (!clientMessage.contains("id")){
return "error:id不能为空";
}
List<BookInfo> bookList = getBookList();
for (int i = 0; i < statsSplit.length; i++) {
if (statsSplit[i].equals("id")){
Long id = Long.valueOf(valueSplit[i]);
for (BookInfo info : bookList) {
if (info.getId()==id){
return "error:id已存在,无法重复添加";
}
}
}
Field field = aClass.getDeclaredField(statsSplit[i]);
field.setAccessible(true);
Class<?> type = field.getType();
if (type == Double.class){
Double aDouble = Double.valueOf(valueSplit[i]);
field.set(bookInfo,aDouble);
}
if (type == Long.class){
Long aLong = Long.valueOf(valueSplit[i]);
field.set(bookInfo,aLong);
}
if (type == String.class){
field.set(bookInfo,valueSplit[i]);
}
}
String string = bookInfo.getString();
FileWriter fileWriter = new FileWriter(fileName,true);
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName, true), "UTF-8"));
bufferedWriter.write(string);
bufferedWriter.newLine();
bufferedWriter.close();
} catch (NoSuchFieldException | IllegalAccessException | IOException e) {
throw new RuntimeException(e);
}
return "success:添加成功";
} }
public String deleteBookInfo(String clientMessage){
try {
if (!clientMessage.contains("where")){
return "error:请输入删除条件";
}
List<BookInfo> bookList = getBookList();
String substring = clientMessage.substring(clientMessage.indexOf("id=") + 3, clientMessage.indexOf(";"));
BookInfo book = null;
for (BookInfo bookInfo : bookList) {
if (bookInfo.getId()==Long.valueOf(substring)){
book = bookInfo;
}
}
if (book==null){
return "error:此信息不存在;";
}
bookList.remove(book);
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8"));
bufferedWriter.write("id|name|author|type|country|price");
bufferedWriter.newLine();
for (BookInfo bookInfo : bookList) {
bufferedWriter.write(bookInfo.getString());
bufferedWriter.newLine();
}
bufferedWriter.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
return "success:删除成功";
}
public String updateBookInfo(String clientMessage){
try {
String valueString = clientMessage.substring(clientMessage.indexOf("set ") + 4, clientMessage.indexOf(" where"));
String substring = clientMessage.substring(clientMessage.indexOf("id=") + 3, clientMessage.indexOf(";"));
String[] valueSplit = valueString.split(",");
BookInfo bookInfo = new BookInfo();
Class<? extends BookInfo> aClass = bookInfo.getClass();
List<BookInfo> bookList = getBookList();
boolean t=false;
for (BookInfo info : bookList) {
if (info.getId()==Long.valueOf(substring)){
for (String s : valueSplit) {
t=true;
String[] split = s.split("=");
if (!hasField(bookInfo,split[0])){
return "error:属性"+split[0]+"不存在";
}
Field field = aClass.getDeclaredField(split[0]);
field.setAccessible(true);
Class<?> type = field.getType();
if (type == Double.class){
Double aDouble = Double.valueOf(split[1]);
field.set(info,aDouble);
}
if (type == Long.class){
Long aLong = Long.valueOf(split[1]);
field.set(info,aLong);
}
if (type == String.class){
field.set(info,split[1]);
}
}
}
}
if (!t){
return "error:此信息不存在";
}
FileWriter fileWriter = new FileWriter(fileName,true);
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8"));
bufferedWriter.write("id|name|author|type|country|price");
bufferedWriter.newLine();
for (BookInfo info : bookList) {
bufferedWriter.write(info.getString());
bufferedWriter.newLine();
}
bufferedWriter.close();
} catch (NoSuchFieldException | IllegalAccessException | IOException e) {
throw new RuntimeException(e);
}
return "success:修改成功";
}
@Override @Override
public void run() { public void run() {
try { try {
@ -283,9 +414,8 @@ class ClientHandler implements Runnable {
System.out.println("客户端名称:" + clientId); System.out.println("客户端名称:" + clientId);
String clientMessage; String clientMessage;
// 创建一个FileWriter对象来写入文件 // 创建一个FileWriter对象来写入文件
FileWriter fileWriter = new FileWriter("D:\\work\\lx\\src\\main\\java\\com\\bwie\\lx\\txt\\log.txt");
// 创建一个BufferedWriter对象包装FileWriter提高写入性能 // 创建一个BufferedWriter对象包装FileWriter提高写入性能
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\work\\lx\\src\\main\\java\\com\\bwie\\lx\\txt\\log.txt", true), "UTF-8"));
while ((clientMessage = br.readLine()) != null) { while ((clientMessage = br.readLine()) != null) {
if (clientMessage.equals("exit")) { if (clientMessage.equals("exit")) {
System.out.println(clientId + "已断开连接"); System.out.println(clientId + "已断开连接");
@ -328,7 +458,7 @@ class ClientHandler implements Runnable {
bufferedWriter.write(getDate()+": 匹配到的动作 -> 修改(update)"); bufferedWriter.write(getDate()+": 匹配到的动作 -> 修改(update)");
bufferedWriter.newLine(); bufferedWriter.newLine();
long staTime = new Date().getTime(); long staTime = new Date().getTime();
String bookString=""; String bookString=updateBookInfo(clientMessage);
long endTime = new Date().getTime(); long endTime = new Date().getTime();
if (bookString.contains("error")){ if (bookString.contains("error")){
bufferedWriter.write(getDate()+": 解析消息: "+bookString.substring(bookString.indexOf("error:")+6)); bufferedWriter.write(getDate()+": 解析消息: "+bookString.substring(bookString.indexOf("error:")+6));
@ -341,14 +471,14 @@ class ClientHandler implements Runnable {
bufferedWriter.write(getDate()+": [修改]操作执行完成耗时: "+(endTime-staTime)+"MS, [修改]结果: 修改成功"); bufferedWriter.write(getDate()+": [修改]操作执行完成耗时: "+(endTime-staTime)+"MS, [修改]结果: 修改成功");
bufferedWriter.newLine(); bufferedWriter.newLine();
} }
pw.println("success:修改成功"); pw.println(bookString);
} else } else
//判断请求是否为删除 //判断请求是否为删除
if (clientMessage.startsWith("delete")){ if (clientMessage.startsWith("delete")){
bufferedWriter.write(getDate()+": 匹配到的动作 -> 删除(delete)"); bufferedWriter.write(getDate()+": 匹配到的动作 -> 删除(delete)");
bufferedWriter.newLine(); bufferedWriter.newLine();
long staTime = new Date().getTime(); long staTime = new Date().getTime();
String bookString=""; String bookString= deleteBookInfo(clientMessage);
long endTime = new Date().getTime(); long endTime = new Date().getTime();
if (bookString.contains("error")){ if (bookString.contains("error")){
bufferedWriter.write(getDate()+": 解析消息: "+bookString.substring(bookString.indexOf("error:")+6)); bufferedWriter.write(getDate()+": 解析消息: "+bookString.substring(bookString.indexOf("error:")+6));
@ -361,7 +491,7 @@ class ClientHandler implements Runnable {
bufferedWriter.write(getDate()+": [删除]操作执行完成耗时: "+(endTime-staTime)+"MS, [删除]结果: 删除成功"); bufferedWriter.write(getDate()+": [删除]操作执行完成耗时: "+(endTime-staTime)+"MS, [删除]结果: 删除成功");
bufferedWriter.newLine(); bufferedWriter.newLine();
} }
pw.println("success:删除成功"); pw.println(bookString);
} else } else
//判断请求是否为添加 //判断请求是否为添加
if (clientMessage.startsWith("insert")){ if (clientMessage.startsWith("insert")){
@ -381,7 +511,7 @@ class ClientHandler implements Runnable {
bufferedWriter.write(getDate()+": [添加]操作执行完成耗时: "+(endTime-staTime)+"MS, [添加]结果: 添加成功"); bufferedWriter.write(getDate()+": [添加]操作执行完成耗时: "+(endTime-staTime)+"MS, [添加]结果: 添加成功");
bufferedWriter.newLine(); bufferedWriter.newLine();
} }
pw.println("success:添加成功"); pw.println(bookString);
} else { } else {
bufferedWriter.write(getDate()+": 匹配到的动作 -> 无"); bufferedWriter.write(getDate()+": 匹配到的动作 -> 无");
bufferedWriter.newLine(); bufferedWriter.newLine();
@ -389,6 +519,7 @@ class ClientHandler implements Runnable {
bufferedWriter.write(getDate()+": 解析消息: -> error:请求格式错误"); bufferedWriter.write(getDate()+": 解析消息: -> error:请求格式错误");
bufferedWriter.newLine(); bufferedWriter.newLine();
} }
bufferedWriter.flush();
} }
br.close(); br.close();

View File

@ -1,4 +1,5 @@
id|name|author|type|country|price id|name|author|type|country|price
1|三国演义|罗贯中|四大名著|中国|19.68 1|哈哈哈|罗贯中|四大名著|中国|19.68
2|java入门到高薪|张艺兴|技术书籍|中国|36.89 2|java入门到高薪|张艺兴|技术书籍|中国|36.89
3|javaweb|范雅婷|技术书籍|中国|65.32 3|javaweb|范雅婷|技术书籍|中国|65.32
4|java|郝岩|技术书籍|中国|28.68

View File

@ -1,12 +1,73 @@
2024-04-18 16:48:07: 接收到的消息 -> select * from bookInfo;
2024-04-18 16:48:07: 匹配到的动作 -> 查询(select) 2024-04-18 19:56:53: 接收到的消息 -> delete from bookInfo where id=4;
2024-04-18 16:48:07: 解析消息: 无问题 2024-04-18 19:56:53: 匹配到的动作 -> 删除(delete)
2024-04-18 16:48:07: [查询]操作执行完成耗时: 40MS, [查询]结果: id|name|author|type|country|price;1|三国演义|罗贯中|四大名著|中国|19.68;2|java入门到高薪|张艺兴|技术书籍|中国|36.89;3|javaweb|范雅婷|技术书籍|中国|65.32; 2024-04-18 19:56:53: 解析消息: 此信息不存在;
2024-04-18 16:48:16: 接收到的消息 -> delete from bookInfo; 2024-04-18 19:56:53: [删除]操作执行完成耗时: 41MS, [删除结果: 此信息不存在;
2024-04-18 16:48:16: 匹配到的动作 -> 删除(delete) 2024-04-18 19:57:21: 接收到的消息 -> select * from bookInfo where name=三国演义;
2024-04-18 16:48:16: 解析消息: 无问题 2024-04-18 19:57:21: 匹配到的动作 -> 查询(select)
2024-04-18 16:48:16: [删除]操作执行完成耗时: 0MS, [删除]结果: 删除成功 2024-04-18 19:57:21: 解析消息: 无问题
2024-04-18 16:48:41: 接收到的消息 -> select * from bookInfo; 2024-04-18 19:57:21: [查询]操作执行完成耗时: 1MS, [查询]结果: id|name|author|type|country|price;1|三国演义|罗贯中|四大名著|中国|19.68;
2024-04-18 16:48:41: 匹配到的动作 -> 查询(select) 2024-04-18 19:57:32: 接收到的消息 -> select * from bookInfo;
2024-04-18 16:48:41: 解析消息: 无问题 2024-04-18 19:57:32: 匹配到的动作 -> 查询(select)
2024-04-18 16:48:41: [查询]操作执行完成耗时: 1MS, [查询]结果: id|name|author|type|country|price;1|三国演义|罗贯中|四大名著|中国|19.68;2|java入门到高薪|张艺兴|技术书籍|中国|36.89;3|javaweb|范雅婷|技术书籍|中国|65.32; 2024-04-18 19:57:32: 解析消息: 无问题
2024-04-18 19:57:32: [查询]操作执行完成耗时: 1MS, [查询]结果: id|name|author|type|country|price;1|三国演义|罗贯中|四大名著|中国|19.68;2|java入门到高薪|张艺兴|技术书籍|中国|36.89;3|javaweb|范雅婷|技术书籍|中国|65.32;
2024-04-18 19:59:03: 接收到的消息 -> insert BookInfo(id,name,author,type,country,price) values (4,java,郝岩,技术书籍,中国,28.68);
2024-04-18 19:59:03: 匹配到的动作 -> 添加(insert)
2024-04-18 19:59:03: 解析消息: 无问题
2024-04-18 19:59:03: [添加]操作执行完成耗时: 1MS, [添加]结果: 添加成功
2024-04-18 19:59:37: 接收到的消息 -> insert BookInfo(id,name,author,type,country,price) values (4,java,郝岩,技术书籍,中国,28.68);
2024-04-18 19:59:37: 匹配到的动作 -> 添加(insert)
2024-04-18 19:59:37: 解析消息: 无问题
2024-04-18 19:59:37: [添加]操作执行完成耗时: 1MS, [添加]结果: 添加成功
2024-04-18 20:00:02: 接收到的消息 -> delete from bookInfo where id=4;
2024-04-18 20:00:02: 匹配到的动作 -> 删除(delete)
2024-04-18 20:00:02: 解析消息: 无问题
2024-04-18 20:00:02: [删除]操作执行完成耗时: 0MS, [删除]结果: 删除成功
2024-04-18 20:00:17: 接收到的消息 -> insert BookInfo(id,name,author,type,country,price) values (4,java,郝岩,技术书籍,中国,28.68);
2024-04-18 20:00:17: 匹配到的动作 -> 添加(insert)
2024-04-18 20:00:17: 解析消息: 无问题
2024-04-18 20:00:17: [添加]操作执行完成耗时: 1MS, [添加]结果: 添加成功
2024-04-18 20:00:38: 接收到的消息 -> delete from bookInfo where id=1;
2024-04-18 20:00:38: 匹配到的动作 -> 删除(delete)
2024-04-18 20:00:38: 解析消息: 无问题
2024-04-18 20:00:38: [删除]操作执行完成耗时: 2MS, [删除]结果: 删除成功
2024-04-18 20:14:51: 接收到的消息 -> update bookInfo set age=18,name=哈哈哈 where id=1;
2024-04-18 20:14:51: 匹配到的动作 -> 修改(update)
2024-04-18 20:14:51: 解析消息: 无问题
2024-04-18 20:14:51: [修改]操作执行完成耗时: 0MS, [修改]结果: 修改成功
2024-04-18 20:15:31: 接收到的消息 -> update bookInfo set age=18,name=哈哈哈 where id=1;
2024-04-18 20:15:31: 匹配到的动作 -> 修改(update)
2024-04-18 20:15:31: 解析消息: 无问题
2024-04-18 20:15:31: [修改]操作执行完成耗时: 0MS, [修改]结果: 修改成功
2024-04-18 20:16:30: 接收到的消息 -> update bookInfo set age=18,name=哈哈哈 where id=1;
2024-04-18 20:16:31: 匹配到的动作 -> 修改(update)
2024-04-18 20:16:31: 解析消息: 属性age不存在
2024-04-18 20:16:31: [修改]操作执行完成耗时: 39MS, [修改]结果: 属性age不存在
2024-04-18 20:16:41: 接收到的消息 -> update bookInfo set name=哈哈哈 where id=1;
2024-04-18 20:16:41: 匹配到的动作 -> 修改(update)
2024-04-18 20:16:41: 解析消息: 无问题
2024-04-18 20:16:41: [修改]操作执行完成耗时: 2MS, [修改]结果: 修改成功
2024-04-18 20:18:15: 接收到的消息 -> update bookInfo set name=哈哈哈 where id=1;
2024-04-18 20:18:15: 匹配到的动作 -> 修改(update)
2024-04-18 20:18:15: 解析消息: 无问题
2024-04-18 20:18:15: [修改]操作执行完成耗时: 40MS, [修改]结果: 修改成功
2024-04-18 20:18:28: 接收到的消息 -> insert BookInfo(id,name,author,type,country,price) values (4,java,郝岩,技术书籍,中国,28.68);
2024-04-18 20:18:28: 匹配到的动作 -> 添加(insert)
2024-04-18 20:18:28: 解析消息: 无问题
2024-04-18 20:18:28: [添加]操作执行完成耗时: 1MS, [添加]结果: 添加成功
2024-04-18 20:18:37: 接收到的消息 -> delete from bookInfo where id=4;
2024-04-18 20:18:37: 匹配到的动作 -> 删除(delete)
2024-04-18 20:18:37: 解析消息: 无问题
2024-04-18 20:18:37: [删除]操作执行完成耗时: 1MS, [删除]结果: 删除成功
2024-04-18 20:18:42: 接收到的消息 -> delete from bookInfo where id=4;
2024-04-18 20:18:42: 匹配到的动作 -> 删除(delete)
2024-04-18 20:18:42: 解析消息: 此信息不存在;
2024-04-18 20:18:42: [删除]操作执行完成耗时: 0MS, [删除结果: 此信息不存在;
2024-04-18 20:18:57: 接收到的消息 -> insert BookInfo(id,name,author,type,country,price) values (4,java,郝岩,技术书籍,中国,28.68);
2024-04-18 20:18:57: 匹配到的动作 -> 添加(insert)
2024-04-18 20:18:57: 解析消息: 无问题
2024-04-18 20:18:57: [添加]操作执行完成耗时: 1MS, [添加]结果: 添加成功
2024-04-18 20:18:58: 接收到的消息 -> insert BookInfo(id,name,author,type,country,price) values (4,java,郝岩,技术书籍,中国,28.68);
2024-04-18 20:18:58: 匹配到的动作 -> 添加(insert)
2024-04-18 20:18:58: 解析消息: id已存在,无法重复添加
2024-04-18 20:18:58: [添加]操作执行完成耗时: 3MS, [添加]结果: id已存在,无法重复添加