From 4cc569678883ce49872227d34d8a80b42ec0f329 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Thu, 29 Jan 2026 05:23:56 +0300 Subject: [PATCH] feat: add profile operations --- src/ru/charm/back/CharmBackClientRunner.java | 27 +++++ src/ru/charm/back/CharmBackServerRunner.java | 49 +++++++++ src/ru/charm/back/Main.java | 7 -- .../back/controller/ProfileController.java | 101 +++++++++++++++++- src/ru/charm/back/model/Command.java | 19 ++++ src/ru/charm/back/model/Profile.java | 11 ++ 6 files changed, 206 insertions(+), 8 deletions(-) create mode 100644 src/ru/charm/back/CharmBackClientRunner.java create mode 100644 src/ru/charm/back/CharmBackServerRunner.java delete mode 100644 src/ru/charm/back/Main.java create mode 100644 src/ru/charm/back/model/Command.java diff --git a/src/ru/charm/back/CharmBackClientRunner.java b/src/ru/charm/back/CharmBackClientRunner.java new file mode 100644 index 0000000..a21d9b4 --- /dev/null +++ b/src/ru/charm/back/CharmBackClientRunner.java @@ -0,0 +1,27 @@ +package ru.charm.back; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.net.Socket; +import java.util.Scanner; + +public class CharmBackClientRunner { + public static void main(String[] args) throws IOException { + try ( + Socket socket = new Socket("localhost", 8080); + DataInputStream rsStream = new DataInputStream(socket.getInputStream()); + DataOutputStream rqStream = new DataOutputStream(socket.getOutputStream()); + Scanner scanner = new Scanner(System.in) + ) { + while (scanner.hasNextLine()) { + System.out.println("Client: "); + String request = scanner.nextLine(); + rqStream.writeUTF(request); + + String response = rsStream.readUTF(); + System.out.println("Server: " + response); + } + } + } +} diff --git a/src/ru/charm/back/CharmBackServerRunner.java b/src/ru/charm/back/CharmBackServerRunner.java new file mode 100644 index 0000000..aacc385 --- /dev/null +++ b/src/ru/charm/back/CharmBackServerRunner.java @@ -0,0 +1,49 @@ +package ru.charm.back; + +import ru.charm.back.controller.ProfileController; +import ru.charm.back.dao.ProfileDao; +import ru.charm.back.model.Command; +import ru.charm.back.service.ProfileService; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; + +public class CharmBackServerRunner { + public static void main(String[] args) throws IOException { + ProfileController controller = new ProfileController(new ProfileService(new ProfileDao())); + + try ( + ServerSocket serverSocket = new ServerSocket(8080); + Socket socket = serverSocket.accept(); + DataInputStream rqStream = new DataInputStream(socket.getInputStream()); + DataOutputStream rsStream = new DataOutputStream(socket.getOutputStream()); + ) { + String request = rqStream.readUTF(); + String response; + + while (!request.equals("stop")) { + if (request.startsWith(Command.SAVE.getPrefix())) { + response = controller.save(request.split("save ")[1]); + } else if (request.startsWith(Command.FIND_BY_ID.getPrefix())) { + response = controller.findById(request.split("findById ")[1]); + } else if (request.startsWith(Command.FIND_ALL.getPrefix())) { + response = controller.findAll(); + } else if (request.startsWith(Command.UPDATE.getPrefix())) { + response = controller.update(request.split("update ")[1]); + } else if (request.startsWith(Command.DELETE.getPrefix())) { + response = controller.delete(request.split("delete ")[1]); + } else { + response = "Unsupported method"; + } + + rsStream.writeUTF(response); + request = rqStream.readUTF(); + + System.out.println("Server: " + request); + } + } + } +} diff --git a/src/ru/charm/back/Main.java b/src/ru/charm/back/Main.java deleted file mode 100644 index 494cd40..0000000 --- a/src/ru/charm/back/Main.java +++ /dev/null @@ -1,7 +0,0 @@ -package ru.charm.back; - -public class Main { - public static void main(String[] args) { - System.out.println("Hello from charm"); - } -} diff --git a/src/ru/charm/back/controller/ProfileController.java b/src/ru/charm/back/controller/ProfileController.java index cf1f4f5..47ef62f 100644 --- a/src/ru/charm/back/controller/ProfileController.java +++ b/src/ru/charm/back/controller/ProfileController.java @@ -1,7 +1,10 @@ package ru.charm.back.controller; +import ru.charm.back.model.Profile; import ru.charm.back.service.ProfileService; +import java.util.Optional; + public class ProfileController { private final ProfileService service; @@ -9,5 +12,101 @@ public class ProfileController { this.service = service; } - public String work(String request) {} + public String work(String request) { + return ""; + } + + public String save(String save) { + String[] params = save.split(","); + + if (params.length != 4) { + return "Bad request"; + } + + Profile profile = new Profile(); + profile.setEmail(params[0]); + profile.setName(params[1]); + profile.setSurname(params[2]); + profile.setAbout(params[3]); + + return service.save(profile).toString(); + } + + public String findById(String request) { + String[] params = request.split(","); + + if (params.length != 1) { + return "Bad request"; + } + + long id; + try { + id = Long.parseLong(params[0]); + } catch (NumberFormatException e) { + return "Bad request"; + } + + Optional maybeProfile = service.findById(id); + + if (maybeProfile.isEmpty()) { + return "Not found"; + } + + return maybeProfile.get().toString(); + } + + public String findAll() { + return service.findAll().toString(); + } + + public String update(String request) { + String[] params = request.split(","); + + if (params.length != 5) { + return "Bad request"; + } + + long id; + try { + id = Long.parseLong(params[0]); + } catch (NumberFormatException e) { + return "Bad request"; + } + + Profile profile = new Profile(); + profile.setId(id); + profile.setEmail(params[1]); + profile.setName(params[2]); + profile.setSurname(params[3]); + profile.setAbout(params[4]); + + service.update(profile); + + return "Update success\n" + profile.toString(); + } + + public String delete(String request) { + String[] params = request.split(","); + + if (params.length != 1) { + return "Bad request"; + } + + long id; + try { + id = Long.parseLong(params[0]); + } catch (NumberFormatException e) { + return "Bad request"; + } + + Optional maybeProfile = service.findById(id); + + if (maybeProfile.isEmpty()) { + return "Not found"; + } + + service.delete(id); + + return "Delete success"; + } } diff --git a/src/ru/charm/back/model/Command.java b/src/ru/charm/back/model/Command.java new file mode 100644 index 0000000..9ac7717 --- /dev/null +++ b/src/ru/charm/back/model/Command.java @@ -0,0 +1,19 @@ +package ru.charm.back.model; + +public enum Command { + SAVE("save"), + FIND_BY_ID("findById"), + FIND_ALL("findAll"), + UPDATE("update"), + DELETE("delete"); + + private final String prefix; + + Command(String prefix) { + this.prefix = prefix; + } + + public String getPrefix() { + return prefix; + } +} \ No newline at end of file diff --git a/src/ru/charm/back/model/Profile.java b/src/ru/charm/back/model/Profile.java index 3e96dc9..3f6236a 100644 --- a/src/ru/charm/back/model/Profile.java +++ b/src/ru/charm/back/model/Profile.java @@ -46,4 +46,15 @@ public class Profile { public void setAbout(String about) { this.about = about; } + + @Override + public String toString() { + return "Profile{" + + "id=" + id + + ", email='" + email + '\'' + + ", name='" + name + '\'' + + ", surname='" + surname + '\'' + + ", about='" + about + '\'' + + '}'; + } }