All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.geotools.temporal.reference.DefaultCalendarEra Maven / Gradle / Ivy

/*
 *    GeoTools - The Open Source Java GIS Toolkit
 *    http://geotools.org
 *
 *    (C) 2008, Open Source Geospatial Foundation (OSGeo)
 *
 *    This library is free software; you can redistribute it and/or
 *    modify it under the terms of the GNU Lesser General Public
 *    License as published by the Free Software Foundation;
 *    version 2.1 of the License.
 *
 *    This library is 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
 *    Lesser General Public License for more details.
 */
package org.geotools.temporal.reference;

import java.util.Collection;
import org.geotools.util.Utilities;
import org.opengis.temporal.Calendar;
import org.opengis.temporal.CalendarDate;
import org.opengis.temporal.CalendarEra;
import org.opengis.temporal.JulianDate;
import org.opengis.temporal.Period;
import org.opengis.util.InternationalString;

/** @author Mehdi Sidhoum (Geomatys) */
public class DefaultCalendarEra implements CalendarEra {

    /** identify the calendar era within this calendar. */
    private InternationalString name;
    /**
     * provide the name or description of a mythical or historic event which fixes the position of
     * the base scale of the calendar era.
     */
    private InternationalString referenceEvent;
    /**
     * provide the date of the reference referenceEvent expressed as a date in the given calendar.
     * In most calendars, this date is the origin (i.e the first day) of the scale, but this is not
     * always true.
     */
    private CalendarDate referenceDate;
    /** provide the Julian date that corresponds to the reference date. */
    private JulianDate julianReference;
    /**
     * identify the TM_Period for which the calendar era was used as a basis for dating, the
     * datatype for TM_Period.begin and Tm_Period.end shall be JulianDate.
     */
    private Period epochOfUse;

    public DefaultCalendarEra(
            InternationalString name,
            InternationalString referenceEvent,
            CalendarDate referenceDate,
            JulianDate julianReference,
            Period epochOfUse) {
        this.name = name;
        this.referenceDate = referenceDate;
        this.referenceEvent = referenceEvent;
        this.julianReference = julianReference;
        this.epochOfUse = epochOfUse;
    }

    public InternationalString getName() {
        return name;
    }

    public InternationalString getReferenceEvent() {
        return referenceEvent;
    }

    public CalendarDate getReferenceDate() {
        return referenceDate;
    }

    public JulianDate getJulianReference() {
        return julianReference;
    }

    public Period getEpochOfUse() {
        return epochOfUse;
    }

    public void setName(InternationalString name) {
        this.name = name;
    }

    public void setReferenceEvent(InternationalString referenceEvent) {
        this.referenceEvent = referenceEvent;
    }

    public void setReferenceDate(CalendarDate referenceDate) {
        this.referenceDate = referenceDate;
    }

    public void setJulianReference(JulianDate julianReference) {
        this.julianReference = julianReference;
    }

    public void setEpochOfUse(Period epochOfUse) {
        this.epochOfUse = epochOfUse;
    }

    public Collection getDatingSystem() {
        return null;
    }

    @Override
    public boolean equals(final Object object) {
        if (object instanceof DefaultCalendarEra) {
            final DefaultCalendarEra that = (DefaultCalendarEra) object;

            return Utilities.equals(this.epochOfUse, that.epochOfUse)
                    && Utilities.equals(this.julianReference, that.julianReference)
                    && Utilities.equals(this.name, that.name)
                    && Utilities.equals(this.referenceDate, that.referenceDate)
                    && Utilities.equals(this.referenceEvent, that.referenceEvent);
        }
        return false;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 37 * hash + (this.epochOfUse != null ? this.epochOfUse.hashCode() : 0);
        hash = 37 * hash + (this.julianReference != null ? this.julianReference.hashCode() : 0);
        hash = 37 * hash + (this.name != null ? this.name.hashCode() : 0);
        hash = 37 * hash + (this.referenceDate != null ? this.referenceDate.hashCode() : 0);
        hash = 37 * hash + (this.referenceEvent != null ? this.referenceEvent.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        StringBuilder s = new StringBuilder("CalendarEra:").append('\n');
        if (name != null) {
            s.append("name:").append(name).append('\n');
        }
        if (epochOfUse != null) {
            s.append("epochOfUse:").append(epochOfUse).append('\n');
        }
        if (referenceEvent != null) {
            s.append("referenceEvent:").append(referenceEvent).append('\n');
        }
        if (referenceDate != null) {
            s.append("referenceDate:").append(referenceDate).append('\n');
        }
        if (julianReference != null) {
            s.append("julianReference:").append(julianReference).append('\n');
        }
        return s.toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy