package com.constellio.app.services.schemas.bulkImport;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import com.constellio.data.utils.KeySetMap;
import com.constellio.model.entities.Language;
import com.constellio.model.entities.schemas.MetadataSchemaType;
import com.constellio.model.entities.schemas.MetadataSchemaTypes;
import com.constellio.model.frameworks.validation.ValidationErrors;
public class SkippedRecordsImport {
public static final String SKIP_BECAUSE_DEPENDENCE_FAILED = "skipBecauseDependenceFailed";
KeySetMap<String, String> skippedBecauseOfFailure = new KeySetMap<>();
KeySetMap<String, String> skippedBecauseOfDependency = new KeySetMap<>();
public void markAsSkippedBecauseOfFailure(String schemaType, String id) {
skippedBecauseOfFailure.add(schemaType, id);
}
public boolean isSkipped(String schemaType, String id) {
return (skippedBecauseOfFailure.contains(schemaType) && skippedBecauseOfFailure.get(schemaType).contains(id)) ||
(skippedBecauseOfDependency.contains(schemaType) && skippedBecauseOfDependency.get(schemaType).contains(id));
}
public void markAsSkippedBecauseOfDependencyFailure(String schemaType, String id) {
skippedBecauseOfDependency.add(schemaType, id);
}
public void addWarningForSkippedRecordsBecauseOfDependencies(Language language, MetadataSchemaTypes types,
ValidationErrors errors) {
for (Map.Entry<String, Set<String>> entry : skippedBecauseOfDependency.getMapEntries()) {
MetadataSchemaType type = types.getSchemaType(entry.getKey());
Map<String, Object> parameters = new HashMap<>();
parameters.put("prefix", type.getLabel(language) + " : ");
parameters.put("impacts", "" + entry.getValue().size());
errors.addWarning(SkippedRecordsImport.class, SKIP_BECAUSE_DEPENDENCE_FAILED, parameters);
}
}
}