From eedca50fa2800820573f7339a43887e125df8fba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20L=27hopital?= Date: Wed, 21 Jan 2026 17:54:01 +0100 Subject: [PATCH] [astro] Simplify SunPhase handling (#20112) * Removes SunPhaseName holder class SunPhase Renames SunPhaseName to SunPhase Signed-off-by: gael@lhopital.org --- .../astro/internal/action/AstroActions.java | 4 +- .../binding/astro/internal/calc/SunCalc.java | 59 +++--- .../astro/internal/handler/SunHandler.java | 74 +++---- .../astro/internal/job/DailyJobSun.java | 43 +++-- .../binding/astro/internal/job/Job.java | 10 +- .../astro/internal/job/SunPhaseJob.java | 14 +- .../binding/astro/internal/model/Sun.java | 181 ++---------------- .../astro/internal/model/SunPhase.java | 34 ++-- .../astro/internal/model/SunPhaseName.java | 37 ---- .../astro/internal/calc/SunCalcTest.java | 96 +++++----- .../astro/internal/handler/SunTest.java | 55 +++--- 11 files changed, 209 insertions(+), 398 deletions(-) delete mode 100644 bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/model/SunPhaseName.java diff --git a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/action/AstroActions.java b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/action/AstroActions.java index ad460b8673..c50a79c78c 100644 --- a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/action/AstroActions.java +++ b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/action/AstroActions.java @@ -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)); diff --git a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/calc/SunCalc.java b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/calc/SunCalc.java index 4de413b016..249be25f33 100644 --- a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/calc/SunCalc.java +++ b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/calc/SunCalc.java @@ -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 rangeEntry : sortByValue(sun.getAllRanges()).entrySet()) { - SunPhaseName entryPhase = rangeEntry.getKey(); + for (Entry 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 sortByValue(Map map) { - List> list = new ArrayList<>(map.entrySet()); + public static Map sortByValue(Map map) { + List> list = new ArrayList<>(map.entrySet()); Collections.sort(list, new Comparator<>() { @Override - public int compare(Entry p1, Entry p2) { + public int compare(Entry p1, Entry p2) { Range p1Range = p1.getValue(); Range p2Range = p2.getValue(); return p1Range.compareTo(p2Range); } }); - Map result = new LinkedHashMap<>(); - for (Entry entry : list) { + Map result = new LinkedHashMap<>(); + for (Entry entry : list) { result.put(entry.getKey(), entry.getValue()); } diff --git a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/handler/SunHandler.java b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/handler/SunHandler.java index 2c517b2460..3a90c7f462 100644 --- a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/handler/SunHandler.java +++ b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/handler/SunHandler.java @@ -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(); diff --git a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/job/DailyJobSun.java b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/job/DailyJobSun.java index 9078cbcb04..ea160e3c9c 100644 --- a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/job/DailyJobSun.java +++ b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/job/DailyJobSun.java @@ -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); } diff --git a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/job/Job.java b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/job/Job.java index be104bf9e7..b804c90a43 100644 --- a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/job/Job.java +++ b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/job/Job.java @@ -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); } diff --git a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/job/SunPhaseJob.java b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/job/SunPhaseJob.java index 3097859754..27c5d4d3b4 100644 --- a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/job/SunPhaseJob.java +++ b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/job/SunPhaseJob.java @@ -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; } } diff --git a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/model/Sun.java b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/model/Sun.java index ecbc04d545..5ae306741b 100644 --- a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/model/Sun.java +++ b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/model/Sun.java @@ -26,7 +26,7 @@ import org.eclipse.jdt.annotation.Nullable; @NonNullByDefault public class Sun extends RiseSet implements Planet { - private Map ranges = new HashMap<>(); + private Map 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 getAllRanges() { + public Map getAllRanges() { return ranges; } diff --git a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/model/SunPhase.java b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/model/SunPhase.java index eeae9332ec..e87612533f 100644 --- a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/model/SunPhase.java +++ b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/model/SunPhase.java @@ -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 } diff --git a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/model/SunPhaseName.java b/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/model/SunPhaseName.java deleted file mode 100644 index 4b0002b4c7..0000000000 --- a/bundles/org.openhab.binding.astro/src/main/java/org/openhab/binding/astro/internal/model/SunPhaseName.java +++ /dev/null @@ -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 -} diff --git a/bundles/org.openhab.binding.astro/src/test/java/org/openhab/binding/astro/internal/calc/SunCalcTest.java b/bundles/org.openhab.binding.astro/src/test/java/org/openhab/binding/astro/internal/calc/SunCalcTest.java index 29a8d7b117..96a2822958 100644 --- a/bundles/org.openhab.binding.astro/src/test/java/org/openhab/binding/astro/internal/calc/SunCalcTest.java +++ b/bundles/org.openhab.binding.astro/src/test/java/org/openhab/binding/astro/internal/calc/SunCalcTest.java @@ -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()); } /*** diff --git a/bundles/org.openhab.binding.astro/src/test/java/org/openhab/binding/astro/internal/handler/SunTest.java b/bundles/org.openhab.binding.astro/src/test/java/org/openhab/binding/astro/internal/handler/SunTest.java index 113c9e88b4..c6a0560a2a 100644 --- a/bundles/org.openhab.binding.astro/src/test/java/org/openhab/binding/astro/internal/handler/SunTest.java +++ b/bundles/org.openhab.binding.astro/src/test/java/org/openhab/binding/astro/internal/handler/SunTest.java @@ -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 [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)); } }