/* * Copyright 2015 Victor Albertos * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.rx_cache2; import io.reactivex.Observable; import io.rx_cache2.internal.Locale; public final class ConfigProvider { private final String providerKey; private final Boolean useExpiredDataIfNotLoaderAvailable; private final Long lifeTime; private final boolean requiredDetailedResponse; private final boolean expirable; private final boolean encrypted; private final String dynamicKey, dynamicKeyGroup; private final Observable loaderObservable; private final EvictProvider evictProvider; public ConfigProvider(String providerKey, Boolean useExpiredDataIfNotLoaderAvailable, Long lifeTime, boolean requiredDetailedResponse, boolean expirable, boolean encrypted, String dynamicKey, String dynamicKeyGroup, Observable loaderObservable, EvictProvider evictProvider) { this.providerKey = providerKey; this.useExpiredDataIfNotLoaderAvailable = useExpiredDataIfNotLoaderAvailable; this.lifeTime = lifeTime; this.requiredDetailedResponse = requiredDetailedResponse; this.expirable = expirable; this.encrypted = encrypted; this.dynamicKey = dynamicKey; this.dynamicKeyGroup = dynamicKeyGroup; this.loaderObservable = loaderObservable; this.evictProvider = evictProvider; checkIntegrity(); } public String getProviderKey() { return providerKey; } public String getDynamicKey() { return dynamicKey; } public String getDynamicKeyGroup() { return dynamicKeyGroup; } public Long getLifeTimeMillis() { return lifeTime; } public boolean requiredDetailedResponse() { return requiredDetailedResponse; } public Observable getLoaderObservable() { return loaderObservable; } public EvictProvider evictProvider() { return evictProvider; } public boolean isExpirable() { return expirable; } public boolean isEncrypted() { return encrypted; } public Boolean useExpiredDataIfNotLoaderAvailable() { return useExpiredDataIfNotLoaderAvailable; } private void checkIntegrity() { if (evictProvider() instanceof io.rx_cache2.EvictDynamicKeyGroup && getDynamicKeyGroup().isEmpty()) { String errorMessage = providerKey + Locale.EVICT_DYNAMIC_KEY_GROUP_PROVIDED_BUT_NOT_PROVIDED_ANY_DYNAMIC_KEY_GROUP; throw new IllegalArgumentException(errorMessage); } if (evictProvider() instanceof io.rx_cache2.EvictDynamicKey && getDynamicKey().isEmpty()) { String errorMessage = providerKey + Locale.EVICT_DYNAMIC_KEY_PROVIDED_BUT_NOT_PROVIDED_ANY_DYNAMIC_KEY; throw new IllegalArgumentException(errorMessage); } } }