use latest parent
[fiscal-year.java.git] / src / main / java / com / github / sebhoss / time / FiscalDateImplementation.java
blobc8587a17717d21881b3a908e1992dac1c1991565
1 /*
2 * Copyright © 2013 Sebastian Hoß <mail@shoss.de>
3 * This work is free. You can redistribute it and/or modify it under the
4 * terms of the Do What The Fuck You Want To Public License, Version 2,
5 * as published by Sam Hocevar. See http://www.wtfpl.net/ for more details.
6 */
7 package com.github.sebhoss.time;
9 import java.time.LocalDate;
10 import java.time.temporal.ChronoField;
12 final class FiscalDateImplementation implements FiscalDate {
14 private final FiscalDateCalculator fiscalDateCalculator;
15 private final LocalDate currentCalendarDate;
17 FiscalDateImplementation(final FiscalDateCalculator fiscalDateCalculator, final LocalDate currentCalendarDate) {
18 this.fiscalDateCalculator = fiscalDateCalculator;
19 this.currentCalendarDate = currentCalendarDate;
22 @Override
23 public long getFiscalYear() {
24 return fiscalDateCalculator.calculateFiscalYear(currentCalendarDate);
27 @Override
28 public long getFiscalMonth() {
29 return fiscalDateCalculator.calculateFiscalMonth(currentCalendarDate);
32 @Override
33 public long getFiscalDayOfYear() {
34 return fiscalDateCalculator.calculateFiscalDayOfYear(currentCalendarDate);
37 @Override
38 public long getFiscalWeekOfWeekyear() {
39 return fiscalDateCalculator.calculateFiscalWeekOfYear(currentCalendarDate);
42 @Override
43 public long getCalendarYear() {
44 return currentCalendarDate.getYear();
47 @Override
48 public long getCalendarMonth() {
49 return currentCalendarDate.getMonthValue();
52 @Override
53 public long getCalendarDayOfMonth() {
54 return currentCalendarDate.getDayOfMonth();
57 @Override
58 public long getCalendarDayOfYear() {
59 return currentCalendarDate.getDayOfYear();
62 @Override
63 public long getCalendarWeekOfWeekyear() {
64 return currentCalendarDate.get(ChronoField.ALIGNED_WEEK_OF_YEAR);
67 @Override
68 public FiscalDate plusYears(final long years) {
69 return copyWithNewDate(currentCalendarDate.plusYears(years));
72 @Override
73 public FiscalDate plusMonths(final long months) {
74 return copyWithNewDate(currentCalendarDate.plusMonths(months));
77 @Override
78 public FiscalDate plusWeeks(final long weeks) {
79 return copyWithNewDate(currentCalendarDate.plusWeeks(weeks));
82 @Override
83 public FiscalDate plusDays(final long days) {
84 return copyWithNewDate(currentCalendarDate.plusDays(days));
87 @Override
88 public FiscalDate minusYears(final long years) {
89 return copyWithNewDate(currentCalendarDate.minusYears(years));
92 @Override
93 public FiscalDate minusMonths(final long months) {
94 return copyWithNewDate(currentCalendarDate.minusMonths(months));
97 @Override
98 public FiscalDate minusWeeks(final long weeks) {
99 return copyWithNewDate(currentCalendarDate.minusWeeks(weeks));
102 @Override
103 public FiscalDate minusDays(final long days) {
104 return copyWithNewDate(currentCalendarDate.minusDays(days));
107 private FiscalDateImplementation copyWithNewDate(final LocalDate newDate) {
108 return new FiscalDateImplementation(fiscalDateCalculator, newDate);
111 @Override
112 public LocalDate asLocalDate() {
113 return currentCalendarDate;