summaryrefslogtreecommitdiff
path: root/src/net/sourceforge/plantuml/project/Day.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/sourceforge/plantuml/project/Day.java')
-rw-r--r--src/net/sourceforge/plantuml/project/Day.java177
1 files changed, 0 insertions, 177 deletions
diff --git a/src/net/sourceforge/plantuml/project/Day.java b/src/net/sourceforge/plantuml/project/Day.java
deleted file mode 100644
index 5cba10e..0000000
--- a/src/net/sourceforge/plantuml/project/Day.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/* ========================================================================
- * PlantUML : a free UML diagram generator
- * ========================================================================
- *
- * (C) Copyright 2009-2017, Arnaud Roques
- *
- * Project Info: http://plantuml.com
- *
- * If you like this project or if you find it useful, you can support us at:
- *
- * http://plantuml.com/patreon (only 1$ per month!)
- * http://plantuml.com/paypal
- *
- * This file is part of PlantUML.
- *
- * PlantUML is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * PlantUML distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
- * License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- * USA.
- *
- *
- * Original Author: Arnaud Roques
- *
- *
- */
-package net.sourceforge.plantuml.project;
-
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
-public class Day implements Comparable<Day> {
-
- private final int numDay;
- private final Month month;
- private final int year;
- private final WeekDay weekDay;
-
- private Day(int year, Month month, int numDay, WeekDay weekDay) {
- this.year = year;
- this.month = month;
- this.numDay = numDay;
- this.weekDay = weekDay;
- }
-
- public static boolean isValidDesc(String desc) {
- if (desc.matches("^\\d{4}/\\d{2}/\\d{2}$")) {
- return true;
- }
- if (desc.matches("^\\d{2}-[A-Za-z]{3}-\\d{4}$")) {
- return true;
- }
- return false;
- }
-
- public Day(String desc) {
- if (desc.matches("^\\d{4}/\\d{2}/\\d{2}$")) {
- this.year = Integer.parseInt(desc.substring(0, 4));
- this.month = Month.fromNum(Integer.parseInt(desc.substring(5, 7)));
- this.numDay = Integer.parseInt(desc.substring(8, 10));
- } else if (desc.matches("^\\d{2}-[A-Za-z]{3}-\\d{4}$")) {
- this.year = Integer.parseInt(desc.substring(7, 11));
- this.month = Month.valueOf(desc.substring(3, 6));
- this.numDay = Integer.parseInt(desc.substring(0, 2));
- } else {
- throw new IllegalArgumentException(desc);
- }
- final int wd = new GregorianCalendar(year, month.getNum() - 1, numDay).get(Calendar.DAY_OF_WEEK);
- this.weekDay = WeekDay.values()[wd - 1];
- }
-
- public Day next(DayClose dayClose) {
- if (dayClose == null) {
- return nextInternal();
- }
- if (dayClose.isClose(this)) {
- throw new IllegalArgumentException();
- }
- Day result = nextInternal();
- while (dayClose.isClose(result)) {
- result = result.nextInternal();
- }
- return result;
- }
-
- public Day prev(DayClose dayClose) {
- if (dayClose == null) {
- return prevInternal();
- }
- if (dayClose.isClose(this)) {
- throw new IllegalArgumentException();
- }
- Day result = prevInternal();
- while (dayClose.isClose(result)) {
- result = result.prevInternal();
- }
- return result;
- }
-
- private Day nextInternal() {
- if (numDay < month.getNbDays(year)) {
- return new Day(year, month, numDay + 1, weekDay.next());
- }
- final Month next = month.next();
- if (next == null) {
- return new Day(year + 1, Month.JAN, 1, weekDay.next());
- }
- return new Day(year, next, 1, weekDay.next());
- }
-
- private Day prevInternal() {
- if (numDay > 1) {
- return new Day(year, month, numDay - 1, weekDay.prev());
- }
- final Month prev = month.prev();
- if (prev == null) {
- return new Day(year - 1, Month.DEC, 31, weekDay.prev());
- }
- return new Day(year, prev, prev.getNbDays(year), weekDay.prev());
- }
-
- @Override
- public String toString() {
- return "" + weekDay + " " + year + "-" + month + "-" + String.format("%02d", numDay);
- }
-
- public final int getNumDay() {
- return numDay;
- }
-
- public final Month getMonth() {
- return month;
- }
-
- public final int getYear() {
- return year;
- }
-
- public int compareTo(Day other) {
- if (year > other.year) {
- return 1;
- }
- if (year < other.year) {
- return -1;
- }
- final int cmpMonth = month.compareTo(other.month);
- if (cmpMonth != 0) {
- return cmpMonth;
- }
- return numDay - other.numDay;
- }
-
- @Override
- public boolean equals(Object obj) {
- final Day this2 = (Day) obj;
- return this.numDay == this2.numDay && this.month == this2.month && this.year == this2.year;
- }
-
- @Override
- public int hashCode() {
- return numDay * 420 + year + month.hashCode();
- }
-
- public final WeekDay getWeekDay() {
- return weekDay;
- }
-
-}