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

ai.api.util.ParametersConverter Maven / Gradle / Ivy

package ai.api.util;

import android.text.TextUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public abstract class ParametersConverter {

    public static final String PROTOCOL_DATE_FORMAT = "yyyy-MM-dd";
    public static final String PROTOCOL_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZ";
    public static final String PROTOCOL_TIME_FORMAT = "HH:mm:ss";

    public static Date parseDateTime(final String parameter) throws ParseException {
        final SimpleDateFormat dateTimeFormat = new SimpleDateFormat(PROTOCOL_DATE_TIME_FORMAT, Locale.US);
        return dateTimeFormat.parse(parameter);
    }

    public static Date parseDate(final String parameter) throws ParseException {
        final SimpleDateFormat dateFormat = new SimpleDateFormat(PROTOCOL_DATE_FORMAT, Locale.US);
        return dateFormat.parse(parameter);
    }

    public static Date parseTime(final String parameter) throws ParseException {
        final SimpleDateFormat timeFormat = new SimpleDateFormat(PROTOCOL_TIME_FORMAT, Locale.US);
        final Date timeParameter = timeFormat.parse(parameter);

        final Calendar taskDueDate = Calendar.getInstance();
        taskDueDate.set(Calendar.HOUR_OF_DAY, timeParameter.getHours());
        taskDueDate.set(Calendar.MINUTE, timeParameter.getMinutes());
        taskDueDate.set(Calendar.SECOND, timeParameter.getSeconds());

        return taskDueDate.getTime();
    }

    public static PartialDate parsePartialDate(final String parameter) throws ParseException {
        if (TextUtils.isEmpty(parameter)) {
            throw new IllegalArgumentException("parameter must not be empty");
        }

        if (parameter.contains("u")) {
            // if date contains unknown parts
            final String[] parts = parameter.split("-");
            if (parts.length != 3) {
                throw new ParseException(String.format("Partial date must have 3 parts, but have %s: %s", parts.length, parameter), 0);
            }

            // check each part for unknown
            // each part must contains all digits or all 'u' without mixing
            final Integer year = parsePart(parts[0]);
            final Integer month = parsePart(parts[1]);
            final Integer day = parsePart(parts[2]);

            final PartialDate result = new PartialDate();
            result.set(Calendar.YEAR, year);
            result.set(Calendar.MONTH, month);
            result.set(Calendar.DATE, day);

            return result;
        } else {
            // parse as normal date

            final SimpleDateFormat dateFormat = new SimpleDateFormat(PROTOCOL_DATE_FORMAT, Locale.US);
            final Date date = dateFormat.parse(parameter);
            return new PartialDate(date);
        }
    }

    private static Integer parsePart(final String part) {
        if (part.contains("u")) {
            return PartialDate.UNSPECIFIED_VALUE;
        } else {
            return Integer.parseInt(part);
        }
    }

    public static int parseInteger(final String parameter) {
        return Integer.parseInt(parameter);
    }

    public static float parseFloat(final String parameter) {
        return Float.parseFloat(parameter);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy