package com.homesnap.engine.connector.openwebnet.convert;
import com.homesnap.engine.controller.who.Who;
/*
* #%L
* HomeSnapEngine
* %%
* Copyright (C) 2011 - 2016 A. de Giuli
* %%
* This file is part of HomeSnap done by Arnaud de Giuli (arnaud.degiuli(at)free.fr)
* helped by Olivier Driesbach (olivier.driesbach(at)gmail.com).
*
* HomeSnap is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* HomeSnap is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with HomeSnap. If not, see <http://www.gnu.org/licenses/>.
* #L%
*/
public enum OpenWebNetWho {
// WHO 28 €
WHO_SCENARIO("0"),
WHO_LIGHTING("1"),
WHO_AUTOMATION("2"),
WHO_POWER_MANAGEMENT("3"),
WHO_HEATING_ADJUSTMENT("4"),
WHO_BURGLAR_ALARM("5"), // not supported
WHO_DOOR_ENTRY("6"), // not supported
WHO_MULTIMEDIA("7"),
WHO_AUXILIARY("9"), // not supported
WHO_GATEWAY("13"),
WHO_LIGHT_SHUTTERS_ACTUATORS_LOCK("14"), // not supported
WHO_CEN_SCENARIO_SCHEDULER_SWITCH("15"), // not supported
WHO_SOUND_SYSTEM("16"),
WHO_SCENARIO_PROGRAMMING("17"), // not supported
WHO_ENERGY_MANAGEMENT("18"),
WHO_LIGHT_MANAGEMENT("24"), // not supported
WHO_CEN_SCENARIO_SCHEDULER_BUTTONS("25"), // not supported
WHO_DIAGNOSTIC("1000"), // not supported
WHO_AUTOMATION_DIAGNOSTIC("1001"), // not supported
WHO_DIAGNOSTIC_OF_HEATING_ADJUSTMENT("1004"),
WHO_DEVICE_DIAGNOSTIC("1013"); // not supported
private String code;
private OpenWebNetWho(String code) {
this.code = code;
}
public String getValue() {
return code;
}
public static OpenWebNetWho convert(Who who) {
switch (who) {
case AUTOMATION:
return WHO_AUTOMATION;
case DIAGNOSTIC_OF_HEATING_ADJUSTMENT:
return WHO_DIAGNOSTIC_OF_HEATING_ADJUSTMENT;
case GATEWAY:
return WHO_GATEWAY;
case HEATING_ADJUSTMENT:
return WHO_HEATING_ADJUSTMENT;
case LIGHT:
return WHO_LIGHTING;
case POWER_MANAGEMENT:
return WHO_POWER_MANAGEMENT;
case SCENARIO:
return WHO_SCENARIO;
case SOUND_SYSTEM:
return WHO_SOUND_SYSTEM;
case ENERGY_MANAGEMENT:
return WHO_ENERGY_MANAGEMENT;
default:
throw new UnsupportedOperationException(who.name() + " is not supported with OpenWebNet.");
}
}
public static Who convert(String w) {
OpenWebNetWho who = null;
for (OpenWebNetWho ow : OpenWebNetWho.values()) {
if (ow.getValue().equals(w)) {
who = ow;
break;
}
}
if (WHO_SCENARIO.equals(who)) {
return Who.SCENARIO;
} else if (WHO_LIGHTING.equals(who)) {
return Who.LIGHT;
} else if (WHO_AUTOMATION.equals(who)) {
return Who.AUTOMATION;
} else if (WHO_POWER_MANAGEMENT.equals(who)) {
return Who.POWER_MANAGEMENT;
} else if (WHO_HEATING_ADJUSTMENT.equals(who)) {
return Who.HEATING_ADJUSTMENT;
} else if (WHO_MULTIMEDIA.equals(who)) {
return Who.MULTIMEDIA;
} else if (WHO_GATEWAY.equals(who)) {
return Who.GATEWAY;
} else if (WHO_SOUND_SYSTEM.equals(who)) {
return Who.SOUND_SYSTEM;
} else if (WHO_ENERGY_MANAGEMENT.equals(who)) {
return Who.ENERGY_MANAGEMENT;
} else if (WHO_DIAGNOSTIC_OF_HEATING_ADJUSTMENT.equals(who)) {
return Who.DIAGNOSTIC_OF_HEATING_ADJUSTMENT;
} else {
throw new UnsupportedOperationException(w + " is not supported with OpenWebNet.");
}
}
}