Skip to content

Commit c07b68e

Browse files
committed
Pre refactoring and introduction of base class(s)
1 parent 9ba2afc commit c07b68e

27 files changed

+2765
-214
lines changed

src/integration/public360/main/classes/DataTypes/ArchiveCodeParameter.cls

+48
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,31 @@ public class ArchiveCodeParameter implements IJsonSerializable {
153153
return gen.getAsString();
154154
}
155155

156+
/**
157+
* @description Serializes a list of `ArchiveCodeParameter` objects into a single JSON array
158+
* string.
159+
* Example result:
160+
* [
161+
* {"ArchiveType":"recno:60001","Sort":1,"ArchiveCode":"B32","IsManualText":false},
162+
* {"ArchiveType":"recno:60002","Sort":2}
163+
* ]
164+
*
165+
* @author Kenneth Soerensen <[email protected]>, Nav
166+
* @since 0.1.0, February 2025
167+
* @param items The list of ArchiveCodeParameter objects to serialize.
168+
* @return A JSON string representing the array of archive code objects.
169+
*/
170+
public static String toJsonList(List<ArchiveCodeParameter> items) {
171+
if (items == null || items.isEmpty()) {
172+
return '[]';
173+
}
174+
175+
JsonHelper jsonHelper = new JsonHelper();
176+
jsonHelper.writeObjectListAsRootArray(items);
177+
178+
return jsonHelper.getAsString();
179+
}
180+
156181
/**
157182
* @description Deserializes a JSON string into an `ArchiveCodeParameter` object instance.
158183
*
@@ -202,6 +227,29 @@ public class ArchiveCodeParameter implements IJsonSerializable {
202227
return archiveCode;
203228
}
204229

230+
/**
231+
* @description Deserializes a list of maps into a list of `ArchiveCodeParameter` objects.
232+
*
233+
* @author Kenneth Soerensen <[email protected]>, Nav
234+
* @since 0.1.0, February 2025
235+
* @param mapDataList A list of maps, where each map represents one ArchiveCodeParameter record.
236+
* @return A list of ArchiveCodeParameter objects parsed from the provided map data.
237+
*/
238+
public static List<ArchiveCodeParameter> fromMapList(
239+
List<Map<String, Object>> mapDataList
240+
) {
241+
List<ArchiveCodeParameter> result = new List<ArchiveCodeParameter>();
242+
if (mapDataList == null) {
243+
return result;
244+
}
245+
for (Map<String, Object> item : mapDataList) {
246+
if (item != null) {
247+
result.add(ArchiveCodeParameter.fromMap(item));
248+
}
249+
}
250+
return result;
251+
}
252+
205253
/**
206254
* @description Validates the object to ensuring it has the mandatory fields set.
207255
*
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,248 @@
1+
public class CaseResult implements IJsonSerializable {
2+
public Integer Recno;
3+
public String CaseNumber;
4+
public ExternalIdParameter ExternalId;
5+
public String Title;
6+
public Datetime CaseDate; // Date
7+
public String Status;
8+
public String AccessCodeDescription;
9+
public String AccessCodeCode;
10+
public String AccessGroup;
11+
public String Paragraph;
12+
//ResponsibleEnterprise {...}
13+
public String ResponsibleEnterpriseName;
14+
//ResponsiblePerson {...}
15+
public String ResponsiblePersonName;
16+
public List<ArchiveCodeParameter> ArchiveCodes;
17+
//Documents {...}
18+
//ReferringCases {...}
19+
//ReferringDocuments {...}
20+
public String UnofficialTitle;
21+
public Datetime CreatedDate;
22+
public String Notes;
23+
public String CaseTypeCode;
24+
public String CaseTypeDescription;
25+
public List<ContactParameter> Contacts;
26+
public String ProjectRecno;
27+
public String ProjectName;
28+
public String SubArchive;
29+
public String SubArchiveCode;
30+
public List<EstateParameter> CaseEstates;
31+
public String CaseRowPermissions;
32+
//CustomFields {...}
33+
public Datetime LastChangedDate;
34+
//ProgressPlan {...}
35+
public String SubjectSpecificMetaData;
36+
public String SubjectSpecificMetaDataNamespace;
37+
public String URL;
38+
public String AccessGroupRecno;
39+
public String eArchiveXMLFragment;
40+
public String ImportedCaseNumber;
41+
public List<RemarkParameter> Remarks;
42+
public List<String> Keywords;
43+
//Milestones {...}
44+
public String UID;
45+
public String UIDOrigin;
46+
//Stages {...}
47+
public String StatusRecno;
48+
49+
public String toJson() {
50+
//this.validate(); // Ensure mandatory fields are present before serialization
51+
JsonHelper jsonHelper = new JsonHelper();
52+
jsonHelper.writeStartObject();
53+
54+
jsonHelper.writeEndObject();
55+
56+
return jsonHelper.getAsString();
57+
}
58+
59+
public static CaseResult fromJson(String jsonString) {
60+
Map<String, Object> rawMap = (Map<String, Object>) JSON.deserializeUntyped(
61+
jsonString
62+
);
63+
64+
CaseResult instance = new CaseResult();
65+
instance.Recno = (Integer) rawMap.get('Recno');
66+
instance.CaseNumber = (String) rawMap.get('CaseNumber');
67+
instance.ExternalId = ExternalIdParameter.fromMap(
68+
(Map<String, Object>) rawMap.get('ExternalId')
69+
);
70+
instance.Title = (String) rawMap.get('Title');
71+
instance.CaseDate = Datetime.now(); //TODO: Implement -->//(Datetime) rawMap.get('CaseDate');
72+
instance.Status = (String) rawMap.get('Status');
73+
instance.AccessCodeDescription = (String) rawMap.get(
74+
'AccessCodeDescription'
75+
);
76+
instance.AccessCodeCode = (String) rawMap.get('AccessCodeCode');
77+
instance.AccessGroup = (String) rawMap.get('AccessGroup');
78+
instance.Paragraph = (String) rawMap.get('Paragraph');
79+
instance.ResponsibleEnterpriseName = (String) rawMap.get(
80+
'ResponsibleEnterpriseName'
81+
);
82+
instance.ResponsiblePersonName = (String) rawMap.get(
83+
'ResponsiblePersonName'
84+
);
85+
instance.ArchiveCodes = new List<ArchiveCodeParameter>();
86+
List<Object> rawArchiveCodes = (List<Object>) rawMap.get(
87+
'ArchiveCodes'
88+
);
89+
for (Object rawArchiveCode : rawArchiveCodes) {
90+
instance.ArchiveCodes.add(
91+
ArchiveCodeParameter.fromMap(
92+
(Map<String, Object>) rawArchiveCode
93+
)
94+
);
95+
}
96+
instance.UnofficialTitle = (String) rawMap.get('UnofficialTitle');
97+
instance.CreatedDate = Datetime.now(); //TODO: Implement -->//(Datetime) rawMap.get('CreatedDate');
98+
instance.Notes = (String) rawMap.get('Notes');
99+
instance.CaseTypeCode = (String) rawMap.get('CaseTypeCode');
100+
instance.CaseTypeDescription = (String) rawMap.get(
101+
'CaseTypeDescription'
102+
);
103+
instance.Contacts = new List<ContactParameter>();
104+
List<Object> rawContacts = (List<Object>) rawMap.get('Contacts');
105+
for (Object rawContact : rawContacts) {
106+
instance.Contacts.add(
107+
ContactParameter.fromMap((Map<String, Object>) rawContact)
108+
);
109+
}
110+
instance.ProjectRecno = (String) rawMap.get('ProjectRecno');
111+
instance.ProjectName = (String) rawMap.get('ProjectName');
112+
instance.SubArchive = (String) rawMap.get('SubArchive');
113+
instance.SubArchiveCode = (String) rawMap.get('SubArchiveCode');
114+
instance.CaseEstates = new List<EstateParameter>();
115+
List<Object> rawCaseEstates = (List<Object>) rawMap.get('CaseEstates');
116+
for (Object rawCaseEstate : rawCaseEstates) {
117+
instance.CaseEstates.add(
118+
EstateParameter.fromMap((Map<String, Object>) rawCaseEstate)
119+
);
120+
}
121+
instance.CaseRowPermissions = (String) rawMap.get('CaseRowPermissions');
122+
instance.LastChangedDate = Datetime.now(); //TODO: Implement -->//(Datetime) rawMap.get('LastChangedDate');
123+
instance.SubjectSpecificMetaData = (String) rawMap.get(
124+
'SubjectSpecificMetaData'
125+
);
126+
instance.SubjectSpecificMetaDataNamespace = (String) rawMap.get(
127+
'SubjectSpecificMetaDataNamespace'
128+
);
129+
instance.URL = (String) rawMap.get('URL');
130+
instance.AccessGroupRecno = (String) rawMap.get('AccessGroupRecno');
131+
instance.eArchiveXMLFragment = (String) rawMap.get(
132+
'eArchiveXMLFragment'
133+
);
134+
instance.ImportedCaseNumber = (String) rawMap.get('ImportedCaseNumber');
135+
instance.Remarks = new List<RemarkParameter>();
136+
List<Object> rawRemarks = (List<Object>) rawMap.get('Remarks');
137+
for (Object rawRemark : rawRemarks) {
138+
instance.Remarks.add(
139+
RemarkParameter.fromMap((Map<String, Object>) rawRemark)
140+
);
141+
}
142+
instance.Keywords = new List<String>();
143+
List<Object> rawKeywords = (List<Object>) rawMap.get('Keywords');
144+
for (Object rawKeyword : rawKeywords) {
145+
instance.Keywords.add((String) rawKeyword);
146+
}
147+
instance.UID = (String) rawMap.get('UID');
148+
instance.UIDOrigin = (String) rawMap.get('UIDOrigin');
149+
instance.StatusRecno = (String) rawMap.get('StatusRecno');
150+
151+
return instance;
152+
}
153+
154+
public static CaseResult fromMap(Map<String, Object> mapData) {
155+
CaseResult caseResult = new CaseResult();
156+
caseResult.Recno = (Integer) mapData.get('Recno');
157+
caseResult.CaseNumber = (String) mapData.get('CaseNumber');
158+
caseResult.ExternalId = ExternalIdParameter.fromMap(
159+
(Map<String, Object>) mapData.get('ExternalId')
160+
);
161+
caseResult.Title = (String) mapData.get('Title');
162+
caseResult.CaseDate = Datetime.now(); //TODO: Implement -->//(Datetime) mapData.get('CaseDate');
163+
caseResult.Status = (String) mapData.get('Status');
164+
caseResult.AccessCodeDescription = (String) mapData.get(
165+
'AccessCodeDescription'
166+
);
167+
caseResult.AccessCodeCode = (String) mapData.get('AccessCodeCode');
168+
caseResult.AccessGroup = (String) mapData.get('AccessGroup');
169+
caseResult.Paragraph = (String) mapData.get('Paragraph');
170+
caseResult.ResponsibleEnterpriseName = (String) mapData.get(
171+
'ResponsibleEnterpriseName'
172+
);
173+
caseResult.ResponsiblePersonName = (String) mapData.get(
174+
'ResponsiblePersonName'
175+
);
176+
caseResult.ArchiveCodes = new List<ArchiveCodeParameter>();
177+
List<Object> rawArchiveCodes = (List<Object>) mapData.get(
178+
'ArchiveCodes'
179+
);
180+
for (Object rawArchiveCode : rawArchiveCodes) {
181+
caseResult.ArchiveCodes.add(
182+
ArchiveCodeParameter.fromMap(
183+
(Map<String, Object>) rawArchiveCode
184+
)
185+
);
186+
}
187+
caseResult.UnofficialTitle = (String) mapData.get('UnofficialTitle');
188+
caseResult.CreatedDate = Datetime.now(); //TODO: Implement -->//(Datetime) mapData.get('CreatedDate');
189+
caseResult.Notes = (String) mapData.get('Notes');
190+
caseResult.CaseTypeCode = (String) mapData.get('CaseTypeCode');
191+
caseResult.CaseTypeDescription = (String) mapData.get(
192+
'CaseTypeDescription'
193+
);
194+
caseResult.Contacts = new List<ContactParameter>();
195+
List<Object> rawContacts = (List<Object>) mapData.get('Contacts');
196+
for (Object rawContact : rawContacts) {
197+
caseResult.Contacts.add(
198+
ContactParameter.fromMap((Map<String, Object>) rawContact)
199+
);
200+
}
201+
caseResult.ProjectRecno = (String) mapData.get('ProjectRecno');
202+
caseResult.ProjectName = (String) mapData.get('ProjectName');
203+
caseResult.SubArchive = (String) mapData.get('SubArchive');
204+
caseResult.SubArchiveCode = (String) mapData.get('SubArchiveCode');
205+
caseResult.CaseEstates = new List<EstateParameter>();
206+
List<Object> rawCaseEstates = (List<Object>) mapData.get('CaseEstates');
207+
for (Object rawCaseEstate : rawCaseEstates) {
208+
caseResult.CaseEstates.add(
209+
EstateParameter.fromMap((Map<String, Object>) rawCaseEstate)
210+
);
211+
}
212+
caseResult.CaseRowPermissions = (String) mapData.get(
213+
'CaseRowPermissions'
214+
);
215+
caseResult.LastChangedDate = Datetime.now(); //TODO: Implement -->//(Datetime) mapData.get('LastChangedDate');
216+
caseResult.SubjectSpecificMetaData = (String) mapData.get(
217+
'SubjectSpecificMetaData'
218+
);
219+
caseResult.SubjectSpecificMetaDataNamespace = (String) mapData.get(
220+
'SubjectSpecificMetaDataNamespace'
221+
);
222+
caseResult.URL = (String) mapData.get('URL');
223+
caseResult.AccessGroupRecno = (String) mapData.get('AccessGroupRecno');
224+
caseResult.eArchiveXMLFragment = (String) mapData.get(
225+
'eArchiveXMLFragment'
226+
);
227+
caseResult.ImportedCaseNumber = (String) mapData.get(
228+
'ImportedCaseNumber'
229+
);
230+
caseResult.Remarks = new List<RemarkParameter>();
231+
List<Object> rawRemarks = (List<Object>) mapData.get('Remarks');
232+
for (Object rawRemark : rawRemarks) {
233+
caseResult.Remarks.add(
234+
RemarkParameter.fromMap((Map<String, Object>) rawRemark)
235+
);
236+
}
237+
caseResult.Keywords = new List<String>();
238+
List<Object> rawKeywords = (List<Object>) mapData.get('Keywords');
239+
for (Object rawKeyword : rawKeywords) {
240+
caseResult.Keywords.add((String) rawKeyword);
241+
}
242+
caseResult.UID = (String) mapData.get('UID');
243+
caseResult.UIDOrigin = (String) mapData.get('UIDOrigin');
244+
caseResult.StatusRecno = (String) mapData.get('StatusRecno');
245+
246+
return caseResult;
247+
}
248+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
3+
<apiVersion>62.0</apiVersion>
4+
<status>Active</status>
5+
</ApexClass>

src/integration/public360/main/classes/DataTypes/ContactParameter.cls

+24
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,30 @@ public class ContactParameter implements IJsonSerializable {
152152
return gen.getAsString();
153153
}
154154

155+
/**
156+
* @description Serializes a list of `ContactParameter` objects into a single JSON array string.
157+
* Example result:
158+
* [
159+
* {},
160+
* {}
161+
* ]
162+
*
163+
* @author Kenneth Soerensen <[email protected]>, Nav
164+
* @since 0.1.0, February 2025
165+
* @param items The list of ContactParameter objects to serialize.
166+
* @return A JSON string representing the array of archive code objects.
167+
*/
168+
public static String toJsonList(List<ContactParameter> items) {
169+
if (items == null || items.isEmpty()) {
170+
return '[]';
171+
}
172+
173+
JsonHelper jsonHelper = new JsonHelper();
174+
jsonHelper.writeObjectListAsRootArray(items);
175+
176+
return jsonHelper.getAsString();
177+
}
178+
155179
/**
156180
*@description Deserializes a JSON string into an `ContactParameter` object instance.
157181
*

0 commit comments

Comments
 (0)