package de.bht.fpa.homeautomation.remote.v0;
import de.bht.fpa.homeautomation.vendors.CeilingFan;
import de.bht.fpa.homeautomation.vendors.CeilingFan.CeilingFanModus;
import de.bht.fpa.homeautomation.vendors.GarageDoor;
import de.bht.fpa.homeautomation.vendors.OutdoorLight;
import de.bht.fpa.homeautomation.vendors.SecurityControl;
import de.bht.fpa.homeautomation.vendors.Stereo;
public class Remote {
private static final int NR_OF_SLOTS = 7;
private final Object[] devices = new Object[NR_OF_SLOTS];
public void setSlot(int index, Object device) {
devices[index] = device;
}
public void onButtonWasPushed(int slotIndex) {
Object device = devices[slotIndex];
if (device == null) {
return;
}
if (device instanceof SecurityControl) {
SecurityControl securityControl = (SecurityControl) device;
securityControl.arm();
} else if (device instanceof GarageDoor) {
GarageDoor garageDoor = (GarageDoor) device;
garageDoor.lightOn();
garageDoor.stop();
garageDoor.up();
} else if (device instanceof OutdoorLight) {
OutdoorLight outdoorLight = (OutdoorLight) device;
outdoorLight.on();
} else if (device instanceof CeilingFan) {
CeilingFan ceilingFan = (CeilingFan) device;
if (ceilingFan.getSpeed() == CeilingFanModus.OFF) {
ceilingFan.low();
} else if (ceilingFan.getSpeed() == CeilingFanModus.LOW) {
ceilingFan.medium();
} else if (ceilingFan.getSpeed() == CeilingFanModus.MEDIUM) {
ceilingFan.high();
}
} else if (device instanceof Stereo) {
Stereo stereo = (Stereo) device;
stereo.on();
}
}
public void offButtonWasPushed(int slotIndex) {
Object device = devices[slotIndex];
if (device == null) {
return;
}
if (device instanceof SecurityControl) {
SecurityControl securityControl = (SecurityControl) device;
securityControl.disarm();
} else if (device instanceof GarageDoor) {
GarageDoor garageDoor = (GarageDoor) device;
garageDoor.stop();
garageDoor.down();
garageDoor.lightOff();
} else if (device instanceof OutdoorLight) {
OutdoorLight outdoorLight = (OutdoorLight) device;
outdoorLight.off();
} else if (device instanceof CeilingFan) {
CeilingFan ceilingFan = (CeilingFan) device;
if (ceilingFan.getSpeed() == CeilingFanModus.HIGH) {
ceilingFan.medium();
} else if (ceilingFan.getSpeed() == CeilingFanModus.MEDIUM) {
ceilingFan.low();
} else if (ceilingFan.getSpeed() == CeilingFanModus.LOW) {
ceilingFan.off();
}
} else if (device instanceof Stereo) {
Stereo stereo = (Stereo) device;
stereo.off();
}
}
}