package com.constellio.app.modules.rm.model.calculators.folder;
import com.constellio.app.modules.rm.wrappers.Folder;
import com.constellio.model.entities.calculators.dependencies.DynamicLocalDependency;
import com.constellio.model.entities.schemas.Metadata;
import java.util.List;
import static com.constellio.model.entities.schemas.MetadataValueType.*;
import static java.util.Arrays.asList;
public class FolderDecomDatesDynamicLocalDependency extends DynamicLocalDependency {
public static List<String> excludedMetadatas = asList(
Folder.BORROW_DATE,
Folder.BORROW_PREVIEW_RETURN_DATE,
Folder.BORROW_RETURN_DATE,
Folder.COPY_RULES_EXPECTED_DEPOSIT_DATES,
Folder.COPY_RULES_EXPECTED_DESTRUCTION_DATES,
Folder.COPY_RULES_EXPECTED_TRANSFER_DATES,
Folder.DECOMMISSIONING_DATE,
Folder.ACTUAL_DEPOSIT_DATE,
Folder.ACTUAL_DEPOSIT_DATE,
Folder.ACTUAL_DESTRUCTION_DATE,
Folder.ACTUAL_TRANSFER_DATE,
Folder.EXPECTED_DEPOSIT_DATE,
Folder.EXPECTED_DESTRUCTION_DATE,
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());
}
@Override
public boolean equals(Object obj) {
return obj != null && obj instanceof FolderDecomDatesDynamicLocalDependency;
}
@Override
public int hashCode() {
return FolderDecomDatesDynamicLocalDependency.class.hashCode();
}
/*@Deprecated
@Override
public LocalDate getDate(String metadata, DynamicDependencyValues values) {
return super.getDate(metadata, values);
}*/
}