}
}
+ 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++) {
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("");
}
hostConfig.setPortB(portBNumber);
netzdose.setHostConfig(hostConfig);
} catch (NumberFormatException e) {
- LogMediator.getInstance().log(
+ LogMediator.getInstance(this.getClass()).log(
"Kann portnummer nicht parsen." + e.toString());
}
}
*/
package de.bytewurf.projekte.netzschalter;
+import java.util.Hashtable;
import java.util.Iterator;
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");
}
for (Iterator iterator = observers.keySet().iterator(); iterator.hasNext();) {
Loggable observer = (Loggable) iterator.next();
if (observer != null)
- observer.log(message);
+ observer.log(logName + ": " + message);
}
}
}
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());
add(splitPane);
this.setPreferredSize(new Dimension(800,600));
+ LogMediator.getInstance(this.getClass()).log("Ready.");
}
}
}
public void actionPerformed(ActionEvent e) {
- LogMediator.getInstance().log(
+ LogMediator.getInstance(this.getClass()).log(
"vorher "
+ relaisNumber
+ " = "
netzdose.setRelais(relaisNumber,
button.isSelected() ? NetzdoseKonstanten.STATE_ON
: NetzdoseKonstanten.STATE_OFF);
- LogMediator.getInstance().log(
+ LogMediator.getInstance(this.getClass()).log(
"toggled "
+ relaisNumber
+ " = "
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);
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);
*/
package de.bytewurf.projekte.netzschalter;
-import java.awt.Dimension;
import java.text.DateFormat;
import java.util.Date;