-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMatchSystem.java
190 lines (170 loc) · 5.98 KB
/
MatchSystem.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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
import java.util.Date;
/**
* @author Jiecong YANG, zheng_zz
* mediator pattern, reducing the coupling between requester and responder
*/
public class MatchSystem {
private RequesterPayment [] requesterPayment;
private RequestInfo [] requestInfo;
private Feedback [] feedbacks;
private Preference [] preferences;
private OccupiedInfo [] occupiedInfos;
/**
* search reqeuster's preference
* @param requesterID
* @return
*/
public Preference searchPreference(Integer requesterID)
{
for(int i=0;i<preferences.length;i++)
if(this.preferences[i].getRequesterID()==requesterID)
return this.preferences[i];
return null;
}
/**
* search responder's occupied info
* @param responderID
* @return
*/
public OccupiedInfo searchOccupiedInfo(Integer responderID)
{
for(int i=0;i<occupiedInfos.length;i++)
if(this.occupiedInfos[i].getResponderID()==responderID)
return this.occupiedInfos[i];
return null;
}
/**
* match system get request payments and save it
* @param requesterPayment
*/
public void getRequestPayments(RequesterPayment [] requesterPayment)
{
this.requesterPayment = requesterPayment;
}
/**
* get the request infos
* @param requestInfo
*/
public void getRequestInfos(RequestInfo [] requestInfo)
{
this.requestInfo = requestInfo;
}
/**
* send request info
* @return
*/
public RequestInfo [] sendRequestInfos()
{
return this.requestInfo;
}
/**
* create responder payment
* @param requestInfoId
* @param responderId
* @param time
* @param price
* @param perUseFee
* @return
*/
public ResponderPayment createResponderPayment(Integer requestInfoId, Integer responderId, Date time, Double price, Double perUseFee)
{
return new ResponderPayment(responderId, requestInfoId, responderId, time, price, perUseFee);
}
/**
* get feedbacks
* @param feedbacks
*/
public void getFeedbacks(Feedback [] feedbacks)
{
this.feedbacks=feedbacks;
}
/**
* Match feedback to corresponding Responder
* @param feedback
* @return
*/
public static Integer [] feedbackMatchResponder(Feedback feedback){
Integer requestInfoId = feedback.getRequestInfoId();
RequestInfo requestInfo = RequestInfo.getRequestInfoById(requestInfoId);
Integer [] responderId = requestInfo.getResponderId();
return responderId;
}
/**
* Use preference to match suitable responders
* @param preference
* @return
*/
public static Integer [] preferenceMatchResponder(Preference preference){
Integer [] responderId = {1};
return responderId;
}
/**
* Match requestInfo to Responder
* @param requestInfo
* @return
*/
public static Integer [] requestInfoMatchResponder(RequestInfo requestInfo){
Integer requesterId = requestInfo.getRequesterId();
Requester requester = Requester.getRequesterById(requesterId);
Preference preference = requester.getPreference();
return preferenceMatchResponder(preference);
}
/**
* Match responderPayment to responder
* @return
*/
public static Integer [] responderPaymentMatchResponder(RequesterPayment requesterPayment){
Integer requestInfoId = requesterPayment.getRequestInfoId();
RequestInfo requestInfo = RequestInfo.getRequestInfoById(requestInfoId);
Integer [] responder = requestInfo.getResponderId();
return responder;
}
/**
* Simulate transferring requestInfo, responderPayment, feedback
* @param args
*/
public static void main(String[] args) {
MatchSystem matchSystem = new MatchSystem();
// requestInfo
RequestInfo [] requestInfo = {Requester.createNewRequestInfo(1,1,"content",
"location",1.1)};
matchSystem.getRequestInfos(requestInfo);
for (RequestInfo reqInfo: requestInfo){
Integer [] responderId = requestInfoMatchResponder(reqInfo);
for (Integer id: responderId){
Responder responder = Responder.getResponderById(reqInfo.getId());
RequestInfo temp = responder.receiveNewRequestInfo(id);
responder.showRequestInfo(temp);
}
}
System.out.println("============================");
// feedback
// 1. matchSystem get feedbacks sent by requester
Feedback []feedbacks = {Requester.createFeedback(1,1,"cate",1.2,
"content",new Date(),"abuse")};
matchSystem.getFeedbacks(feedbacks);
// 2. send feedbacks to responders and responder gets feedback
for (Feedback feedback: feedbacks){
Integer [] responderId = feedbackMatchResponder(feedback);
for (Integer id: responderId){
Responder responder = Responder.getResponderById(id);
Feedback resFeedback = responder.getFeedBack(feedback.getRequestInfoId());
responder.showFeedback(resFeedback);
}
}
System.out.println("============================");
// responderPayment
RequesterPayment [] requesterPayments = {RequestInfo.createRequesterPayment(1,
1,new Date(),1.2,0.1)};
matchSystem.getRequestPayments(requesterPayments);
for (RequesterPayment requesterPayment: requesterPayments) {
Integer[] responderId = responderPaymentMatchResponder(requesterPayment);
for (Integer id : responderId) {
Responder responder = Responder.getResponderById(id);
ResponderPayment responderPayment =
Responder.getResponderPayment(requesterPayment.getRequestInfoId(),id);
responder.showResponderPayment(responderPayment);
}
}
}
}