/* ================================================================== * DayDatum.java - Oct 22, 2014 2:41:56 PM * * Copyright 2007-2014 SolarNetwork.net Dev Team * * This program 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 2 of * the License, or (at your option) any later version. * * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA * ================================================================== */ package net.solarnetwork.node.domain; import java.math.BigDecimal; import org.joda.time.LocalTime; /** * Solar day related datum. * * @author matt * @version 1.2 */ public interface DayDatum extends Datum { /** * A {@link net.solarnetwork.domain.GeneralDatumSamples} instantaneous * sample key for {@link DayDatum#getSunrise()} values. */ static final String SUNRISE_KEY = "sunrise"; /** * A {@link net.solarnetwork.domain.GeneralDatumSamples} instantaneous * sample key for {@link DayDatum#getSunset()} values. */ static final String SUNSET_KEY = "sunset"; /** * A {@link net.solarnetwork.domain.GeneralDatumSamples} instantaneous * sample key for {@link DayDatum#getSunrise()} values. * * @since 1.1 */ static final String MOONRISE_KEY = "moonrise"; /** * A {@link net.solarnetwork.domain.GeneralDatumSamples} instantaneous * sample key for {@link DayDatum#getSunset()} values. * * @since 1.1 */ static final String MOONSET_KEY = "moonset"; /** * A {@link net.solarnetwork.domain.GeneralDatumSamples} instantaneous * sample key for {@link DayDatum#getTemperatureMaximum()} values. * * @since 1.1 */ static final String TEMPERATURE_MAXIMUM_KEY = "tempMax"; /** * A {@link net.solarnetwork.domain.GeneralDatumSamples} instantaneous * sample key for {@link DayDatum#getTemperatureMinimum()} values. * * @since 1.1 */ static final String TEMPERATURE_MINIMUM_KEY = "tempMin"; /** * A {@link net.solarnetwork.domain.GeneralDatumSamples} status sample key * for {@link DayDatum#getSkyConditions()} values. */ static final String SKY_CONDITIONS_KEY = "sky"; /** * A {@link net.solarnetwork.domain.GeneralDatumSamples} status sample key * for {@link DayDatum#getBriefOverview()} values. * * @since 1.2 */ static final String BRIEF_OVERVIEW_KEY = "brief"; /** * A {@link net.solarnetwork.domain.GeneralDatumSamples} status sample key * for {@link AtmosphericDatum#getWindSpeed()} values. * * @since 1.2 */ static final String WIND_SPEED_KEY = "wspeed"; /** * A {@link net.solarnetwork.domain.GeneralDatumSamples} status sample key * for {@link AtmosphericDatum#getWindDirection()} values. * * @since 1.2 */ static final String WIND_DIRECTION_KEY = "wdir"; /** * A {@link net.solarnetwork.domain.GeneralDatumSamples} status sample key * for {@link AtmosphericDatum#getRain()} values. * * @since 1.2 */ static final String RAIN_KEY = "rain"; /** * A {@link net.solarnetwork.domain.GeneralDatumSamples} status sample key * for {@link AtmosphericDatum#getSnow()} values. * * @since 1.2 */ static final String SNOW_KEY = "snow"; /** * A tag for a forecast day sample, as opposed to an actual measurement. * * @since 1.2 */ static final String TAG_FORECAST = "forecast"; /** * Get the sunrise time. * * @return the sunrise */ LocalTime getSunrise(); /** * Get the sunset time. * * @return the sunset */ LocalTime getSunset(); /** * Get the sunrise time. * * @return the moonrise * @since 1.1 */ LocalTime getMoonrise(); /** * Get the moonset time. * * @return the moonset * @since 1.1 */ LocalTime getMoonset(); /** * Get the minimum temperature for the day. * * @return The minimum temperature. * @since 1.1 */ BigDecimal getTemperatureMinimum(); /** * Get the maximum temperature for the day. * * @return The maximum temperature. * @since 1.1 */ BigDecimal getTemperatureMaximum(); /** * Get a textual description of the sky conditions, e.g. "clear", "cloudy", * etc. * * @return general sky conditions * @since 1.1 */ String getSkyConditions(); /** * Get a brief textual description of the overall conditions, e.g. "Sunshine * and some clouds. High 18C. Winds N at 10 to 15 km/h." * * @return general overall conditions description * @since 1.2 */ String getBriefOverview(); /** * Get the wind speed, in meters / second. * * @return wind speed * @since 1.2 */ BigDecimal getWindSpeed(); /** * Get the wind direction, in degrees. * * @return wind direction * @since 1.2 */ Integer getWindDirection(); /** * Get the rain accumulation, in millimeters. * * @return rain accumulation * @since 1.2 */ Integer getRain(); /** * Get the snow accumulation, in millimeters. * * @return snow accumulation * @since 1.2 */ Integer getSnow(); }