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

com.github.tankist88.extension.jodatime.PeriodExtension Maven / Gradle / Ivy

package com.github.tankist88.extension.jodatime;

import com.github.tankist88.object2source.dto.ProviderInfo;
import com.github.tankist88.object2source.dto.ProviderResult;
import com.github.tankist88.object2source.extension.AbstractEmbeddedExtension;
import org.joda.time.Period;

import java.util.Set;

public class PeriodExtension extends AbstractEmbeddedExtension {
    @Override
    public boolean isTypeSupported(Class clazz) {
        return clazz.equals(org.joda.time.Period.class);
    }

    @Override
    public void fillMethodBody(StringBuilder bb, Set providers, int objectDepth, Object obj) throws Exception {
        Period value = (Period) obj;

        int years = value.getYears();
        int months = value.getMonths();
        int weeks = value.getWeeks();
        int days = value.getDays();
        int hours = value.getHours();
        int minutes = value.getMinutes();
        int seconds = value.getSeconds();
        int millis = value.getMillis();

        ProviderResult generatedPeriodType = sourceGenerator.createDataProviderMethod(value.getPeriodType());

        providers.addAll(generatedPeriodType.getProviders());

        bb  .append(getTabSymb()).append(getTabSymb()).append("return new org.joda.time.Period(")
            .append(years).append(", ")
            .append(months).append(", ")
            .append(weeks).append(", ")
            .append(days).append(", ")
            .append(hours).append(", ")
            .append(minutes).append(", ")
            .append(seconds).append(", ")
            .append(millis).append(", ")
            .append(generatedPeriodType.getEndPoint().getMethodName())
            .append(");\n");
    }

    @Override
    public String getActualType(Object obj) {
        return org.joda.time.Period.class.getName();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy