Sha256: f6d2474d1449278ceb260f5f5ce3e5c561ab1e992c68911ee4ef4aec547b2555

Contents?: true

Size: 1.51 KB

Versions: 104

Compression:

Stored size: 1.51 KB

Contents

import java.time.LocalDate;
import java.time.DayOfWeek;


class Meetup {
    private final LocalDate startOfMonth;

    Meetup(int monthOfYear, int year) {
        startOfMonth = LocalDate.of(year, monthOfYear, 1);
    }

    LocalDate day(DayOfWeek dayOfWeek, MeetupSchedule schedule) {
        LocalDate current = cycleToNext(dayOfWeek, startOfMonth);
        switch (schedule) {
            case FIRST:
                break;
            case SECOND:
                current = current.plusWeeks(1);
                break;
            case THIRD:
                current = current.plusWeeks(2);
                break;
            case FOURTH:
                current = current.plusWeeks(3);
                break;
            case TEENTH:
                while (current.getDayOfMonth() < 13) {
                    current = current.plusWeeks(1);
                }
                break;
            case LAST:
                current = cycleToPrev(dayOfWeek, startOfMonth.plusMonths(1).minusDays(1));
                break;
            default:
                return null;
        }
        return current;
    }

    private LocalDate cycleToPrev(DayOfWeek dayOfWeek, LocalDate current) {
        while (current.getDayOfWeek() != dayOfWeek) {
            current = current.minusDays(1);
        }
        return current;
    }

    private LocalDate cycleToNext(DayOfWeek dayOfWeek, LocalDate current) {
        while (current.getDayOfWeek() != dayOfWeek) {
            current = current.plusDays(1);
        }
        return current;
    }
}

Version data entries

104 entries across 104 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.179 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.178 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.177 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.176 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.175 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.174 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.173 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.172 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.171 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.170 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.169 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.167 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.166 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.165 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.164 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.163 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.162 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.161 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java
trackler-2.2.1.160 tracks/java/exercises/meetup/.meta/src/reference/java/Meetup.java