package co.smartreceipts.android.workers.reports;
import android.content.Context;
import android.support.annotation.NonNull;
import com.google.common.base.Preconditions;
import co.smartreceipts.android.persistence.DatabaseHelper;
import co.smartreceipts.android.persistence.PersistenceManager;
import co.smartreceipts.android.settings.UserPreferenceManager;
import wb.android.flex.Flex;
import wb.android.storage.StorageManager;
/**
* Provides some core behavior that multiple {@link Report} implementations use
*/
public abstract class AbstractReport implements Report {
private final Context context;
private final DatabaseHelper databaseHelper;
private final UserPreferenceManager userPreferenceManager;
private final StorageManager storageManager;
private final Flex flex;
protected AbstractReport(@NonNull Context context, @NonNull PersistenceManager persistenceManager, @NonNull Flex flex) {
this(context, persistenceManager.getDatabase(), persistenceManager.getPreferenceManager(), persistenceManager.getStorageManager(), flex);
}
protected AbstractReport(@NonNull Context context, @NonNull DatabaseHelper db, @NonNull UserPreferenceManager preferences,
@NonNull StorageManager storageManager, @NonNull Flex flex) {
this.context = Preconditions.checkNotNull(context);
this.databaseHelper = Preconditions.checkNotNull(db);
this.userPreferenceManager = Preconditions.checkNotNull(preferences);
this.storageManager = Preconditions.checkNotNull(storageManager);
this.flex = Preconditions.checkNotNull(flex);
}
@NonNull
protected final Context getContext() {
return context;
}
@NonNull
protected final DatabaseHelper getDatabase() {
return databaseHelper;
}
@NonNull
protected final UserPreferenceManager getPreferences() {
return userPreferenceManager;
}
@NonNull
protected final StorageManager getStorageManager() {
return storageManager;
}
@NonNull
protected final Flex getFlex() {
return flex;
}
}