Fix transaction edition
- Fix crash when trying to edit a transaction - Update the code when editing a transaction to match the new interface
This commit is contained in:
parent
74cae8fa67
commit
df9ab11410
@ -180,7 +180,7 @@ public class Transactions extends Fragment {
|
|||||||
|
|
||||||
private void drawTransactionList(ArrayList<Transaction> transactions)
|
private void drawTransactionList(ArrayList<Transaction> transactions)
|
||||||
{
|
{
|
||||||
TransactionListAdapter transactionListAdapter = new TransactionListAdapter(getActivity().getBaseContext(), transactions);
|
TransactionListAdapter transactionListAdapter = new TransactionListAdapter(getActivity(), transactions);
|
||||||
|
|
||||||
transactionLayout.setAdapter(transactionListAdapter);
|
transactionLayout.setAdapter(transactionListAdapter);
|
||||||
transactionLayout.setTextFilterEnabled(false);
|
transactionLayout.setTextFilterEnabled(false);
|
||||||
|
@ -36,6 +36,7 @@ import com.herbron.moodl.CurrencyInfoUpdateNotifierInterface;
|
|||||||
import com.herbron.moodl.CustomAdapters.PairRecordListAdapter;
|
import com.herbron.moodl.CustomAdapters.PairRecordListAdapter;
|
||||||
import com.herbron.moodl.CustomLayouts.CustomRecordFragment;
|
import com.herbron.moodl.CustomLayouts.CustomRecordFragment;
|
||||||
import com.herbron.moodl.DataManagers.CurrencyData.Currency;
|
import com.herbron.moodl.DataManagers.CurrencyData.Currency;
|
||||||
|
import com.herbron.moodl.DataManagers.CurrencyData.Transaction;
|
||||||
import com.herbron.moodl.DataManagers.ExchangeManager.Exchange;
|
import com.herbron.moodl.DataManagers.ExchangeManager.Exchange;
|
||||||
import com.herbron.moodl.DataManagers.InfoAPIManagers.CryptocompareApiManager;
|
import com.herbron.moodl.DataManagers.InfoAPIManagers.CryptocompareApiManager;
|
||||||
import com.herbron.moodl.DataManagers.DatabaseManager;
|
import com.herbron.moodl.DataManagers.DatabaseManager;
|
||||||
@ -84,55 +85,31 @@ public class RecordTransactionActivity extends AppCompatActivity implements Curr
|
|||||||
|
|
||||||
private boolean isGlobalLayoutVisible;
|
private boolean isGlobalLayoutVisible;
|
||||||
|
|
||||||
/*private boolean checkPriceText()
|
private TextWatcher coinTextWatcher = new TextWatcher() {
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
currencyIconImageView.setImageBitmap(null);
|
||||||
|
exchange_autoCompleteTextView.setEnabled(false);
|
||||||
|
exchange_autoCompleteTextView.setText("");
|
||||||
|
|
||||||
|
((LinearLayout) tabLayout.getChildAt(0)).getChildAt(2).setEnabled(false);
|
||||||
|
|
||||||
|
if(isGlobalLayoutVisible && globalTabLayouts.getAnimation().hasEnded())
|
||||||
{
|
{
|
||||||
String purchasedPriceText = purchasedPriceEditText.getText().toString();
|
globalTabLayouts.startAnimation(dismissAnimation);
|
||||||
double purchasedPrice;
|
|
||||||
|
|
||||||
try {
|
|
||||||
purchasedPrice = Double.parseDouble(purchasedPriceText);
|
|
||||||
|
|
||||||
if(purchasedPrice < 0)
|
|
||||||
{
|
|
||||||
purchasedPriceEditText.setError(getResources().getString(R.string.field_negative));
|
|
||||||
}
|
}
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
purchasedPriceEditText.setError(getResources().getString(R.string.field_nan));
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(purchasedPriceText.equals(""))
|
@Override
|
||||||
{
|
public void afterTextChanged(Editable s) {
|
||||||
purchasedPriceEditText.setError(getResources().getString(R.string.field_empty));
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean checkAmountText()
|
|
||||||
{
|
|
||||||
String amountText = amountTxtView.getText().toString();
|
|
||||||
|
|
||||||
try {
|
|
||||||
Double.parseDouble(amountText);
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
amountTxtView.setError(getResources().getString(R.string.field_nan));
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(amountText.equals(""))
|
|
||||||
{
|
|
||||||
amountTxtView.setError(getResources().getString(R.string.field_empty));
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -165,6 +142,112 @@ public class RecordTransactionActivity extends AppCompatActivity implements Curr
|
|||||||
setupBackButton();
|
setupBackButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkCallingIntent()
|
||||||
|
{
|
||||||
|
Intent intent = getIntent();
|
||||||
|
int transactionId = intent.getIntExtra("transactionId", -1);
|
||||||
|
|
||||||
|
if(transactionId != -1)
|
||||||
|
{
|
||||||
|
DatabaseManager databaseManager = new DatabaseManager(getBaseContext());
|
||||||
|
Transaction transaction = databaseManager.getCurrencyTransactionById(transactionId);
|
||||||
|
List<Currency> denominationList = cryptocompareApiManager.getCurrenciesDenomination();
|
||||||
|
|
||||||
|
boolean found = false;
|
||||||
|
int index = 0;
|
||||||
|
|
||||||
|
while(index < denominationList.size() && !found)
|
||||||
|
{
|
||||||
|
if(denominationList.get(index).getSymbol().equals(transaction.getSymbol()))
|
||||||
|
{
|
||||||
|
currency = denominationList.get(index);
|
||||||
|
found = true;
|
||||||
|
|
||||||
|
currency.setListener(RecordTransactionActivity.this);
|
||||||
|
updateExchangeAdapter(currency.getSymbol());
|
||||||
|
exchange_autoCompleteTextView.setEnabled(true);
|
||||||
|
IconDownloaderTask iconDownloaderTask = new IconDownloaderTask();
|
||||||
|
iconDownloaderTask.execute();
|
||||||
|
coin_autoCompleteTextView.removeTextChangedListener(coinTextWatcher);
|
||||||
|
coin_autoCompleteTextView.setText(PlaceholderManager.getDenomination(currency.getName(), currency.getSymbol(), getBaseContext()));
|
||||||
|
coin_autoCompleteTextView.setEnabled(false);
|
||||||
|
|
||||||
|
if(globalTabLayouts.getVisibility() == View.GONE)
|
||||||
|
{
|
||||||
|
globalTabLayouts.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
globalTabLayouts.startAnimation(revealAnimation);
|
||||||
|
|
||||||
|
isGlobalLayoutVisible = true;
|
||||||
|
|
||||||
|
updateCurrencyData();
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
found = false;
|
||||||
|
index = 0;
|
||||||
|
|
||||||
|
switch (transaction.getType())
|
||||||
|
{
|
||||||
|
case "b":
|
||||||
|
List<Exchange> exchangeList = cryptocompareApiManager.getExchangeList(currency.getSymbol());
|
||||||
|
|
||||||
|
while(index < exchangeList.size() && !found)
|
||||||
|
{
|
||||||
|
if(exchangeList.get(index).getName().equals(transaction.getSource()))
|
||||||
|
{
|
||||||
|
exchange = exchangeList.get(index);
|
||||||
|
|
||||||
|
exchange_autoCompleteTextView.setText(exchange.getName());
|
||||||
|
exchange_autoCompleteTextView.setEnabled(true);
|
||||||
|
|
||||||
|
updateExchangeData();
|
||||||
|
|
||||||
|
updatePairAdapter();
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Pair> pairList = exchange.getPairsFor(currency.getSymbol());
|
||||||
|
|
||||||
|
found = false;
|
||||||
|
index = 0;
|
||||||
|
|
||||||
|
while(index < pairList.size() && !found)
|
||||||
|
{
|
||||||
|
if(pairList.get(index).contains(currency.getSymbol()) && pairList.get(index).contains(transaction.getSymPair()))
|
||||||
|
{
|
||||||
|
pair = pairList.get(index);
|
||||||
|
|
||||||
|
pair_autoCompleteTextView.setText(PlaceholderManager.getPairString(pair.getFrom(), pair.getTo(), getBaseContext()));
|
||||||
|
pair_autoCompleteTextView.setEnabled(true);
|
||||||
|
|
||||||
|
updatePairData();
|
||||||
|
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
tabLayout.getTabAt(0).select();
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "s":
|
||||||
|
tabLayout.getTabAt(1).select();
|
||||||
|
break;
|
||||||
|
case "t":
|
||||||
|
tabLayout.getTabAt(2).select();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Currency getCurrency()
|
public Currency getCurrency()
|
||||||
{
|
{
|
||||||
return currency;
|
return currency;
|
||||||
@ -380,31 +463,7 @@ public class RecordTransactionActivity extends AppCompatActivity implements Curr
|
|||||||
coin_autoCompleteTextView.setThreshold(0);
|
coin_autoCompleteTextView.setThreshold(0);
|
||||||
coin_autoCompleteTextView.setAdapter(adapter);
|
coin_autoCompleteTextView.setAdapter(adapter);
|
||||||
coin_autoCompleteTextView.setTextColor(getResources().getColor(R.color.white));
|
coin_autoCompleteTextView.setTextColor(getResources().getColor(R.color.white));
|
||||||
coin_autoCompleteTextView.addTextChangedListener(new TextWatcher() {
|
coin_autoCompleteTextView.addTextChangedListener(coinTextWatcher);
|
||||||
@Override
|
|
||||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
|
||||||
currencyIconImageView.setImageBitmap(null);
|
|
||||||
exchange_autoCompleteTextView.setEnabled(false);
|
|
||||||
exchange_autoCompleteTextView.setText("");
|
|
||||||
|
|
||||||
((LinearLayout) tabLayout.getChildAt(0)).getChildAt(2).setEnabled(false);
|
|
||||||
|
|
||||||
if(isGlobalLayoutVisible && globalTabLayouts.getAnimation().hasEnded())
|
|
||||||
{
|
|
||||||
globalTabLayouts.startAnimation(dismissAnimation);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterTextChanged(Editable s) {
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
coin_autoCompleteTextView.setOnClickListener(new View.OnClickListener() {
|
coin_autoCompleteTextView.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -509,7 +568,7 @@ public class RecordTransactionActivity extends AppCompatActivity implements Curr
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExchangesUpdated() {
|
public void onExchangesUpdated() {
|
||||||
|
checkCallingIntent();
|
||||||
}
|
}
|
||||||
|
|
||||||
private class IconDownloaderTask extends AsyncTask<Void, Void, Void> {
|
private class IconDownloaderTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
@ -20,8 +20,10 @@ import android.widget.Spinner;
|
|||||||
import android.widget.TimePicker;
|
import android.widget.TimePicker;
|
||||||
|
|
||||||
import com.herbron.moodl.Activities.HomeActivity;
|
import com.herbron.moodl.Activities.HomeActivity;
|
||||||
|
import com.herbron.moodl.Activities.RecordTransactionActivity;
|
||||||
import com.herbron.moodl.CustomLayouts.CustomRecordFragment;
|
import com.herbron.moodl.CustomLayouts.CustomRecordFragment;
|
||||||
import com.herbron.moodl.DataManagers.CurrencyData.Currency;
|
import com.herbron.moodl.DataManagers.CurrencyData.Currency;
|
||||||
|
import com.herbron.moodl.DataManagers.CurrencyData.Transaction;
|
||||||
import com.herbron.moodl.DataManagers.DatabaseManager;
|
import com.herbron.moodl.DataManagers.DatabaseManager;
|
||||||
import com.herbron.moodl.DataManagers.ExchangeManager.Exchange;
|
import com.herbron.moodl.DataManagers.ExchangeManager.Exchange;
|
||||||
import com.herbron.moodl.DataManagers.InfoAPIManagers.Pair;
|
import com.herbron.moodl.DataManagers.InfoAPIManagers.Pair;
|
||||||
@ -58,6 +60,9 @@ public class BuyFragment extends CustomRecordFragment {
|
|||||||
private static Currency fragmentCurrency;
|
private static Currency fragmentCurrency;
|
||||||
private static Exchange fragmentExchange;
|
private static Exchange fragmentExchange;
|
||||||
private static Pair fragmentPair;
|
private static Pair fragmentPair;
|
||||||
|
private List<String> symbolStrings;
|
||||||
|
|
||||||
|
private int transactionId;
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
@ -73,9 +78,39 @@ public class BuyFragment extends CustomRecordFragment {
|
|||||||
|
|
||||||
initializeViewElements();
|
initializeViewElements();
|
||||||
|
|
||||||
|
checkCallingIntent();
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkCallingIntent()
|
||||||
|
{
|
||||||
|
Intent intent = getActivity().getIntent();
|
||||||
|
transactionId = intent.getIntExtra("transactionId", -1);
|
||||||
|
|
||||||
|
if(transactionId != -1)
|
||||||
|
{
|
||||||
|
DatabaseManager databaseManager = new DatabaseManager(context);
|
||||||
|
Transaction transaction = databaseManager.getCurrencyTransactionById(transactionId);
|
||||||
|
|
||||||
|
if(transaction.getType().equals("b"))
|
||||||
|
{
|
||||||
|
fillFields(transaction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fillFields(Transaction transaction)
|
||||||
|
{
|
||||||
|
amoutEditText.setText(String.valueOf(transaction.getAmount()));
|
||||||
|
buyPriceEditText.setText(String.valueOf(transaction.getPurchasePrice()));
|
||||||
|
calendar.setTimeInMillis(transaction.getTimestamp());
|
||||||
|
buyDateEditText.setText(sdf.format(calendar.getTime()));
|
||||||
|
totalValueEditText.setText(String.valueOf(transaction.getAmount() * transaction.getPurchasePrice()));
|
||||||
|
fees_editText.setText(String.valueOf(transaction.getFees()));
|
||||||
|
note_editText.setText(transaction.getNote());
|
||||||
|
}
|
||||||
|
|
||||||
private void initializeViewElements()
|
private void initializeViewElements()
|
||||||
{
|
{
|
||||||
totalValueEditText = view.findViewById(R.id.totalValue_editText);
|
totalValueEditText = view.findViewById(R.id.totalValue_editText);
|
||||||
@ -141,7 +176,69 @@ public class BuyFragment extends CustomRecordFragment {
|
|||||||
if(isFieldCorrectlyFilled(amoutEditText, true) && isFieldCorrectlyFilled(buyPriceEditText, true) && isFieldCorrectlyFilled(totalValueEditText, true))
|
if(isFieldCorrectlyFilled(amoutEditText, true) && isFieldCorrectlyFilled(buyPriceEditText, true) && isFieldCorrectlyFilled(totalValueEditText, true))
|
||||||
{
|
{
|
||||||
double amount = Double.parseDouble(amoutEditText.getText().toString());
|
double amount = Double.parseDouble(amoutEditText.getText().toString());
|
||||||
double purchasedPrice = Double.parseDouble(buyPriceEditText.getText().toString());
|
double purchasePrice = Double.parseDouble(buyPriceEditText.getText().toString());
|
||||||
|
double fees;
|
||||||
|
String feeCurrency;
|
||||||
|
|
||||||
|
if(feesCurrencySpinner.getSelectedItemPosition() < 1)
|
||||||
|
{
|
||||||
|
feeCurrency = fragmentPair.getFrom();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
feeCurrency = fragmentPair.getTo();
|
||||||
|
}
|
||||||
|
|
||||||
|
fees = getFees(feeCurrency, amount, purchasePrice);
|
||||||
|
|
||||||
|
String note = note_editText.getText().toString();
|
||||||
|
|
||||||
|
DatabaseManager databaseManager = new DatabaseManager(getContext());
|
||||||
|
|
||||||
|
preferenceManager.setMustUpdateSummary(true);
|
||||||
|
|
||||||
|
if(transactionId == -1)
|
||||||
|
{
|
||||||
|
databaseManager.addTransaction(fragmentCurrency.getSymbol()
|
||||||
|
, amount
|
||||||
|
, calendar.getTime()
|
||||||
|
, purchasePrice
|
||||||
|
, fees
|
||||||
|
, note
|
||||||
|
, fragmentPair.getFrom().equals(fragmentCurrency.getSymbol()) ? fragmentPair.getTo() : fragmentPair.getFrom()
|
||||||
|
, feeCurrency
|
||||||
|
, fragmentExchange.getName()
|
||||||
|
, "b");
|
||||||
|
|
||||||
|
Intent intent = new Intent(getActivity(), HomeActivity.class);
|
||||||
|
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
databaseManager.updateTransactionWithId(transactionId
|
||||||
|
, amount
|
||||||
|
, calendar.getTime()
|
||||||
|
, purchasePrice
|
||||||
|
, fees
|
||||||
|
, note
|
||||||
|
, fragmentPair.getFrom().equals(fragmentCurrency.getSymbol()) ? fragmentPair.getTo() : fragmentPair.getFrom()
|
||||||
|
, feeCurrency
|
||||||
|
, fragmentExchange.getName()
|
||||||
|
, "b");
|
||||||
|
}
|
||||||
|
|
||||||
|
getActivity().finish();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
fees_editText = view.findViewById(R.id.fees_editText);
|
||||||
|
note_editText = view.findViewById(R.id.note_editText);
|
||||||
|
}
|
||||||
|
|
||||||
|
private double getFees(String feeCurrency, double amount, double purchasedPrice)
|
||||||
|
{
|
||||||
double fees;
|
double fees;
|
||||||
|
|
||||||
if(fees_editText.getText().toString().equals(""))
|
if(fees_editText.getText().toString().equals(""))
|
||||||
@ -151,31 +248,21 @@ public class BuyFragment extends CustomRecordFragment {
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
fees = Double.parseDouble(fees_editText.getText().toString());
|
fees = Double.parseDouble(fees_editText.getText().toString());
|
||||||
|
|
||||||
|
if(feesCurrencySpinner.getSelectedItemPosition() % 2 == 0)
|
||||||
|
{
|
||||||
|
if(fragmentCurrency.getSymbol().equals(feeCurrency))
|
||||||
|
{
|
||||||
|
fees = amount * fees / 100;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fees = purchasedPrice * fees / 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
String note = note_editText.getText().toString();
|
|
||||||
|
|
||||||
DatabaseManager databaseManager = new DatabaseManager(getContext());
|
|
||||||
|
|
||||||
databaseManager.addTransaction(fragmentCurrency.getSymbol()
|
|
||||||
, amount
|
|
||||||
, calendar.getTime()
|
|
||||||
, purchasedPrice
|
|
||||||
, fees
|
|
||||||
, note
|
|
||||||
, fragmentPair.getFrom().equals(fragmentCurrency.getSymbol()) ? fragmentPair.getTo() : fragmentPair.getFrom());
|
|
||||||
|
|
||||||
preferenceManager.setMustUpdateSummary(true);
|
|
||||||
Intent intent = new Intent(getActivity(), HomeActivity.class);
|
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
|
||||||
startActivity(intent);
|
|
||||||
getActivity().finish();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
fees_editText = view.findViewById(R.id.fees_editText);
|
return fees;
|
||||||
note_editText = view.findViewById(R.id.note_editText);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isFieldCorrectlyFilled(TextInputEditText editText, boolean displayError)
|
private boolean isFieldCorrectlyFilled(TextInputEditText editText, boolean displayError)
|
||||||
@ -210,7 +297,7 @@ public class BuyFragment extends CustomRecordFragment {
|
|||||||
|
|
||||||
private void updateAdapter()
|
private void updateAdapter()
|
||||||
{
|
{
|
||||||
List<String> symbolStrings = new ArrayList<>();
|
symbolStrings = new ArrayList<>();
|
||||||
symbolStrings.addAll(PlaceholderManager.getFeeOptionsForSymbol(fragmentPair.getFrom(), getSecureContext()));
|
symbolStrings.addAll(PlaceholderManager.getFeeOptionsForSymbol(fragmentPair.getFrom(), getSecureContext()));
|
||||||
symbolStrings.addAll(PlaceholderManager.getFeeOptionsForSymbol(fragmentPair.getTo(), getSecureContext()));
|
symbolStrings.addAll(PlaceholderManager.getFeeOptionsForSymbol(fragmentPair.getTo(), getSecureContext()));
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ public class TransactionListAdapter extends ArrayAdapter<Transaction> {
|
|||||||
TextView dateTxtView = convertView.findViewById(R.id.purchaseDate);
|
TextView dateTxtView = convertView.findViewById(R.id.purchaseDate);
|
||||||
|
|
||||||
amountTxtView.setText(String.valueOf(transaction.getAmount()));
|
amountTxtView.setText(String.valueOf(transaction.getAmount()));
|
||||||
valueTxtView.setText(numberConformer(transaction.getPurchasedPrice() * transaction.getAmount()));
|
valueTxtView.setText(numberConformer(transaction.getPurchasePrice() * transaction.getAmount()));
|
||||||
dateTxtView.setText(getDateFromTimestamp(transaction.getTimestamp()));
|
dateTxtView.setText(getDateFromTimestamp(transaction.getTimestamp()));
|
||||||
|
|
||||||
LinearLayout deleteLayout = convertView.findViewById(R.id.deleteTransactionLayout);
|
LinearLayout deleteLayout = convertView.findViewById(R.id.deleteTransactionLayout);
|
||||||
|
@ -10,18 +10,29 @@ public class Transaction {
|
|||||||
private String symbol;
|
private String symbol;
|
||||||
private double amount;
|
private double amount;
|
||||||
private long timestamp;
|
private long timestamp;
|
||||||
private double purchasedPrice;
|
private double purchasePrice;
|
||||||
private double fees;
|
private double fees;
|
||||||
private boolean isMined;
|
private String note;
|
||||||
|
private String symPair;
|
||||||
|
private String feeCurrency;
|
||||||
|
private String source;
|
||||||
|
private String destination;
|
||||||
|
private String type;
|
||||||
|
|
||||||
public Transaction(int transactionId, String symbol, double amount, long timestamp, double purchasedPrice, double fees)
|
public Transaction(int transactionId, String symbol, String symPair, double amount, long timestamp, double purchasedPrice, double fees, String note, String feeCurrency, String source, String destination, String type)
|
||||||
{
|
{
|
||||||
this.transactionId = transactionId;
|
this.transactionId = transactionId;
|
||||||
this.symbol = symbol;
|
this.symbol = symbol;
|
||||||
|
this.symPair = symPair;
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
this.timestamp = timestamp;
|
this.timestamp = timestamp;
|
||||||
this.purchasedPrice = purchasedPrice;
|
this.purchasePrice = purchasedPrice;
|
||||||
this.fees = fees;
|
this.fees = fees;
|
||||||
|
this.note = note;
|
||||||
|
this.feeCurrency = feeCurrency;
|
||||||
|
this.source = source;
|
||||||
|
this.destination = destination;
|
||||||
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTransactionId() {
|
public int getTransactionId() {
|
||||||
@ -53,14 +64,14 @@ public class Transaction {
|
|||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPurchasedPrice(double purchasedPrice)
|
public void setPurchasePrice(double purchasedPrice)
|
||||||
{
|
{
|
||||||
this.purchasedPrice = purchasedPrice;
|
this.purchasePrice = purchasedPrice;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getPurchasedPrice()
|
public double getPurchasePrice()
|
||||||
{
|
{
|
||||||
return purchasedPrice;
|
return purchasePrice;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getFees() {
|
public double getFees() {
|
||||||
@ -70,4 +81,56 @@ public class Transaction {
|
|||||||
public void setFees(double fees) {
|
public void setFees(double fees) {
|
||||||
this.fees = fees;
|
this.fees = fees;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setTimestamp(long timestamp) {
|
||||||
|
this.timestamp = timestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNote() {
|
||||||
|
return note;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNote(String note) {
|
||||||
|
this.note = note;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSymPair() {
|
||||||
|
return symPair;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSymPair(String symPair) {
|
||||||
|
this.symPair = symPair;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFeeCurrency() {
|
||||||
|
return feeCurrency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFeeCurrency(String feeCurrency) {
|
||||||
|
this.feeCurrency = feeCurrency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSource() {
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSource(String source) {
|
||||||
|
this.source = source;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDestination() {
|
||||||
|
return destination;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDestination(String destination) {
|
||||||
|
this.destination = destination;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ import java.util.List;
|
|||||||
|
|
||||||
public class DatabaseManager extends SQLiteOpenHelper{
|
public class DatabaseManager extends SQLiteOpenHelper{
|
||||||
|
|
||||||
private static final int DATABASE_VERSION = 14;
|
private static final int DATABASE_VERSION = 15;
|
||||||
|
|
||||||
private static final String DATABASE_NAME = "mdn.db";
|
private static final String DATABASE_NAME = "mdn.db";
|
||||||
|
|
||||||
@ -46,6 +46,7 @@ public class DatabaseManager extends SQLiteOpenHelper{
|
|||||||
private static final String KEY_TRANSACTION_FEES = "fees";
|
private static final String KEY_TRANSACTION_FEES = "fees";
|
||||||
private static final String KEY_TRANSACTION_FEE_CURRENCY = "feeCurrency";
|
private static final String KEY_TRANSACTION_FEE_CURRENCY = "feeCurrency";
|
||||||
private static final String KEY_TRANSACTION_NOTES = "notes";
|
private static final String KEY_TRANSACTION_NOTES = "notes";
|
||||||
|
private static final String KEY_TRANSACTION_TYPE = "transactionType";
|
||||||
|
|
||||||
private static final String KEY_EXCHANGE_ID = "idExchange";
|
private static final String KEY_EXCHANGE_ID = "idExchange";
|
||||||
private static final String KEY_EXCHANGE_NAME = "name";
|
private static final String KEY_EXCHANGE_NAME = "name";
|
||||||
@ -82,7 +83,8 @@ public class DatabaseManager extends SQLiteOpenHelper{
|
|||||||
+ KEY_TRANSACTION_PAIR + " VARCHAR(4),"
|
+ KEY_TRANSACTION_PAIR + " VARCHAR(4),"
|
||||||
+ KEY_TRANSACTION_FEE_CURRENCY + " VARCHAR(4),"
|
+ KEY_TRANSACTION_FEE_CURRENCY + " VARCHAR(4),"
|
||||||
+ KEY_TRANSACTION_SOURCE + " TEXT,"
|
+ KEY_TRANSACTION_SOURCE + " TEXT,"
|
||||||
+ KEY_TRANSACTION_DESTINATION + " TEXT"
|
+ KEY_TRANSACTION_DESTINATION + " TEXT,"
|
||||||
|
+ KEY_TRANSACTION_TYPE + " VARCHAR(1)"
|
||||||
+ ");");
|
+ ");");
|
||||||
|
|
||||||
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_EXCHANGE_KEYS + "("
|
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_EXCHANGE_KEYS + "("
|
||||||
@ -146,7 +148,26 @@ public class DatabaseManager extends SQLiteOpenHelper{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addTransaction(String symbol, Double amount, Date date, Double purchasedPrice, Double fees, String note, String symbolFrom, String feeCurrency, String exchange)
|
public void updateTransactionWithId(int transactionId, double amount, Date date, double purchasedPrice, double fees, String note, String symbolFrom, String feeCurrency, String exchange, String type)
|
||||||
|
{
|
||||||
|
SQLiteDatabase db = this.getWritableDatabase();
|
||||||
|
ContentValues cv = new ContentValues();
|
||||||
|
|
||||||
|
cv.put(KEY_TRANSACTION_AMOUNT, amount);
|
||||||
|
cv.put(KEY_TRANSACTION_DATE, date.getTime());
|
||||||
|
cv.put(KEY_TRANSACTION_PURCHASE_PRICE, purchasedPrice);
|
||||||
|
cv.put(KEY_TRANSACTION_FEES, fees);
|
||||||
|
cv.put(KEY_TRANSACTION_NOTES, note);
|
||||||
|
cv.put(KEY_TRANSACTION_PAIR, symbolFrom);
|
||||||
|
cv.put(KEY_TRANSACTION_FEE_CURRENCY, feeCurrency);
|
||||||
|
cv.put(KEY_TRANSACTION_SOURCE, exchange);
|
||||||
|
cv.put(KEY_TRANSACTION_TYPE, type);
|
||||||
|
|
||||||
|
db.update(TABLE_MANUAL_TRANSACTIONS, cv, KEY_TRANSACTION_ID + "=" + transactionId, null);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addTransaction(String symbol, Double amount, Date date, Double purchasePrice, double fees, String note, String symbolFrom, String feeCurrency, String exchange, String type)
|
||||||
{
|
{
|
||||||
SQLiteDatabase db = this.getWritableDatabase();
|
SQLiteDatabase db = this.getWritableDatabase();
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
@ -154,12 +175,13 @@ public class DatabaseManager extends SQLiteOpenHelper{
|
|||||||
values.put(KEY_TRANSACTION_SYMBOL, symbol);
|
values.put(KEY_TRANSACTION_SYMBOL, symbol);
|
||||||
values.put(KEY_TRANSACTION_AMOUNT, amount);
|
values.put(KEY_TRANSACTION_AMOUNT, amount);
|
||||||
values.put(KEY_TRANSACTION_DATE, date.getTime());
|
values.put(KEY_TRANSACTION_DATE, date.getTime());
|
||||||
values.put(KEY_TRANSACTION_PURCHASE_PRICE, purchasedPrice);
|
values.put(KEY_TRANSACTION_PURCHASE_PRICE, purchasePrice);
|
||||||
values.put(KEY_TRANSACTION_FEES, fees);
|
values.put(KEY_TRANSACTION_FEES, fees);
|
||||||
values.put(KEY_TRANSACTION_NOTES, note);
|
values.put(KEY_TRANSACTION_NOTES, note);
|
||||||
values.put(KEY_TRANSACTION_PAIR, symbolFrom);
|
values.put(KEY_TRANSACTION_PAIR, symbolFrom);
|
||||||
values.put(KEY_TRANSACTION_FEE_CURRENCY, feeCurrency);
|
values.put(KEY_TRANSACTION_FEE_CURRENCY, feeCurrency);
|
||||||
values.put(KEY_TRANSACTION_SOURCE, exchange);
|
values.put(KEY_TRANSACTION_SOURCE, exchange);
|
||||||
|
values.put(KEY_TRANSACTION_TYPE, type);
|
||||||
|
|
||||||
db.insert(TABLE_MANUAL_TRANSACTIONS, null, values);
|
db.insert(TABLE_MANUAL_TRANSACTIONS, null, values);
|
||||||
db.close();
|
db.close();
|
||||||
@ -529,20 +551,6 @@ public class DatabaseManager extends SQLiteOpenHelper{
|
|||||||
return currencyList;
|
return currencyList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateTransactionWithId(int transactionId, double amount, Date time, double purchasedPrice, double fees)
|
|
||||||
{
|
|
||||||
SQLiteDatabase db = this.getWritableDatabase();
|
|
||||||
ContentValues cv = new ContentValues();
|
|
||||||
|
|
||||||
cv.put(KEY_TRANSACTION_AMOUNT, amount);
|
|
||||||
cv.put(KEY_TRANSACTION_DATE, time.getTime());
|
|
||||||
cv.put(KEY_TRANSACTION_PURCHASE_PRICE, purchasedPrice);
|
|
||||||
cv.put(KEY_TRANSACTION_FEES, fees);
|
|
||||||
|
|
||||||
db.update(TABLE_MANUAL_TRANSACTIONS, cv, KEY_TRANSACTION_ID + "=" + transactionId, null);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public Transaction getCurrencyTransactionById(int id)
|
public Transaction getCurrencyTransactionById(int id)
|
||||||
{
|
{
|
||||||
String searchQuerry = "SELECT * FROM " + TABLE_MANUAL_TRANSACTIONS + " WHERE " + KEY_TRANSACTION_ID + "='" + id + "'";
|
String searchQuerry = "SELECT * FROM " + TABLE_MANUAL_TRANSACTIONS + " WHERE " + KEY_TRANSACTION_ID + "='" + id + "'";
|
||||||
@ -555,10 +563,16 @@ public class DatabaseManager extends SQLiteOpenHelper{
|
|||||||
{
|
{
|
||||||
transaction = new Transaction(resultatList.getInt(resultatList.getColumnIndex(KEY_TRANSACTION_ID))
|
transaction = new Transaction(resultatList.getInt(resultatList.getColumnIndex(KEY_TRANSACTION_ID))
|
||||||
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_SYMBOL))
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_SYMBOL))
|
||||||
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_PAIR))
|
||||||
, resultatList.getDouble(resultatList.getColumnIndex(KEY_TRANSACTION_AMOUNT))
|
, resultatList.getDouble(resultatList.getColumnIndex(KEY_TRANSACTION_AMOUNT))
|
||||||
, resultatList.getLong(resultatList.getColumnIndex(KEY_TRANSACTION_DATE))
|
, resultatList.getLong(resultatList.getColumnIndex(KEY_TRANSACTION_DATE))
|
||||||
, resultatList.getDouble(resultatList.getColumnIndex(KEY_TRANSACTION_PURCHASE_PRICE))
|
, resultatList.getDouble(resultatList.getColumnIndex(KEY_TRANSACTION_PURCHASE_PRICE))
|
||||||
, resultatList.getDouble(resultatList.getColumnIndex(KEY_TRANSACTION_FEES)));
|
, resultatList.getDouble(resultatList.getColumnIndex(KEY_TRANSACTION_FEES))
|
||||||
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_NOTES))
|
||||||
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_FEE_CURRENCY))
|
||||||
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_SOURCE))
|
||||||
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_DESTINATION))
|
||||||
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_TYPE)));
|
||||||
}
|
}
|
||||||
|
|
||||||
resultatList.close();
|
resultatList.close();
|
||||||
@ -580,10 +594,16 @@ public class DatabaseManager extends SQLiteOpenHelper{
|
|||||||
{
|
{
|
||||||
transactionList.add(new Transaction(resultatList.getInt(resultatList.getColumnIndex(KEY_TRANSACTION_ID))
|
transactionList.add(new Transaction(resultatList.getInt(resultatList.getColumnIndex(KEY_TRANSACTION_ID))
|
||||||
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_SYMBOL))
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_SYMBOL))
|
||||||
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_PAIR))
|
||||||
, resultatList.getDouble(resultatList.getColumnIndex(KEY_TRANSACTION_AMOUNT))
|
, resultatList.getDouble(resultatList.getColumnIndex(KEY_TRANSACTION_AMOUNT))
|
||||||
, resultatList.getLong(resultatList.getColumnIndex(KEY_TRANSACTION_DATE))
|
, resultatList.getLong(resultatList.getColumnIndex(KEY_TRANSACTION_DATE))
|
||||||
, resultatList.getLong(resultatList.getColumnIndex(KEY_TRANSACTION_PURCHASE_PRICE))
|
, resultatList.getDouble(resultatList.getColumnIndex(KEY_TRANSACTION_PURCHASE_PRICE))
|
||||||
, resultatList.getDouble(resultatList.getColumnIndex(KEY_TRANSACTION_FEES))));
|
, resultatList.getDouble(resultatList.getColumnIndex(KEY_TRANSACTION_FEES))
|
||||||
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_NOTES))
|
||||||
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_FEE_CURRENCY))
|
||||||
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_SOURCE))
|
||||||
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_DESTINATION))
|
||||||
|
, resultatList.getString(resultatList.getColumnIndex(KEY_TRANSACTION_TYPE))));
|
||||||
}
|
}
|
||||||
|
|
||||||
resultatList.close();
|
resultatList.close();
|
||||||
|
Loading…
Reference in New Issue
Block a user