Summary Table
Categories |
Total Count |
PII |
0 |
URL |
0 |
DNS |
0 |
EKL |
0 |
IP |
0 |
PORT |
0 |
VsID |
0 |
CF |
0 |
AI |
0 |
VPD |
0 |
PL |
0 |
Other |
0 |
File Content
package gov.va.oneconsult.seoc.api.serializer;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import org.apache.log4j.Logger;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import gov.va.oneconsult.seoc.api.model.BillingCode;
import gov.va.oneconsult.seoc.api.model.Seoc;
import gov.va.oneconsult.seoc.api.util.EncodeLoggerFactory;
import gov.va.security.util.DataSanitizer;
/**
* Description: Serialize Collection of Seoc and billingCodes object.
*
* @author AbleVets
*/
@SuppressWarnings("serial")
public class SeocBillingCodeSerializer extends StdSerializer<List<Seoc>> {
private DataSanitizer ds = new DataSanitizer();
public static final Logger logger = EncodeLoggerFactory.getLogger(SeocBillingCodeSerializer.class);
/**
* Description: Parameterized Constructor
*
* @param t
*/
protected SeocBillingCodeSerializer(Class<List<Seoc>> t) {
super(t);
}
/**
* Description: Default Constructor
*/
public SeocBillingCodeSerializer() {
this(null);
}
/**
* {@inheritDoc}
*/
@Override
public void serialize(List<Seoc> seocList, JsonGenerator jgen, SerializerProvider sp) throws IOException {
jgen.writeStartArray();
for (Seoc seoc : seocList) {
jgen.writeStartObject();
jgen.writeStringField("name", ds.sanitizeOutputData(seoc.getName()));
jgen.writeStringField("versionNumber", seoc.getVersionNumber());
Set<BillingCode> billingCodesSet = seoc.getBillingCodesForSeoc();
List<BillingCode> billingCodesList = billingCodesSet == null ? new ArrayList<BillingCode>() : sortBillingCodes(billingCodesSet);
jgen.writeArrayFieldStart("billingCodes");
billingCodesList.forEach(billingCode -> {
try {
jgen.writeStartObject();
jgen.writeNumberField("id", billingCode.getId());
jgen.writeBooleanField("precertRequired", billingCode.getPrecertRequired());
jgen.writeStringField("billingCode", ds.sanitizeOutputData(billingCode.getBillingCode()));
jgen.writeStringField("codeType", billingCode.getCodeType());
jgen.writeEndObject();
} catch (IOException e) {
logger.error("Error occured in parsing the BillingCodes in BillingCodeSerializer "+ billingCode.getBillingCode() +" Exception Message: " + e.getMessage());
}
});
jgen.writeEndArray();
jgen.writeEndObject();
} // End of Loop
jgen.writeEndArray();
}
public List<BillingCode> sortBillingCodes(Set<BillingCode> billingCodesSet) {
List<BillingCode> billingCodesList = new ArrayList<BillingCode>();
if (billingCodesSet == null || billingCodesSet.isEmpty()) {
return null;
}
billingCodesSet.forEach(billingCode -> {
if (billingCode != null) {
billingCodesList.add(billingCode);
}
});
Comparator<BillingCode> compareByBillingCode = (BillingCode billingCode1, BillingCode billingCode2) ->
billingCode1.getBillingCode().compareTo(billingCode2.getBillingCode());
Collections.sort(billingCodesList, compareByBillingCode);
return billingCodesList;
}
}