package co.smartreceipts.android.workers.reports.pdf.renderer.formatting; 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 RenderingFormatting { private final Map<Class<? extends Formatting>, Formatting<?>> formattingMap = new HashMap<>(); public void addFormatting(@NonNull Formatting<?> Formatting) { Preconditions.checkNotNull(Formatting); this.formattingMap.put(Formatting.getClass(), Formatting); } public boolean hasFormatting(@NonNull Class<? extends Formatting> type) { Preconditions.checkNotNull(type); return formattingMap.containsKey(type); } public void setFormatting(@NonNull RenderingFormatting renderingFormatting) { formattingMap.clear(); formattingMap.putAll(renderingFormatting.formattingMap); } @Nullable public <T> T getFormatting(@NonNull Class<? extends Formatting<T>> type) { Preconditions.checkNotNull(type); final Formatting<?> Formatting = formattingMap.get(type); if (Formatting != null) { return (T) Formatting.value(); } else { return null; } } @NonNull public <T> T getFormatting(@NonNull Class<? extends Formatting<T>> type, @NonNull T defaultValue) { Preconditions.checkNotNull(type); final Formatting<?> Formatting = formattingMap.get(type); if (Formatting != null) { return (T) Formatting.value(); } else { return defaultValue; } } }