Báo cáo
Báo cáo tóm tắt
Ví dụ về báo cáo tóm tắt
<?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
Các hàm khởi tạo
SummaryReport() throws ParserConfigurationException, DOMException
SummaryReport(boolean skipUnsupportedFileTypes) throws ParserConfigurationException, DOMException
Tham số:
boolean skipUnsupportedFileTypes- Thiết lập cờ skipUnsupportedFileTypes. Nếu cờ này không được chỉ định thì tùy chọn bỏ qua các loại tệp không được hỗ trợ sẽ được đặt thànhfalse.
Các phương thức thực thể
void setSkipUnsupportedFileTypes(boolean skipUnsupportedFileTypes)
Trình thiết lập cho cờ bỏ qua các loại tệp không được hỗ trợ.
Tham số:
boolean skipUnsupportedFileTypes- Thiết lập cờ bỏ qua các loại tệp không được hỗ trợ.
boolean getSkipUnsupportedFileTypes()
Trình lấy cho cờ bỏ qua các loại tệp không được hỗ trợ.
Trả về:
true nếu các loại tệp không được hỗ trợ cần được bỏ qua, và false nếu không.
void addAnalysisReport(
Path inputFilePath,
int sessionStatus,
String lastErrorMessage,
String processMessage,
InputStream analysisInputStream
) throws SAXException, ParserConfigurationException, IOException
Thêm một báo cáo phân tích Glasswall mới vào báo cáo tóm tắt.
Tham số:
Path inputFilePath- Đường dẫn tệp của tệp đã được xử lý.int sessionStatus- Trạng thái trả về từ GW2RunSession.String lastErrorMessage- Thông báo lỗi từ [GW2FileErrorMsg]/embedded-engine/embedded-engine-gw2fileerrormsg). Nếu giá trị này là null hoặc rỗng thì nó sẽ không được đưa vào báo cáo tóm tắt.String processMessage- Thông báo xử lý từ GW2FileSessionStatus. Nếu giá trị này là null hoặc rỗng thì nó sẽ không được đưa vào báo cáo tóm tắt.InputStream analysisInputStream- Luồng đầu vào chứa báo cáo phân tích sẽ được đưa vào.
void addAnalysisReport(FileSummary summary) throws SAXException, ParserConfigurationException, IOException
Thêm một bản tóm tắt tệp Glasswall mới vào báo cáo tóm tắt.
Tham số:
FileSummary summary- Thông tin tóm tắt sẽ được thêm vào báo cáo tóm tắt.
public void generateSummaryReport(Writer writer) throws TransformerConfigurationException, TransformerException
Tạo báo cáo tóm tắt XML từ các báo cáo phân tích được cung cấp.
Tham số:
Writer writer- Một writer nơi báo cáo tóm tắt sẽ được ghi vào.
public void generateSummaryReport(Writer writer, Transformer transformer) throws TransformerException
Tạo báo cáo tóm tắt XML từ các báo cáo phân tích được cung cấp bằng cách sử dụng transformer được chỉ định.
Tham số:
Writer writer- Một writer nơi báo cáo tóm tắt sẽ được ghi vào.Transformer transformer- Transformer sẽ được sử dụng để tạo báo cáo XML.
Ví dụ API
Chức năng báo cáo tóm tắt được triển khai trong lớp com.glasswall.analysissummary.SummaryReport. Trước tiên, một thể hiện của lớp được tạo, sau đó addAnalysisReport được gọi cho từng báo cáo phân tích sẽ được đưa vào báo cáo tóm tắt, rồi cuối cùng generateSummaryReport được gọi để tạo báo cáo tóm tắt. Có thể xem ví dụ bên dưới:
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);
}