1 /* 2 Copyright (C) 2007 Dirk Huenniger 3 4 This library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 This library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with this library; if not, write to the Free Software 16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 */ 18 19 package org.indi.objects; 20 21 /** 22 * An object representing a single indi switch 23 * 24 * @author dirk 25 * 26 */ 27 public class Switch extends Element { 28 /** 29 * 30 */ 31 private static final long serialVersionUID = 1L; 32 33 /** 34 * the state of the switch 35 * 36 * @author Dirk Hünniger 37 * 38 */ 39 public enum State { 40 Off, On 41 } 42 43 /** 44 * class constructor 45 * 46 * @param name 47 * the name of the Switch 48 * @param label 49 * the label of the Switch (to be used for display in the 50 * GUI) 51 * @param state 52 * the state of the Switch 53 */ 54 public Switch(String name, String label, State state) { 55 super(name, label, state == State.On ? "On" : "Off"); 56 } 57 58 /** 59 * 60 * @param name 61 * the name of the Switch 62 * @param value 63 * the value of the switch may be either On or Off 64 */ 65 public Switch(String name, String value) { 66 super(name, null, value); 67 if (value.equals("On")) { 68 return; 69 } 70 if (value.equals("Off")) { 71 return; 72 } 73 throw new BadValueException(value); 74 } 75 76 /** 77 * set the state of the switch 78 * 79 * @param state 80 * the new state of the switch 81 */ 82 public void setState(Switch.State state) { 83 this.value = state.toString(); 84 }; 85 86 /** 87 * class constructor 88 * 89 * @param name 90 * the name of the Switch 91 * @param label 92 * the label of the Switch (to be used for display in the 93 * GUI) 94 * @param value 95 * the value of the Switch (either On of Off) 96 */ 97 public Switch(String name, String label, String value) { 98 super(name, label, value); 99 } 100 101 /** 102 * 103 * @return the state of the switch 104 */ 105 public State getState() { 106 return (this.value.equals("On")) ? State.On : State.Off; 107 } 108 109 @Override 110 protected String getType() { 111 return "Switch"; 112 } 113 }