public final class YearlyBreakdown extends DatedBreakdown implements java.io.Serializable
DatedBreakdown
used to specify that degree days should be
broken down on a yearly (annual) basis and cover a specific Period
in
time.Instances of this class are immutable. You can safely reuse them and call them from multiple threads at once.
Constructor and Description |
---|
YearlyBreakdown(Period period)
Constructs a
YearlyBreakdown object that specifies yearly
degree days covering the specified period in time and broken
down according to regular calendar years. |
YearlyBreakdown(Period period,
StartOfYear startOfYear)
Constructs a
YearlyBreakdown object that specifies yearly
degree days covering the specified period in time, with each
"year" starting on the specified day of the year. |
Modifier and Type | Method and Description |
---|---|
DayRange |
getFullRangeOrNull(DayRange availableDataRange)
Returns the range of days that this breakdown would cover given source
data covering
availableDataRange , or null if
availableDataRange would not be enough for this breakdown. |
Period |
period()
Returns the non-null period in time that the yearly breakdown should
cover.
|
StartOfYear |
startOfYear()
Returns a non-null
StartOfYear object indicating which day
should be taken as the first of each year (inclusive). |
MaybeEmptyDayRanges |
toDayRanges(DayRange availableDataRange)
Returns the breakdown in terms of the day ranges that would constitute it
given source data covering
availableDataRange . |
java.lang.String |
toString()
Returns a non-null, non-empty string representation of this object for logging and debugging purposes.
|
YearlyBreakdown |
withAllowPartialLatest(boolean allowPartialLatest)
Returns a
YearlyBreakdown with the same period()
and startOfYear() as this , but with the
DatedBreakdown.allowPartialLatest() property set to the specified value. |
allowPartialLatest, custom, daily, monthly, monthly, weekly, yearly, yearly
public YearlyBreakdown(Period period, StartOfYear startOfYear)
YearlyBreakdown
object that specifies yearly
degree days covering the specified period
in time, with each
"year" starting on the specified day of the year.period
- the period in time that the yearly breakdown should cover.
Cannot be null
.startOfYear
- specifying which day of the year (month and day of the
month) should be taken as the first of each "year". Pass
StartOfYear.of(1, 1)
to specify regular calendar
years. Cannot be null
.java.lang.NullPointerException
- if period
or
startOfYear
is null
.public YearlyBreakdown(Period period)
YearlyBreakdown
object that specifies yearly
degree days covering the specified period
in time and broken
down according to regular calendar years.
This is a shortcut version of
this constructor that
specifies January the first as the startOfYear
parameter.
period
- the period in time that the yearly breakdown should cover.
Cannot be null
.java.lang.NullPointerException
- if period
is null
.public Period period()
public StartOfYear startOfYear()
StartOfYear
object indicating which day
should be taken as the first of each year (inclusive).public YearlyBreakdown withAllowPartialLatest(boolean allowPartialLatest)
YearlyBreakdown
with the same period()
and startOfYear()
as this
, but with the
DatedBreakdown.allowPartialLatest()
property set to the specified value.
The allowPartialLatest
property makes it possible to fetch
time-series data
(like hourly temperature data) that includes the current (incomplete)
year, including time-series-data values for the current (incomplete) day. It also makes
it possible to fetch yearly degree-day data that includes a
DatedDataValue
for the current year so
far (a partial year). See DatedBreakdown.allowPartialLatest()
for more on how
it works.
allowPartialLatest
- true
to specify that the latest
year of data can be partially filled (i.e. incomplete), or
false
if the latest year must be complete (the
default behaviour).DatedBreakdown.allowPartialLatest()
public MaybeEmptyDayRanges toDayRanges(DayRange availableDataRange)
availableDataRange
.
If you call fullRangeOrNull()
on the return value, you'll get the same result that
you'd get by calling getFullRangeOrNull(availableDataRange)
on this object. Essentially this
method is a more detailed version of getFullRangeOrNull
that
makes sense for dated breakdowns, which translate to real ranges of days
on a calendar (unlike average breakdowns which are broken down into
months of an "average year" rather than applying to a real calendar).
toDayRanges
in class DatedBreakdown
availableDataRange
- the range of temperature data available (or the
available range of daily degree-day data if summing daily degree
days into a different breakdown). Cannot be null
.java.lang.NullPointerException
- if availableDataRange
is
null
.public DayRange getFullRangeOrNull(DayRange availableDataRange)
availableDataRange
, or null
if
availableDataRange
would not be enough for this breakdown.getFullRangeOrNull
in class Breakdown
availableDataRange
- the range of temperature data available (or the
available range of daily degree-day data if summing daily degree
days into a different breakdown). Cannot be null
.java.lang.NullPointerException
- if availableDataRange
is
null
.public java.lang.String toString()
The exact details of the representation are unspecified and subject to change.
toString
in class java.lang.Object
See www.degreedays.net/api/ for more about the Degree Days.net API.
You can sign up for a Degree Days.net API account and read the integration guide that is useful and applicable whether you are using Java or not.