/**
* 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.model;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
/**
* Holds the calculated sun data.
*
* @author Gerhard Riegler - Initial contribution
*/
public class Sun extends RiseSet implements Planet {
private Map<SunPhaseName, Range> ranges = new HashMap<SunPhaseName, Range>();
private Position position = new Position();
private SunZodiac zodiac = new SunZodiac(null, null);
private Season season = new Season();
private SunEclipse eclipse = new SunEclipse();
private Radiation radiation = new Radiation();
private SunPhase phase = new SunPhase();
/**
* Returns the astro dawn range.
*/
public Range getAstroDawn() {
return ranges.get(SunPhaseName.ASTRO_DAWN);
}
/**
* Sets the astro dawn range.
*/
public void setAstroDawn(Range astroDawn) {
ranges.put(SunPhaseName.ASTRO_DAWN, astroDawn);
}
/**
* Returns the nautic dawn range.
*/
public Range getNauticDawn() {
return ranges.get(SunPhaseName.NAUTIC_DAWN);
}
/**
* Sets the nautic dawn range.
*/
public void setNauticDawn(Range nauticDawn) {
ranges.put(SunPhaseName.NAUTIC_DAWN, nauticDawn);
}
/**
* Returns the civil dawn range.
*/
public Range getCivilDawn() {
return ranges.get(SunPhaseName.CIVIL_DAWN);
}
/**
* Sets the civil dawn range.
*/
public void setCivilDawn(Range civilDawn) {
ranges.put(SunPhaseName.CIVIL_DAWN, civilDawn);
}
/**
* Returns the civil dusk range.
*/
public Range getCivilDusk() {
return ranges.get(SunPhaseName.CIVIL_DUSK);
}
/**
* Sets the civil dusk range.
*/
public void setCivilDusk(Range civilDusk) {
ranges.put(SunPhaseName.CIVIL_DUSK, civilDusk);
}
/**
* Returns the nautic dusk range.
*/
public Range getNauticDusk() {
return ranges.get(SunPhaseName.NAUTIC_DUSK);
}
/**
* Sets the nautic dusk range.
*/
public void setNauticDusk(Range nauticDusk) {
ranges.put(SunPhaseName.NAUTIC_DUSK, nauticDusk);
}
/**
* Returns the astro dusk range.
*/
public Range getAstroDusk() {
return ranges.get(SunPhaseName.ASTRO_DUSK);
}
/**
* Sets the astro dusk range.
*/
public void setAstroDusk(Range astroDusk) {
ranges.put(SunPhaseName.ASTRO_DUSK, astroDusk);
}
/**
* Returns the noon range, start and end is always equal.
*/
public Range getNoon() {
return ranges.get(SunPhaseName.NOON);
}
/**
* Sets the noon range.
*/
public void setNoon(Range noon) {
ranges.put(SunPhaseName.NOON, noon);
}
/**
* Returns the daylight range.
*/
public Range getDaylight() {
return ranges.get(SunPhaseName.DAYLIGHT);
}
/**
* Sets the daylight range.
*/
public void setDaylight(Range daylight) {
ranges.put(SunPhaseName.DAYLIGHT, daylight);
}
/**
* Returns the morning night range.
*/
public Range getMorningNight() {
return ranges.get(SunPhaseName.MORNING_NIGHT);
}
/**
* Sets the morning night range.
*/
public void setMorningNight(Range morningNight) {
ranges.put(SunPhaseName.MORNING_NIGHT, morningNight);
}
/**
* Returns the evening night range.
*/
public Range getEveningNight() {
return ranges.get(SunPhaseName.EVENING_NIGHT);
}
/**
* Sets the evening night range.
*/
public void setEveningNight(Range eveningNight) {
ranges.put(SunPhaseName.EVENING_NIGHT, eveningNight);
}
/**
* Returns the night range.
*/
public Range getNight() {
return ranges.get(SunPhaseName.NIGHT);
}
/**
* Sets the night range.
*/
public void setNight(Range night) {
ranges.put(SunPhaseName.NIGHT, night);
}
/**
* Returns the sun position.
*/
public Position getPosition() {
return position;
}
/**
* Returns the sun radiation
*/
public Radiation getRadiation() {
return radiation;
}
/**
* Sets the sun position.
*/
public void setPosition(Position position) {
this.position = position;
}
/**
* Returns the zodiac.
*/
public SunZodiac getZodiac() {
return zodiac;
}
/**
* Sets the zodiac.
*/
public void setZodiac(SunZodiac zodiac) {
this.zodiac = zodiac;
}
/**
* Returns the seasons.
*/
public Season getSeason() {
return season;
}
/**
* Sets the seasons.
*/
public void setSeason(Season season) {
this.season = season;
}
/**
* Returns the eclipses.
*/
public SunEclipse getEclipse() {
return eclipse;
}
/**
* Sets the eclipses.
*/
public void setEclipse(SunEclipse eclipse) {
this.eclipse = eclipse;
}
/**
* Returns the sun phase.
*/
public SunPhase getPhase() {
return phase;
}
/**
* Sets the sun phase.
*/
public void setPhase(SunPhase phase) {
this.phase = phase;
}
/**
* Returns all ranges of the sun.
*/
public Map<SunPhaseName, Range> getAllRanges() {
return ranges;
}
/**
* {@inheritDoc}
*/
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("sunrise", getRise())
.append("noon", getNoon()).append("sunset", getSet()).append("night", getNight())
.append("morningNight", getMorningNight()).append("astroDawn", getAstroDawn())
.append("nauticDawn", getNauticDawn()).append("civilDawn", getCivilDawn())
.append("civilDusk", getCivilDusk()).append("nauticDusk", getNauticDawn())
.append("astroDusk", getAstroDusk()).append("daylight", getDaylight())
.append("eveningNight", getEveningNight()).append("eclipse", eclipse).append("phase", phase)
.append("radiation", radiation).toString();
}
}