package com.constellio.app.modules.rm.model.calculators.document;
import static com.constellio.model.entities.schemas.MetadataValueType.DATE;
import static com.constellio.model.entities.schemas.MetadataValueType.DATE_TIME;
import static com.constellio.model.entities.schemas.MetadataValueType.NUMBER;
import static com.constellio.model.entities.schemas.MetadataValueType.STRING;
import static java.util.Arrays.asList;
import java.util.List;
import org.joda.time.LocalDate;
import com.constellio.app.modules.rm.wrappers.Document;
import com.constellio.model.entities.calculators.DynamicDependencyValues;
import com.constellio.model.entities.calculators.dependencies.DynamicLocalDependency;
import com.constellio.model.entities.schemas.Metadata;
import com.constellio.model.entities.schemas.MetadataValueType;
public class DocumentDecomDatesDynamicLocalDependency extends DynamicLocalDependency {
public static List<String> excludedMetadatas = asList(
Document.ACTUAL_DEPOSIT_DATE_ENTERED,
Document.ACTUAL_DESTRUCTION_DATE_ENTERED,
Document.ACTUAL_TRANSFER_DATE_ENTERED,
Document.FOLDER_ACTUAL_DEPOSIT_DATE,
Document.FOLDER_ACTUAL_DESTRUCTION_DATE,
Document.FOLDER_ACTUAL_TRANSFER_DATE,
Document.FOLDER_EXPECTED_DEPOSIT_DATE,
Document.FOLDER_EXPECTED_DESTRUCTION_DATE,
Document.FOLDER_EXPECTED_TRANSFER_DATE
);
@Override
public boolean isDependentOf(Metadata metadata) {
return isMetadataUsableByCopyRetentionRules(metadata);
}
public static boolean isMetadataUsableByCopyRetentionRules(Metadata metadata) {
if (metadata.getType() == DATE || metadata.getType() == DATE_TIME || metadata.getType() == NUMBER
|| isTimeRangeMetadata(metadata)) {
return !excludedMetadatas.contains(metadata.getLocalCode());
} else {
return false;
}
}
private static boolean isTimeRangeMetadata(Metadata metadata) {
return "9999-9999".equals(metadata.getInputMask());
}
/*@Deprecated
@Override
public LocalDate getDate(String metadata, DynamicDependencyValues values) {
return super.getDate(metadata, values);
}*/
}