From ba0f12561b5ebbf456678b367bb790245f5464b2 Mon Sep 17 00:00:00 2001 From: ahren Date: Mon, 18 Dec 2023 13:56:06 +0100 Subject: [PATCH] =?UTF-8?q?wir=20h=C3=A4ngen=20irgendwo=20in=20der=20IO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CommandController.java | 2 +- .../controller/GrafikController.java | 14 +--- .../controller/commands/CommandSend.java | 1 + src/ChatProgramm/model/ReceiveAdapter.java | 8 +- src/ChatProgramm/model/Transmitter.java | 76 ++++++++++++------- .../model/TransmitterInterface.java | 4 +- 6 files changed, 64 insertions(+), 41 deletions(-) diff --git a/src/ChatProgramm/controller/CommandController.java b/src/ChatProgramm/controller/CommandController.java index 7a1236f..33ef1fd 100644 --- a/src/ChatProgramm/controller/CommandController.java +++ b/src/ChatProgramm/controller/CommandController.java @@ -34,7 +34,7 @@ public class CommandController implements ActionListener{ } public void registerCommands(){ - CommandSend commandSend = new CommandSend(view); + CommandSend commandSend = new CommandSend(view.getGvZeichenflaeche()); invoker.addCommand(view.getBtnConnect(), new CommandConnect(view, commandSend)); //invoker.addCommand(view.getTfNachricht(), commandSend); } diff --git a/src/ChatProgramm/controller/GrafikController.java b/src/ChatProgramm/controller/GrafikController.java index 6b11f28..d717bc9 100644 --- a/src/ChatProgramm/controller/GrafikController.java +++ b/src/ChatProgramm/controller/GrafikController.java @@ -5,8 +5,6 @@ package ChatProgramm.controller; -import ChatProgramm.controller.commands.CommandConnect; -import ChatProgramm.controller.commands.CommandInvoker; import ChatProgramm.controller.commands.CommandSend; import java.awt.Point; import java.awt.event.MouseAdapter; @@ -14,7 +12,6 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import ChatProgramm.model.GrafikModel; import ChatProgramm.view.GrafikView; -import java.awt.Component; /** * @@ -24,12 +21,13 @@ public class GrafikController extends MouseAdapter implements MouseMotionListene { private GrafikView view; private GrafikModel model; - private CommandInvoker invoker; + private CommandSend commandSend; public GrafikController(GrafikView view, GrafikModel model) { this.view = view; this.model = model; + commandSend = new CommandSend(view); } public void registerEvents() @@ -37,10 +35,7 @@ public class GrafikController extends MouseAdapter implements MouseMotionListene view.addMouseMotionListener(this); view.addMouseListener(this); } - public void registerCommands(){ - CommandSend commandSend = new CommandSend(view); - invoker.addCommand(view.getTNachricht(), commandSend); - } + @Override @@ -60,8 +55,7 @@ public class GrafikController extends MouseAdapter implements MouseMotionListene public void mouseReleased(MouseEvent evt) { model.endShape(); - Component key = (Component)evt.getSource(); - invoker.executeCommand(key); + commandSend.execute(); // if (evt.getButton() == MouseEvent.BUTTON3) // { // view.doPrint(); diff --git a/src/ChatProgramm/controller/commands/CommandSend.java b/src/ChatProgramm/controller/commands/CommandSend.java index ea8b6df..7d0de34 100644 --- a/src/ChatProgramm/controller/commands/CommandSend.java +++ b/src/ChatProgramm/controller/commands/CommandSend.java @@ -43,6 +43,7 @@ public class CommandSend implements CommandInterface @Override public void execute() { + lg.info("wir sind drin"); //ToDo in dieser methode muss die Figur serialisiert werden und zum //übermitteln bereitgestellt werden diff --git a/src/ChatProgramm/model/ReceiveAdapter.java b/src/ChatProgramm/model/ReceiveAdapter.java index 50d0d4d..03141a7 100644 --- a/src/ChatProgramm/model/ReceiveAdapter.java +++ b/src/ChatProgramm/model/ReceiveAdapter.java @@ -12,7 +12,7 @@ import java.util.concurrent.Flow.Subscriber; * * @author ahren */ -public class ReceiveAdapter implements Subscriber { +public class ReceiveAdapter implements Subscriber { private ChatView view; private Flow.Subscription subscription; @@ -27,7 +27,6 @@ public class ReceiveAdapter implements Subscriber { this.subscription.request(1); } - @Override public void onNext(Nachricht item) { //ToDo: hier muss der gFrame aufgerufen werden @@ -43,4 +42,9 @@ public class ReceiveAdapter implements Subscriber { @Override public void onComplete(){ } + + @Override + public void onNext(Figur item) + { + } } diff --git a/src/ChatProgramm/model/Transmitter.java b/src/ChatProgramm/model/Transmitter.java index 62d5191..5c271f4 100644 --- a/src/ChatProgramm/model/Transmitter.java +++ b/src/ChatProgramm/model/Transmitter.java @@ -5,10 +5,14 @@ package ChatProgramm.model; import ChatProgramm.view.ChatView; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; @@ -34,13 +38,13 @@ public abstract class Transmitter implements Runnable, Subscriber, Trans private static Logger lg = Logger.getLogger("netz"); protected Socket socket; - protected BufferedReader reader; - protected PrintWriter writer; + protected ObjectInputStream reader; + protected ObjectOutputStream writer; - private Nachricht nachricht; + private Figur figur; private String txtNachricht; private boolean laufend; - private SubmissionPublisher textPublisher; + private SubmissionPublisher figurPublisher; private ExecutorService eService; private String receivedString; private ChatView view; @@ -51,15 +55,15 @@ public abstract class Transmitter implements Runnable, Subscriber, Trans socket = new Socket(); eService = null; receiveAdapter = new ReceiveAdapter(view); - textPublisher = new SubmissionPublisher<>(); + figurPublisher = new SubmissionPublisher<>(); this.view = view; addWertSubscription(receiveAdapter); - nachricht = new Nachricht(""); + figur = new Figur(); } - public void addWertSubscription(Subscriber subscriber) + public void addWertSubscription(Subscriber subscriber) { - textPublisher.subscribe(subscriber); + figurPublisher.subscribe(subscriber); } public abstract void connect() throws IOException; @@ -69,12 +73,17 @@ public abstract class Transmitter implements Runnable, Subscriber, Trans lg.info("Initialisiere reader und writer"); InputStream is = socket.getInputStream(); OutputStream os = socket.getOutputStream(); + + lg.info("1"); + BufferedOutputStream bos = new BufferedOutputStream(os); + + BufferedInputStream bis = new BufferedInputStream(is); + lg.info("2"); +// InputStreamReader isr = new InputStreamReader(is, "UTF-8"); +// OutputStreamWriter osr = new OutputStreamWriter(os, "UTF-8"); - InputStreamReader isr = new InputStreamReader(is, "UTF-8"); - OutputStreamWriter osr = new OutputStreamWriter(os, "UTF-8"); - - reader = new BufferedReader(isr); - writer = new PrintWriter(osr); + reader = new ObjectInputStream(bis); + writer = new ObjectOutputStream(bos); lg.info("Reader / Writer Initialisierung abgeschlossen"); startempfangen(); lg.info("Warte auf Nachricht"); @@ -86,27 +95,42 @@ public abstract class Transmitter implements Runnable, Subscriber, Trans } } - public void send(String txtNachricht){ - - writer.println(txtNachricht); + /** + * + * @param figur + * @throws IOException + */ + @Override + public void send(Figur figur){ + try + { + writer.writeObject(figur); writer.flush(); + } + catch (IOException ex) + { + Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex); + } lg.info("Nachricht gesendet"); - nachricht.setNachricht("\nDu: " + txtNachricht); - textPublisher.submit(nachricht); + figurPublisher.submit(figur); } - public Nachricht receive(){ + public Figur receive(){ try { - txtNachricht = reader.readLine(); + figur = (Figur) reader.readObject(); if(!txtNachricht.isEmpty()){ lg.info("Nachricht erhalten"); - nachricht.setNachricht("\nEr / Sie: " + txtNachricht); - return nachricht; + + return figur; } } catch (IOException e) { throw new RuntimeException(e); } - return nachricht; + catch (ClassNotFoundException ex) + { + Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex); + } + return figur; } // public void disconnect (){ @@ -120,9 +144,9 @@ public abstract class Transmitter implements Runnable, Subscriber, Trans while (true) { lg.info("Warte auf Nachricht"); if(laufend) { - nachricht = receive(); - if(!nachricht.getNachricht().isEmpty()){ - textPublisher.submit(nachricht); + figur = receive(); + if(!figur.getPunkte().isEmpty()){ + figurPublisher.submit(figur); } } else{ diff --git a/src/ChatProgramm/model/TransmitterInterface.java b/src/ChatProgramm/model/TransmitterInterface.java index 2cacc1b..54c0dc4 100644 --- a/src/ChatProgramm/model/TransmitterInterface.java +++ b/src/ChatProgramm/model/TransmitterInterface.java @@ -11,7 +11,7 @@ import ChatProgramm.model.Nachricht; */ public interface TransmitterInterface { - public void send(String txtNachricht); - public Nachricht receive(); + public void send(Figur figur); + public Figur receive(); }