-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathScore.java
379 lines (367 loc) · 16.1 KB
/
Score.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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
import java.io.Serializable;
import java.util.HashMap;
public class Score implements Serializable{
private static final long serialVersionUID = 1L;
private String studienElement;
private String subject;
private float score;
private int attempts;
private int[] weight;
private HashMap<String, Score> subScore;
private boolean hasSubScore = false;
private boolean isWpf = false;
private String wpfTopic;
private int[] wpfWeight;
private int semester;
private boolean isTested = false;
private String parentStudienElement;
private boolean hasParentScore = false;
/**
* Die Klasse Score enthält alle Informationen, die für ein Modul aufgenommen werden können.
* @author Thomas Davies
* @version 1.0
*/
/**
* Dieser Score Konstruktor erzeugt ein leeres Score Objekt.
*/
public Score(){
}
/**
* Der Score Konstruktor erzeugt ein neues Score Objekt gesetzt mit den Parametern, die ihm übergeben werden.
* @param studEl Das Studienelement ist ein Code in der Form eines Strings, der jedem Modul eine unverwechselbare Bezeichnung gibt.
* @param subject Ist der ausgeschriebene Name des Moduls.
* @param semester Ist das Fachsemester, das für dieses Modul vorgesehen ist.
* @param weight Ist die Gewichtung des Moduls. Es wird als Bruch angegeben. Weight[0] ist der Zähler und Weight[1] der Nenner.
* @param score Ist die Note, die in diesem Modul erreicht wurde. Wenn die Note 0.0f gesetzt ist, heißt es, dass bisher keine Note darin erreicht wurde.
* @param attempt Gibt die Anzahl der Versuche für das Semester an.
*/
public Score(String studEl, String subject,int semester, int[] weight, float score, int attempt){
this.studienElement = studEl;
this.subject = subject;
this.weight = new int[2];
this.weight[0] = weight[0];
this.weight[1] = weight[1];
this.semester = semester;
this.score = score;
this.attempts = attempt;
}
/**
* Der Score Konstruktor erzeugt ein neues Score Objekt gesetzt mit den Parametern, die ihm übergeben werden. Dieses Scoreobjekt ist typischerweise ein Untermodul(Subscore).
* @param studEl Das Studienelement ist ein Code in der Form eines Strings, der jedem Modul eine unverwechselbare Bezeichnung gibt.
* @param subject Ist der ausgeschriebene Name des Moduls.
* @param semester Ist das Fachsemester, das für dieses Modul vorgesehen ist.
* @param weight Ist die Gewichtung des Moduls. Es wird als Bruch angegeben. Weight[0] ist der Zähler und Weight[1] der Nenner.
* @param parentStudienElement Gibt das Übermodul an in der Codierung der Studienelemente.
* @param score Ist die Note, die in diesem Modul erreicht wurde. Wenn die Note 0.0f gesetzt ist, heißt es, dass bisher keine Note darin erreicht wurde.
* @param attempt Gibt die Anzahl der Versuche für das Semester an.
*/
public Score(String studEl, String subject,int semester, int[] weight, String parentStudienElement, float score, int attempt){
this.studienElement = studEl;
this.subject = subject;
this.weight = new int[2];
this.weight[0] = weight[0];
this.weight[1] = weight[1];
this.semester = semester;
this.parentStudienElement = parentStudienElement;
this.hasParentScore = true;
this.score = score;
this.attempts = attempt;
}
/**
* Der Score Konstruktor erzeugt ein neues Score Objekt gesetzt mit den Parametern, die ihm übergeben werden. Dieses Scoreobjekt ist typischerweise ein Wahlpflichtmodul.
* @param studEl Das Studienelement ist ein Code in der Form eines Strings, der jedem Modul eine unverwechselbare Bezeichnung gibt.
* @param subject Ist der ausgeschriebene Name des Moduls.
* @param semester Ist das Fachsemester, das für dieses Modul vorgesehen ist.
* @param weight Ist die Gewichtung des Moduls. Es wird als Bruch angegeben. Weight[0] ist der Zähler und Weight[1] der Nenner.
* @param isWpf Gibt an ob das Modul ein Wahlpflichtmodul ist. True bedeutet es handelt sich um ein Wahlpflichtmodul.
* @param wpfWeight Gibt die Gewichtung des Wahlpflichtmoduls im Bereich des Wahlpflichtthemas an. wpfWeight[0] entspricht der Gewichtung
* des Moduls und wpfWeight[1] entspricht der erwarteten Anzahl, die das Wahlpflichtthema benötigt um es abzuschließen.
* @param wpfTopic Ist das Wahlpflichtthema des Wahlpflichtmoduls.
* @param score Ist die Note, die in diesem Modul erreicht wurde. Wenn die Note 0.0f gesetzt ist, heißt es, dass bisher keine Note darin erreicht wurde.
* @param attempt Gibt die Anzahl der Versuche für das Semester an.
*/
public Score(String studEl, String subject, int semester, int[] weight, boolean isWpf, int[] wpfWeight, String wpfTopic, float score){
this.studienElement = studEl;
this.subject = subject;
this.weight = new int[2];
this.weight[0] = weight[0];
this.weight[1] = weight[1];
this.isWpf = isWpf;
this.wpfWeight = new int[2];
this.wpfWeight[0] = wpfWeight[0];
this.wpfWeight[1] = wpfWeight[1];
this.wpfTopic = wpfTopic;
this.semester = semester;
this.score = score;
}
/**
* Der Score Konstruktor erzeugt ein neues Score Objekt gesetzt mit den Parametern, die ihm übergeben werden. Dieses Scoreobjekt ist typischerweise ein Wahlpflichtmodul und ein Untermodul.
* @param studEl Das Studienelement ist ein Code in der Form eines Strings, der jedem Modul eine unverwechselbare Bezeichnung gibt.
* @param subject Ist der ausgeschriebene Name des Moduls.
* @param semester Ist das Fachsemester, das für dieses Modul vorgesehen ist.
* @param weight Ist die Gewichtung des Moduls. Es wird als Bruch angegeben. Weight[0] ist der Zähler und Weight[1] der Nenner.
* @param isWpf Gibt an ob das Modul ein Wahlpflichtmodul ist. True bedeutet es handelt sich um ein Wahlpflichtmodul.
* @param wpfWeight Gibt die Gewichtung des Wahlpflichtmoduls im Bereich des Wahlpflichtthemas an. wpfWeight[0] entspricht der Gewichtung
* des Moduls und wpfWeight[1] entspricht der erwarteten Anzahl, die das Wahlpflichtthema benötigt um es abzuschließen.
* @param wpfTopic Ist das Wahlpflichtthema des Wahlpflichtmoduls.
* @param parentStudienElement Gibt das Übermodul an in der Codierung der Studienelemente.
* @param score Ist die Note, die in diesem Modul erreicht wurde. Wenn die Note 0.0f gesetzt ist, heißt es, dass bisher keine Note darin erreicht wurde.
* @param attempt Gibt die Anzahl der Versuche für das Semester an.
*/
public Score(String studEl, String subject, int semester, int[] weight, boolean isWpf, int[] wpfWeight, String wpfTopic, String parentStudienElement, float score){
this.studienElement = studEl;
this.subject = subject;
this.weight = new int[2];
this.weight[0] = weight[0];
this.weight[1] = weight[1];
this.isWpf = isWpf;
this.wpfWeight = new int[2];
this.wpfWeight[0] = wpfWeight[0];
this.wpfWeight[1] = wpfWeight[1];
this.wpfTopic = wpfTopic;
this.semester = semester;
this.parentStudienElement = parentStudienElement;
this.hasParentScore = true;
this.score = score;
}
/**
* @return Gibt das Studienelement zurück.
*/
public String getStudienElement(){
return this.studienElement;
}
/**
* @return Gibt den Namen des Moduls zurück.
*/
public String getSubject(){
return this.subject;
}
/**
* @return Gibt die erreichte Note zurück. Ist 0.0 falls keine Note erreicht wurde
*/
public float getScore(){
return this.score;
}
/**
* @return Gibt die Anzahl der Versuche zurück.
*/
public int getAttempts(){
return this.attempts;
}
/**
* @return Gibt die Gewichtung des Moduls zurück. weight[0] entspricht der Gewichtung des Moduls und weight[1] die Gesamtgewichtung.
*/
public int[] getWeight(){
return this.weight;
}
/**
* @return Gibt die Untermodule eines Moduls in Form einer HashMap zurück zurück.
*/
public HashMap<String, Score> getSubScore(){
return this.subScore;
}
/**
* @return Gibt zurück, ob ein Modul ein Untermodul besitzt. Wenn es eins besitzt, gibt die Methode true zurück.
*/
public boolean hasSubScore(){
return this.hasSubScore;
}
/**
* @return Gibt zurück, ob ein Modul ein Wahlfplichtmodul ist. Wenn es eins ist, gibt die Methode true zurück.
*/
public boolean isWpf(){
return this.isWpf;
}
/**
* @return Gibt das Wahlpflichtthema zurück.
*/
public String getWpfTopic(){
return this.wpfTopic;
}
/**
* @return Gibt die Gewichtung des Wahlpflichtthemas zurück. wpfWeight[0] entspricht der Gewichtung des Moduls und wpfWeight[1] die Gesamtgewichtung.
*/
public int[] getWpfWeight(){
return this.wpfWeight;
}
/**
* @return Gibt das vorgesehene Semester des Moduls zurück.
*/
public int getSemester(){
return this.semester;
}
/**
* @return Gibt zurück ob ein Modul im Notentester gestestet wurde.
*/
public boolean isTested(){
return this.isTested;
}
/**
* @return Gibt zurück, ob ein Modul ein Übermodul hat. Gibt true zurück, wenn das der Fall ist.
*/
public boolean hasParentScore(){
return this.hasParentScore;
}
/**
* @return Gibt das Studienelemnt des Übermoduls zurück.
*/
public String getParentStudienElement(){
return this.parentStudienElement;
}
/**
* @param el Setzt im Objekt den Parameter studienElement zum übergebenen Parameter.
*/
public void setStudienElement(String el){
this.studienElement = el;
}
/**
* @param subject Setzt im Objekt den Parameter subject zum übergebenen Parameter.
*/
public void setSubject(String subject){
this.subject = subject;
}
/**
* @param score Setzt im Objekt den Parameter score zum übergebenen Parameter.
*/
public void setScore(float score){
if(this.isWpf){
}
this.score = score;
}
/**
* @param attempts Setzt im Objekt den Parameter attempts zum übergebenen Parameter.
*/
public void setAttempts(int attempts){
this.attempts = attempts;
}
/**
* Kennzeichnet das Objekt als Untermodul.
*/
public void setSubScore(){
this.hasSubScore = true;
}
/**
* Kennzeichnet das Modul als Wahlpflichtmodul
*/
public void setWpf(){
this.isWpf = true;
}
/**
* setWeight setzt die Gewichtung des Moduls.
* @param denominaor Setzt im Objekt den Parameter weight[0] zum übergebenen Parameter.
* @param numerator Setzt im Objekt den Parameter weight[1] zum übergebenen Parameter.
*/
public void setWeight(int denominator, int numerator){
this.weight = new int[2];
this.weight[0] = denominator;
this.weight[1] = numerator;
}
/**
* Diese Methode setzt ein Untermodul in dem aufgerufenen Objekt.
* @param studEl Das Studienelement ist ein Code in der Form eines Strings, der jedem Modul eine unverwechselbare Bezeichnung gibt.
* @param subject Ist der ausgeschriebene Name des Moduls.
* @param semester Ist das Fachsemester, das für dieses Modul vorgesehen ist.
* @param weight Ist die Gewichtung des Moduls. Es wird als Bruch angegeben. Weight[0] ist der Zähler und Weight[1] der Nenner.
* @param parentStudienElement Gibt das Übermodul an in der Codierung der Studienelemente.
* @param score Ist die Note, die in diesem Modul erreicht wurde. Wenn die Note 0.0f gesetzt ist, heißt es, dass bisher keine Note darin erreicht wurde.
* @param attempt Gibt die Anzahl der Versuche für das Semester an.
*/
public void setSubScore(String studEl, String subject,int semester, int[] weight, String parentStudienElement, float score, int attempt){
if(!hasSubScore){
this.subScore = new HashMap<String, Score>();
this.subScore.put(studEl, new Score(studEl, subject, semester, weight, parentStudienElement, score, attempt));
this.setSubScore();
}else{
this.subScore.put(studEl, new Score(studEl, subject, semester, weight, parentStudienElement, score, attempt));
}
}
/**
* Diese Methode setzt ein Untermodul in dem aufgerufenen Objekt. Hierbei handelt es sich um ein Wahlpflichtmodul
* @param studEl Das Studienelement ist ein Code in der Form eines Strings, der jedem Modul eine unverwechselbare Bezeichnung gibt.
* @param subject Ist der ausgeschriebene Name des Moduls.
* @param semester Ist das Fachsemester, das für dieses Modul vorgesehen ist.
* @param weight Ist die Gewichtung des Moduls. Es wird als Bruch angegeben. Weight[0] ist der Zähler und Weight[1] der Nenner.
* @param isWpf Gibt an ob das Modul ein Wahlpflichtmodul ist. True bedeutet es handelt sich um ein Wahlpflichtmodul.
* @param wpfWeight Gibt die Gewichtung des Wahlpflichtmoduls im Bereich des Wahlpflichtthemas an. wpfWeight[0] entspricht der Gewichtung
* des Moduls und wpfWeight[1] entspricht der erwarteten Anzahl, die das Wahlpflichtthema benötigt um es abzuschließen.
* @param wpfTopic Ist das Wahlpflichtthema des Wahlpflichtmoduls.
* @param parentStudienElement Gibt das Übermodul an in der Codierung der Studienelemente.
* @param score Ist die Note, die in diesem Modul erreicht wurde. Wenn die Note 0.0f gesetzt ist, heißt es, dass bisher keine Note darin erreicht wurde.
*/
public void setSubScore(String studEl, String subject, int semester, int[] weight, boolean isWpf, int[] wpfWeight, String wpfTopic, String parentStudienElement, float score){
if(!hasSubScore){
this.subScore = new HashMap<String, Score>();
this.subScore.put(studEl, new Score(studEl, subject, semester, weight, isWpf, wpfWeight, wpfTopic, parentStudienElement, score));
this.setSubScore();
}else{
this.subScore.put(studEl, new Score(studEl, subject, semester, weight, isWpf, wpfWeight, wpfTopic, parentStudienElement, score));
}
}
/**
* @param wpfTopic Setzt im Objekt den Parameter wpfTopic zum übergebenen Parameter
*/
public void setWpfTopic(String wpfTopic){
this.wpfTopic = wpfTopic;
}
/**
* setWpfWeight setzt die Gewichtung des Moduls.
* @param denominaor Setzt im Objekt den Parameter wpfWeight[0] zum übergebenen Parameter.
* @param numerator Setzt im Objekt den Parameter wpfWeight[1] zum übergebenen Parameter.
*/
public void setWpfWeight(int denominator, int numerator){
this.wpfWeight = new int[2];
this.wpfWeight[0] = denominator;
this.wpfWeight[1] = numerator;
}
/**
* @param semester Setzt im Objekt den Parameter semester zum übergebenen Parameter
*/
public void setSemester(int semester){
this.semester = semester;
}
/**
* Kennzeichnet das Modul als getestet vom Notentester.
*/
public void setIsTested(){
this.isTested = true;
}
/**
* Kennzeichnet das Modul als ungetestet vom Notentester
*/
public void resetIsTested(){
this.isTested = false;
}
/**
* Gibt den Score als String aus.
*/
public String toString(){
String score = "studienElement: " + "\t" + this.studienElement + "\n"
+ "subject: " + "\t\t" + this.subject + "\n"
+ "score: " + "\t\t\t"+ this.score + "\n"
+ "attempts: " + "\t\t" + this.attempts + "\n"
+ "weight: " + "\t\t[" + this.weight[0] + "][" + this.weight[1] + "]\n"
+ "semester: " + "\t\t" + this.semester + "\n"
+ "hasSubScore: " + "\t\t" + this.hasSubScore + "\n"
+ "hasParentScore:" + "\t\t" + this.hasParentScore + "\n"
+ "parentStudienElement" + "\t"+ this.parentStudienElement + "\n";
score += "isWpf: " + "\t\t\t" + this.isWpf + "\n";
if(this.isWpf){
score+="wpfTopic: " + "\t\t" + this.wpfTopic + "\n"
+"wpfWeight: " + "\t\t[" + this.wpfWeight[0] + "][" + this.wpfWeight[1] + "]\n";
}
score += "isTested: " + this.isTested + "\n";
if(this.hasSubScore){
score += "\t ===Subscore:===\n";
for(Score subSet: this.subScore.values()){
score += "\n" + subSet.toString();
}
score += "\n";
}
if(this.studienElement.length()>4){
score+="\t========================================";
}else{
score+= "================================================";
}
return score;
}
}