Subversion Repositories SmartDukaan

Rev

Rev 33136 | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.spice.profitmandi.dao.model;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class DateRangeModel implements java.io.Serializable {
        private static final long serialVersionUID = 1L;
        LocalDateTime startDate;
        LocalDateTime endDate;

        public static DateRangeModel withEndDate(LocalDateTime endDate) {
                DateRangeModel drm = new DateRangeModel();
                drm.setEndDate(endDate);
                return drm;
        }

        public static DateRangeModel withStartDate(LocalDateTime startDate) {
                DateRangeModel drm = new DateRangeModel();
                drm.setStartDate(startDate);
                return drm;
        }

        public static DateRangeModel ofDate(LocalDate date) {
                DateRangeModel drm = new DateRangeModel();
                drm.setStartDate(date.atStartOfDay());
                drm.setEndDate(date.atTime(LocalTime.MAX));
                return drm;
        }

        public static DateRangeModel of(LocalDateTime startDate, LocalDateTime endDate) {
                DateRangeModel drm = new DateRangeModel();
                drm.setEndDate(endDate);
                drm.setStartDate(startDate);
                return drm;
        }

        public LocalDateTime getStartDate() {
                return startDate;
        }

        public void setStartDate(LocalDateTime startDate) {
                this.startDate = startDate;
        }

        public LocalDateTime getEndDate() {
                return endDate;
        }

        public void setEndDate(LocalDateTime endDate) {
                this.endDate = endDate;
        }

        public boolean contains(LocalDateTime dateTime) {
                boolean afterOrEqualStartDate = startDate == null || dateTime.isAfter(startDate) || dateTime.isEqual(startDate);
                boolean beforeOrEqualEndDate = endDate == null || dateTime.isBefore(endDate) || dateTime.isEqual(endDate);
                return afterOrEqualStartDate && beforeOrEqualEndDate;
        }

        @Override
        public String toString() {
                return "DateRangeModel [startDate=" + startDate + ", endDate=" + endDate + "]";
        }

        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + ((endDate == null) ? 0 : endDate.hashCode());
                result = prime * result + ((startDate == null) ? 0 : startDate.hashCode());
                return result;
        }

        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                DateRangeModel other = (DateRangeModel) obj;
                if (endDate == null) {
                        if (other.endDate != null)
                                return false;
                } else if (!endDate.equals(other.endDate))
                        return false;
                if (startDate == null) {
                        if (other.startDate != null)
                                return false;
                } else if (!startDate.equals(other.startDate))
                        return false;
                return true;
        }

}