-
Notifications
You must be signed in to change notification settings - Fork 513
Expand file tree
/
Copy pathApplication.java
More file actions
101 lines (79 loc) · 2.48 KB
/
Copy pathApplication.java
File metadata and controls
101 lines (79 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package com.application;
import java.util.ArrayList;
import java.util.List;
import com.dataStore.interfaces.IUserPairOwedAmountDataStore;
import com.enums.SplitStrategyType;
import com.factory.interfaces.IDataStoreFactory;
import com.factory.interfaces.IStrategyListFactory;
import com.interfaces.IApplication;
import com.interfaces.IStrategyList;
import com.strategies.interfaces.ISplitInput;
import com.strategies.splitObjects.SplitResult;
/**
* The Class Application.
*/
public class Application implements IApplication {
/** The user pair owed amount data store. */
private IUserPairOwedAmountDataStore userPairOwedAmountDataStore;
/** The strategy list. */
private IStrategyList strategyList;
/**
* Instantiates a new application.
*
* @param dataStoreFactory the data store factory
* @param strategyListFactory the strategy list factory
* @param strategiesPresnt the strategies presnt
* @param inputReader the input reader
*/
Application(IDataStoreFactory dataStoreFactory, IStrategyListFactory strategyListFactory, List<String> strategiesPresnt) {
this.userPairOwedAmountDataStore = dataStoreFactory.getUserPairOwedAmountDataStore();
this.strategyList = strategyListFactory.getStrategyList(strategiesPresnt);
}
/**
* Adds the expense.
*
* @param expenseInput the expense input
* @return true, if successful
*/
@Override
/**
*
*/
public boolean addExpense(ISplitInput splitInput) {
if (splitInput == null) {
return false;
}
SplitResult splitResult = this.strategyList.getSplitStrategies().get(splitInput.getSplitInputType()).getFinalSplit(splitInput);
// System.out.println("result " + splitResult.getOwedBy() + " " + splitResult.getOwedTo());
return this.userPairOwedAmountDataStore.updateAmountForEntries(splitResult);
}
/**
* Gets the balance for user.
*
* @param userId the user id
* @return the balance for user
*/
@Override
public SplitResult getBalanceForUser(String userId) {
return this.userPairOwedAmountDataStore.getBalancesForUser(userId);
}
/**
* Gets the all balances.
*
* @return the all balances
*/
@Override
public SplitResult getAllBalances() {
// TODO Auto-generated method stub
return this.userPairOwedAmountDataStore.getBalancesForAllUsers();
}
/**
* Gets the strategies name.
*
* @return the strategies name
*/
@Override
public List<SplitStrategyType> getStrategiesName() {
return new ArrayList<SplitStrategyType>(this.strategyList.getSplitStrategies().keySet());
}
}