package com.constellio.model.entities.structures; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import com.constellio.model.entities.schemas.ModifiableStructure; public class MapStringListStringStructure implements ModifiableStructure, Map<String, List<String>> { Map<String, List<String>> stringListMap; boolean dirty; public MapStringListStringStructure() { stringListMap = new HashMap<>(); } public MapStringListStringStructure(Map<String, List<String>> parameters) { this.stringListMap = parameters; dirty = false; } @Override public List<String> put(String key, List<String> values) { dirty = true; return stringListMap.put(key, values); } @Override public List<String> remove(Object key) { dirty = true; return stringListMap.remove(key); } @Override public void putAll(Map<? extends String, ? extends List<String>> m) { dirty = true; stringListMap.putAll(m); } @Override public void clear() { dirty = true; stringListMap.clear(); } @Override public Set<String> keySet() { return stringListMap.keySet(); } @Override public Collection<List<String>> values() { return stringListMap.values(); } @Override public Set<Entry<String, List<String>>> entrySet() { return stringListMap.entrySet(); } @Override public boolean isDirty() { return dirty; } @Override public String toString() { return "MapStringListString{" + "stringListMap=" + stringListMap + ", dirty=" + dirty + '}'; } @Override public int hashCode() { return HashCodeBuilder.reflectionHashCode(this, "dirty"); } @Override public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj, "dirty"); } @Override public int size() { return stringListMap.size(); } @Override public boolean isEmpty() { return stringListMap.isEmpty(); } @Override public boolean containsKey(Object key) { return stringListMap.containsKey(key); } @Override public boolean containsValue(Object value) { return stringListMap.containsValue(value); } @Override public List<String> get(Object key) { return stringListMap.get(key); } }