/** * Copyright (c) 2010-2017 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.eclipse.smarthome.binding.astro.internal.config; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.TimeZone; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; /** * Thing configuration from Eclipse SmartHome. * * @author Gerhard Riegler - Initial contribution */ public class AstroThingConfig { private String geolocation; private Integer altitude; private Double latitude; private Double longitude; private Integer interval; private String thingUid; /** * Splits the geolocation into latitude and longitude. */ public void parseGeoLocation() { String[] geoParts = StringUtils.split(geolocation, ","); if (geoParts.length == 2) { latitude = toDouble(geoParts[0]); longitude = toDouble(geoParts[1]); } } private Double toDouble(String value) { try { return Double.parseDouble(StringUtils.trimToNull(value)); } catch (NumberFormatException ex) { return null; } } /** * Returns the geolocation. */ public String getGeolocation() { return geolocation; } /** * Returns the latitude. */ public Double getLatitude() { return latitude; } /** * Returns the longitude. */ public Double getLongitude() { return longitude; } /** * Returns the longitude. */ public Integer getAltitude() { return altitude; } /** * Returns the interval. */ public Integer getInterval() { return interval; } /** * Returns the thing uid as string. */ public String getThingUid() { return thingUid; } /** * Sets the thing uid as string. */ public void setThingUid(String thingUid) { this.thingUid = thingUid; } /** * {@inheritDoc} */ @Override public String toString() { TimeZone tz = TimeZone.getDefault(); StringBuilder tzInfo = new StringBuilder(); tzInfo.append(tz.getID()); tzInfo.append(" (").append(tz.getDisplayName(false, TimeZone.SHORT)).append(" ") .append(new SimpleDateFormat("Z").format(Calendar.getInstance().getTime())); tzInfo.append(")"); return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("thing", thingUid) .append("geolocation", geolocation).append("altitude", altitude).append("interval", interval) .append("systemTimezone", tzInfo.toString()) .append("daylightSavings", Calendar.getInstance().get(Calendar.DST_OFFSET) != 0).toString(); } }