/** * 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.util.Collection; import java.util.HashMap; import java.util.Map; import org.drools.verifier.components.Field; import org.drools.verifier.components.ObjectType; import org.drools.verifier.components.Restriction; 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.components.MissingRange; import org.mvel2.templates.TemplateRuntime; class ComponentsReportVisitor extends ReportVisitor { public static String getCss(String fileName) { return readFile( fileName ); } public static String visitRulePackageCollection(String sourceFolder, Collection<RulePackage> packages) { Map<String, Object> map = new HashMap<String, Object>(); map.put( "sourceFolder", sourceFolder ); map.put( "ruleFolder", UrlFactory.RULE_FOLDER ); map.put( "rulePackages", packages ); String myTemplate = readFile( "packages.htm" ); String result = String.valueOf( TemplateRuntime.eval( myTemplate, map ) ); return result; } public static String visitObjectTypeCollection(String sourceFolder, Collection<ObjectType> objectTypes) { Map<String, Object> map = new HashMap<String, Object>(); map.put( "sourceFolder", sourceFolder ); map.put( "objectTypeFolder", sourceFolder + "/" + UrlFactory.OBJECT_TYPE_FOLDER ); map.put( "fieldFolder", UrlFactory.FIELD_FOLDER ); map.put( "objectTypes", objectTypes ); String myTemplate = readFile( "objectTypes.htm" ); return String.valueOf( TemplateRuntime.eval( myTemplate, map ) ); } public static String visitRule(String sourceFolder, VerifierRule rule, VerifierData data) { Collection<ObjectType> objectTypes = data.getObjectTypesByRuleName( rule.getName() ); Map<String, Object> map = new HashMap<String, Object>(); map.put( "sourceFolder", sourceFolder ); map.put( "objectTypeFolder", UrlFactory.OBJECT_TYPE_FOLDER ); map.put( "rule", rule ); map.put( "objectTypes", objectTypes ); String myTemplate = readFile( "rule.htm" ); return String.valueOf( TemplateRuntime.eval( myTemplate, map ) ); } public static String visitObjectType(String sourceFolder, ObjectType objectType, VerifierData data) { Collection<VerifierRule> rules = data.getRulesByObjectTypePath( objectType.getPath() ); Map<String, Object> map = new HashMap<String, Object>(); map.put( "sourceFolder", sourceFolder ); map.put( "ruleFolder", UrlFactory.RULE_FOLDER ); map.put( "fieldFolder", UrlFactory.FIELD_FOLDER ); map.put( "objectType", objectType ); map.put( "rules", rules ); String myTemplate = readFile( "objectType.htm" ); return String.valueOf( TemplateRuntime.eval( myTemplate, map ) ); } public static String visitField(String sourceFolder, Field field, VerifierReport result) { VerifierData data = result.getVerifierData(); ObjectType objectType = data.getVerifierObject( VerifierComponentType.OBJECT_TYPE, field.getObjectTypePath() ); Collection<VerifierRule> rules = data.getRulesByFieldPath( field.getPath() ); Map<String, Object> map = new HashMap<String, Object>(); map.put( "sourceFolder", sourceFolder ); map.put( "ruleFolder", UrlFactory.RULE_FOLDER ); map.put( "objectTypeFolder", UrlFactory.OBJECT_TYPE_FOLDER ); map.put( "fieldFolder", UrlFactory.FIELD_FOLDER ); map.put( "field", field ); map.put( "objectType", objectType ); map.put( "rules", rules ); if ( field.getFieldType() == Field.DOUBLE || field.getFieldType() == Field.DATE || field.getFieldType() == Field.INT ) { Collection<MissingRange> causes = result.getRangeCheckCausesByFieldPath( field.getPath() ); Collection<Restriction> restrictions = data.getRestrictionsByFieldPath( field.getPath() ); map.put( "ranges", "Ranges:" + MissingRangesReportVisitor.visitRanges( UrlFactory.PREVIOUS_FOLDER, restrictions, causes ) ); } else { map.put( "ranges", "" ); } String myTemplate = readFile( "field.htm" ); return String.valueOf( TemplateRuntime.eval( myTemplate, map ) ); } }