package com.constellio.app.modules.es.model.connectors;
import static java.util.Arrays.asList;
import java.util.List;
import org.joda.time.LocalDateTime;
import com.constellio.app.modules.es.model.connectors.http.enums.FetchFrequency;
import com.constellio.model.entities.calculators.CalculatorParameters;
import com.constellio.model.entities.calculators.MetadataValueCalculator;
import com.constellio.model.entities.calculators.dependencies.Dependency;
import com.constellio.model.entities.calculators.dependencies.LocalDependency;
import com.constellio.model.entities.schemas.MetadataValueType;
public class NextFetchCalculator implements MetadataValueCalculator<LocalDateTime> {
LocalDependency<LocalDateTime> fetchedDateTimeParam = LocalDependency.toADateTime(ConnectorDocument.FETCHED_DATETIME);
LocalDependency<Double> fetchDelayParam = LocalDependency.toANumber(ConnectorDocument.FETCH_DELAY);
LocalDependency<FetchFrequency> fetchFrequencyParam = LocalDependency.toAnEnum(ConnectorDocument.FETCH_FREQUENCY);
@Override
public LocalDateTime calculate(CalculatorParameters parameters) {
LocalDateTime fetchedDateTime = parameters.get(fetchedDateTimeParam);
Double fetchDelay = parameters.get(fetchDelayParam);
return fetchedDateTime == null ? null : fetchedDateTime.plusDays(fetchDelay.intValue());
}
@Override
public LocalDateTime getDefaultValue() {
return null;
}
@Override
public MetadataValueType getReturnType() {
return MetadataValueType.DATE_TIME;
}
@Override
public boolean isMultiValue() {
return false;
}
@Override
public List<? extends Dependency> getDependencies() {
return asList(fetchedDateTimeParam, fetchDelayParam, fetchFrequencyParam);
}
}