Arthelh/NCNF

View on GitHub
app/src/main/java/com/ncnf/utilities/DateAdapter.java

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package com.ncnf.utilities;

import org.jetbrains.annotations.NotNull;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.Month;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;

public class DateAdapter {

    private final int year;
    private final int month;
    private final int day;

    private final int hour;
    private final int minute;

    private final LocalDateTime date;

    /**
     * Constructor using LocalDateTime date as initial value
     */
    public DateAdapter(LocalDateTime date) {
        final Calendar calendar = Calendar.getInstance();
        calendar.setTime(Date.from(date.atZone(ZoneId.systemDefault()).toInstant()));
        this.date = date;

        year = calendar.get(Calendar.YEAR);
        month = calendar.get(Calendar.MONTH);
        day = calendar.get(Calendar.DAY_OF_MONTH);

        hour = calendar.get(Calendar.HOUR_OF_DAY);
        minute = calendar.get(Calendar.MINUTE);
    }

    /**
     * Constructor using year, month and day to initialize its attributes
     */
    public DateAdapter(int year, int month, int day) {
        final Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month);
        calendar.set(Calendar.DAY_OF_MONTH, day);

        this.year = year;
        this.month = month;
        this.day = day;

        date = LocalDateTime.of(year, Month.of(month), day, 0, 0);

        hour = calendar.get(Calendar.HOUR_OF_DAY);
        minute = calendar.get(Calendar.MINUTE);
    }

    /**
     * Constructor using year, month, day, hour and minute to initialize its attributes
     */
    public DateAdapter(int year, int month, int day, int hour, int minute) {
        final Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month);
        calendar.set(Calendar.DAY_OF_MONTH, day);
        calendar.set(Calendar.HOUR_OF_DAY, hour);
        calendar.set(Calendar.MINUTE, minute);

        this.year = year;
        this.month = month;
        this.day = day;

        date = LocalDateTime.of(year, Month.of(month), day, hour, minute);

        this.hour = hour;
        this.minute = minute;
    }

    /**
     * Getter for attributes
     */
    public LocalDateTime getDate() {
        return date;
    }
    public int getYear() {
        return year;
    }
    public int getMonth() {
        return month;
    }
    public int getDay() {
        return day;
    }
    public int getHour() {
        return hour;
    }
    public int getMinute() {
        return minute;
    }

    /**
     * Parse a string to a date
     * @param s String we want to parse
     * @return Parsed date
     */
    public static LocalDateTime toDate(String s) {

        Date date;

        try {
            //TODO Fix this
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
            date = sdf.parse(s);
        }
        catch (Exception e) {
            return null;
        }

        return LocalDateTime.of(date.getYear() + 1900, date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes());

    }

    @NotNull
    @Override
    public String toString() {
        String thisMinute = minute + "";
        if(minute < 10) {
            thisMinute = "0" + minute;
        }

        return day + "/" + month + "/" + year + " " + hour + ":" + thisMinute;
    }
}