レポート
サマリーレポート
サマリーレポートの例
<?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- GW2RunSession からの戻りステータス。String 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
指定した transformer を使用して、提供された分析レポートから XML サマリーレポートを生成します。
パラメーター:
Writer writer- サマリーレポートの書き込み先となる writer。Transformer transformer- XML レポートの生成に使用される transformer。
API の例
サマリーレポート機能は、com.glasswall.analysissummary.SummaryReport class に実装されています。まず class のインスタンスを作成し、次にサマリーレポートに含める各分析レポートに対して 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);
}