รายงาน
รายงานสรุป
ตัวอย่างรายงานสรุป
<?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
คอนสตรัคเตอร์
SummaryReport() throws ParserConfigurationException, DOMException
SummaryReport(boolean skipUnsupportedFileTypes) throws ParserConfigurationException, DOMException
พารามิเตอร์:
boolean skipUnsupportedFileTypes- ใช้ตั้งค่าแฟล็ก skipUnsupportedFileTypes หากไม่ได้ระบุแฟล็กนี้ ระบบจะตั้งค่า skip unsupported file types เป็นfalse.
เมธอดของอินสแตนซ์
void setSkipUnsupportedFileTypes(boolean skipUnsupportedFileTypes)
ตัวตั้งค่าสำหรับแฟล็กข้ามประเภทไฟล์ที่ไม่รองรับ
พารามิเตอร์:
boolean skipUnsupportedFileTypes- ใช้ตั้งค่าแฟล็กข้ามประเภทไฟล์ที่ไม่รองรับ
boolean getSkipUnsupportedFileTypes()
ตัวดึงค่าสำหรับแฟล็กข้ามประเภทไฟล์ที่ไม่รองรับ
ส่งกลับ:
true หากควรข้ามประเภทไฟล์ที่ไม่รองรับ และ false ในกรณีอื่น
void addAnalysisReport(
Path inputFilePath,
int sessionStatus,
String lastErrorMessage,
String processMessage,
InputStream analysisInputStream
) throws SAXException, ParserConfigurationException, IOException
เพิ่มรายงานการวิเคราะห์ Glasswall ใหม่ไปยังรายงานสรุป
พารามิเตอร์:
Path inputFilePath- พาธไฟล์ของไฟล์ที่ถูกประมวลผลint sessionStatus- สถานะผลลัพธ์ที่ส่งกลับจาก GW2RunSessionString lastErrorMessage- ข้อความแสดงข้อผิดพลาดจาก [GW2FileErrorMsg]/embedded-engine/embedded-engine-gw2fileerrormsg). หากค่านี้เป็น null หรือว่าง จะไม่ถูกรวมไว้ในรายงานสรุปString processMessage- ข้อความกระบวนการจาก GW2FileSessionStatus หากค่านี้เป็น null หรือว่าง จะไม่ถูกรวมไว้ในรายงานสรุปInputStream analysisInputStream- สตรีมอินพุตที่มีรายงานการวิเคราะห์ที่จะรวมไว้
void addAnalysisReport(FileSummary summary) throws SAXException, ParserConfigurationException, IOException
เพิ่มสรุปไฟล์ Glasswall ใหม่ไปยังรายงานสรุป
พารามิเตอร์:
FileSummary summary- ข้อมูลสรุปที่จะเพิ่มไปยังรายงานสรุป
public void generateSummaryReport(Writer writer) throws TransformerConfigurationException, TransformerException
สร้างรายงานสรุป XML จากรายงานการวิเคราะห์ที่ให้มา
พารามิเตอร์:
Writer writer- writer ที่จะใช้เขียนรายงานสรุปไปยังปลายทาง
public void generateSummaryReport(Writer writer, Transformer transformer) throws TransformerException
สร้างรายงานสรุป XML จากรายงานการวิเคราะห์ที่ให้มาโดยใช้ transformer ที่ระบุ
พารามิเตอร์:
Writer writer- writer ที่จะใช้เขียนรายงานสรุปไปยังปลายทางTransformer transformer- transformer ที่จะใช้สำหรับสร้างรายงาน XML
ตัวอย่าง API
ฟังก์ชันรายงานสรุปถูกติดตั้งใช้งานไว้ในคลาส com.glasswall.analysissummary.SummaryReport โดยเริ่มจากสร้างอินสแตนซ์ของคลาส จากนั้นเรียก addAnalysisReport สำหรับรายงานการวิเคราะห์แต่ละรายการที่จะรวมอยู่ในรายงานสรุป และสุดท้ายเรียก generateSummaryReport เพื่อสร้างรายงานสรุป ตัวอย่างแสดงอยู่ด้านล่าง:
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);
}