From: felix Date: Sat, 12 May 2007 21:23:56 +0000 (+0000) Subject: Erste Version des Versuches, die Original-Quellen zu entwirren X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=662946f0c1c9031619a91760829ef45a3f34fa5c;p=bytewurf.git Erste Version des Versuches, die Original-Quellen zu entwirren git-svn-id: https://www.internetallee.de/svn/bytewurf@14 a944a559-bf0e-0410-8ddc-85264b264b6c --- diff --git a/projekte/netzschalter/.classpath b/projekte/netzschalter/.classpath new file mode 100644 index 0000000..0a265f5 --- /dev/null +++ b/projekte/netzschalter/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/projekte/netzschalter/.project b/projekte/netzschalter/.project new file mode 100644 index 0000000..4b304c5 --- /dev/null +++ b/projekte/netzschalter/.project @@ -0,0 +1,17 @@ + + + netzschalter + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/LogMediator.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/LogMediator.java new file mode 100644 index 0000000..b0e2f1b --- /dev/null +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/LogMediator.java @@ -0,0 +1,34 @@ +/* + * Created on 12.05.2007 + * + * To change this generated comment go to + * Window>Preferences>Java>Code Generation>Code Template + */ +package de.bytewurf.projekte.netzschalter; + +import java.util.Iterator; +import java.util.WeakHashMap; + +/** + * @author felix + */ +public class LogMediator { + private static LogMediator singleton = new LogMediator(); + private WeakHashMap observers = new WeakHashMap(); + + public static LogMediator getInstance() { + return singleton; + } + + public void addObserver(Loggable o) { + observers.put(o,"OK"); + } + + public void log(String message) { + for (Iterator iterator = observers.keySet().iterator(); iterator.hasNext();) { + Loggable observer = (Loggable) iterator.next(); + if (observer != null) + observer.log(message); + } + } +} diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Loggable.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Loggable.java new file mode 100644 index 0000000..dd060d0 --- /dev/null +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Loggable.java @@ -0,0 +1,14 @@ +/* + * Created on 12.05.2007 + * + * To change this generated comment go to + * Window>Preferences>Java>Code Generation>Code Template + */ +package de.bytewurf.projekte.netzschalter; + +/** + * @author felix + */ +public interface Loggable { + public void log(String message); +} diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Netzdose.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Netzdose.java new file mode 100644 index 0000000..aa1b04d --- /dev/null +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/Netzdose.java @@ -0,0 +1,20 @@ +/* + * Created on 12.05.2007 + * + * To change this generated comment go to + * Window>Preferences>Java>Code Generation>Code Template + */ +package de.bytewurf.projekte.netzschalter; + +/** + * @author felix + */ +public interface Netzdose { + + public void setRelais(int relaisNumber, int state); + + public int getRelais(int relaisNumber); + + public int getNumberOfRelais(); + +} \ No newline at end of file diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdoseImpl.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdoseImpl.java new file mode 100644 index 0000000..739fe20 --- /dev/null +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdoseImpl.java @@ -0,0 +1,30 @@ +/* + * Created on 12.05.2007 + * + * To change this generated comment go to + * Window>Preferences>Java>Code Generation>Code Template + */ +package de.bytewurf.projekte.netzschalter; + +/** + * @author felix + */ +public class NetzdoseImpl implements Netzdose { + /* (non-Javadoc) + * @see de.bytewurf.projekte.netzschalter.Netzdose#setRelais(int, int) + */ + public void setRelais(int relaisNumber, int state) { + } + + public int getNumberOfRelais() { + // TODO Auto-generated method stub + return 0; + } + + /* (non-Javadoc) + * @see de.bytewurf.projekte.netzschalter.Netzdose#getRelais(int) + */ + public int getRelais(int relaisNumber) { + return NetzdoseKonstanten.STATE_OFF; + } +} diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdoseKonstanten.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdoseKonstanten.java new file mode 100644 index 0000000..fe0f47f --- /dev/null +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdoseKonstanten.java @@ -0,0 +1,17 @@ +/* + * Created on 12.05.2007 + * + * To change this generated comment go to + * Window>Preferences>Java>Code Generation>Code Template + */ +package de.bytewurf.projekte.netzschalter; + +/** + * @author felix + */ +public class NetzdoseKonstanten { + + public static final int STATE_ON = 1; + public static final int STATE_OFF = 2; + +} diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenApplet.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenApplet.java new file mode 100644 index 0000000..037e8b1 --- /dev/null +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenApplet.java @@ -0,0 +1,56 @@ +/* + * Created on 12.05.2007 + * + * To change this generated comment go to + * Window>Preferences>Java>Code Generation>Code Template + */ +package de.bytewurf.projekte.netzschalter; + +import java.applet.Applet; +import java.awt.BorderLayout; + +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; +import javax.swing.JTabbedPane; + +/** + * @author felix + */ +public class NetzdosenApplet extends Applet { + + private static final long serialVersionUID = 1L; + + private Netzdose netzdose; + + private TextAreaLogger logArea; + + public void start() { + super.start(); + } + + @Override + public void stop() { + // TODO Auto-generated method stub + super.stop(); + } + + public void init() { + netzdose = new NetzdosenMockup(); + + setLayout(new BorderLayout()); + + JTabbedPane modePanel = new JTabbedPane(); + + modePanel.add("LED", new NetzdosenLEDPanel(netzdose)); + JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); + splitPane.add(modePanel, JSplitPane.TOP); + + logArea = new TextAreaLogger(); + splitPane.add(new JScrollPane(logArea, + JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, + JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED), JSplitPane.BOTTOM); + + add(splitPane); + + } +} diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenLEDPanel.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenLEDPanel.java new file mode 100644 index 0000000..72ee06d --- /dev/null +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/NetzdosenLEDPanel.java @@ -0,0 +1,57 @@ +/* + * Created on 12.05.2007 + * + * To change this generated comment go to + * Window>Preferences>Java>Code Generation>Code Template + */ +package de.bytewurf.projekte.netzschalter; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JPanel; +import javax.swing.JToggleButton; + +/** + * @author felix + */ +public class NetzdosenLEDPanel extends JPanel { + + private Netzdose netzdose; + + private JToggleButton[] relaisToggles; + + public NetzdosenLEDPanel(Netzdose netzdose) { + this.netzdose = netzdose; + + relaisToggles = new JToggleButton[netzdose.getNumberOfRelais()]; + for (int i = 0; i < netzdose.getNumberOfRelais(); i++) { + relaisToggles[i] = new JToggleButton("Relais " + i); + relaisToggles[i].setSelected(netzdose.getRelais(i) == NetzdoseKonstanten.STATE_ON); + relaisToggles[i].addActionListener(new RelaisAction(relaisToggles[i], i)); + add(relaisToggles[i]); + } + + + } + + private class RelaisAction implements ActionListener { + + JToggleButton button; + + int relaisNumber; + + public RelaisAction(JToggleButton button, int relaisNumber) { + this.button = button; + this.relaisNumber = relaisNumber; + } + + public void actionPerformed(ActionEvent e) { + netzdose.setRelais(relaisNumber, + button.isSelected() ? NetzdoseKonstanten.STATE_ON + : NetzdoseKonstanten.STATE_OFF); + LogMediator.getInstance().log("toggled " + relaisNumber + " = " + netzdose.getRelais(relaisNumber)); + } + + } +} diff --git a/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/TextAreaLogger.java b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/TextAreaLogger.java new file mode 100644 index 0000000..9edf9d7 --- /dev/null +++ b/projekte/netzschalter/src/de/bytewurf/projekte/netzschalter/TextAreaLogger.java @@ -0,0 +1,31 @@ +/* + * Created on 12.05.2007 + * + * To change this generated comment go to + * Window>Preferences>Java>Code Generation>Code Template + */ +package de.bytewurf.projekte.netzschalter; + +import java.awt.Dimension; +import java.text.DateFormat; +import java.util.Date; + +import javax.swing.JTextArea; + +/** + * @author felix + */ +public class TextAreaLogger extends JTextArea implements Loggable { + + public TextAreaLogger() { + setMinimumSize(new Dimension(80,60)); + setPreferredSize(new Dimension(400,60)); + this.setRows(6); + this.setEditable(false); + LogMediator.getInstance().addObserver(this); + } + + public void log(String message) { + append(DateFormat.getInstance().format(new Date()) + ": " + message + "\n"); + } +} diff --git a/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenMockup.java b/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenMockup.java new file mode 100644 index 0000000..bee3709 --- /dev/null +++ b/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenMockup.java @@ -0,0 +1,38 @@ +/* + * Created on 12.05.2007 + * + * To change this generated comment go to + * Window>Preferences>Java>Code Generation>Code Template + */ +package de.bytewurf.projekte.netzschalter; + +/** + * @author felix + */ +public class NetzdosenMockup implements Netzdose { + + byte relaisState = 0; + + public int getNumberOfRelais() { + return 8; + } + + public int getRelais(int relaisNumber) { + if ((relaisNumber < 0) || (relaisNumber >= getNumberOfRelais())) + throw new IllegalArgumentException("Kein gültiger Wert"); + + return ((relaisState & (1 << relaisNumber)) == (1 << relaisNumber)) ? NetzdoseKonstanten.STATE_ON + : NetzdoseKonstanten.STATE_OFF; + } + + public void setRelais(int relaisNumber, int state) { + if ((relaisNumber < 0) || (relaisNumber >= getNumberOfRelais())) + throw new IllegalArgumentException("Kein gültiger Wert"); + + if (state == NetzdoseKonstanten.STATE_ON) + relaisState |= (1 << relaisNumber); + else + relaisState &= ~(1 << relaisNumber); + } + +} diff --git a/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenMockupTest.java b/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenMockupTest.java new file mode 100644 index 0000000..89e420f --- /dev/null +++ b/projekte/netzschalter/test/de/bytewurf/projekte/netzschalter/NetzdosenMockupTest.java @@ -0,0 +1,64 @@ +/* + * Created on 12.05.2007 + * + * To change this generated comment go to + * Window>Preferences>Java>Code Generation>Code Template + */ +package de.bytewurf.projekte.netzschalter; + +import junit.framework.TestCase; + +/** + * @author felix + */ +public class NetzdosenMockupTest extends TestCase { + + private Netzdose netzdose; + + protected void setUp() throws Exception { + netzdose = new NetzdosenMockup(); + netzdose.setRelais(4, NetzdoseKonstanten.STATE_ON); + netzdose.setRelais(7, NetzdoseKonstanten.STATE_ON); + } + + public void testSetRelaisArguments() { + netzdose.setRelais(0, NetzdoseKonstanten.STATE_ON); + netzdose.setRelais(3, NetzdoseKonstanten.STATE_ON); + netzdose.setRelais(7, NetzdoseKonstanten.STATE_ON); + assertTrue("8 ist kein gültiger Wert", checkSetRelaisWithException(8)); + assertTrue("-1 ist kein gültiger Wert", checkSetRelaisWithException(-1)); + } + + private boolean checkSetRelaisWithException(int relaisNumber) { + boolean exceptionOccured = false; + try { + netzdose.setRelais(relaisNumber, NetzdoseKonstanten.STATE_ON); + } catch (IllegalArgumentException e) { + exceptionOccured = true; + } + return exceptionOccured; + } + + public void testGetRelaisArguments() { + assertEquals(NetzdoseKonstanten.STATE_OFF, netzdose.getRelais(0)); + assertEquals(NetzdoseKonstanten.STATE_OFF, netzdose.getRelais(3)); + assertEquals(NetzdoseKonstanten.STATE_ON, netzdose.getRelais(4)); + assertEquals(NetzdoseKonstanten.STATE_ON, netzdose.getRelais(7)); + assertTrue("8 ist kein gültiger Wert", checkGetRelaisWithException(8)); + assertTrue("-1 ist kein gültiger Wert", checkGetRelaisWithException(-1)); + } + + private boolean checkGetRelaisWithException(int relaisNumber) { + boolean exceptionOccured = false; + try { + netzdose.getRelais(relaisNumber); + } catch (IllegalArgumentException e) { + exceptionOccured = true; + } + return exceptionOccured; + } + + public void testGetNumberOfRelais() { + assertEquals(8, netzdose.getNumberOfRelais()); + } +}