-
Notifications
You must be signed in to change notification settings - Fork 0
/
UnSettled.java
143 lines (83 loc) · 3.13 KB
/
UnSettled.java
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
package com.bet.application;
import java.util.ArrayList;
import java.util.Iterator;
import com.lib.commonFunctions.CommonFunctions;
public class UnSettled extends CommonFunctions {
/*
*
* this function has major business logic to find
* unsetteled bets
*/
public void FindUnsettledbets() {
//Get Excel file name
String testDataFile = getValueFromPropertiesFile(
"Configuration.properties", "baseLocation")
+ getValueFromPropertiesFile("Configuration.properties",
"unSettledDataFile");
String sheetName = "Unsettled";
//Get all data from excel
ArrayList<ArrayList<String>> output = readAllDataFromExcel(
testDataFile, sheetName);
//Sort data from Excel
output = sortExcelData(output);
Iterator<ArrayList<String>> it = output.listIterator();
// Group customer by customer id and find customer has unsettled bets with high risk
ArrayList<String> stakes= new ArrayList<String>();
ArrayList<String> lastPulledRow = it.next();
String lastPulledRowCustomerID = lastPulledRow.get(0);
stakes.add(lastPulledRow.get(3));
int countForCustomerId = 1;
while (it.hasNext()) {
ArrayList<String> Row = it.next();
String RowCustomerId = Row.get(0);
double RowWin = Double.parseDouble(Row.get(4));
//Bets where the amount to be won is $1000 or more.
if((RowWin)>(999.0))
{
System.out.println("Customer with id " +RowCustomerId + "is having unsettled bet with win value " + RowWin + " which is Highly UNUSUAL");
}
//double RowStakeValue= Double.parseDouble(Row.get(3));
if (lastPulledRowCustomerID.equals(RowCustomerId)) {
countForCustomerId++;
stakes.add(Row.get(3));
}
else
{
findUnsettledOrNot(stakes,countForCustomerId,lastPulledRowCustomerID);
lastPulledRowCustomerID = RowCustomerId;
countForCustomerId = 1;
}
findUnsettledOrNot(stakes,countForCustomerId,RowCustomerId);
}
}
/*
* find percentage of win for given customer bet count and returns value in
* double data type
*/
public void findUnsettledOrNot(ArrayList<String > stakes,int countForCustomerId, String RowCustomerId) {
double avg=0;
for(String s:stakes)
{
double stake=Double.parseDouble(s);
avg=avg+stake;
}
avg= avg/countForCustomerId;
for(String s:stakes)
{
//Bets where the stake is more than 10 times higher than that customer’s average
if((Double.parseDouble(s))>(avg*10))
{
System.out.println("Customer with id " +RowCustomerId + "is having unsettled bet with stake value " + s + " which is UNUSUAL");
}
//Bets where the stake is more than 30 times higher than that customer’s average bet
if((Double.parseDouble(s))>(avg*30))
{
System.out.println("Customer with id " +RowCustomerId + "is having unsettled bet with stake value " + s + " which is HIGHLY UNUSUAL");
}
}
}
public static void main(String[] args) {
UnSettled set = new UnSettled();
set.FindUnsettledbets();
}
}