package co.smartreceipts.android.persistence.database.defaults;
import android.content.Context;
import android.content.res.Resources;
import android.support.annotation.NonNull;
import java.util.List;
import javax.inject.Inject;
import co.smartreceipts.android.R;
import co.smartreceipts.android.model.Column;
import co.smartreceipts.android.model.Receipt;
import co.smartreceipts.android.model.factory.PaymentMethodBuilderFactory;
import co.smartreceipts.android.model.impl.ImmutableCategoryImpl;
import co.smartreceipts.android.model.impl.columns.receipts.ReceiptColumnDefinitions;
import co.smartreceipts.android.persistence.database.operations.DatabaseOperationMetadata;
import co.smartreceipts.android.persistence.database.tables.CSVTable;
import co.smartreceipts.android.persistence.database.tables.CategoriesTable;
import co.smartreceipts.android.persistence.database.tables.PDFTable;
import co.smartreceipts.android.persistence.database.tables.PaymentMethodsTable;
public class TableDefaultCustomizerImpl implements TableDefaultsCustomizer {
@Inject Context mContext;
@Inject ReceiptColumnDefinitions mReceiptColumnDefinitions;
@Inject
public TableDefaultCustomizerImpl() {
}
// public TableDefaultCustomizerImpl(@NonNull Context context, @NonNull ReceiptColumnDefinitions receiptColumnDefinitions) {
// mContext = Preconditions.checkNotNull(context.getApplicationContext());
// mReceiptColumnDefinitions = Preconditions.checkNotNull(receiptColumnDefinitions);
// }
@Override
public void insertCSVDefaults(@NonNull final CSVTable csvTable) {
final DatabaseOperationMetadata databaseOperationMetadata = new DatabaseOperationMetadata();
final List<Column<Receipt>> columns = mReceiptColumnDefinitions.getCsvDefaults();
final int size = columns.size();
for (int i = 0; i < size; i++) {
csvTable.insertBlocking(columns.get(i), databaseOperationMetadata);
}
}
@Override
public void insertPDFDefaults(@NonNull final PDFTable pdfTable) {
final DatabaseOperationMetadata databaseOperationMetadata = new DatabaseOperationMetadata();
final List<Column<Receipt>> columns = mReceiptColumnDefinitions.getPdfDefaults();
final int size = columns.size();
for (int i = 0; i < size; i++) {
pdfTable.insertBlocking(columns.get(i), databaseOperationMetadata);
}
}
@Override
public void insertCategoryDefaults(@NonNull final CategoriesTable categoriesTable) {
final DatabaseOperationMetadata databaseOperationMetadata = new DatabaseOperationMetadata();
final Resources resources = mContext.getResources();
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_null), resources.getString(R.string.category_null_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_airfare), resources.getString(R.string.category_airfare_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_breakfast), resources.getString(R.string.category_breakfast_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_dinner), resources.getString(R.string.category_dinner_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_entertainment), resources.getString(R.string.category_entertainment_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_gasoline), resources.getString(R.string.category_gasoline_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_gift), resources.getString(R.string.category_gift_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_hotel), resources.getString(R.string.category_hotel_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_laundry), resources.getString(R.string.category_laundry_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_lunch), resources.getString(R.string.category_lunch_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_other), resources.getString(R.string.category_other_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_parking_tolls), resources.getString(R.string.category_parking_tolls_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_postage_shipping), resources.getString(R.string.category_postage_shipping_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_car_rental), resources.getString(R.string.category_car_rental_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_taxi_bus), resources.getString(R.string.category_taxi_bus_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_telephone_fax), resources.getString(R.string.category_telephone_fax_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_tip), resources.getString(R.string.category_tip_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_train), resources.getString(R.string.category_train_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_books_periodicals), resources.getString(R.string.category_books_periodicals_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_cell_phone), resources.getString(R.string.category_cell_phone_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_dues_subscriptions), resources.getString(R.string.category_dues_subscriptions_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_meals_justified), resources.getString(R.string.category_meals_justified_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_stationery_stations), resources.getString(R.string.category_stationery_stations_code)), databaseOperationMetadata);
categoriesTable.insertBlocking(new ImmutableCategoryImpl(resources.getString(R.string.category_training_fees), resources.getString(R.string.category_training_fees_code)), databaseOperationMetadata);
}
@Override
public void insertPaymentMethodDefaults(@NonNull final PaymentMethodsTable paymentMethodsTable) {
final DatabaseOperationMetadata databaseOperationMetadata = new DatabaseOperationMetadata();
paymentMethodsTable.insertBlocking(new PaymentMethodBuilderFactory().setMethod(mContext.getString(R.string.payment_method_default_unspecified)).build(), databaseOperationMetadata);
paymentMethodsTable.insertBlocking(new PaymentMethodBuilderFactory().setMethod(mContext.getString(R.string.payment_method_default_corporate_card)).build(), databaseOperationMetadata);
paymentMethodsTable.insertBlocking(new PaymentMethodBuilderFactory().setMethod(mContext.getString(R.string.payment_method_default_personal_card)).build(), databaseOperationMetadata);
paymentMethodsTable.insertBlocking(new PaymentMethodBuilderFactory().setMethod(mContext.getString(R.string.payment_method_default_check)).build(), databaseOperationMetadata);
paymentMethodsTable.insertBlocking(new PaymentMethodBuilderFactory().setMethod(mContext.getString(R.string.payment_method_default_cash)).build(), databaseOperationMetadata);
}
}