/* * MessageTarget.java - Copyright(c) 2014 Joe Pasqua * Provided under the MIT License. See the LICENSE file for details. * Created: Jun 12, 2014 */ package org.noroomattheinn.visibletesla; import org.noroomattheinn.utils.Utils; import static org.noroomattheinn.tesla.Tesla.logger; class MessageTarget { private String address, subject, message; private final String theKey; private final String dfltSubj, dfltMsg; private final Prefs prefs; MessageTarget(Prefs prefs, String theKey, String dfltSubj, String dfltMsg) { this.prefs = prefs; this.theKey = theKey; this.dfltSubj = dfltSubj; this.dfltMsg = dfltMsg; this.internalize(); } String getActiveEmail() { return address != null ? address : prefs.notificationAddress.get(); } String getActiveSubj() { return subject != null ? subject : dfltSubj; } String getActiveMsg() { return message != null ? message : dfltMsg; } String getEmail() { return address; } void setEmail(String email) { address = email; } String getSubject() { return subject; } void setSubject(String subject) { this.subject = subject; } String getMessage() { return message; } void setMessage(String msg) { this.message = msg; } final void externalize() { String encoded = String.format("%s_%s_%s", address == null ? "null" : encodeUnderscore(address), subject == null ? "null" : encodeUnderscore(subject), message == null ? "null" : Utils.toB64(message.getBytes())); prefs.storage().put(theKey, encoded); } final void internalize() { address = subject = message = null; String encoded = prefs.storage().get(theKey, ""); if (encoded.isEmpty()) return; String[] elements = encoded.split("_"); if (elements.length < 2 || elements.length > 3) { logger.warning("Malformed MessageTarget String: " + encoded); return; } address = elements[0].equals("null") ? null : decodeUnderscore(elements[0]); subject = elements[1].equals("null") ? null : decodeUnderscore(elements[1]); if (elements.length == 3) { message = elements[2].equals("null") ? null : Utils.decodeB64(elements[2]); } } private String encodeUnderscore(String input) { return input.replace("_", "_"); } private String decodeUnderscore(String input) { return input.replace("_", "_"); } }