/** * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.verifier.report.html; import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.util.zip.ZipOutputStream; import org.drools.verifier.components.Field; import org.drools.verifier.components.ObjectType; import org.drools.verifier.components.RulePackage; import org.drools.verifier.components.VerifierComponentType; import org.drools.verifier.components.VerifierRule; import org.drools.verifier.data.VerifierData; import org.drools.verifier.data.VerifierReport; import org.drools.verifier.report.VerifierReportWriter; import org.drools.verifier.report.components.Severity; public class HTMLReportWriter extends ReportModeller implements VerifierReportWriter { public void writeReport(OutputStream out, VerifierReport result) throws IOException { zout = new ZipOutputStream( out ); VerifierData data = result.getVerifierData(); // Base files // index.htm writeToFile( UrlFactory.SOURCE_FOLDER + File.separator + UrlFactory.HTML_FILE_INDEX, formPage( UrlFactory.THIS_FOLDER, ComponentsReportVisitor.visitObjectTypeCollection( UrlFactory.THIS_FOLDER, data.<ObjectType> getAll( VerifierComponentType.OBJECT_TYPE ) ) ) ); // packages.htm writeToFile( UrlFactory.SOURCE_FOLDER + File.separator + UrlFactory.HTML_FILE_PACKAGES, formPage( UrlFactory.THIS_FOLDER, ComponentsReportVisitor.visitRulePackageCollection( UrlFactory.THIS_FOLDER, data.<RulePackage> getAll( VerifierComponentType.RULE_PACKAGE ) ) ) ); // Rules String ruleFolder = UrlFactory.SOURCE_FOLDER + File.separator + UrlFactory.RULE_FOLDER; for ( VerifierRule rule : data.<VerifierRule> getAll( VerifierComponentType.RULE ) ) { writeToFile( ruleFolder + File.separator + rule.getPath() + ".htm", formPage( UrlFactory.PREVIOUS_FOLDER, ComponentsReportVisitor.visitRule( UrlFactory.PREVIOUS_FOLDER, rule, data ) ) ); } // ObjectTypes String objectTypeFolder = UrlFactory.SOURCE_FOLDER + File.separator + UrlFactory.OBJECT_TYPE_FOLDER; for ( ObjectType objectType : data.<ObjectType> getAll( VerifierComponentType.OBJECT_TYPE ) ) { writeToFile( objectTypeFolder + File.separator + objectType.getPath() + ".htm", formPage( UrlFactory.PREVIOUS_FOLDER, ComponentsReportVisitor.visitObjectType( UrlFactory.PREVIOUS_FOLDER, objectType, data ) ) ); } // Fields String fieldFolder = UrlFactory.SOURCE_FOLDER + File.separator + UrlFactory.FIELD_FOLDER; for ( Field field : data.<Field> getAll( VerifierComponentType.FIELD ) ) { writeToFile( fieldFolder + File.separator + field.getPath() + ".htm", formPage( UrlFactory.PREVIOUS_FOLDER, ComponentsReportVisitor.visitField( UrlFactory.PREVIOUS_FOLDER, field, result ) ) ); } // Verifier messages writeMessages( result ); // css files String cssFolder = UrlFactory.SOURCE_FOLDER + File.separator + UrlFactory.CSS_FOLDER; writeToFile( cssFolder + File.separator + UrlFactory.CSS_BASIC, ComponentsReportVisitor.getCss( UrlFactory.CSS_BASIC ) ); // Image files String imagesFolder = UrlFactory.SOURCE_FOLDER + File.separator + UrlFactory.IMAGES_FOLDER; copyFile( imagesFolder, "hdrlogo_drools50px.gif" ); copyFile( imagesFolder, "jbossrules_hdrbkg_blue.gif" ); zout.close(); } private void writeMessages(VerifierReport result) throws IOException { VerifierData data = result.getVerifierData(); String errors = VerifierMessagesVisitor.visitVerifierMessagesCollection( Severity.ERROR.getTuple(), result.getBySeverity( Severity.ERROR ), data ); String warnings = VerifierMessagesVisitor.visitVerifierMessagesCollection( Severity.WARNING.getTuple(), result.getBySeverity( Severity.WARNING ), data ); String notes = VerifierMessagesVisitor.visitVerifierMessagesCollection( Severity.NOTE.getTuple(), result.getBySeverity( Severity.NOTE ), data ); writeToFile( UrlFactory.SOURCE_FOLDER + File.separator + UrlFactory.HTML_FILE_VERIFIER_MESSAGES, formPage( UrlFactory.THIS_FOLDER, errors + warnings + notes ) ); } }