package com.constellio.model.services.factories; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.constellio.model.entities.calculators.MetadataValueCalculator; import com.constellio.model.entities.calculators.dependencies.Dependency; import com.constellio.model.services.records.RecordImpl; public class ModelLayerLogger { private static final Logger LOGGER = LoggerFactory.getLogger(ModelLayerLogger.class); private Set<String> loggedRecord = new HashSet<>(); public void logRecord(String id) { loggedRecord.add(id); } public void logCalculatedValue(RecordImpl record, MetadataValueCalculator<?> calculator, Map<Dependency, Object> values) { if (loggedRecord.contains(record.getId())) { StringBuilder logText = new StringBuilder( "Calculator '" + calculator.getClass().getSimpleName() + "' of record '" + record.getIdTitle() + "'"); for (Map.Entry<Dependency, Object> param : values.entrySet()) { logText.append("\n\t" + param.getKey() + " => " + param.getValue()); } LOGGER.info(logText.toString()); } } }