kr.debop4j.timeperiod.timerange.QuarterRange.java Source code

Java tutorial

Introduction

Here is the source code for kr.debop4j.timeperiod.timerange.QuarterRange.java

Source

/*
 * Copyright 2011-2013 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package kr.debop4j.timeperiod.timerange;

import kr.debop4j.timeperiod.ITimeCalendar;
import kr.debop4j.timeperiod.Quarter;
import kr.debop4j.timeperiod.TimeCalendar;
import kr.debop4j.timeperiod.YearAndQuarter;
import kr.debop4j.timeperiod.tools.Times;
import lombok.extern.slf4j.Slf4j;
import org.joda.time.DateTime;

/**
 *    ?.
 *
 * @author ? sunghyouk.bae@gmail.com
 * @since 13. 5. 13.  10:09
 */
@Slf4j
public class QuarterRange extends QuarterTimeRange {

    // region << Constructor >>

    /** Instantiates a new Quarter range. */
    public QuarterRange() {
        this(new TimeCalendar());
    }

    /**
     * Instantiates a new Quarter range.
     *
     * @param calendar the calendar
     */
    public QuarterRange(ITimeCalendar calendar) {
        this(Times.now().withTimeAtStartOfDay(), calendar);
    }

    /**
     * Instantiates a new Quarter range.
     *
     * @param moment the moment
     */
    public QuarterRange(DateTime moment) {
        this(moment, new TimeCalendar());
    }

    /**
     * Instantiates a new Quarter range.
     *
     * @param moment   the moment
     * @param calendar the calendar
     */
    public QuarterRange(DateTime moment, ITimeCalendar calendar) {
        this(Times.getYearOf(calendar.getYear(moment), calendar.getMonthOfYear(moment)),
                Times.getQuarterOfMonth(moment.getMonthOfYear()), calendar);
    }

    /**
     * Instantiates a new Quarter range.
     *
     * @param startYear    the start year
     * @param startQuarter the start quarter
     */
    public QuarterRange(int startYear, Quarter startQuarter) {
        super(startYear, startQuarter, 1);
    }

    /**
     * Instantiates a new Quarter range.
     *
     * @param startYear    the start year
     * @param startQuarter the start quarter
     * @param calendar     the calendar
     */
    public QuarterRange(int startYear, Quarter startQuarter, ITimeCalendar calendar) {
        super(startYear, startQuarter, 1, calendar);
    }

    // endregion

    /**
     * Gets year.
     *
     * @return the yeaer
     */
    public int getYear() {
        return getStartYear();
    }

    /**
     * Gets quarter.
     *
     * @return the quarter
     */
    public Quarter getQuarter() {
        return getStartQuarter();
    }

    /**
     * Previous quarter.
     *
     * @return the quarter range
     */
    public QuarterRange previousQuarter() {
        return addQuarters(-1);
    }

    /**
     * Next quarter.
     *
     * @return the quarter range
     */
    public QuarterRange nextQuarter() {
        return addQuarters(1);
    }

    /**
     * Add quarters.
     *
     * @param quarters the quarters
     * @return the quarter range
     */
    public QuarterRange addQuarters(int quarters) {
        YearAndQuarter yq = Times.addQuarter(getStartYear(), getStartQuarter(), quarters);
        return new QuarterRange(yq.getYear(), yq.getQuarter(), getTimeCalendar());
    }

    private static final long serialVersionUID = -5373404703149628573L;
}