添加 删除 修改
parent
c080d456bf
commit
0b48922e6e
|
@ -268,10 +268,141 @@ class ClientHandler implements Runnable {
|
|||
}
|
||||
|
||||
public String insertBookInfo(String clientMessage){
|
||||
String substring = clientMessage.substring(clientMessage.indexOf("BookInfo(") + 9, clientMessage.indexOf(")"));
|
||||
return null;
|
||||
try {
|
||||
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
|
||||
public void run() {
|
||||
try {
|
||||
|
@ -283,9 +414,8 @@ class ClientHandler implements Runnable {
|
|||
System.out.println("客户端名称:" + clientId);
|
||||
String clientMessage;
|
||||
// 创建一个FileWriter对象来写入文件
|
||||
FileWriter fileWriter = new FileWriter("D:\\work\\lx\\src\\main\\java\\com\\bwie\\lx\\txt\\log.txt");
|
||||
// 创建一个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) {
|
||||
if (clientMessage.equals("exit")) {
|
||||
System.out.println(clientId + "已断开连接");
|
||||
|
@ -328,7 +458,7 @@ class ClientHandler implements Runnable {
|
|||
bufferedWriter.write(getDate()+": 匹配到的动作 -> 修改(update)");
|
||||
bufferedWriter.newLine();
|
||||
long staTime = new Date().getTime();
|
||||
String bookString="";
|
||||
String bookString=updateBookInfo(clientMessage);
|
||||
long endTime = new Date().getTime();
|
||||
if (bookString.contains("error")){
|
||||
bufferedWriter.write(getDate()+": 解析消息: "+bookString.substring(bookString.indexOf("error:")+6));
|
||||
|
@ -341,14 +471,14 @@ class ClientHandler implements Runnable {
|
|||
bufferedWriter.write(getDate()+": [修改]操作执行完成耗时: "+(endTime-staTime)+"MS, [修改]结果: 修改成功");
|
||||
bufferedWriter.newLine();
|
||||
}
|
||||
pw.println("success:修改成功");
|
||||
pw.println(bookString);
|
||||
} else
|
||||
//判断请求是否为删除
|
||||
if (clientMessage.startsWith("delete")){
|
||||
bufferedWriter.write(getDate()+": 匹配到的动作 -> 删除(delete)");
|
||||
bufferedWriter.newLine();
|
||||
long staTime = new Date().getTime();
|
||||
String bookString="";
|
||||
String bookString= deleteBookInfo(clientMessage);
|
||||
long endTime = new Date().getTime();
|
||||
if (bookString.contains("error")){
|
||||
bufferedWriter.write(getDate()+": 解析消息: "+bookString.substring(bookString.indexOf("error:")+6));
|
||||
|
@ -361,7 +491,7 @@ class ClientHandler implements Runnable {
|
|||
bufferedWriter.write(getDate()+": [删除]操作执行完成耗时: "+(endTime-staTime)+"MS, [删除]结果: 删除成功");
|
||||
bufferedWriter.newLine();
|
||||
}
|
||||
pw.println("success:删除成功");
|
||||
pw.println(bookString);
|
||||
} else
|
||||
//判断请求是否为添加
|
||||
if (clientMessage.startsWith("insert")){
|
||||
|
@ -381,7 +511,7 @@ class ClientHandler implements Runnable {
|
|||
bufferedWriter.write(getDate()+": [添加]操作执行完成耗时: "+(endTime-staTime)+"MS, [添加]结果: 添加成功");
|
||||
bufferedWriter.newLine();
|
||||
}
|
||||
pw.println("success:添加成功");
|
||||
pw.println(bookString);
|
||||
} else {
|
||||
bufferedWriter.write(getDate()+": 匹配到的动作 -> 无");
|
||||
bufferedWriter.newLine();
|
||||
|
@ -389,6 +519,7 @@ class ClientHandler implements Runnable {
|
|||
bufferedWriter.write(getDate()+": 解析消息: -> error:请求格式错误");
|
||||
bufferedWriter.newLine();
|
||||
}
|
||||
bufferedWriter.flush();
|
||||
}
|
||||
|
||||
br.close();
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
id|name|author|type|country|price
|
||||
1|三国演义|罗贯中|四大名著|中国|19.68
|
||||
1|哈哈哈|罗贯中|四大名著|中国|19.68
|
||||
2|java入门到高薪|张艺兴|技术书籍|中国|36.89
|
||||
3|javaweb|范雅婷|技术书籍|中国|65.32
|
||||
3|javaweb|范雅婷|技术书籍|中国|65.32
|
||||
4|java|郝岩|技术书籍|中国|28.68
|
||||
|
|
|
@ -1,12 +1,73 @@
|
|||
2024-04-18 16:48:07: 接收到的消息 -> select * from bookInfo;
|
||||
2024-04-18 16:48:07: 匹配到的动作 -> 查询(select)
|
||||
2024-04-18 16:48:07: 解析消息: 无问题
|
||||
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 16:48:16: 接收到的消息 -> delete from bookInfo;
|
||||
2024-04-18 16:48:16: 匹配到的动作 -> 删除(delete)
|
||||
2024-04-18 16:48:16: 解析消息: 无问题
|
||||
2024-04-18 16:48:16: [删除]操作执行完成耗时: 0MS, [删除]结果: 删除成功
|
||||
2024-04-18 16:48:41: 接收到的消息 -> select * from bookInfo;
|
||||
2024-04-18 16:48:41: 匹配到的动作 -> 查询(select)
|
||||
2024-04-18 16:48:41: 解析消息: 无问题
|
||||
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:56:53: 接收到的消息 -> delete from bookInfo where id=4;
|
||||
2024-04-18 19:56:53: 匹配到的动作 -> 删除(delete)
|
||||
2024-04-18 19:56:53: 解析消息: 此信息不存在;
|
||||
2024-04-18 19:56:53: [删除]操作执行完成耗时: 41MS, [删除结果: 此信息不存在;
|
||||
2024-04-18 19:57:21: 接收到的消息 -> select * from bookInfo where name=三国演义;
|
||||
2024-04-18 19:57:21: 匹配到的动作 -> 查询(select)
|
||||
2024-04-18 19:57:21: 解析消息: 无问题
|
||||
2024-04-18 19:57:21: [查询]操作执行完成耗时: 1MS, [查询]结果: id|name|author|type|country|price;1|三国演义|罗贯中|四大名著|中国|19.68;
|
||||
2024-04-18 19:57:32: 接收到的消息 -> select * from bookInfo;
|
||||
2024-04-18 19:57:32: 匹配到的动作 -> 查询(select)
|
||||
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已存在,无法重复添加
|
||||
|
|
Loading…
Reference in New Issue