From fe4f085f0480433f14636c75ea8ca4b98b0408d4 Mon Sep 17 00:00:00 2001 From: felix Date: Thu, 17 May 2007 13:51:01 +0000 Subject: [PATCH] LogMediator kann jetzt einzelne Klassen unterscheiden git-svn-id: https://www.internetallee.de/svn/bytewurf@32 a944a559-bf0e-0410-8ddc-85264b264b6c --- .../de/bytewurf/projekte/netzschalter/Command.java | 7 +++++ .../projekte/netzschalter/CommandPanel.java | 7 ++--- .../projekte/netzschalter/ConfigPanel.java | 2 +- .../projekte/netzschalter/LogMediator.java | 31 ++++++++++++++++++---- .../projekte/netzschalter/NetzdosenApplet.java | 6 +++++ .../projekte/netzschalter/NetzdosenLEDPanel.java | 4 +-- .../projekte/netzschalter/Oszilloskop.java | 9 ++++--- .../projekte/netzschalter/TextAreaLogger.java | 1 - 8 files changed, 52 insertions(+), 15 deletions(-) diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Command.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Command.java index 60548c8..3816478 100644 --- a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Command.java +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Command.java @@ -25,6 +25,13 @@ public class Command { } } + Command(byte[] commandBytes) { + if (commandBytes == null) + throw new IllegalArgumentException("Es muss ein Array mit bytes übergeben werden"); + + this.commandBytes = commandBytes; + } + public String toString() { StringBuffer result = new StringBuffer(); for (int i = 0; i < commandBytes.length; i++) { diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/CommandPanel.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/CommandPanel.java index b4eb294..58bfd66 100644 --- a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/CommandPanel.java +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/CommandPanel.java @@ -87,11 +87,12 @@ public class CommandPanel extends JPanel { try { cmd = new Command(commandText); } catch (RuntimeException e) { - LogMediator.getInstance().log("Kann \"" + commandText + "\" nicht in Command wandeln."); + LogMediator.getInstance(this.getClass()).log("Kann \"" + commandText + "\" nicht in Command wandeln."); return; } - LogMediator.getInstance().log("Sende " + cmd); - answers.append(++commandCounter + ": " + cmd + "\n"); + LogMediator.getInstance(this.getClass()).log("Sende " + cmd); + byte[] answerBytes = netzdose.sendCommand(cmd); + answers.append(++commandCounter + ": " + new Command(answerBytes).toString() + "\n"); command.setText(""); } diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/ConfigPanel.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/ConfigPanel.java index 2965f61..cd8e088 100644 --- a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/ConfigPanel.java +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/ConfigPanel.java @@ -77,7 +77,7 @@ public class ConfigPanel extends JPanel { hostConfig.setPortB(portBNumber); netzdose.setHostConfig(hostConfig); } catch (NumberFormatException e) { - LogMediator.getInstance().log( + LogMediator.getInstance(this.getClass()).log( "Kann portnummer nicht parsen." + e.toString()); } } diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/LogMediator.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/LogMediator.java index b0e2f1b..65b9c7a 100644 --- a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/LogMediator.java +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/LogMediator.java @@ -6,6 +6,7 @@ */ package de.bytewurf.projekte.netzschalter; +import java.util.Hashtable; import java.util.Iterator; import java.util.WeakHashMap; @@ -13,13 +14,33 @@ import java.util.WeakHashMap; * @author felix */ public class LogMediator { - private static LogMediator singleton = new LogMediator(); - private WeakHashMap observers = new WeakHashMap(); + private static Hashtable loggers = new Hashtable(); + private static WeakHashMap observers = new WeakHashMap(); + private final String logName; + + private LogMediator(String logName) { + this.logName = logName; + } + + public static synchronized LogMediator getInstance() { + return getInstance("_default"); + } + + public static synchronized LogMediator getInstance(Class logClass) { + return getInstance(logClass.getName()); + } - public static LogMediator getInstance() { - return singleton; + private static synchronized LogMediator getInstance(String logName) { + if (loggers.contains(logName)) + return (LogMediator) loggers.get(logName); + + LogMediator defaultLogger = new LogMediator(logName); + loggers.put(logName, defaultLogger); + return defaultLogger; } + + public void addObserver(Loggable o) { observers.put(o,"OK"); } @@ -28,7 +49,7 @@ public class LogMediator { for (Iterator iterator = observers.keySet().iterator(); iterator.hasNext();) { Loggable observer = (Loggable) iterator.next(); if (observer != null) - observer.log(message); + observer.log(logName + ": " + message); } } } diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenApplet.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenApplet.java index e03ea29..d002ad6 100644 --- a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenApplet.java +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenApplet.java @@ -34,6 +34,11 @@ public class NetzdosenApplet extends Applet { public void init() { netzdose = new NetzdosenMockup(); + HostConfig hostConfig = new HostConfig(); + hostConfig.setHostname(getCodeBase().getHost()); + hostConfig.setPortA(10001); + hostConfig.setPortB(123); + netzdose.setHostConfig(hostConfig); setLayout(new BorderLayout()); @@ -54,6 +59,7 @@ public class NetzdosenApplet extends Applet { add(splitPane); this.setPreferredSize(new Dimension(800,600)); + LogMediator.getInstance(this.getClass()).log("Ready."); } } diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenLEDPanel.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenLEDPanel.java index db437bd..8a771b3 100644 --- a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenLEDPanel.java +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenLEDPanel.java @@ -53,7 +53,7 @@ public class NetzdosenLEDPanel extends JPanel { } public void actionPerformed(ActionEvent e) { - LogMediator.getInstance().log( + LogMediator.getInstance(this.getClass()).log( "vorher " + relaisNumber + " = " @@ -62,7 +62,7 @@ public class NetzdosenLEDPanel extends JPanel { netzdose.setRelais(relaisNumber, button.isSelected() ? NetzdoseKonstanten.STATE_ON : NetzdoseKonstanten.STATE_OFF); - LogMediator.getInstance().log( + LogMediator.getInstance(this.getClass()).log( "toggled " + relaisNumber + " = " diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Oszilloskop.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Oszilloskop.java index 62fb41e..6d098d4 100644 --- a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Oszilloskop.java +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Oszilloskop.java @@ -46,7 +46,10 @@ public class Oszilloskop extends JPanel { setBackground(Color.black); g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - g.setPaint(Color.red); + g.setPaint(new Color(50, 80, 50)); + g.fillRect(border_x, border_y, (int) size.getWidth() - 2 * border_x, + (int) size.getHeight() - 2 * border_y); + g.setPaint(Color.lightGray); g.drawRect(border_x, border_y, (int) size.getWidth() - 2 * border_x, (int) size.getHeight() - 2 * border_y); @@ -55,9 +58,9 @@ public class Oszilloskop extends JPanel { min = getMin(); max = getMax(); } - LogMediator.getInstance().log("Min: " + min + " Max: " + max); + LogMediator.getInstance(this.getClass()).log("Min: " + min + " Max: " + max); - double factor_x = (size.getWidth() - border_x * 2.0) / data.length; + double factor_x = (size.getWidth() - border_x * 2.0) / (data.length-1); double factor_y = (size.getHeight() - border_y * 2.0) / (max - min); g.setPaint(Color.green); diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/TextAreaLogger.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/TextAreaLogger.java index 74610fc..a1b66f1 100644 --- a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/TextAreaLogger.java +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/TextAreaLogger.java @@ -6,7 +6,6 @@ */ package de.bytewurf.projekte.netzschalter; -import java.awt.Dimension; import java.text.DateFormat; import java.util.Date; -- 2.11.0