package com.constellio.app.modules.rm.model.calculators.folder; import static com.constellio.model.services.schemas.calculators.AutocompleteFieldCalculator.splitInLowerCasedTermsRemovingAccents; import static java.util.Arrays.asList; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import com.constellio.app.modules.rm.wrappers.Folder; import com.constellio.model.entities.calculators.CalculatorParameters; import com.constellio.model.entities.calculators.MetadataValueCalculator; import com.constellio.model.entities.calculators.dependencies.Dependency; import com.constellio.model.entities.calculators.dependencies.DynamicLocalDependency; import com.constellio.model.entities.calculators.dependencies.ReferenceDependency; import com.constellio.model.entities.schemas.MetadataValueType; import com.constellio.model.entities.schemas.Schemas; import com.constellio.model.services.schemas.calculators.AutocompleteFieldCalculator.LocalAutocompleteMetadatasDependency; public class FolderAutocompleteFieldCalculator implements MetadataValueCalculator<List<String>> { DynamicLocalDependency autocompleteMetadatasDependency = new LocalAutocompleteMetadatasDependency(); ReferenceDependency<List<String>> parentAutocompleteTermsDependency = ReferenceDependency .toAString(Folder.PARENT_FOLDER, Schemas.SCHEMA_AUTOCOMPLETE_FIELD.getLocalCode()).whichIsMultivalue(); @Override public List<String> calculate(CalculatorParameters parameters) { Set<String> words = new HashSet<>(); splitInLowerCasedTermsRemovingAccents(words, parameters.get(autocompleteMetadatasDependency)); splitInLowerCasedTermsRemovingAccents(words, parameters.get(parentAutocompleteTermsDependency)); List<String> returnedWords = new ArrayList<>(words); Collections.sort(returnedWords); return returnedWords; } @Override public List<String> getDefaultValue() { return new ArrayList<>(); } @Override public MetadataValueType getReturnType() { return MetadataValueType.STRING; } @Override public boolean isMultiValue() { return true; } @Override public List<? extends Dependency> getDependencies() { return asList(autocompleteMetadatasDependency, parentAutocompleteTermsDependency); } }