Add cache for time provider

The improvement is surely negligible, perhaps harming performance, so more of a gimmick
This commit is contained in:
Minecon724 2024-09-24 18:57:55 +02:00
parent 1f1a3260c0
commit 7930e4dd0a
Signed by: Minecon724
GPG key ID: 3CCC4D267742C8E8
2 changed files with 44 additions and 0 deletions

View file

@ -0,0 +1,40 @@
package eu.m724.wtapi.provider.twilight;
import eu.m724.wtapi.object.Coordinates;
import eu.m724.wtapi.object.Twilight;
import java.time.LocalDate;
// TODO reconsider if this is necessary and doesn't actually harm performance
/**
* A {@link TwilightTimeProvider} that can cache some calculations to be faster
*
* @param <T> An implementation of {@link TwilightTimeCache} where you store whatever you need
*/
public abstract class CacheableTwilightTimeProvider<T extends TwilightTimeCache> extends TwilightTimeProvider {
/**
* Calculates sunrise and sunset for provided coordinates
*
* @param cache {@link T}, implementation of {@link TwilightTimeCache}
* @param coordinates Coordinates of the observer
* @return {@link Twilight}
* @see #initializeCache(LocalDate)
*/
public abstract Twilight calculateTwilightTime(T cache, Coordinates coordinates);
/**
* Initializes cache for provided date
*
* @param date The UTC date
* @return ready to use cache
*/
public abstract T initializeCache(LocalDate date);
@Override
public Twilight calculateTwilightTime(LocalDate date, Coordinates coordinates) {
return calculateTwilightTime(
initializeCache(date),
coordinates
);
}
}

View file

@ -0,0 +1,4 @@
package eu.m724.wtapi.provider.twilight;
public interface TwilightTimeCache {
}