package net.codjo.dataprocess.common.report;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
public class OperationReport {
static private final XStream XSTREAM = new XStream(new DomDriver());
private TreatmentReports treatmentReports = new TreatmentReports();
static {
XSTREAM.alias("treatmentReport", TreatmentReport.class);
XSTREAM.alias("operationReport", OperationReport.class);
XSTREAM.alias("TreatmentReports", TreatmentReports.class);
XSTREAM.addImplicitCollection(TreatmentReports.class, "treatmentReportList");
}
public OperationReport() {
}
public void addTreatmentReport(TreatmentReport treatmentReport) {
treatmentReports.addTreatmentReport(treatmentReport);
}
public List<TreatmentReport> getTreatmentReports() {
return treatmentReports.getTreatmentReports();
}
public boolean isError() {
for (TreatmentReport treatmentReport : treatmentReports.getTreatmentReports()) {
if (treatmentReport.isError()) {
return true;
}
}
return false;
}
public static synchronized String encode(OperationReport report) {
return XSTREAM.toXML(report);
}
public static synchronized OperationReport decode(String xml) {
return (OperationReport)XSTREAM.fromXML(xml);
}
public String toString() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Traitement(s) OK : \n");
for (TreatmentReport treatmentReport : treatmentReports.getTreatmentReports()) {
if (!treatmentReport.isError()) {
stringBuilder.append('\t').append(treatmentReport.toString()).append('\n');
}
}
stringBuilder.append("Traitement(s) en erreur : \n");
for (TreatmentReport treatmentReport : treatmentReports.getTreatmentReports()) {
if (treatmentReport.isError()) {
stringBuilder.append('\t').append(treatmentReport.toString()).append('\n');
}
}
return stringBuilder.toString();
}
static class TreatmentReports {
private List<TreatmentReport> treatmentReportList = new ArrayList<TreatmentReport>();
void addTreatmentReport(TreatmentReport treatmentReport) {
treatmentReportList.add(treatmentReport);
}
public List<TreatmentReport> getTreatmentReports() {
return treatmentReportList;
}
}
}