package co.smartreceipts.android.workers.reports.pdf.renderer.constraints;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.google.common.base.Preconditions;
import java.util.HashMap;
import java.util.Map;
public class RenderingConstraints {
private final Map<Class<? extends Constraint>, Constraint<?>> constraintMap = new HashMap<>();
public void addConstraint(@NonNull Constraint<?> constraint) {
Preconditions.checkNotNull(constraint);
this.constraintMap.put(constraint.getClass(), constraint);
}
public boolean hasConstraint(@NonNull Class<? extends Constraint> type) {
Preconditions.checkNotNull(type);
return constraintMap.containsKey(type);
}
public void setConstraints(@NonNull RenderingConstraints renderingConstraints) {
constraintMap.clear();
constraintMap.putAll(renderingConstraints.constraintMap);
}
@Nullable
public <T> T getConstraint(@NonNull Class<? extends Constraint<T>> type) {
Preconditions.checkNotNull(type);
final Constraint<?> constraint = constraintMap.get(type);
if (constraint != null) {
return (T) constraint.value();
} else {
return null;
}
}
@NonNull
public <T> T getConstraint(@NonNull Class<? extends Constraint<T>> type, @NonNull T defaultValue) {
Preconditions.checkNotNull(type);
final Constraint<?> constraint = constraintMap.get(type);
if (constraint != null) {
return (T) constraint.value();
} else {
return defaultValue;
}
}
}