Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.
6 changes: 6 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,14 @@ dependencies {
compile 'com.android.support:support-v4:23.2.1'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
// View annotation bindings
compile 'com.jakewharton:butterknife:7.0.1'
// Dependency injection tool
compile 'com.google.dagger:dagger:2.0.1'
// Charts
compile 'com.github.PhilJay:MPAndroidChart:v2.2.4'
// Advanced logging tool
compile 'com.jakewharton.timber:timber:4.1.2'

apt 'com.google.dagger:dagger-compiler:2.0.1'
provided 'org.glassfish:javax.annotation:10.0-b28'
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,11 @@
android:label="@string/title_settings"
android:screenOrientation="portrait"
android:theme="@style/Theme.Default" />
<activity
android:name=".activity.ChartsActivity"
android:label="@string/title_charts"
android:screenOrientation="portrait"
android:theme="@style/Theme.Default" />

<provider
android:name="android.support.v4.content.FileProvider"
Expand Down
13 changes: 13 additions & 0 deletions app/src/main/java/com/blogspot/e_kanivets/moneytracker/MtApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import com.blogspot.e_kanivets.moneytracker.di.module.ControllerModule;
import com.blogspot.e_kanivets.moneytracker.di.module.repo.CachedRepoModule;

import timber.log.Timber;

/**
* Custom application implementation.
* Created on 29/08/14.
Expand All @@ -29,6 +31,9 @@ public void onCreate() {

mtApp = this;
component = buildComponent();

if (BuildConfig.DEBUG) Timber.plant(new Timber.DebugTree());
else Timber.plant(new ReleaseTree());
}

public AppComponent getAppComponent() {
Expand All @@ -41,4 +46,12 @@ private AppComponent buildComponent() {
.controllerModule(new ControllerModule(get()))
.build();
}

private static class ReleaseTree extends Timber.Tree {

@Override
protected void log(int priority, String tag, String message, Throwable t) {
// Do nothing fot now
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package com.blogspot.e_kanivets.moneytracker.activity;

import com.blogspot.e_kanivets.moneytracker.R;
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity;
import com.blogspot.e_kanivets.moneytracker.controller.CurrencyController;
import com.blogspot.e_kanivets.moneytracker.controller.data.ExchangeRateController;
import com.blogspot.e_kanivets.moneytracker.controller.data.RecordController;
import com.blogspot.e_kanivets.moneytracker.entity.data.Record;
import com.blogspot.e_kanivets.moneytracker.report.ReportMaker;
import com.blogspot.e_kanivets.moneytracker.report.chart.BarChartConverter;
import com.blogspot.e_kanivets.moneytracker.report.chart.IMonthReport;
import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.data.BarData;

import java.util.List;

import javax.inject.Inject;

import butterknife.Bind;

public class ChartsActivity extends BaseBackActivity {

@Inject
RecordController recordController;
@Inject
ExchangeRateController exchangeRateController;
@Inject
CurrencyController currencyController;

@Bind(R.id.bar_chart)
BarChart barChart;

@Override
protected int getContentViewId() {
return R.layout.activity_charts;
}

@Override
protected boolean initData() {
boolean result = super.initData();
getAppComponent().inject(ChartsActivity.this);
return result;
}

@Override
protected void initViews() {
super.initViews();

ReportMaker reportMaker = new ReportMaker(exchangeRateController);
String currency = currencyController.readDefaultCurrency();
List<Record> recordList = recordController.readAll();
List<String> currencyNeeded = reportMaker.currencyNeeded(currency, recordList);

IMonthReport monthReport = null;
if (currencyNeeded.isEmpty()) monthReport = reportMaker.getMonthReport(currency, recordList);
else barChart.setNoDataText(createRatesNeededList(currency, currencyNeeded));

if (monthReport != null) {
BarChartConverter barChartConverter = new BarChartConverter(ChartsActivity.this,
monthReport);

BarData barData = new BarData(barChartConverter.getXAxisValueList(),
barChartConverter.getBarDataSetList());
barData.setDrawValues(false);

barChart.setData(barData);
barChart.setDescription(null);
barChart.setVisibleXRangeMinimum(8);
barChart.setScaleYEnabled(false);
barChart.setVisibleXRangeMaximum(34);
barChart.setHighlightPerDragEnabled(false);
barChart.setHighlightPerTapEnabled(false);
}
}

protected String createRatesNeededList(String currency, List<String> ratesNeeded) {
StringBuilder sb = new StringBuilder(getString(R.string.error_exchange_rates));

for (String str : ratesNeeded) {
sb.append("\n").append(str).append(getString(R.string.arrow)).append(currency);
}

return sb.toString();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v4.content.FileProvider;
import android.util.Log;

import com.blogspot.e_kanivets.moneytracker.R;
import com.blogspot.e_kanivets.moneytracker.activity.base.BaseBackActivity;
Expand All @@ -18,6 +17,7 @@
import javax.inject.Inject;

import butterknife.OnClick;
import timber.log.Timber;

public class ExportActivity extends BaseBackActivity {
@SuppressWarnings("unused")
Expand Down Expand Up @@ -46,7 +46,7 @@ public void exportRecords() {

File exportDir = new File(getCacheDir(), "export");
boolean exportDirCreated = exportDir.mkdirs();
Log.d(TAG, "exportDirCreated: " + exportDirCreated);
Timber.d("ExportDirCreated: %b", exportDirCreated);

File outFile;
if (exportDir.exists()) outFile = new File(exportDir, DEFAULT_EXPORT_FILE_NAME);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
import com.blogspot.e_kanivets.moneytracker.controller.data.ExchangeRateController;
import com.blogspot.e_kanivets.moneytracker.entity.Period;
import com.blogspot.e_kanivets.moneytracker.entity.data.Record;
import com.blogspot.e_kanivets.moneytracker.report.ReportConverter;
import com.blogspot.e_kanivets.moneytracker.report.record.RecordReportConverter;
import com.blogspot.e_kanivets.moneytracker.report.ReportMaker;
import com.blogspot.e_kanivets.moneytracker.report.base.IReport;
import com.blogspot.e_kanivets.moneytracker.report.record.IRecordReport;
import com.blogspot.e_kanivets.moneytracker.ui.presenter.ShortSummaryPresenter;

import java.util.List;
Expand Down Expand Up @@ -77,13 +77,13 @@ protected void initViews() {

private void update(String currency) {
ReportMaker reportMaker = new ReportMaker(rateController);
IReport report = reportMaker.getReport(currency, period, recordList);
IRecordReport report = reportMaker.getRecordReport(currency, period, recordList);

ExpandableListReportAdapter adapter = null;

if (report != null) {
ReportConverter reportConverter = new ReportConverter(report);
adapter = new ExpandableListReportAdapter(ReportActivity.this, reportConverter);
RecordReportConverter recordReportConverter = new RecordReportConverter(report);
adapter = new ExpandableListReportAdapter(ReportActivity.this, recordReportConverter);
}

expandableListView.setAdapter(adapter);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import android.view.MenuItem;

import com.blogspot.e_kanivets.moneytracker.R;
import com.blogspot.e_kanivets.moneytracker.activity.ChartsActivity;
import com.blogspot.e_kanivets.moneytracker.activity.ExportActivity;
import com.blogspot.e_kanivets.moneytracker.activity.SettingsActivity;
import com.blogspot.e_kanivets.moneytracker.activity.account.AccountsActivity;
Expand Down Expand Up @@ -77,6 +78,10 @@ public boolean onNavigationItemSelected(MenuItem item) {
REQUEST_RATES);
break;

case R.id.nav_charts:
startActivity(new Intent(BaseDrawerActivity.this, ChartsActivity.class));
break;

case R.id.nav_export:
startActivity(new Intent(BaseDrawerActivity.this, ExportActivity.class));
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import com.blogspot.e_kanivets.moneytracker.entity.data.Record;
import com.blogspot.e_kanivets.moneytracker.entity.Period;
import com.blogspot.e_kanivets.moneytracker.report.ReportMaker;
import com.blogspot.e_kanivets.moneytracker.report.base.IReport;
import com.blogspot.e_kanivets.moneytracker.report.record.IRecordReport;
import com.blogspot.e_kanivets.moneytracker.ui.AppRateDialog;
import com.blogspot.e_kanivets.moneytracker.ui.PeriodSpinner;
import com.blogspot.e_kanivets.moneytracker.ui.presenter.ShortSummaryPresenter;
Expand Down Expand Up @@ -194,7 +194,7 @@ protected void update() {
String currency = currencyController.readDefaultCurrency();

ReportMaker reportMaker = new ReportMaker(rateController);
IReport report = reportMaker.getReport(currency, period, recordList);
IRecordReport report = reportMaker.getRecordReport(currency, period, recordList);
summaryPresenter.update(report, currency, reportMaker.currencyNeeded(currency, recordList));

fillDefaultAccount();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import android.widget.TextView;

import com.blogspot.e_kanivets.moneytracker.R;
import com.blogspot.e_kanivets.moneytracker.report.ReportConverter;
import com.blogspot.e_kanivets.moneytracker.report.record.RecordReportConverter;

import java.util.List;
import java.util.Locale;
Expand All @@ -32,7 +32,7 @@ public class ExpandableListReportAdapter extends SimpleExpandableListAdapter {
private int red;
private int green;

public ExpandableListReportAdapter(Context context, ReportConverter converter) {
public ExpandableListReportAdapter(Context context, RecordReportConverter converter) {
this(context, converter.getGroupData(), converter.getGroupLayout(),
converter.getGroupFrom(), converter.getGroupTo(), converter.getChildData(),
converter.getChildLayout(), converter.getChildFrom(), converter.getChildTo());
Expand Down Expand Up @@ -75,15 +75,15 @@ private void customizeView(View view, Map<String, String> values, boolean groupV
if (viewHolder == null) viewHolder = new ViewHolder(view);

/* Customize view to fit to model and UI */
Double price = Double.parseDouble(values.get(ReportConverter.PRICE_PARAM_NAME));
Double price = Double.parseDouble(values.get(RecordReportConverter.PRICE_PARAM_NAME));

if (groupView) view.setBackgroundColor(price < 0 ? whiteRed : whiteGreen);
else view.setBackgroundColor(white);

//Set color of total
viewHolder.tvTotal.setTextColor(price >= 0 ? green : red);

viewHolder.tvCategory.setText(values.get(ReportConverter.TITLE_PARAM_NAME));
viewHolder.tvCategory.setText(values.get(RecordReportConverter.TITLE_PARAM_NAME));
viewHolder.tvTotal.setText(format(price));
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.blogspot.e_kanivets.moneytracker.di;

import com.blogspot.e_kanivets.moneytracker.activity.ChartsActivity;
import com.blogspot.e_kanivets.moneytracker.activity.ExportActivity;
import com.blogspot.e_kanivets.moneytracker.activity.ReportActivity;
import com.blogspot.e_kanivets.moneytracker.activity.SettingsActivity;
Expand Down Expand Up @@ -47,6 +48,8 @@ public interface AppComponent {

void inject(ReportActivity reportActivity);

void inject(ChartsActivity chartsActivity);

void inject(SettingsActivity.SettingsFragment settingsFragment);

void inject(AccountsSummaryPresenter accountsSummaryPresenter);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@
import android.database.sqlite.SQLiteDatabase;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;

import com.blogspot.e_kanivets.moneytracker.repo.DbHelper;
import com.blogspot.e_kanivets.moneytracker.entity.base.IEntity;

import java.util.List;

import timber.log.Timber;

/**
* Base implementation of {@link IRepo}.
* No need to call db.close() at all, because SQLiteOpenHelper manage it for us + cache instances.
Expand All @@ -21,8 +22,6 @@
* @author Evgenii Kanivets
*/
public abstract class BaseRepo<T extends IEntity> implements IRepo<T> {
private static final String TAG = "BaseRepo";

protected DbHelper dbHelper;

public BaseRepo(DbHelper dbHelper) {
Expand All @@ -46,11 +45,11 @@ public T create(@Nullable T instance) {
long id = db.insert(getTable(), null, contentValues(instance));

if (id == -1) {
Log.d(TAG, "Couldn't create record : " + instance);
Timber.d("Couldn't create record: %s", instance);
return null;
} else {
T createdInstance = read(id);
Log.d(TAG, "Created record : " + createdInstance);
Timber.d("Created record: %s", createdInstance);
return createdInstance;
}
}
Expand All @@ -75,11 +74,11 @@ public T update(@Nullable T instance) {
long rowsAffected = db.update(getTable(), contentValues(instance), "id=?", args);

if (rowsAffected == 0) {
Log.d(TAG, "Couldn't update record : " + instance);
Timber.d("Couldn't update record: %s", instance);
return null;
} else {
T updatedInstance = read(instance.getId());
Log.d(TAG, "Updated record : " + updatedInstance);
Timber.d("Updated record: %s", updatedInstance);
return updatedInstance;
}
}
Expand All @@ -99,7 +98,7 @@ public boolean delete(@Nullable T instance) {
String[] args = new String[]{Long.toString(instance.getId())};
long rowsAffected = db.delete(getTable(), "id=?", args);

Log.d(TAG, instance + (rowsAffected == 0 ? " didn't " : " ") + "deleted");
Timber.d("%s %s deleted", instance, (rowsAffected == 0 ? " didn't " : " "));

return rowsAffected != 0;
}
Expand Down
Loading