diff --git a/src/main/java/de/ctdo/bunti/dao/BuntiDevicesDAOImpl.java b/src/main/java/de/ctdo/bunti/dao/BuntiDevicesDAOImpl.java index d09e7e7..d1e17ec 100644 --- a/src/main/java/de/ctdo/bunti/dao/BuntiDevicesDAOImpl.java +++ b/src/main/java/de/ctdo/bunti/dao/BuntiDevicesDAOImpl.java @@ -2,6 +2,7 @@ package de.ctdo.bunti.dao; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import org.slf4j.Logger; @@ -28,7 +29,6 @@ public class BuntiDevicesDAOImpl implements BuntiDevicesDAO { devices.add(new Par56Spot(deviceID++, 11, "Par56 Lampe 3")); devices.add(new Par56Spot(deviceID++, 16, "Par56 Lampe 4")); devices.add(new Strobe1500(deviceID++, 21, "Stroboskop 1")); - devices.add(new Par56Spot(deviceID++, 508, "Par56 Lampe 5")); logger.debug("added dummy devices in DAO"); } @@ -36,14 +36,19 @@ public class BuntiDevicesDAOImpl implements BuntiDevicesDAO { @Override public final Collection getAllDMXDevices() { - List liste = new ArrayList(); + List list = new ArrayList(); for (BuntiDevice device : devices) { if( device instanceof BuntiDMXDevice ) { - liste.add((BuntiDMXDevice) device); + list.add((BuntiDMXDevice) device); } } - return liste; + return list; } + + @Override + public final Collection getAllDevices() { + return Collections.unmodifiableCollection(devices); + } @Override public final BuntiDevice getDeviceById(int deviceId) { diff --git a/src/main/java/de/ctdo/bunti/model/BuntiDMXDevice.java b/src/main/java/de/ctdo/bunti/model/BuntiDMXDevice.java index 1618977..86a728d 100644 --- a/src/main/java/de/ctdo/bunti/model/BuntiDMXDevice.java +++ b/src/main/java/de/ctdo/bunti/model/BuntiDMXDevice.java @@ -1,98 +1,112 @@ package de.ctdo.bunti.model; +import de.ctdo.bunti.dmx.DMX; +import de.ctdo.bunti.dmx.DMXChannel; +import de.ctdo.bunti.dmx.DMXChannels; + import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; -import de.ctdo.bunti.dmx.*; - public abstract class BuntiDMXDevice extends BuntiDevice { - private int startAddress; - private long lastSendOut; - private DMXChannels dmxChannels = new DMXChannels(); + private int startAddress; + private long lastSendOut; + private final DMXChannels dmxChannels = new DMXChannels(); - public BuntiDMXDevice(int deviceId, int startAddress, String name) { - super(deviceId,name); + public BuntiDMXDevice(int deviceId, int startAddress, String name) { + super(deviceId, name); this.startAddress = startAddress; - } - - public final long getLastSendOut() { - return lastSendOut; - } + } - public final void setSendOutNow() { - this.lastSendOut = System.currentTimeMillis(); - } - - public final int getStartAddress() { - return startAddress; - } + public final long getLastSendOut() { + return lastSendOut; + } - public final void setStartAddress(int startAddress) { - this.startAddress = startAddress; - } + public final void setSendOutNow() { + this.lastSendOut = System.currentTimeMillis(); + } - /** - * Set channel value by given channel name. - * @param name The channel name to change the value. - * @param value The channel value to set. + public final int getStartAddress() { + return startAddress; + } + + public final void setStartAddress(int startAddress) { + this.startAddress = startAddress; + } + + /** + * Set channel value by given channel name. + * + * @param name The channel name to change the value. + * @param value The channel value to set. * @return True on success, otherwise false - */ - protected final boolean setChannelValueByName(String name, int value) { - DMXChannel dx = dmxChannels.getChannelByName(name); - if(dx != null) { - dx.setValue(DMX.sanitizeDMXValue(value)); + */ + protected final boolean setChannelValueByName(String name, int value) { + DMXChannel dx = dmxChannels.getChannelByName(name); + if (dx != null) { + dx.setValue(DMX.sanitizeDMXValue(value)); lastChangedNow(); return true; - } - return false; - } - - /** - * Returns the channel value identified by channel name. - * @param name The channel name to get the value from. - * @return The desired channel value. - */ - protected final int getChannelValueByName(String name) { - DMXChannel dx = dmxChannels.getChannelByName(name); - if(dx != null) { - return dx.getValue(); - } - return 0; - } + } + return false; + } - public Map getChannelData() { - Map map = new HashMap(); - - for (DMXChannel channel : dmxChannels.getAllChannels()) { - int index = channel.getOffset() + startAddress + DMX.DMX_STARTADDRESS_OFFSET; - - if(index >= DMX.DMX_CHANNELS_MIN && index <= DMX.DMX_CHANNELS_MAX){ - map.put(index, channel.getValue()); - } - } - - return map; - } + /** + * Returns the channel value identified by channel name. + * + * @param name The channel name to get the value from. + * @return The desired channel value. + */ + protected final int getChannelValueByName(String name) { + DMXChannel dx = dmxChannels.getChannelByName(name); + if (dx != null) { + return dx.getValue(); + } + return 0; + } - @Override - public final boolean setValuesFromOptions(Map options) { - - for (Entry opt : options.entrySet()) { + /** + * Collect the DMX Channel Data with correct DMX512 calculated offsets + * @return The channel data with startaddress+offset of every channel + */ + public Map getChannelData() { + Map map = new HashMap(); + + for (DMXChannel channel : dmxChannels.getAllChannels()) { + int index = channel.getOffset() + startAddress + DMX.DMX_STARTADDRESS_OFFSET; + + if (index >= DMX.DMX_CHANNELS_MIN && index <= DMX.DMX_CHANNELS_MAX) { + map.put(index, channel.getValue()); + } + } + + return map; + } + + @Override + public final boolean setValuesFromOptions(Map options) { + + for (Entry opt : options.entrySet()) { try { int value = Integer.parseInt(opt.getValue().toString()); - if(!setChannelValueByName(opt.getKey(), value)) { + if (!setChannelValueByName(opt.getKey(), value)) { return false; } } catch (Exception e) { return false; } - } - return true; - } + } + return true; + } - public final boolean addChannel(DMXChannel channel){ + /** + * Add a channel to this DMX Device + * used internally by subclasses to define their structure + * @param channel DMXChannel to add (name and offset) + * @return True on success, false otherwise. + */ + public final boolean addChannel(DMXChannel channel) { return dmxChannels.addChannel(channel); } } diff --git a/src/main/java/de/ctdo/bunti/model/BuntiDevice.java b/src/main/java/de/ctdo/bunti/model/BuntiDevice.java index 4375fd3..04f3fd3 100644 --- a/src/main/java/de/ctdo/bunti/model/BuntiDevice.java +++ b/src/main/java/de/ctdo/bunti/model/BuntiDevice.java @@ -3,9 +3,9 @@ package de.ctdo.bunti.model; import java.util.Map; public abstract class BuntiDevice { - private int deviceId; - private String deviceName; - private long lastChanged; + private int deviceId; + private String deviceName; + private long lastChanged; public BuntiDevice(int deviceId, String deviceName, long lastChanged) { this.deviceId = deviceId; @@ -14,44 +14,45 @@ public abstract class BuntiDevice { } public BuntiDevice(int deviceId, String deviceName) { - this(deviceId,deviceName,System.currentTimeMillis()); + this(deviceId, deviceName, System.currentTimeMillis()); } public final int getDeviceId() { - return deviceId; - } + return deviceId; + } - public final long getLastChanged() { - return lastChanged; - } - - protected final void lastChangedNow() { - this.lastChanged = System.currentTimeMillis(); - } - - public final String getDeviceName() { - return deviceName; - } + public final long getLastChanged() { + return lastChanged; + } - public final void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } + protected final void lastChangedNow() { + this.lastChanged = System.currentTimeMillis(); + } - /** - * Switch this device off. - */ - public abstract void switchOff(); - - /** - * Switch this device on. - */ - public abstract void switchOn(); - - /** - * The the internal options corresponding to the given Key Value Map - * @param options The options Map. - * @return True on success. False otherwise. - */ - public abstract boolean setValuesFromOptions(Map options); + public final String getDeviceName() { + return deviceName; + } + + public final void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + /** + * Switch this device off. + */ + public abstract void switchOff(); + + /** + * Switch this device on. + */ + public abstract void switchOn(); + + /** + * The the internal options corresponding to the given Key Value Map + * + * @param options The options Map. + * @return True on success. False otherwise. + */ + public abstract boolean setValuesFromOptions(Map options); } diff --git a/src/main/java/de/ctdo/bunti/model/BuntiSwitchingDevice.java b/src/main/java/de/ctdo/bunti/model/BuntiSwitchingDevice.java index cd90b42..b9b5bba 100644 --- a/src/main/java/de/ctdo/bunti/model/BuntiSwitchingDevice.java +++ b/src/main/java/de/ctdo/bunti/model/BuntiSwitchingDevice.java @@ -2,7 +2,7 @@ package de.ctdo.bunti.model; import java.util.Map; -public class BuntiSwitchingDevice extends BuntiDevice { +public abstract class BuntiSwitchingDevice extends BuntiDevice { public BuntiSwitchingDevice(int deviceId, String deviceName, long lastChanged) { @@ -13,24 +13,11 @@ public class BuntiSwitchingDevice extends BuntiDevice { super(deviceId, deviceName); } + @Override - public void switchOff() { - // TODO Auto-generated method stub - - } - - @Override - public void switchOn() { - // TODO Auto-generated method stub - - } - - @Override - public final boolean setValuesFromOptions(Map options) { - // TODO Auto-generated method stub - return false; - } - - // zum Beispiel Lampel, also nen Hostname und HTTP Krams hier rein + public final boolean setValuesFromOptions(Map options) { + // TODO Auto-generated method stub + return false; + } } diff --git a/src/main/java/de/ctdo/bunti/model/Par56Spot.java b/src/main/java/de/ctdo/bunti/model/Par56Spot.java index e1b3b82..c815ae1 100644 --- a/src/main/java/de/ctdo/bunti/model/Par56Spot.java +++ b/src/main/java/de/ctdo/bunti/model/Par56Spot.java @@ -8,58 +8,63 @@ public class Par56Spot extends BuntiDMXDevice { private static final String CHANNEL_MODE = "mode"; private static final String CHANNEL_RED = "red"; private static final String CHANNEL_GREEN = "green"; - private static final String CHANNEL_BLUE = "blue"; - private static final String CHANNEL_SPEED = "speed"; - - public Par56Spot(int deviceId, int startAddress, String deviceName) { - super(deviceId, startAddress, deviceName); + private static final String CHANNEL_BLUE = "blue"; + private static final String CHANNEL_SPEED = "speed"; - addChannel(new DMXChannel(0, CHANNEL_MODE)); - addChannel(new DMXChannel(1, CHANNEL_RED)); - addChannel(new DMXChannel(2, CHANNEL_GREEN)); - addChannel(new DMXChannel(3, CHANNEL_BLUE)); - addChannel(new DMXChannel(4, CHANNEL_SPEED)); - } - - public final void setColorRed(int value) { - setChannelValueByName(CHANNEL_RED, value); - } - public final void setColorGreen(int value) { - setChannelValueByName(CHANNEL_GREEN, value); - } - public final void setColorBlue(int value) { - setChannelValueByName(CHANNEL_BLUE, value); - } - public final int getColorRed() { - return getChannelValueByName(CHANNEL_RED); - } - public final int getColorGreen() { - return getChannelValueByName(CHANNEL_GREEN); - } - public final int getColorBlue() { - return getChannelValueByName(CHANNEL_BLUE); - } - - @Override - public final void switchOff() { - setChannelValueByName(CHANNEL_MODE, DMX.DMX_CHANNEL_VALUE_MIN); - setColorRed(DMX.DMX_CHANNEL_VALUE_MIN); - setColorGreen(DMX.DMX_CHANNEL_VALUE_MIN); - setColorBlue(DMX.DMX_CHANNEL_VALUE_MIN); - setChannelValueByName(CHANNEL_SPEED, DMX.DMX_CHANNEL_VALUE_MIN); - } + public Par56Spot(int deviceId, int startAddress, String deviceName) { + super(deviceId, startAddress, deviceName); - @Override - public final void switchOn() { - setChannelValueByName(CHANNEL_MODE, DMX.DMX_CHANNEL_VALUE_MIN); - setColorRed(DMX.DMX_CHANNEL_VALUE_MAX); - setColorGreen(DMX.DMX_CHANNEL_VALUE_MAX); - setColorBlue(DMX.DMX_CHANNEL_VALUE_MAX); - setChannelValueByName(CHANNEL_SPEED, DMX.DMX_CHANNEL_VALUE_MIN); - } + addChannel(new DMXChannel(0, CHANNEL_MODE)); + addChannel(new DMXChannel(1, CHANNEL_RED)); + addChannel(new DMXChannel(2, CHANNEL_GREEN)); + addChannel(new DMXChannel(3, CHANNEL_BLUE)); + addChannel(new DMXChannel(4, CHANNEL_SPEED)); + } - @Override - public final String toString() { + public final void setColorRed(int value) { + setChannelValueByName(CHANNEL_RED, value); + } + + public final void setColorGreen(int value) { + setChannelValueByName(CHANNEL_GREEN, value); + } + + public final void setColorBlue(int value) { + setChannelValueByName(CHANNEL_BLUE, value); + } + + public final int getColorRed() { + return getChannelValueByName(CHANNEL_RED); + } + + public final int getColorGreen() { + return getChannelValueByName(CHANNEL_GREEN); + } + + public final int getColorBlue() { + return getChannelValueByName(CHANNEL_BLUE); + } + + @Override + public final void switchOff() { + setChannelValueByName(CHANNEL_MODE, DMX.DMX_CHANNEL_VALUE_MIN); + setColorRed(DMX.DMX_CHANNEL_VALUE_MIN); + setColorGreen(DMX.DMX_CHANNEL_VALUE_MIN); + setColorBlue(DMX.DMX_CHANNEL_VALUE_MIN); + setChannelValueByName(CHANNEL_SPEED, DMX.DMX_CHANNEL_VALUE_MIN); + } + + @Override + public final void switchOn() { + setChannelValueByName(CHANNEL_MODE, DMX.DMX_CHANNEL_VALUE_MIN); + setColorRed(DMX.DMX_CHANNEL_VALUE_MAX); + setColorGreen(DMX.DMX_CHANNEL_VALUE_MAX); + setColorBlue(DMX.DMX_CHANNEL_VALUE_MAX); + setChannelValueByName(CHANNEL_SPEED, DMX.DMX_CHANNEL_VALUE_MIN); + } + + @Override + public final String toString() { StringBuilder sb = new StringBuilder(); sb.append("Par56Spot "); sb.append(getDeviceId()); @@ -72,7 +77,7 @@ public class Par56Spot extends BuntiDMXDevice { sb.append(","); sb.append(getColorBlue()); sb.append("]"); - return sb.toString(); - } + return sb.toString(); + } } diff --git a/src/main/java/de/ctdo/bunti/model/Strobe1500.java b/src/main/java/de/ctdo/bunti/model/Strobe1500.java index 36d63d0..f0bd9f7 100644 --- a/src/main/java/de/ctdo/bunti/model/Strobe1500.java +++ b/src/main/java/de/ctdo/bunti/model/Strobe1500.java @@ -4,57 +4,57 @@ import de.ctdo.bunti.dmx.DMX; import de.ctdo.bunti.dmx.DMXChannel; public class Strobe1500 extends BuntiDMXDevice { - - private static final String CHANNEL_SPEED = "speed"; - private static final String CHANNEL_INTENSITY = "intensity"; - private static final String CHANNEL_MODE = "mode"; - - public Strobe1500(int deviceId, int startAddress, String deviceName) { - super(deviceId, startAddress, deviceName); - - addChannel(new DMXChannel(0, CHANNEL_SPEED)); - addChannel(new DMXChannel(1, CHANNEL_INTENSITY)); - addChannel(new DMXChannel(2, CHANNEL_MODE)); - } - - public final boolean setSpeed(int value) { - return setChannelValueByName(CHANNEL_SPEED, value); - } + + private static final String CHANNEL_SPEED = "speed"; + private static final String CHANNEL_INTENSITY = "intensity"; + private static final String CHANNEL_MODE = "mode"; + + public Strobe1500(int deviceId, int startAddress, String deviceName) { + super(deviceId, startAddress, deviceName); + + addChannel(new DMXChannel(0, CHANNEL_SPEED)); + addChannel(new DMXChannel(1, CHANNEL_INTENSITY)); + addChannel(new DMXChannel(2, CHANNEL_MODE)); + } + + public final boolean setSpeed(int value) { + return setChannelValueByName(CHANNEL_SPEED, value); + } public final boolean setIntensity(int value) { - return setChannelValueByName(CHANNEL_INTENSITY, value); - } + return setChannelValueByName(CHANNEL_INTENSITY, value); + } public final boolean setMode(int value) { - return setChannelValueByName(CHANNEL_MODE, value); - } + return setChannelValueByName(CHANNEL_MODE, value); + } - public final int getSpeed() { - return getChannelValueByName(CHANNEL_SPEED); - } + public final int getSpeed() { + return getChannelValueByName(CHANNEL_SPEED); + } public final int getIntensity() { - return getChannelValueByName(CHANNEL_INTENSITY); - } + return getChannelValueByName(CHANNEL_INTENSITY); + } public final int getMode() { - return getChannelValueByName(CHANNEL_MODE); - } - - @Override - public final void switchOff() { - setChannelValueByName(CHANNEL_MODE, DMX.DMX_CHANNEL_VALUE_MIN); - setChannelValueByName(CHANNEL_SPEED, DMX.DMX_CHANNEL_VALUE_MIN); - setChannelValueByName(CHANNEL_INTENSITY, DMX.DMX_CHANNEL_VALUE_MIN); - } + return getChannelValueByName(CHANNEL_MODE); + } + + @Override + public final void switchOff() { + setChannelValueByName(CHANNEL_MODE, DMX.DMX_CHANNEL_VALUE_MIN); + setChannelValueByName(CHANNEL_SPEED, DMX.DMX_CHANNEL_VALUE_MIN); + setChannelValueByName(CHANNEL_INTENSITY, DMX.DMX_CHANNEL_VALUE_MIN); + } + + @Override + public final void switchOn() { + setChannelValueByName(CHANNEL_MODE, DMX.DMX_CHANNEL_VALUE_MIN); + setChannelValueByName(CHANNEL_SPEED, DMX.DMX_CHANNEL_VALUE_MAX); + setChannelValueByName(CHANNEL_INTENSITY, DMX.DMX_CHANNEL_VALUE_MAX); + } - @Override - public final void switchOn() { - setChannelValueByName(CHANNEL_MODE, DMX.DMX_CHANNEL_VALUE_MIN); - setChannelValueByName(CHANNEL_SPEED, DMX.DMX_CHANNEL_VALUE_MAX); - setChannelValueByName(CHANNEL_INTENSITY, DMX.DMX_CHANNEL_VALUE_MAX); - } - @Override public final String toString() { StringBuilder sb = new StringBuilder();