package com.constellio.model.entities.records.calculators; import java.util.Arrays; import java.util.List; import com.constellio.model.entities.calculators.CalculatorParameters; import com.constellio.model.entities.calculators.MetadataValueCalculator; import com.constellio.model.entities.calculators.dependencies.ConfigDependency; import com.constellio.model.entities.calculators.dependencies.Dependency; import com.constellio.model.entities.calculators.dependencies.LocalDependency; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.schemas.MetadataValueType; import com.constellio.model.services.migrations.ConstellioEIMConfigs; public class UserTitleCalculator implements MetadataValueCalculator<String> { ConfigDependency<String> titlePatternParam = ConstellioEIMConfigs.USER_TITLE_PATTERN.dependency(); LocalDependency<String> firstNameParam = LocalDependency.toAString(User.FIRSTNAME); LocalDependency<String> lastNameParam = LocalDependency.toAString(User.LASTNAME); LocalDependency<String> usernameParam = LocalDependency.toAString(User.USERNAME); @Override public String calculate(CalculatorParameters parameters) { String titlePattern = parameters.get(titlePatternParam); String firstName = parameters.get(firstNameParam); String lastName = parameters.get(lastNameParam); String username = parameters.get(usernameParam); firstName = firstName == null ? "" : firstName; lastName = lastName == null ? "" : lastName; username = username == null ? "" : username; titlePattern = titlePattern.replace("${firstName}", firstName).replace("${lastName}", lastName) .replace("${username}", username); String pattern = ".*[A-Za-z0-9]+.*"; boolean isValid = titlePattern.matches(pattern); if (!isValid) { titlePattern = username; } return titlePattern; } @Override public String getDefaultValue() { return null; } @Override public MetadataValueType getReturnType() { return MetadataValueType.STRING; } @Override public boolean isMultiValue() { return false; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(titlePatternParam, firstNameParam, lastNameParam, usernameParam); } }