// HelloIoT is a dashboard creator for MQTT // Copyright (C) 2017-2018 Adrián Romero Corchado. // // This file is part of HelloIot. // // HelloIot 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. // // HelloIot 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 HelloIot. If not, see <http://www.gnu.org/licenses/>. // package com.adr.helloiotlib.format; import java.nio.charset.StandardCharsets; import javafx.geometry.Pos; /** * * @author adrian */ public class StringFormatSwitch extends StringFormatPath { private String[] values = {"0", "1"}; private String[] pattern = {"OFF", "ON"}; public StringFormatSwitch() { this(null); } public StringFormatSwitch(String jsonpath) { super(jsonpath); } public String getValues() { return String.join(",", values); } public void setValues(String value) { values = value.split(","); } public String getPattern() { return String.join(",", pattern); } public void setPattern(String value) { pattern = value.split(","); } @Override public String toString() { return "SWITCH"; } @Override public Pos alignment() { return Pos.CENTER_LEFT; } @Override protected MiniVar valueImpl(String value) { if (value == null || value.isEmpty()) { return MiniVarBoolean.NULL; } else { return new MiniVarBoolean(values[1].equals(value)); } } @Override public String format(MiniVar value) { if (value.isEmpty()) { return ""; } else { return pattern[value.asBoolean() ? 1 : 0]; } } @Override public MiniVar parse(String formattedvalue) { if (formattedvalue == null || formattedvalue.isEmpty()) { return MiniVarBoolean.NULL; } else { return new MiniVarBoolean(pattern[1].equals(formattedvalue)); } } @Override public byte[] devalue(MiniVar formattedvalue) { String s = formattedvalue.asBoolean() ? values[1] : values[0]; return s.getBytes(StandardCharsets.UTF_8); } }