26
26
import jakarta .xml .bind .annotation .XmlElementWrapper ;
27
27
import jakarta .xml .bind .annotation .XmlRootElement ;
28
28
import jakarta .xml .bind .annotation .XmlTransient ;
29
+ import jakarta .xml .bind .annotation .adapters .XmlAdapter ;
30
+ import jakarta .xml .bind .annotation .adapters .XmlJavaTypeAdapter ;
29
31
import megamek .logging .MMLogger ;
30
32
import mekhq .campaign .mission .AtBContract ;
31
33
import org .w3c .dom .Node ;
32
34
33
35
import javax .xml .namespace .QName ;
34
36
import java .io .PrintWriter ;
37
+ import java .time .LocalDate ;
35
38
import java .util .ArrayList ;
36
39
import java .util .List ;
37
40
@@ -63,6 +66,8 @@ public class StratconCampaignState {
63
66
@ XmlElement (name = "campaignTrack" )
64
67
private final List <StratconTrackState > tracks ;
65
68
69
+ private List <LocalDate > weeklyScenarios ;
70
+
66
71
@ XmlTransient
67
72
public AtBContract getContract () {
68
73
return contract ;
@@ -74,10 +79,12 @@ public void setContract(AtBContract contract) {
74
79
75
80
public StratconCampaignState () {
76
81
tracks = new ArrayList <>();
82
+ weeklyScenarios = new ArrayList <>();
77
83
}
78
84
79
85
public StratconCampaignState (AtBContract contract ) {
80
86
tracks = new ArrayList <>();
87
+ weeklyScenarios = new ArrayList <>();
81
88
setContract (contract );
82
89
}
83
90
@@ -102,6 +109,21 @@ public void addTrack(StratconTrackState track) {
102
109
tracks .add (track );
103
110
}
104
111
112
+ @ XmlJavaTypeAdapter (value = LocalDateAdapter .class )
113
+ @ XmlElementWrapper (name = "weeklyScenarios" )
114
+ @ XmlElement (name = "weeklyScenario" )
115
+ public List <LocalDate > getWeeklyScenarios () {
116
+ return weeklyScenarios ;
117
+ }
118
+
119
+ public void addWeeklyScenario (LocalDate weeklyScenario ) {
120
+ weeklyScenarios .add (weeklyScenario );
121
+ }
122
+
123
+ public void setWeeklyScenarios (final List <LocalDate > weeklyScenarios ) {
124
+ this .weeklyScenarios = weeklyScenarios ;
125
+ }
126
+
105
127
public int getSupportPoints () {
106
128
return supportPoints ;
107
129
}
@@ -232,4 +254,20 @@ public static StratconCampaignState Deserialize(Node xmlNode) {
232
254
233
255
return resultingCampaignState ;
234
256
}
257
+
258
+ /**
259
+ * This adapter provides a way to convert between a LocalDate and the ISO-8601 string
260
+ * representation of the date that is used for XML marshaling and unmarshalling in JAXB.
261
+ */
262
+ public static class LocalDateAdapter extends XmlAdapter <String , LocalDate > {
263
+ @ Override
264
+ public String marshal (LocalDate date ) {
265
+ return date .toString ();
266
+ }
267
+
268
+ @ Override
269
+ public LocalDate unmarshal (String date ) throws Exception {
270
+ return LocalDate .parse (date );
271
+ }
272
+ }
235
273
}
0 commit comments