[astro] Simplify SunPhase handling (#20112)

* Removes SunPhaseName holder class SunPhase
Renames SunPhaseName to SunPhase

Signed-off-by: gael@lhopital.org <gael@lhopital.org>
This commit is contained in:
Gaël L'hopital
2026-01-21 17:54:01 +01:00
committed by GitHub
parent 6d17ab95b3
commit eedca50fa2
11 changed files with 209 additions and 398 deletions
@@ -23,7 +23,7 @@ import org.openhab.binding.astro.internal.AstroBindingConstants;
import org.openhab.binding.astro.internal.handler.AstroThingHandler;
import org.openhab.binding.astro.internal.handler.SunHandler;
import org.openhab.binding.astro.internal.model.Radiation;
import org.openhab.binding.astro.internal.model.SunPhaseName;
import org.openhab.binding.astro.internal.model.SunPhase;
import org.openhab.core.automation.annotation.ActionInput;
import org.openhab.core.automation.annotation.ActionOutput;
import org.openhab.core.automation.annotation.RuleAction;
@@ -139,7 +139,7 @@ public class AstroActions implements ThingActions {
AstroThingHandler theHandler = this.handler;
if (theHandler != null) {
if (theHandler instanceof SunHandler sunHandler) {
SunPhaseName phase = SunPhaseName.valueOf(phaseName.toUpperCase(Locale.ROOT));
SunPhase phase = SunPhase.valueOf(phaseName.toUpperCase(Locale.ROOT));
return sunHandler.getEventTime(phase,
date != null ? date : ZonedDateTime.now(timeZoneProvider.getTimeZone()),
moment == null || AstroBindingConstants.EVENT_START.equalsIgnoreCase(moment));
@@ -32,7 +32,7 @@ import org.openhab.binding.astro.internal.model.Position;
import org.openhab.binding.astro.internal.model.Range;
import org.openhab.binding.astro.internal.model.Season;
import org.openhab.binding.astro.internal.model.Sun;
import org.openhab.binding.astro.internal.model.SunPhaseName;
import org.openhab.binding.astro.internal.model.SunPhase;
import org.openhab.binding.astro.internal.util.AstroConstants;
import org.openhab.binding.astro.internal.util.DateTimeUtils;
import org.openhab.binding.astro.internal.util.MathUtils;
@@ -160,30 +160,30 @@ public class SunCalc {
double jastro2 = getSunriseJulianDate(jtransit, jdark);
Sun sun = new Sun();
sun.setAstroDawn(new Range(DateTimeUtils.toCalendar(jastro2, zone, locale),
sun.setRange(SunPhase.ASTRO_DAWN, new Range(DateTimeUtils.toCalendar(jastro2, zone, locale),
DateTimeUtils.toCalendar(jnau2, zone, locale)));
sun.setAstroDusk(new Range(DateTimeUtils.toCalendar(jastro, zone, locale),
sun.setRange(SunPhase.ASTRO_DUSK, new Range(DateTimeUtils.toCalendar(jastro, zone, locale),
DateTimeUtils.toCalendar(jdark, zone, locale)));
if (onlyAstro) {
return sun;
}
sun.setNoon(new Range(DateTimeUtils.toCalendar(jtransit, zone, locale),
sun.setRange(SunPhase.NOON, new Range(DateTimeUtils.toCalendar(jtransit, zone, locale),
DateTimeUtils.toCalendar(jtransit + DateTimeUtils.JD_ONE_MINUTE_FRACTION, zone, locale)));
sun.setRise(new Range(DateTimeUtils.toCalendar(jrise, zone, locale),
DateTimeUtils.toCalendar(jriseend, zone, locale)));
sun.setSet(new Range(DateTimeUtils.toCalendar(jsetstart, zone, locale),
DateTimeUtils.toCalendar(jset, zone, locale)));
sun.setCivilDawn(new Range(DateTimeUtils.toCalendar(jciv2, zone, locale),
sun.setRange(SunPhase.CIVIL_DAWN, new Range(DateTimeUtils.toCalendar(jciv2, zone, locale),
DateTimeUtils.toCalendar(jrise, zone, locale)));
sun.setCivilDusk(
sun.setRange(SunPhase.CIVIL_DUSK,
new Range(DateTimeUtils.toCalendar(jset, zone, locale), DateTimeUtils.toCalendar(jnau, zone, locale)));
sun.setNauticDawn(new Range(DateTimeUtils.toCalendar(jnau2, zone, locale),
sun.setRange(SunPhase.NAUTIC_DAWN, new Range(DateTimeUtils.toCalendar(jnau2, zone, locale),
DateTimeUtils.toCalendar(jciv2, zone, locale)));
sun.setNauticDusk(new Range(DateTimeUtils.toCalendar(jnau, zone, locale),
sun.setRange(SunPhase.NAUTIC_DUSK, new Range(DateTimeUtils.toCalendar(jnau, zone, locale),
DateTimeUtils.toCalendar(jastro, zone, locale)));
boolean isSunUpAllDay = isSunUpAllDay(calendar, latitude, longitude, altitude);
@@ -198,44 +198,45 @@ public class SunCalc {
} else {
daylightRange = new Range(sun.getRise().getEnd(), sun.getSet().getStart());
}
sun.setDaylight(daylightRange);
sun.setRange(SunPhase.DAYLIGHT, daylightRange);
// morning night
Sun sunYesterday = getSunInfo(DateTimeUtils.addDays(calendar, -1), latitude, longitude, altitude, true,
useMeteorologicalSeason, zone, locale);
Range morningNightRange = null;
Range range, range2;
if ((range = sunYesterday.getAstroDusk()) != null && range.getEnd() != null
if ((range = sunYesterday.getRange(SunPhase.ASTRO_DUSK)) != null && range.getEnd() != null
&& DateTimeUtils.isSameDay(range.getEnd(), calendar)) {
morningNightRange = new Range(range.getEnd(),
(range2 = sun.getAstroDawn()) == null ? null : range2.getStart());
} else if (isSunUpAllDay || (range2 = sun.getAstroDawn()) == null || range2.getStart() == null) {
(range2 = sun.getRange(SunPhase.ASTRO_DAWN)) == null ? null : range2.getStart());
} else if (isSunUpAllDay || (range2 = sun.getRange(SunPhase.ASTRO_DAWN)) == null || range2.getStart() == null) {
morningNightRange = new Range();
} else {
morningNightRange = new Range(DateTimeUtils.truncateToMidnight(calendar),
(range2 = sun.getAstroDawn()) == null ? null : range2.getStart());
(range2 = sun.getRange(SunPhase.ASTRO_DAWN)) == null ? null : range2.getStart());
}
sun.setMorningNight(morningNightRange);
sun.setRange(SunPhase.MORNING_NIGHT, morningNightRange);
// evening night
Range eveningNightRange = null;
if ((range = sun.getAstroDusk()) != null && range.getEnd() != null
if ((range = sun.getRange(SunPhase.ASTRO_DUSK)) != null && range.getEnd() != null
&& DateTimeUtils.isSameDay(range.getEnd(), calendar)) {
eveningNightRange = new Range(range.getEnd(),
DateTimeUtils.truncateToMidnight(DateTimeUtils.addDays(calendar, 1)));
} else {
eveningNightRange = new Range();
}
sun.setEveningNight(eveningNightRange);
sun.setRange(SunPhase.EVENING_NIGHT, eveningNightRange);
// night
if (isSunUpAllDay) {
sun.setNight(new Range());
sun.setRange(SunPhase.NIGHT, new Range());
} else {
Sun sunTomorrow = getSunInfo(DateTimeUtils.addDays(calendar, 1), latitude, longitude, altitude, true,
useMeteorologicalSeason, zone, locale);
sun.setNight(new Range((range = sun.getAstroDusk()) == null ? null : range.getEnd(),
(range2 = sunTomorrow.getAstroDawn()) == null ? null : range2.getStart()));
sun.setRange(SunPhase.NIGHT,
new Range((range = sun.getRange(SunPhase.ASTRO_DUSK)) == null ? null : range.getEnd(),
(range2 = sunTomorrow.getRange(SunPhase.ASTRO_DAWN)) == null ? null : range2.getStart()));
}
// eclipse
@@ -256,13 +257,13 @@ public class SunCalc {
}
// phase
for (Entry<SunPhaseName, Range> rangeEntry : sortByValue(sun.getAllRanges()).entrySet()) {
SunPhaseName entryPhase = rangeEntry.getKey();
for (Entry<SunPhase, Range> rangeEntry : sortByValue(sun.getAllRanges()).entrySet()) {
SunPhase entryPhase = rangeEntry.getKey();
if (rangeEntry.getValue().matches(calendar)) {
if (entryPhase == SunPhaseName.MORNING_NIGHT || entryPhase == SunPhaseName.EVENING_NIGHT) {
sun.getPhase().setName(SunPhaseName.NIGHT);
if (entryPhase == SunPhase.MORNING_NIGHT || entryPhase == SunPhase.EVENING_NIGHT) {
sun.setSunPhase(SunPhase.NIGHT);
} else {
sun.getPhase().setName(entryPhase);
sun.setSunPhase(entryPhase);
}
}
}
@@ -329,20 +330,20 @@ public class SunCalc {
return jtransit - (jset - jtransit);
}
public static Map<SunPhaseName, Range> sortByValue(Map<SunPhaseName, Range> map) {
List<Entry<SunPhaseName, Range>> list = new ArrayList<>(map.entrySet());
public static Map<SunPhase, Range> sortByValue(Map<SunPhase, Range> map) {
List<Entry<SunPhase, Range>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<>() {
@Override
public int compare(Entry<SunPhaseName, Range> p1, Entry<SunPhaseName, Range> p2) {
public int compare(Entry<SunPhase, Range> p1, Entry<SunPhase, Range> p2) {
Range p1Range = p1.getValue();
Range p2Range = p2.getValue();
return p1Range.compareTo(p2Range);
}
});
Map<SunPhaseName, Range> result = new LinkedHashMap<>();
for (Entry<SunPhaseName, Range> entry : list) {
Map<SunPhase, Range> result = new LinkedHashMap<>();
for (Entry<SunPhase, Range> entry : list) {
result.put(entry.getKey(), entry.getValue());
}
@@ -36,7 +36,7 @@ import org.openhab.binding.astro.internal.model.Radiation;
import org.openhab.binding.astro.internal.model.Range;
import org.openhab.binding.astro.internal.model.Season;
import org.openhab.binding.astro.internal.model.Sun;
import org.openhab.binding.astro.internal.model.SunPhaseName;
import org.openhab.binding.astro.internal.model.SunPhase;
import org.openhab.binding.astro.internal.util.DateTimeUtils;
import org.openhab.core.i18n.LocaleProvider;
import org.openhab.core.i18n.TimeZoneProvider;
@@ -86,7 +86,7 @@ public class SunHandler extends AstroThingHandler {
sunCalc.setPositionalInfo(calendar, latitude != null ? latitude : 0, longitude != null ? longitude : 0,
altitude != null ? altitude : 0, sun);
sun.setCircadian(CircadianCalc.calculate(calendar, sun.getRise(), sun.getSet(), sun.getNoon()));
sun.setCircadian(CircadianCalc.calculate(calendar, sun.getRise(), sun.getSet(), sun.getRange(SunPhase.NOON)));
sun.setRadiation(RadiationCalc.calculate(now, sun.getPosition().getElevationAsDouble(), altitude));
this.sun = sun;
@@ -127,103 +127,103 @@ public class SunHandler extends AstroThingHandler {
case CHANNEL_ID_SUN_SET_DURATION:
return toState(sun.getSet().getDuration(), channel);
case CHANNEL_ID_SUN_NOON_START:
r = sun.getNoon();
r = sun.getRange(SunPhase.NOON);
return r == null ? UnDefType.UNDEF : toState(r.getStart(), channel);
case CHANNEL_ID_SUN_NOON_END:
r = sun.getNoon();
r = sun.getRange(SunPhase.NOON);
return r == null ? UnDefType.UNDEF : toState(r.getEnd(), channel);
case CHANNEL_ID_SUN_NOON_DURATION:
r = sun.getNoon();
r = sun.getRange(SunPhase.NOON);
return r == null ? UnDefType.UNDEF : toState(r.getDuration(), channel);
case CHANNEL_ID_SUN_NIGHT_START:
r = sun.getNight();
r = sun.getRange(SunPhase.NIGHT);
return r == null ? UnDefType.UNDEF : toState(r.getStart(), channel);
case CHANNEL_ID_SUN_NIGHT_END:
r = sun.getNight();
r = sun.getRange(SunPhase.NIGHT);
return r == null ? UnDefType.UNDEF : toState(r.getEnd(), channel);
case CHANNEL_ID_SUN_NIGHT_DURATION:
r = sun.getNight();
r = sun.getRange(SunPhase.NIGHT);
return r == null ? UnDefType.UNDEF : toState(r.getDuration(), channel);
case CHANNEL_ID_SUN_MORNING_NIGHT_START:
r = sun.getMorningNight();
r = sun.getRange(SunPhase.MORNING_NIGHT);
return r == null ? UnDefType.UNDEF : toState(r.getStart(), channel);
case CHANNEL_ID_SUN_MORNING_NIGHT_END:
r = sun.getMorningNight();
r = sun.getRange(SunPhase.MORNING_NIGHT);
return r == null ? UnDefType.UNDEF : toState(r.getEnd(), channel);
case CHANNEL_ID_SUN_MORNING_NIGHT_DURATION:
r = sun.getMorningNight();
r = sun.getRange(SunPhase.MORNING_NIGHT);
return r == null ? UnDefType.UNDEF : toState(r.getDuration(), channel);
case CHANNEL_ID_SUN_ASTRO_DAWN_START:
r = sun.getAstroDawn();
r = sun.getRange(SunPhase.ASTRO_DAWN);
return r == null ? UnDefType.UNDEF : toState(r.getStart(), channel);
case CHANNEL_ID_SUN_ASTRO_DAWN_END:
r = sun.getAstroDawn();
r = sun.getRange(SunPhase.ASTRO_DAWN);
return r == null ? UnDefType.UNDEF : toState(r.getEnd(), channel);
case CHANNEL_ID_SUN_ASTRO_DAWN_DURATION:
r = sun.getAstroDawn();
r = sun.getRange(SunPhase.ASTRO_DAWN);
return r == null ? UnDefType.UNDEF : toState(r.getDuration(), channel);
case CHANNEL_ID_SUN_NAUTIC_DAWN_START:
r = sun.getNauticDawn();
r = sun.getRange(SunPhase.NAUTIC_DAWN);
return r == null ? UnDefType.UNDEF : toState(r.getStart(), channel);
case CHANNEL_ID_SUN_NAUTIC_DAWN_END:
r = sun.getNauticDawn();
r = sun.getRange(SunPhase.NAUTIC_DAWN);
return r == null ? UnDefType.UNDEF : toState(r.getEnd(), channel);
case CHANNEL_ID_SUN_NAUTIC_DAWN_DURATION:
r = sun.getNauticDawn();
r = sun.getRange(SunPhase.NAUTIC_DAWN);
return r == null ? UnDefType.UNDEF : toState(r.getDuration(), channel);
case CHANNEL_ID_SUN_CIVIL_DAWN_START:
r = sun.getCivilDawn();
r = sun.getRange(SunPhase.CIVIL_DAWN);
return r == null ? UnDefType.UNDEF : toState(r.getStart(), channel);
case CHANNEL_ID_SUN_CIVIL_DAWN_END:
r = sun.getCivilDawn();
r = sun.getRange(SunPhase.CIVIL_DAWN);
return r == null ? UnDefType.UNDEF : toState(r.getEnd(), channel);
case CHANNEL_ID_SUN_CIVIL_DAWN_DURATION:
r = sun.getCivilDawn();
r = sun.getRange(SunPhase.CIVIL_DAWN);
return r == null ? UnDefType.UNDEF : toState(r.getDuration(), channel);
case CHANNEL_ID_SUN_ASTRO_DUSK_START:
r = sun.getAstroDusk();
r = sun.getRange(SunPhase.ASTRO_DUSK);
return r == null ? UnDefType.UNDEF : toState(r.getStart(), channel);
case CHANNEL_ID_SUN_ASTRO_DUSK_END:
r = sun.getAstroDusk();
r = sun.getRange(SunPhase.ASTRO_DUSK);
return r == null ? UnDefType.UNDEF : toState(r.getEnd(), channel);
case CHANNEL_ID_SUN_ASTRO_DUSK_DURATION:
r = sun.getAstroDusk();
r = sun.getRange(SunPhase.ASTRO_DUSK);
return r == null ? UnDefType.UNDEF : toState(r.getDuration(), channel);
case CHANNEL_ID_SUN_NAUTIC_DUSK_START:
r = sun.getNauticDusk();
r = sun.getRange(SunPhase.NAUTIC_DUSK);
return r == null ? UnDefType.UNDEF : toState(r.getStart(), channel);
case CHANNEL_ID_SUN_NAUTIC_DUSK_END:
r = sun.getNauticDusk();
r = sun.getRange(SunPhase.NAUTIC_DUSK);
return r == null ? UnDefType.UNDEF : toState(r.getEnd(), channel);
case CHANNEL_ID_SUN_NAUTIC_DUSK_DURATION:
r = sun.getNauticDusk();
r = sun.getRange(SunPhase.NAUTIC_DUSK);
return r == null ? UnDefType.UNDEF : toState(r.getDuration(), channel);
case CHANNEL_ID_SUN_CIVIL_DUSK_START:
r = sun.getCivilDusk();
r = sun.getRange(SunPhase.CIVIL_DUSK);
return r == null ? UnDefType.UNDEF : toState(r.getStart(), channel);
case CHANNEL_ID_SUN_CIVIL_DUSK_END:
r = sun.getCivilDusk();
r = sun.getRange(SunPhase.CIVIL_DUSK);
return r == null ? UnDefType.UNDEF : toState(r.getEnd(), channel);
case CHANNEL_ID_SUN_CIVIL_DUSK_DURATION:
r = sun.getCivilDusk();
r = sun.getRange(SunPhase.CIVIL_DUSK);
return r == null ? UnDefType.UNDEF : toState(r.getDuration(), channel);
case CHANNEL_ID_SUN_EVENING_NIGHT_START:
r = sun.getEveningNight();
r = sun.getRange(SunPhase.EVENING_NIGHT);
return r == null ? UnDefType.UNDEF : toState(r.getStart(), channel);
case CHANNEL_ID_SUN_EVENING_NIGHT_END:
r = sun.getEveningNight();
r = sun.getRange(SunPhase.EVENING_NIGHT);
return r == null ? UnDefType.UNDEF : toState(r.getEnd(), channel);
case CHANNEL_ID_SUN_EVENING_NIGHT_DURATION:
r = sun.getEveningNight();
r = sun.getRange(SunPhase.EVENING_NIGHT);
return r == null ? UnDefType.UNDEF : toState(r.getDuration(), channel);
case CHANNEL_ID_SUN_DAYLIGHT_START:
r = sun.getDaylight();
r = sun.getRange(SunPhase.DAYLIGHT);
return r == null ? UnDefType.UNDEF : toState(r.getStart(), channel);
case CHANNEL_ID_SUN_DAYLIGHT_END:
r = sun.getDaylight();
r = sun.getRange(SunPhase.DAYLIGHT);
return r == null ? UnDefType.UNDEF : toState(r.getEnd(), channel);
case CHANNEL_ID_SUN_DAYLIGHT_DURATION:
r = sun.getDaylight();
r = sun.getRange(SunPhase.DAYLIGHT);
return r == null ? UnDefType.UNDEF : toState(r.getDuration(), channel);
case CHANNEL_ID_SUN_POSITION_AZIMUTH:
return toState(sun.getPosition().getAzimuth(), channel);
@@ -277,7 +277,7 @@ public class SunHandler extends AstroThingHandler {
case CHANNEL_ID_SUN_ECLIPSE_RING_ELEVATION:
return toState(sun.getEclipseSet().getElevation(EclipseKind.RING), channel);
case CHANNEL_ID_SUN_PHASE_NAME:
return toState(sun.getPhase().getName(), channel);
return toState(sun.getSunPhase(), channel);
case CHANNEL_ID_SUN_CIRCADIAN_BRIGHTNESS:
return toState(sun.getCircadian().getBrightness(), channel);
case CHANNEL_ID_SUN_CIRCADIAN_TEMPERATURE:
@@ -318,7 +318,7 @@ public class SunHandler extends AstroThingHandler {
return localSun;
}
public @Nullable ZonedDateTime getEventTime(SunPhaseName sunPhase, ZonedDateTime date, boolean begin) {
public @Nullable ZonedDateTime getEventTime(SunPhase sunPhase, ZonedDateTime date, boolean begin) {
Range eventRange = getSunAt(date).getAllRanges().get(sunPhase);
if (eventRange != null) {
Calendar cal = begin ? eventRange.getStart() : eventRange.getEnd();
@@ -14,7 +14,7 @@ package org.openhab.binding.astro.internal.job;
import static org.openhab.binding.astro.internal.AstroBindingConstants.*;
import static org.openhab.binding.astro.internal.job.Job.*;
import static org.openhab.binding.astro.internal.model.SunPhaseName.*;
import static org.openhab.binding.astro.internal.model.SunPhase.*;
import java.time.Instant;
import java.time.InstantSource;
@@ -28,6 +28,7 @@ import org.openhab.binding.astro.internal.model.Planet;
import org.openhab.binding.astro.internal.model.Range;
import org.openhab.binding.astro.internal.model.Season;
import org.openhab.binding.astro.internal.model.Sun;
import org.openhab.binding.astro.internal.model.SunPhase;
import org.openhab.binding.astro.internal.util.DateTimeUtils;
/**
@@ -79,13 +80,13 @@ public final class DailyJobSun extends AbstractJob {
scheduleRange(handler, sun.getSet(), EVENT_CHANNEL_ID_SET, zone, locale, instantSource);
Calendar cal;
Range range = sun.getNight();
Range range = sun.getRange(SunPhase.NIGHT);
if (range != null) {
cal = range.getStart();
if (cal != null) {
scheduleEvent(handler, cal, EVENT_START, EVENT_CHANNEL_ID_NIGHT, false, zone, locale);
}
Range range2 = sun.getAstroDawn();
Range range2 = sun.getRange(SunPhase.ASTRO_DAWN);
if (range2 == null || (cal = range2.getStart()) == null
|| cal.before(DateTimeUtils.calFromInstantSource(instantSource, zone, locale))) {
cal = range.getEnd();
@@ -94,43 +95,43 @@ public final class DailyJobSun extends AbstractJob {
scheduleEvent(handler, cal, EVENT_END, EVENT_CHANNEL_ID_NIGHT, false, zone, locale);
}
}
range = sun.getNoon();
range = sun.getRange(SunPhase.NOON);
if (range != null) {
scheduleRange(handler, range, EVENT_CHANNEL_ID_NOON, zone, locale, instantSource);
}
range = sun.getMorningNight();
range = sun.getRange(SunPhase.MORNING_NIGHT);
if (range != null) {
scheduleRange(handler, range, EVENT_CHANNEL_ID_MORNING_NIGHT, zone, locale, instantSource);
}
range = sun.getAstroDawn();
range = sun.getRange(SunPhase.ASTRO_DAWN);
if (range != null) {
scheduleRange(handler, range, EVENT_CHANNEL_ID_ASTRO_DAWN, zone, locale, instantSource);
}
range = sun.getNauticDawn();
range = sun.getRange(SunPhase.NAUTIC_DAWN);
if (range != null) {
scheduleRange(handler, range, EVENT_CHANNEL_ID_NAUTIC_DAWN, zone, locale, instantSource);
}
range = sun.getCivilDawn();
range = sun.getRange(SunPhase.CIVIL_DAWN);
if (range != null) {
scheduleRange(handler, range, EVENT_CHANNEL_ID_CIVIL_DAWN, zone, locale, instantSource);
}
range = sun.getAstroDusk();
range = sun.getRange(SunPhase.ASTRO_DUSK);
if (range != null) {
scheduleRange(handler, range, EVENT_CHANNEL_ID_ASTRO_DUSK, zone, locale, instantSource);
}
range = sun.getNauticDusk();
range = sun.getRange(SunPhase.NAUTIC_DUSK);
if (range != null) {
scheduleRange(handler, range, EVENT_CHANNEL_ID_NAUTIC_DUSK, zone, locale, instantSource);
}
range = sun.getCivilDusk();
range = sun.getRange(SunPhase.CIVIL_DUSK);
if (range != null) {
scheduleRange(handler, range, EVENT_CHANNEL_ID_CIVIL_DUSK, zone, locale, instantSource);
}
range = sun.getEveningNight();
range = sun.getRange(SunPhase.EVENING_NIGHT);
if (range != null) {
scheduleRange(handler, range, EVENT_CHANNEL_ID_EVENING_NIGHT, zone, locale, instantSource);
}
range = sun.getDaylight();
range = sun.getRange(SunPhase.DAYLIGHT);
if (range != null) {
scheduleRange(handler, range, EVENT_CHANNEL_ID_DAYLIGHT, zone, locale, instantSource);
}
@@ -158,35 +159,35 @@ public final class DailyJobSun extends AbstractJob {
if (cal != null) {
scheduleSunPhase(handler, SUN_SET.name(), SUN_SET, cal, zone, locale);
}
cal = (range = sun.getNight()) == null ? null : range.getStart();
cal = (range = sun.getRange(SunPhase.NIGHT)) == null ? null : range.getStart();
if (cal != null) {
scheduleSunPhase(handler, NIGHT.name(), NIGHT, cal, zone, locale);
}
cal = (range = sun.getDaylight()) == null ? null : range.getStart();
cal = (range = sun.getRange(SunPhase.DAYLIGHT)) == null ? null : range.getStart();
if (cal != null) {
scheduleSunPhase(handler, DAYLIGHT.name(), DAYLIGHT, cal, zone, locale);
}
cal = (range = sun.getAstroDawn()) == null ? null : range.getStart();
cal = (range = sun.getRange(SunPhase.ASTRO_DAWN)) == null ? null : range.getStart();
if (cal != null) {
scheduleSunPhase(handler, ASTRO_DAWN.name(), ASTRO_DAWN, cal, zone, locale);
}
cal = (range = sun.getNauticDawn()) == null ? null : range.getStart();
cal = (range = sun.getRange(SunPhase.NAUTIC_DAWN)) == null ? null : range.getStart();
if (cal != null) {
scheduleSunPhase(handler, NAUTIC_DAWN.name(), NAUTIC_DAWN, cal, zone, locale);
}
cal = (range = sun.getCivilDawn()) == null ? null : range.getStart();
cal = (range = sun.getRange(SunPhase.CIVIL_DAWN)) == null ? null : range.getStart();
if (cal != null) {
scheduleSunPhase(handler, CIVIL_DAWN.name(), CIVIL_DAWN, cal, zone, locale);
}
cal = (range = sun.getAstroDusk()) == null ? null : range.getStart();
cal = (range = sun.getRange(SunPhase.ASTRO_DUSK)) == null ? null : range.getStart();
if (cal != null) {
scheduleSunPhase(handler, ASTRO_DUSK.name(), ASTRO_DUSK, cal, zone, locale);
}
cal = (range = sun.getNauticDusk()) == null ? null : range.getStart();
cal = (range = sun.getRange(SunPhase.NAUTIC_DUSK)) == null ? null : range.getStart();
if (cal != null) {
scheduleSunPhase(handler, NAUTIC_DUSK.name(), NAUTIC_DUSK, cal, zone, locale);
}
cal = (range = sun.getCivilDusk()) == null ? null : range.getStart();
cal = (range = sun.getRange(SunPhase.CIVIL_DUSK)) == null ? null : range.getStart();
if (cal != null) {
scheduleSunPhase(handler, CIVIL_DUSK.name(), CIVIL_DUSK, cal, zone, locale);
}
@@ -29,7 +29,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.astro.internal.config.AstroChannelConfig;
import org.openhab.binding.astro.internal.handler.AstroThingHandler;
import org.openhab.binding.astro.internal.model.Range;
import org.openhab.binding.astro.internal.model.SunPhaseName;
import org.openhab.binding.astro.internal.model.SunPhase;
import org.openhab.binding.astro.internal.util.DateTimeUtils;
import org.openhab.core.scheduler.SchedulerRunnable;
import org.openhab.core.thing.Channel;
@@ -248,12 +248,12 @@ public interface Job extends SchedulerRunnable, Runnable {
* Schedules {@link SunPhaseJob}
*
* @param astroHandler the {@link AstroThingHandler} instance
* @param sunPhaseName {@link SunPhaseName} instance
* @param sunPhase {@link SunPhase} instance
* @param eventAt the {@link Calendar} instance denoting scheduled instant
*/
static void scheduleSunPhase(AstroThingHandler astroHandler, String identifier, SunPhaseName sunPhaseName,
Calendar eventAt, TimeZone zone, Locale locale) {
Job sunPhaseJob = new SunPhaseJob(astroHandler, sunPhaseName);
static void scheduleSunPhase(AstroThingHandler astroHandler, String identifier, SunPhase sunPhase, Calendar eventAt,
TimeZone zone, Locale locale) {
Job sunPhaseJob = new SunPhaseJob(astroHandler, sunPhase);
schedule(astroHandler, identifier, sunPhaseJob, eventAt, zone, locale);
}
@@ -17,7 +17,7 @@ import static org.openhab.binding.astro.internal.AstroBindingConstants.CHANNEL_I
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.astro.internal.handler.AstroThingHandler;
import org.openhab.binding.astro.internal.model.Sun;
import org.openhab.binding.astro.internal.model.SunPhaseName;
import org.openhab.binding.astro.internal.model.SunPhase;
import org.openhab.core.thing.Channel;
/**
@@ -29,19 +29,19 @@ import org.openhab.core.thing.Channel;
@NonNullByDefault
public final class SunPhaseJob extends AbstractJob {
private final SunPhaseName sunPhaseName;
private final SunPhase sunPhase;
/**
* Constructor
*
* @param handler the thing handler
* @param sunPhaseName {@link SunPhaseName} name
* @param sunPhase {@link SunPhase} enum value
* @throws IllegalArgumentException
* if any of the arguments is {@code null}
*/
public SunPhaseJob(AstroThingHandler handler, SunPhaseName sunPhaseName) {
public SunPhaseJob(AstroThingHandler handler, SunPhase sunPhase) {
super(handler);
this.sunPhaseName = sunPhaseName;
this.sunPhase = sunPhase;
}
@Override
@@ -50,7 +50,7 @@ public final class SunPhaseJob extends AbstractJob {
Channel phaseNameChannel = handler.getThing().getChannel(CHANNEL_ID_SUN_PHASE_NAME);
if (phaseNameChannel != null) {
if (handler.getPlanet() instanceof Sun theSun) {
theSun.getPhase().setName(sunPhaseName);
theSun.setSunPhase(sunPhase);
handler.publishChannelIfLinked(phaseNameChannel.getUID());
}
} else {
@@ -65,6 +65,6 @@ public final class SunPhaseJob extends AbstractJob {
@Override
public String toString() {
return "Sun phase job " + handler.getThing().getUID() + "/" + sunPhaseName;
return "Sun phase job " + handler.getThing().getUID() + "/" + sunPhase;
}
}
@@ -26,7 +26,7 @@ import org.eclipse.jdt.annotation.Nullable;
@NonNullByDefault
public class Sun extends RiseSet implements Planet {
private Map<SunPhaseName, Range> ranges = new HashMap<>();
private Map<SunPhase, Range> ranges = new HashMap<>();
private Position position = Position.NONE;
private Zodiac zodiac = Zodiac.NONE;
@@ -35,173 +35,23 @@ public class Sun extends RiseSet implements Planet {
private @Nullable Season season = null;
private SunPhase phase = new SunPhase();
private @Nullable SunPhase sunPhase;
private Circadian circadian = Circadian.NONE;
/**
* Returns the astro dawn range.
* Returns the requested range.
*/
@Nullable
public Range getAstroDawn() {
return ranges.get(SunPhaseName.ASTRO_DAWN);
public Range getRange(SunPhase sunPhase) {
return ranges.get(sunPhase);
}
/**
* Sets the astro dawn range.
* Sets the given range.
*/
public void setAstroDawn(Range astroDawn) {
ranges.put(SunPhaseName.ASTRO_DAWN, astroDawn);
}
/**
* Returns the nautic dawn range.
*/
@Nullable
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.
*/
@Nullable
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.
*/
@Nullable
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.
*/
@Nullable
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.
*/
@Nullable
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.
*/
@Nullable
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.
*/
@Nullable
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.
*/
@Nullable
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.
*/
@Nullable
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.
*/
@Nullable
public Range getNight() {
return ranges.get(SunPhaseName.NIGHT);
}
/**
* Sets the night range.
*/
public void setNight(Range night) {
ranges.put(SunPhaseName.NIGHT, night);
public void setRange(SunPhase sunPhase, Range range) {
ranges.put(sunPhase, range);
}
/**
@@ -210,7 +60,7 @@ public class Sun extends RiseSet implements Planet {
@Override
public void setRise(Range rise) {
super.setRise(rise);
ranges.put(SunPhaseName.SUN_RISE, rise);
ranges.put(SunPhase.SUN_RISE, rise);
}
/**
@@ -219,7 +69,7 @@ public class Sun extends RiseSet implements Planet {
@Override
public void setSet(Range set) {
super.setSet(set);
ranges.put(SunPhaseName.SUN_SET, set);
ranges.put(SunPhase.SUN_SET, set);
}
/**
@@ -290,21 +140,22 @@ public class Sun extends RiseSet implements Planet {
/**
* Returns the sun phase.
*/
public SunPhase getPhase() {
return phase;
@Nullable
public SunPhase getSunPhase() {
return sunPhase;
}
/**
* Sets the sun phase.
*/
public void setPhase(SunPhase phase) {
this.phase = phase;
public void setSunPhase(@Nullable SunPhase sunPhase) {
this.sunPhase = sunPhase;
}
/**
* Returns all ranges of the sun.
*/
public Map<SunPhaseName, Range> getAllRanges() {
public Map<SunPhase, Range> getAllRanges() {
return ranges;
}
@@ -13,29 +13,25 @@
package org.openhab.binding.astro.internal.model;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
/**
* Holds the calculated sun phase informations.
* All sun phases.
*
* @author Gerhard Riegler - Initial contribution
*/
@NonNullByDefault
public class SunPhase {
private @Nullable SunPhaseName name;
/**
* Returns the sun phase.
*/
@Nullable
public SunPhaseName getName() {
return name;
}
/**
* Sets the sun phase.
*/
public void setName(@Nullable SunPhaseName name) {
this.name = name;
}
public enum SunPhase {
SUN_RISE,
ASTRO_DAWN,
NAUTIC_DAWN,
CIVIL_DAWN,
CIVIL_DUSK,
NAUTIC_DUSK,
ASTRO_DUSK,
SUN_SET,
DAYLIGHT,
NOON,
NIGHT,
MORNING_NIGHT,
EVENING_NIGHT
}
@@ -1,37 +0,0 @@
/*
* Copyright (c) 2010-2026 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.astro.internal.model;
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
* All sun phases.
*
* @author Gerhard Riegler - Initial contribution
*/
@NonNullByDefault
public enum SunPhaseName {
SUN_RISE,
ASTRO_DAWN,
NAUTIC_DAWN,
CIVIL_DAWN,
CIVIL_DUSK,
NAUTIC_DUSK,
ASTRO_DUSK,
SUN_SET,
DAYLIGHT,
NOON,
NIGHT,
MORNING_NIGHT,
EVENING_NIGHT
}
@@ -29,7 +29,7 @@ import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.openhab.binding.astro.internal.model.Range;
import org.openhab.binding.astro.internal.model.Sun;
import org.openhab.binding.astro.internal.model.SunPhaseName;
import org.openhab.binding.astro.internal.model.SunPhase;
import org.openhab.binding.astro.internal.util.DateTimeUtils;
/***
@@ -71,28 +71,28 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
assertNotNull(sun.getNight());
assertNotNull(sun.getRange(SunPhase.NIGHT));
assertNotNull(sun.getAstroDawn());
assertNotNull(sun.getNauticDawn());
assertNotNull(sun.getCivilDawn());
assertNotNull(sun.getRange(SunPhase.ASTRO_DAWN));
assertNotNull(sun.getRange(SunPhase.NAUTIC_DAWN));
assertNotNull(sun.getRange(SunPhase.CIVIL_DAWN));
assertNotNull(sun.getRise());
assertNotNull(sun.getDaylight());
assertNotNull(sun.getNoon());
assertNotNull(sun.getRange(SunPhase.DAYLIGHT));
assertNotNull(sun.getRange(SunPhase.NOON));
assertNotNull(sun.getSet());
assertNotNull(sun.getCivilDusk());
assertNotNull(sun.getNauticDusk());
assertNotNull(sun.getAstroDusk());
assertNotNull(sun.getNight());
assertNotNull(sun.getRange(SunPhase.CIVIL_DUSK));
assertNotNull(sun.getRange(SunPhase.NAUTIC_DUSK));
assertNotNull(sun.getRange(SunPhase.ASTRO_DUSK));
assertNotNull(sun.getRange(SunPhase.NIGHT));
assertNotNull(sun.getMorningNight());
assertNotNull(sun.getEveningNight());
assertNotNull(sun.getRange(SunPhase.MORNING_NIGHT));
assertNotNull(sun.getRange(SunPhase.EVENING_NIGHT));
// for an old date the phase should also be calculated
assertNotNull(sun.getPhase().getName());
assertNotNull(sun.getSunPhase());
}
@Test
@@ -100,7 +100,7 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAstroDawn();
Range range = sun.getRange(SunPhase.ASTRO_DAWN);
assertNotNull(range);
Calendar cal = range.getStart();
assertNotNull(cal);
@@ -118,7 +118,7 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getNauticDawn();
Range range = sun.getRange(SunPhase.NAUTIC_DAWN);
assertNotNull(range);
Calendar cal = range.getStart();
assertNotNull(cal);
@@ -136,7 +136,7 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getCivilDawn();
Range range = sun.getRange(SunPhase.CIVIL_DAWN);
assertNotNull(range);
Calendar cal = range.getStart();
assertNotNull(cal);
@@ -168,7 +168,7 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getNoon();
Range range = sun.getRange(SunPhase.NOON);
assertNotNull(range);
Calendar cal = range.getStart();
assertNotNull(cal);
@@ -198,7 +198,7 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getCivilDusk();
Range range = sun.getRange(SunPhase.CIVIL_DUSK);
assertNotNull(range);
Calendar cal = range.getStart();
assertNotNull(cal);
@@ -218,7 +218,7 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getNauticDusk();
Range range = sun.getRange(SunPhase.NAUTIC_DUSK);
assertNotNull(range);
Calendar cal = range.getStart();
assertNotNull(cal);
@@ -238,7 +238,7 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAstroDusk();
Range range = sun.getRange(SunPhase.ASTRO_DUSK);
assertNotNull(range);
Calendar cal = range.getStart();
assertNotNull(cal);
@@ -258,9 +258,9 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAllRanges().get(SunPhaseName.NIGHT);
Range range = sun.getAllRanges().get(SunPhase.NIGHT);
assertNotNull(range);
Range range2 = sun.getAllRanges().get(SunPhaseName.ASTRO_DAWN);
Range range2 = sun.getAllRanges().get(SunPhase.ASTRO_DAWN);
assertNotNull(range2);
assertEquals(range.getEnd(), range2.getStart());
}
@@ -270,9 +270,9 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAllRanges().get(SunPhaseName.MORNING_NIGHT);
Range range = sun.getAllRanges().get(SunPhase.MORNING_NIGHT);
assertNotNull(range);
Range range2 = sun.getAllRanges().get(SunPhaseName.ASTRO_DAWN);
Range range2 = sun.getAllRanges().get(SunPhase.ASTRO_DAWN);
assertNotNull(range2);
assertEquals(range.getEnd(), range2.getStart());
}
@@ -282,9 +282,9 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAllRanges().get(SunPhaseName.ASTRO_DAWN);
Range range = sun.getAllRanges().get(SunPhase.ASTRO_DAWN);
assertNotNull(range);
Range range2 = sun.getAllRanges().get(SunPhaseName.NAUTIC_DAWN);
Range range2 = sun.getAllRanges().get(SunPhase.NAUTIC_DAWN);
assertNotNull(range2);
assertEquals(range.getEnd(), range2.getStart());
}
@@ -294,9 +294,9 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAllRanges().get(SunPhaseName.NAUTIC_DAWN);
Range range = sun.getAllRanges().get(SunPhase.NAUTIC_DAWN);
assertNotNull(range);
Range range2 = sun.getAllRanges().get(SunPhaseName.CIVIL_DAWN);
Range range2 = sun.getAllRanges().get(SunPhase.CIVIL_DAWN);
assertNotNull(range2);
assertEquals(range.getEnd(), range2.getStart());
}
@@ -306,9 +306,9 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAllRanges().get(SunPhaseName.CIVIL_DAWN);
Range range = sun.getAllRanges().get(SunPhase.CIVIL_DAWN);
assertNotNull(range);
Range range2 = sun.getAllRanges().get(SunPhaseName.SUN_RISE);
Range range2 = sun.getAllRanges().get(SunPhase.SUN_RISE);
assertNotNull(range2);
assertEquals(range.getEnd(), range2.getStart());
}
@@ -318,9 +318,9 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAllRanges().get(SunPhaseName.SUN_RISE);
Range range = sun.getAllRanges().get(SunPhase.SUN_RISE);
assertNotNull(range);
Range range2 = sun.getAllRanges().get(SunPhaseName.DAYLIGHT);
Range range2 = sun.getAllRanges().get(SunPhase.DAYLIGHT);
assertNotNull(range2);
assertEquals(range.getEnd(), range2.getStart());
}
@@ -330,9 +330,9 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAllRanges().get(SunPhaseName.DAYLIGHT);
Range range = sun.getAllRanges().get(SunPhase.DAYLIGHT);
assertNotNull(range);
Range range2 = sun.getAllRanges().get(SunPhaseName.SUN_SET);
Range range2 = sun.getAllRanges().get(SunPhase.SUN_SET);
assertNotNull(range2);
assertEquals(range.getEnd(), range2.getStart());
}
@@ -342,9 +342,9 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAllRanges().get(SunPhaseName.SUN_SET);
Range range = sun.getAllRanges().get(SunPhase.SUN_SET);
assertNotNull(range);
Range range2 = sun.getAllRanges().get(SunPhaseName.CIVIL_DUSK);
Range range2 = sun.getAllRanges().get(SunPhase.CIVIL_DUSK);
assertNotNull(range2);
assertEquals(range.getEnd(), range2.getStart());
}
@@ -354,9 +354,9 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAllRanges().get(SunPhaseName.CIVIL_DUSK);
Range range = sun.getAllRanges().get(SunPhase.CIVIL_DUSK);
assertNotNull(range);
Range range2 = sun.getAllRanges().get(SunPhaseName.NAUTIC_DUSK);
Range range2 = sun.getAllRanges().get(SunPhase.NAUTIC_DUSK);
assertNotNull(range2);
assertEquals(range.getEnd(), range2.getStart());
}
@@ -366,9 +366,9 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAllRanges().get(SunPhaseName.NAUTIC_DUSK);
Range range = sun.getAllRanges().get(SunPhase.NAUTIC_DUSK);
assertNotNull(range);
Range range2 = sun.getAllRanges().get(SunPhaseName.ASTRO_DUSK);
Range range2 = sun.getAllRanges().get(SunPhase.ASTRO_DUSK);
assertNotNull(range2);
assertEquals(range.getEnd(), range2.getStart());
}
@@ -378,9 +378,9 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAllRanges().get(SunPhaseName.ASTRO_DUSK);
Range range = sun.getAllRanges().get(SunPhase.ASTRO_DUSK);
assertNotNull(range);
Range range2 = sun.getAllRanges().get(SunPhaseName.NIGHT);
Range range2 = sun.getAllRanges().get(SunPhase.NIGHT);
assertNotNull(range2);
assertEquals(range.getEnd(), range2.getStart());
}
@@ -390,9 +390,9 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(FEB_27_2019, AMSTERDAM_LATITUDE, AMSTERDAM_LONGITUDE,
AMSTERDAM_ALTITUDE, false, AMSTERDAM_TIME_ZONE, Locale.ROOT);
Range range = sun.getAllRanges().get(SunPhaseName.ASTRO_DUSK);
Range range = sun.getAllRanges().get(SunPhase.ASTRO_DUSK);
assertNotNull(range);
Range range2 = sun.getAllRanges().get(SunPhaseName.EVENING_NIGHT);
Range range2 = sun.getAllRanges().get(SunPhase.EVENING_NIGHT);
assertNotNull(range2);
assertEquals(range.getEnd(), range2.getStart());
}
@@ -404,7 +404,7 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(tDate, 53.524695, -2.4, 0.0, true, AMSTERDAM_TIME_ZONE,
Locale.ROOT);
assertEquals(SunPhaseName.CIVIL_DAWN, sun.getPhase().getName());
assertEquals(SunPhase.CIVIL_DAWN, sun.getSunPhase());
}
@Test
@@ -416,7 +416,7 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(tDate, 53.524695, -2.4, 0.0, true, AMSTERDAM_TIME_ZONE,
Locale.ROOT);
assertEquals(SunPhaseName.SUN_RISE, sun.getPhase().getName());
assertEquals(SunPhase.SUN_RISE, sun.getSunPhase());
}
@Test
@@ -426,7 +426,7 @@ public class SunCalcTest {
Sun sun = Objects.requireNonNull(sunCalc).getSunInfo(tDate, 53.524695, -2.4, 0.0, true, AMSTERDAM_TIME_ZONE,
Locale.ROOT);
assertEquals(SunPhaseName.DAYLIGHT, sun.getPhase().getName());
assertEquals(SunPhase.DAYLIGHT, sun.getSunPhase());
}
/***
@@ -32,7 +32,7 @@ import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
import org.openhab.binding.astro.internal.model.Range;
import org.openhab.binding.astro.internal.model.Sun;
import org.openhab.binding.astro.internal.model.SunPhaseName;
import org.openhab.binding.astro.internal.model.SunPhase;
import org.openhab.core.i18n.LocaleProvider;
import org.openhab.core.i18n.TimeZoneProvider;
import org.openhab.core.library.types.StringType;
@@ -44,7 +44,7 @@ import org.openhab.core.types.UnDefType;
/***
* A set of standard unit test of {@link Sun} class. In particular it checks if
* {@link Sun#getAllRanges()} contains a correct {@link SunPhaseName}.
* {@link Sun#getAllRanges()} contains a correct {@link SunPhase}.
*
* @author Witold Markowski - Initial contribution
* @see <a href="https://github.com/openhab/openhab-addons/issues/5006">[astro]
@@ -85,7 +85,6 @@ public class SunTest {
public void testConstructor() throws Exception {
Sun sun = this.sun;
assertNotNull(sun);
assertNotNull(sun.getPhase());
when(channel.getUID()).thenReturn(new ChannelUID("astro:sun:home:phase#name"));
assertEquals(UnDefType.UNDEF, handler.getState(channel));
@@ -96,7 +95,7 @@ public class SunTest {
handler.publishDailyInfo();
Sun sun = handler.sun;
assertNotNull(sun);
sun.getPhase().setName(null);
sun.setSunPhase(null);
when(channel.getUID()).thenReturn(new ChannelUID("astro:sun:home:phase#name"));
assertEquals(UnDefType.UNDEF, handler.getState(channel));
@@ -113,45 +112,45 @@ public class SunTest {
public void testGetAllRangesForNight() {
Sun sun = this.sun;
assertNotNull(sun);
sun.setNight(new Range());
sun.setRange(SunPhase.NIGHT, new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.NIGHT));
assertTrue(sun.getAllRanges().containsKey(SunPhase.NIGHT));
}
@Test
public void testGetAllRangesForMorningNight() {
Sun sun = this.sun;
assertNotNull(sun);
sun.setMorningNight(new Range());
sun.setRange(SunPhase.MORNING_NIGHT, new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.MORNING_NIGHT));
assertTrue(sun.getAllRanges().containsKey(SunPhase.MORNING_NIGHT));
}
@Test
public void testGetAllRangesForAstroDawn() {
Sun sun = this.sun;
assertNotNull(sun);
sun.setAstroDawn(new Range());
sun.setRange(SunPhase.ASTRO_DAWN, new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.ASTRO_DAWN));
assertTrue(sun.getAllRanges().containsKey(SunPhase.ASTRO_DAWN));
}
@Test
public void testGetAllRangesForNauticDawn() {
Sun sun = this.sun;
assertNotNull(sun);
sun.setNauticDawn(new Range());
sun.setRange(SunPhase.NAUTIC_DAWN, new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.NAUTIC_DAWN));
assertTrue(sun.getAllRanges().containsKey(SunPhase.NAUTIC_DAWN));
}
@Test
public void testGetAllRangesForCivilDawn() {
Sun sun = this.sun;
assertNotNull(sun);
sun.setCivilDawn(new Range());
sun.setRange(SunPhase.CIVIL_DAWN, new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.CIVIL_DAWN));
assertTrue(sun.getAllRanges().containsKey(SunPhase.CIVIL_DAWN));
}
@Test
@@ -160,25 +159,25 @@ public class SunTest {
assertNotNull(sun);
sun.setRise(new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.SUN_RISE));
assertTrue(sun.getAllRanges().containsKey(SunPhase.SUN_RISE));
}
@Test
public void testGetAllRangesForDaylight() {
Sun sun = this.sun;
assertNotNull(sun);
sun.setDaylight(new Range());
sun.setRange(SunPhase.DAYLIGHT, new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.DAYLIGHT));
assertTrue(sun.getAllRanges().containsKey(SunPhase.DAYLIGHT));
}
@Test
public void testGetAllRangesForNoon() {
Sun sun = this.sun;
assertNotNull(sun);
sun.setNoon(new Range());
sun.setRange(SunPhase.NOON, new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.NOON));
assertTrue(sun.getAllRanges().containsKey(SunPhase.NOON));
}
@Test
@@ -187,42 +186,42 @@ public class SunTest {
assertNotNull(sun);
sun.setSet(new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.SUN_SET));
assertTrue(sun.getAllRanges().containsKey(SunPhase.SUN_SET));
}
@Test
public void testGetAllRangesForCivilDusk() {
Sun sun = this.sun;
assertNotNull(sun);
sun.setCivilDusk(new Range());
sun.setRange(SunPhase.CIVIL_DUSK, new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.CIVIL_DUSK));
assertTrue(sun.getAllRanges().containsKey(SunPhase.CIVIL_DUSK));
}
@Test
public void testGetAllRangesForNauticDusk() {
Sun sun = this.sun;
assertNotNull(sun);
sun.setNauticDusk(new Range());
sun.setRange(SunPhase.NAUTIC_DUSK, new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.NAUTIC_DUSK));
assertTrue(sun.getAllRanges().containsKey(SunPhase.NAUTIC_DUSK));
}
@Test
public void testGetAllRangesForAstroDusk() {
Sun sun = this.sun;
assertNotNull(sun);
sun.setAstroDusk(new Range());
sun.setRange(SunPhase.ASTRO_DUSK, new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.ASTRO_DUSK));
assertTrue(sun.getAllRanges().containsKey(SunPhase.ASTRO_DUSK));
}
@Test
public void testGetAllRangesForEveningNight() {
Sun sun = this.sun;
assertNotNull(sun);
sun.setEveningNight(new Range());
sun.setRange(SunPhase.EVENING_NIGHT, new Range());
assertTrue(sun.getAllRanges().containsKey(SunPhaseName.EVENING_NIGHT));
assertTrue(sun.getAllRanges().containsKey(SunPhase.EVENING_NIGHT));
}
}