From 109123a2411ec62920720f2ef9f9e4abf4fa0eb0 Mon Sep 17 00:00:00 2001 From: schuhmannje82308 Date: Tue, 12 Dec 2023 16:47:01 +0100 Subject: [PATCH] Zwischenstand --- .../controller/CommandController.java | 2 +- .../{model => controller}/Nachricht.java | 4 +- .../{model => controller}/ReceiveAdapter.java | 2 +- .../controller/commands/CommandSend.java | 24 ++++++++++- src/ChatProgramm/model/Client.java | 12 +----- src/ChatProgramm/model/Server.java | 2 + src/ChatProgramm/model/Transmitter.java | 40 ++++++++++++++++--- 7 files changed, 64 insertions(+), 22 deletions(-) rename src/ChatProgramm/{model => controller}/Nachricht.java (91%) rename src/ChatProgramm/{model => controller}/ReceiveAdapter.java (96%) diff --git a/src/ChatProgramm/controller/CommandController.java b/src/ChatProgramm/controller/CommandController.java index c19002c..a6d6afb 100644 --- a/src/ChatProgramm/controller/CommandController.java +++ b/src/ChatProgramm/controller/CommandController.java @@ -42,7 +42,7 @@ public class CommandController implements ActionListener{ public void registerCommands(){ invoker.addCommand(view.getBtnConnect(), new CommandConnect(view)); - invoker.addCommand(view.getTfNachricht(), new CommandSend()); + invoker.addCommand(view.getTfNachricht(), new CommandSend(view)); } /** diff --git a/src/ChatProgramm/model/Nachricht.java b/src/ChatProgramm/controller/Nachricht.java similarity index 91% rename from src/ChatProgramm/model/Nachricht.java rename to src/ChatProgramm/controller/Nachricht.java index 66c3325..e1bb92b 100644 --- a/src/ChatProgramm/model/Nachricht.java +++ b/src/ChatProgramm/controller/Nachricht.java @@ -3,13 +3,13 @@ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ -package ChatProgramm.model; +package ChatProgramm.controller; /** * * @author ahren */ -class Nachricht +public class Nachricht { private String nachricht; //private int id; diff --git a/src/ChatProgramm/model/ReceiveAdapter.java b/src/ChatProgramm/controller/ReceiveAdapter.java similarity index 96% rename from src/ChatProgramm/model/ReceiveAdapter.java rename to src/ChatProgramm/controller/ReceiveAdapter.java index c24bf6f..c8b4fbb 100644 --- a/src/ChatProgramm/model/ReceiveAdapter.java +++ b/src/ChatProgramm/controller/ReceiveAdapter.java @@ -2,7 +2,7 @@ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ -package ChatProgramm.model; +package ChatProgramm.controller; import ChatProgramm.view.ChatView; import java.util.concurrent.Flow; diff --git a/src/ChatProgramm/controller/commands/CommandSend.java b/src/ChatProgramm/controller/commands/CommandSend.java index d5a4593..ad82731 100644 --- a/src/ChatProgramm/controller/commands/CommandSend.java +++ b/src/ChatProgramm/controller/commands/CommandSend.java @@ -5,20 +5,40 @@ package ChatProgramm.controller.commands; +import ChatProgramm.controller.Nachricht; +import ChatProgramm.model.Client; +import ChatProgramm.model.Server; +import ChatProgramm.model.Transmitter; +import ChatProgramm.util.OhmLogger; +import ChatProgramm.view.ChatView; +import java.util.logging.Logger; +import javax.swing.JTextField; + /** * * @author ahren */ public class CommandSend implements CommandInterface { - public CommandSend() + private static Logger lg = OhmLogger.getLogger(); + + private ChatView view; + private JTextField eingabeFeld; + + public Server server; + public Client client; + + public CommandSend(ChatView view) { - + this.view = view; + this.eingabeFeld = view.getTfNachricht(); } @Override public void execute() { + //Transmitter.send(new Nachricht(eingabeFeld.getText())); + lg.info("Sende Nachricht"); } @Override diff --git a/src/ChatProgramm/model/Client.java b/src/ChatProgramm/model/Client.java index adfe3a0..33c1a5a 100644 --- a/src/ChatProgramm/model/Client.java +++ b/src/ChatProgramm/model/Client.java @@ -4,6 +4,7 @@ */ package ChatProgramm.model; +import ChatProgramm.controller.Nachricht; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -25,12 +26,6 @@ public class Client extends Transmitter { private static Logger lg = Logger.getLogger("netz"); - private Socket socket; - private BufferedReader reader; - private PrintWriter writer; - - private static final int PORT = 35000; //lt. iana port > 2¹⁵ - private static final String IP = "127.0.0.1"; public Client() throws IOException { connect(); @@ -73,10 +68,5 @@ public class Client extends Transmitter { } } - - @Override - public void onNext(Nachricht item) { - throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody - } } diff --git a/src/ChatProgramm/model/Server.java b/src/ChatProgramm/model/Server.java index 4c81be5..8ddb1f8 100644 --- a/src/ChatProgramm/model/Server.java +++ b/src/ChatProgramm/model/Server.java @@ -30,6 +30,7 @@ public class Server extends Transmitter { private static Logger lg = Logger.getLogger("netz"); + @Override public void connect() throws IOException { try { ServerSocket sSocket = new ServerSocket(PORT); @@ -47,6 +48,7 @@ public class Server extends Transmitter { public Server() throws IOException { + super(); connect(); initIO(); diff --git a/src/ChatProgramm/model/Transmitter.java b/src/ChatProgramm/model/Transmitter.java index 492966c..df1e18c 100644 --- a/src/ChatProgramm/model/Transmitter.java +++ b/src/ChatProgramm/model/Transmitter.java @@ -4,6 +4,7 @@ */ package ChatProgramm.model; +import ChatProgramm.controller.Nachricht; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -26,7 +27,7 @@ import java.util.logging.Logger; */ public abstract class Transmitter implements Runnable, Subscriber { - static final int timeout = 60000; + static final int timeout = 10000; protected static final int PORT = 35000; protected static final String IP = "127.0.0.1"; @@ -37,13 +38,19 @@ public abstract class Transmitter implements Runnable, Subscriber { protected PrintWriter writer; private SubmissionPublisher textPublisher; + private Thread thd; + private boolean laufend; public Transmitter() { - + socket = new Socket(); } public abstract void connect() throws IOException; + public void addWertSubscription(Subscriber subscriber) { + textPublisher.subscribe(subscriber); + } + public void initIO() { try { lg.info("Initialisiere reader und writer"); @@ -66,19 +73,42 @@ public abstract class Transmitter implements Runnable, Subscriber { } } - public void addWertSubscription(Subscriber subscriber) { - textPublisher.subscribe(subscriber); + public void send(Nachricht nachricht) { + lg.info("Nachricht wird gesendet"); + writer.println(nachricht.getNachricht()); + writer.flush(); + + lg.info("Nachricht wird angezeigt"); + textPublisher.submit(nachricht); } +// public void startServer() { +// laufend = true; +// if (thd == null) { +// thd = new Thread(this); +// thd.start(); +// } +// +// synchronized (thd) { +// thd.notify(); +// } +// +// } + @Override public void run() { + try { + Nachricht nachricht = new Nachricht(reader.readLine()); + textPublisher.submit(nachricht); + } catch (IOException ex) { + Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex); + } } @Override public void onSubscribe(Flow.Subscription subscription) { throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody } - @Override public void onError(Throwable throwable) {