package org.netbeans.gradle.project.properties.standard;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
import org.jtrim.utils.ExceptionHelper;
public final class MemCustomVariables implements CustomVariables {
public static final CustomVariables EMPTY = new MemCustomVariables(Collections.<CustomVariable>emptySet());
private final Map<String, CustomVariable> variables;
public MemCustomVariables(Collection<CustomVariable> variables) {
this.variables = toMap(variables);
ExceptionHelper.checkNotNullElements(this.variables.values(), "variables");
}
private static Map<String, CustomVariable> toMap(Collection<CustomVariable> variables) {
int count = variables.size();
if (count == 0) {
return Collections.emptyMap();
}
final double loadFactor = 0.75;
int capacity = (int)((double)count / loadFactor) + 1;
Map<String, CustomVariable> result = new LinkedHashMap<>(capacity);
for (CustomVariable var: variables) {
result.put(var.getName(), var);
}
return Collections.unmodifiableMap(result);
}
@Override
public boolean isEmpty() {
return variables.isEmpty();
}
@Override
public String tryGetValue(String name) {
CustomVariable result = variables.get(name);
return result != null ? result.getValue() : null;
}
@Override
public Collection<CustomVariable> getVariables() {
return variables.values();
}
@Override
public int hashCode() {
int hash = 7;
hash = 29 * hash + Objects.hashCode(this.variables);
return hash;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
final MemCustomVariables other = (MemCustomVariables)obj;
return Objects.equals(this.variables, other.variables);
}
@Override
public String toString() {
return getVariables().toString();
}
}