package com.example.util.other; import android.content.res.AssetManager; import com.example.util.nullability.Preconditions; import timber.log.Timber; import javax.annotation.Nullable; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * Class that provides easy access to properties files found in the project. */ public class PropertiesManager { private static final String PROPERTIES_FILENAME = "project.properties"; private final Properties properties; public PropertiesManager(AssetManager assetManager) { properties = new Properties(); InputStream inputStream; try { inputStream = assetManager.open(PROPERTIES_FILENAME); properties.load(inputStream); } catch (IOException e) { throw new AssertionError(e); } try { inputStream.close(); } catch (IOException e) { Timber.e(e, "Failed to close input stream"); } } public String getDribleClientAccessToken() { @Nullable String authToken = properties.getProperty(Property.DRIBBLE_CLIENT_ACCESS_TOKEN.getPropertyKey()); Preconditions.checkNotNull(authToken); return authToken; } public String getBaseUrl() { @Nullable String baseUrl = properties.getProperty(Property.BASE_URL.getPropertyKey()); Preconditions.checkNotNull(baseUrl); return baseUrl; } private enum Property { DRIBBLE_CLIENT_ACCESS_TOKEN("dribbleClientAccessToken"), BASE_URL("dribbleBaseUrl"); private final String propertyKey; Property(String authToken) { this.propertyKey = authToken; } public String getPropertyKey() { return propertyKey; } } }