Sha256: 35f13bd8df50ab495af9e077a0124fcd465fd3ee4b3ee5b5c8d008de58f74317

Contents?: true

Size: 1.48 KB

Versions: 12

Compression:

Stored size: 1.48 KB

Contents

import org.joda.time.DateTime;

public class Meetup {
    private final DateTime startOfMonth;

    public Meetup(int monthOfYear, int year) {
        startOfMonth = new DateTime(year, monthOfYear, 1, 0, 0);
    }

    DateTime day(int dayOfWeek, MeetupSchedule schedule) {
        DateTime 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 DateTime cycleToPrev(int dayOfWeek, DateTime current) {
        while (current.getDayOfWeek() != dayOfWeek) {
            current = current.minusDays(1);
        }
        return current;
    }

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

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
trackler-2.0.0.1 tracks/java/exercises/meetup/src/example/java/Meetup.java
trackler-2.0.0.0 tracks/java/exercises/meetup/src/example/java/Meetup.java
trackler-1.0.4.1 tracks/java/exercises/meetup/src/example/java/Meetup.java
trackler-1.0.4.0 tracks/java/exercises/meetup/src/example/java/Meetup.java
trackler-1.0.3.0 tracks/java/exercises/meetup/src/example/java/Meetup.java
trackler-1.0.2.1 tracks/java/exercises/meetup/src/example/java/Meetup.java
trackler-1.0.2.0 tracks/java/exercises/meetup/src/example/java/Meetup.java
trackler-1.0.1.2 tracks/java/exercises/meetup/src/example/java/Meetup.java
trackler-1.0.1.1 tracks/java/exercises/meetup/src/example/java/Meetup.java
trackler-1.0.1.0 tracks/java/exercises/meetup/src/example/java/Meetup.java
trackler-1.0.0.1 tracks/java/exercises/meetup/src/example/java/Meetup.java
trackler-1.0.0 tracks/java/exercises/meetup/src/example/java/Meetup.java