Laporan
Laporan ringkasan
Contoh laporan ringkasan
<?xml version="1.0" encoding="UTF-8"?>
<ContentGroups>
<!-- Example of a conforming file -->
<ContentGroup>
<AdditionalInformation>
<AllowedItems>
<AllowedItem InstanceCount="3">External Hyperlinks</AllowedItem>
<AllowedItem InstanceCount="2">Metadata</AllowedItem>
</AllowedItems>
<SanitisationItems>
<SanitisationItem InstanceCount="25">Embedded File</SanitisationItem>
</SanitisationItems>
</AdditionalInformation>
<FileName>/home/glasswall/Documents/Example.doc</FileName>
<ProcessMessage>Remedies Applied</ProcessMessage>
<EngineOutcome>Managed</EngineOutcome>
<LastErrorMessage/>
</ContentGroup>
<!-- Example of a non-conforming file -->
<ContentGroup>
<AdditionalInformation>
<AllowedItems>
<AllowedItem InstanceCount="22">Metadata</AllowedItem>
</AllowedItems>
</AdditionalInformation>
<FileName>/home/glasswall/Documents/Example2.docx</FileName>
<ProcessMessage>Issues Found</ProcessMessage>
<EngineOutcome>Non-conforming</EngineOutcome>
<LastErrorMessage>End of stream 'xl/workbook.xml' not reached</LastErrorMessage>
</ContentGroup>
<!-- Example of an unsupported file type when the skip unsupported file types flag is set to true -->
<ContentGroup>
<AdditionalInformation/>
<FileName>/home/glasswall/Documents/UnsupportedFileType.cat</FileName>
<ProcessMessage/>
<EngineOutcome>Unsupported</EngineOutcome>
<LastErrorMessage>Skipping unsupported filetype</LastErrorMessage>
</ContentGroup>
<!-- Example of an unsupported file type when the skip unsupported file types flag is set to false -->
<ContentGroup>
<AdditionalInformation/>
<FileName>/home/glasswall/Documents/UnsupportedFileType.cat</FileName>
<ProcessMessage>Issues Found</ProcessMessage>
<EngineOutcome>Non-conforming</EngineOutcome>
<LastErrorMessage>Unable to determine file type</LastErrorMessage>
</ContentGroup>
</ContentGroups>
API
Pembina
SummaryReport() throws ParserConfigurationException, DOMException
SummaryReport(boolean skipUnsupportedFileTypes) throws ParserConfigurationException, DOMException
Parameter:
boolean skipUnsupportedFileTypes- Ini menetapkan bendera skipUnsupportedFileTypes. Jika bendera ini tidak dinyatakan maka skip unsupported file types akan ditetapkan kepadafalse.
Kaedah instance
void setSkipUnsupportedFileTypes(boolean skipUnsupportedFileTypes)
Setter untuk flag langkau jenis fail yang tidak disokong.
Parameter:
boolean skipUnsupportedFileTypes- Ini menetapkan flag langkau jenis fail yang tidak disokong.
boolean getSkipUnsupportedFileTypes()
Getter untuk flag langkau jenis fail yang tidak disokong.
Returns:
true jika jenis fail yang tidak disokong perlu dilangkau, dan false jika sebaliknya.
void addAnalysisReport(
Path inputFilePath,
int sessionStatus,
String lastErrorMessage,
String processMessage,
InputStream analysisInputStream
) throws SAXException, ParserConfigurationException, IOException
Tambahkan laporan analisis Glasswall baharu pada laporan ringkasan.
Parameter:
Path inputFilePath- Laluan fail bagi fail yang telah diproses.int sessionStatus- Status pulangan daripada GW2RunSession.String lastErrorMessage- Mesej ralat daripada [GW2FileErrorMsg]/embedded-engine/embedded-engine-gw2fileerrormsg). Jika ini adalah null atau kosong maka ia tidak akan disertakan dalam laporan ringkasan.String processMessage- Mesej proses daripada GW2FileSessionStatus. Jika ini null atau kosong maka ia tidak akan disertakan dalam laporan ringkasan.InputStream analysisInputStream- Strim input yang mengandungi laporan analisis untuk disertakan.
void addAnalysisReport(FileSummary summary) throws SAXException, ParserConfigurationException, IOException
Tambahkan ringkasan fail Glasswall baharu pada laporan ringkasan.
Parameter:
FileSummary summary- Maklumat ringkasan yang akan ditambahkan pada laporan ringkasan.
public void generateSummaryReport(Writer writer) throws TransformerConfigurationException, TransformerException
Jana laporan ringkasan XML daripada laporan analisis yang disediakan.
Parameter:
Writer writer- Penulis tempat laporan ringkasan akan ditulis.
public void generateSummaryReport(Writer writer, Transformer transformer) throws TransformerException
Jana laporan ringkasan XML daripada laporan analisis yang disediakan menggunakan transformer yang ditentukan.
Parameter:
Writer writer- Penulis tempat laporan ringkasan akan ditulis.Transformer transformer- Transformer yang akan digunakan untuk menjana laporan XML.
Contoh API
Fungsi laporan ringkasan dilaksanakan dalam kelas com.glasswall.analysissummary.SummaryReport. Mula-mula satu instance kelas dicipta, kemudian addAnalysisReport dipanggil bagi setiap laporan analisis yang akan disertakan dalam laporan ringkasan, dan akhirnya generateSummaryReport dipanggil pada penghujung untuk menjana laporan ringkasan. Contoh boleh dilihat di bawah:
File input_directory = new File("Input");
File output_directory = new File("Output");
output_directory.mkdirs();
SummaryReport summary_report = new SummaryReport();
summary_report.setSkipUnsupportedFileTypes(true); // Optionally set the skip unsupported file types flag
for (File file : input_directory.listFiles())
{
if (file.isDirectory())
continue;
try (Core2JavaBridge gw = new Core2JavaBridge())
{
// Create the output path for file and analysis report
String file_output_path = Paths.get(output_directory.getAbsolutePath().toString(), file.getName()).toString();
String analysis_output_path = file_output_path + ".xml";
// Run the file through the Glasswall engine
int session = gw.GW2OpenSession();
gw.GW2RegisterInputFile(session, file.getAbsolutePath());
gw.GW2RegisterAnalysisFile(session, analysis_output_path, 0);
gw.GW2RegisterOutFile(session, file_output_path);
int run_status = gw.GW2RunSession(session);
// Retrieve the error message if the file is non-conforming
String error_message = null;
if (run_status < 0)
error_message = gw.GW2FileErrorMsgString(session);
// Retrieve the session status along with the session description
FileSessionStatus session_status = gw.GW2FileSessionStatusResult(session);
// Add the analysis report to the summary report
try (FileInputStream stream = new FileInputStream(analysis_output_path))
{
summary_report.addAnalysisReport(file.toPath(), run_status, error_message, session_status.summaryDescription, stream);
}
}
catch (Exception ex)
{
System.err.println("Exception occurred: " + ex.getMessage());
}
}
// Write the summary report to `SummaryReport.xml` file
try (BufferedWriter writer = Files.newBufferedWriter(
Paths.get(output_directory.getAbsolutePath().toString(), "SummaryReport.xml"),
StandardCharsets.UTF_8,
StandardOpenOption.TRUNCATE_EXISTING,
StandardOpenOption.CREATE,
StandardOpenOption.WRITE))
{
summary_report.generateSummaryReport(writer);
}