package com.liato.bankdroid.api.domain.account.impl;
import com.liato.bankdroid.api.domain.account.Account;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.Map;
public class AccountBuilder extends AbstractAccountBuilder<AccountBuilder> {
public AccountBuilder(String id, String name, String currency) {
super(id, name, currency);
}
protected AccountBuilder self() {
return this;
}
public Account build() {
return new BasicAccount(mId, mName, mCurrency, mBalance, mCustomAttributes);
}
static class BasicAccount implements Account {
private String mId;
private String mName;
private BigDecimal mBalance;
private String mCurrency;
private Map<String, String> mCustomAttributes;
protected BasicAccount(String id, String name, String currency, BigDecimal balance, Map<String, String> customAttributes) {
mId = id;
mCurrency = currency;
mName = name;
mBalance = balance;
mCustomAttributes = customAttributes;
}
@Override
public String getId() {
return mId;
}
@Override
public String getName() {
return mName;
}
@Override
public BigDecimal getBalance() {
return mBalance == null ? BigDecimal.ZERO : mBalance;
}
@Override
public String getCurrency() {
return mCurrency;
}
@Override
public Map<String, String> getCustomAttributes() {
return mCustomAttributes == null ? Collections.<String, String>emptyMap() : mCustomAttributes;
}
}
}