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
Konstruktor
SummaryReport() throws ParserConfigurationException, DOMException
SummaryReport(boolean skipUnsupportedFileTypes) throws ParserConfigurationException, DOMException
Parameter:
boolean skipUnsupportedFileTypes- Ini menetapkan flag skipUnsupportedFileTypes. Jika flag ini tidak ditentukan, maka skip unsupported file types akan diatur kefalse.
Metode instance
void setSkipUnsupportedFileTypes(boolean skipUnsupportedFileTypes)
Setter untuk flag lewati jenis file yang tidak didukung.
Parameter:
boolean skipUnsupportedFileTypes- Ini menetapkan flag lewati jenis file yang tidak didukung.
boolean getSkipUnsupportedFileTypes()
Getter untuk flag lewati jenis file yang tidak didukung.
Returns:
true jika jenis file yang tidak didukung harus dilewati, dan false jika tidak.
void addAnalysisReport(
Path inputFilePath,
int sessionStatus,
String lastErrorMessage,
String processMessage,
InputStream analysisInputStream
) throws SAXException, ParserConfigurationException, IOException
Tambahkan laporan analisis Glasswall baru ke laporan ringkasan.
Parameter:
Path inputFilePath- Jalur file dari file yang diproses.int sessionStatus- Status pengembalian dari GW2RunSession.String lastErrorMessage- Pesan kesalahan dari [GW2FileErrorMsg]/embedded-engine/embedded-engine-gw2fileerrormsg). Jika ini null atau kosong maka ini tidak akan disertakan dalam laporan ringkasan.String processMessage- Pesan proses dari GW2FileSessionStatus. Jika ini null atau kosong maka ini tidak akan disertakan dalam laporan ringkasan.InputStream analysisInputStream- Aliran input yang berisi laporan analisis untuk disertakan.
void addAnalysisReport(FileSummary summary) throws SAXException, ParserConfigurationException, IOException
Tambahkan ringkasan file Glasswall baru ke laporan ringkasan.
Parameter:
FileSummary summary- Informasi ringkasan yang akan ditambahkan ke laporan ringkasan.
public void generateSummaryReport(Writer writer) throws TransformerConfigurationException, TransformerException
Buat laporan ringkasan XML dari laporan analisis yang disediakan.
Parameter:
Writer writer- Writer tempat laporan ringkasan akan ditulis.
public void generateSummaryReport(Writer writer, Transformer transformer) throws TransformerException
Buat laporan ringkasan XML dari laporan analisis yang disediakan menggunakan transformer yang ditentukan.
Parameter:
Writer writer- Writer tempat laporan ringkasan akan ditulis.Transformer transformer- Transformer yang akan digunakan untuk membuat laporan XML.
Contoh API
Fungsi laporan ringkasan diimplementasikan dalam class com.glasswall.analysissummary.SummaryReport. Pertama, sebuah instance dari class dibuat, lalu addAnalysisReport dipanggil untuk setiap laporan analisis yang akan disertakan dalam laporan ringkasan, dan kemudian generateSummaryReport dipanggil di akhir untuk membuat laporan ringkasan. Contohnya dapat dilihat di bawah ini:
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);
}