Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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