| /** |
| * <copyright> |
| * |
| * Copyright (c) 2002-2003 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Common Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/cpl-v10.html |
| * |
| * Contributors: |
| * IBM - Initial API and implementation |
| * |
| * </copyright> |
| */ |
| package org.eclipse.wst.wsi.internal.core.analyzer; |
| |
| import org.eclipse.wst.wsi.internal.core.ToolInfo; |
| import org.eclipse.wst.wsi.internal.core.WSIConstants; |
| import org.eclipse.wst.wsi.internal.core.WSIException; |
| import org.eclipse.wst.wsi.internal.core.analyzer.config.AnalyzerConfig; |
| import org.eclipse.wst.wsi.internal.core.document.DocumentFactory; |
| import org.eclipse.wst.wsi.internal.core.log.Log; |
| import org.eclipse.wst.wsi.internal.core.profile.ProfileAssertions; |
| import org.eclipse.wst.wsi.internal.core.profile.validator.ProfileValidatorFactory; |
| import org.eclipse.wst.wsi.internal.core.report.Reporter; |
| import org.eclipse.wst.wsi.internal.core.util.MessageList; |
| import org.eclipse.wst.wsi.internal.core.util.TestUtils; |
| |
| import java.io.PrintWriter; |
| import java.io.StringWriter; |
| import java.util.List; |
| import java.util.Vector; |
| |
| /** |
| * The Analyzer will process all Profile conformance functions. |
| * This class should be sub-classed for each profile. |
| * |
| * @version 1.0.1 |
| * @author Jim Clune |
| * @author Peter Brittenham |
| */ |
| public abstract class Analyzer |
| { |
| /** |
| * Message list. |
| */ |
| protected MessageList messageList = null; |
| |
| protected final static String RESOURCE_BUNDLE_NAME = |
| "org.eclipse.wst.wsi.internal.core.analyzer.Analyzer"; |
| |
| public final static String USAGE_MESSAGE = |
| "Usage: Analyzer -config <configFilename>"; |
| |
| protected Reporter reporter = null; |
| protected AnalyzerContext analyzerContext = null; |
| protected CandidateInfo candidateInfo = null; |
| |
| /** |
| * Analyzer tool information. |
| */ |
| protected ToolInfo toolInfo = null; |
| |
| /** |
| * Profile validator factory. |
| */ |
| protected ProfileValidatorFactory factory = null; |
| |
| /** |
| * Profile validator factory. |
| */ |
| protected DocumentFactory documentFactory = null; |
| |
| /** |
| * Analyzer config file list. |
| */ |
| protected List analyzerConfigList = new Vector(); |
| protected int analyzerConfigIndex = 0; |
| |
| /** |
| * Profile assertions. |
| */ |
| protected ProfileAssertions profileAssertions = null; |
| |
| /** |
| * Log file. |
| */ |
| protected Log log = null; |
| |
| /** |
| * Create an instance of the analyzer tool. |
| * @param args command line arguments. |
| * @param toolInfo analyzer tool information. |
| * @throws WSIException if problems creating the instance of the analyzer tool. |
| */ |
| public Analyzer(String[] args, ToolInfo toolInfo) throws WSIException |
| { |
| init(toolInfo); |
| |
| // Get new config object |
| this.analyzerConfigList.add( |
| analyzerConfigIndex, |
| documentFactory.newAnalyzerConfig()); |
| getAnalyzerConfig().init(messageList); |
| |
| // Parse command line arguments |
| getAnalyzerConfig().parseArgs(args, true); |
| |
| // Display copyright and options that were specified |
| TestUtils.printToolInfo(toolInfo); |
| System.out.println(getAnalyzerConfig().toString()); |
| |
| // Display message |
| printMessage( |
| "progress01", |
| null, |
| "Please wait while the specified artifacts are analyzed..."); |
| } |
| |
| /** |
| * Create an instance of the analyzer tool. |
| * @param args command line arguments. |
| * @param toolInfo analyzer tool information. |
| * @param validate flag for config options validation. |
| * @throws WSIException if problems creating the instance of the analyzer tool. |
| */ |
| public Analyzer(String[] args, ToolInfo toolInfo, boolean validate) throws WSIException |
| { |
| init(toolInfo); |
| |
| // Get new config object |
| this.analyzerConfigList.add( |
| analyzerConfigIndex, |
| documentFactory.newAnalyzerConfig()); |
| getAnalyzerConfig().init(messageList); |
| |
| // Parse command line arguments |
| getAnalyzerConfig().parseArgs(args, validate); |
| |
| // Display copyright and options that were specified |
| TestUtils.printToolInfo(toolInfo); |
| System.out.println(getAnalyzerConfig().toString()); |
| |
| // Display message |
| printMessage( |
| "progress01", |
| null, |
| "Please wait while the specified artifacts are analyzed..."); |
| } |
| |
| /** |
| * Create an instance of the analyzer tool. |
| * @param analyzerConfigList analyzer config file list. |
| * @param toolInfo analyzer tool information. |
| * @throws WSIException if problems creating the instance of the analyzer tool. |
| */ |
| public Analyzer(List analyzerConfigList, ToolInfo toolInfo) |
| throws WSIException |
| { |
| init(toolInfo); |
| |
| this.analyzerConfigList = analyzerConfigList; |
| } |
| |
| /** |
| * Common initialization. |
| * @param toolInfo analyzer tool information. |
| * @throws WSIException if problems occur during common initialization. |
| */ |
| protected void init(ToolInfo toolInfo) throws WSIException |
| { |
| this.toolInfo = toolInfo; |
| |
| // Create message list |
| messageList = new MessageList(RESOURCE_BUNDLE_NAME); |
| |
| // Create profile validator factory |
| factory = ProfileValidatorFactory.newInstance(); |
| |
| // Create document factory |
| documentFactory = DocumentFactory.newInstance(); |
| } |
| |
| /** |
| * Process all conformance validation functions. |
| * @return status code. |
| * @throws WSIException if problems occur during validation. |
| */ |
| public int validateAll() throws WSIException |
| { |
| int statusCode = 0; |
| int tempStatusCode; |
| |
| for (int index = 0; index < analyzerConfigList.size(); index++) |
| { |
| // DEBUG: |
| //System.out.println("index: " + index); |
| |
| // Set current analyzer config index |
| setAnalyzerConfig(index); |
| |
| if ((tempStatusCode = validateConformance()) > statusCode) |
| statusCode = tempStatusCode; |
| } |
| |
| return statusCode; |
| } |
| |
| /** |
| * Process all conformance validation functions. |
| * @return status code. |
| * @throws WSIException if problems occur during conformance validation. |
| */ |
| public abstract int validateConformance() throws WSIException; |
| |
| /** |
| * Get tool information. |
| * @return the tool information. |
| */ |
| public ToolInfo getToolInfo() |
| |
| { |
| return this.toolInfo; |
| } |
| |
| /** |
| * Set current analyzer configuration. |
| * @param index urrent analyzer configuration. |
| * @see #getAnalyzerConfig |
| */ |
| protected void setAnalyzerConfig(int index) |
| { |
| this.analyzerConfigIndex = index; |
| } |
| |
| /** |
| * Get analyzer configuration information. |
| * @return analyzer configuration information. |
| * @see #setAnalyzerConfig |
| */ |
| public AnalyzerConfig getAnalyzerConfig() |
| { |
| return (AnalyzerConfig) this.analyzerConfigList.get(analyzerConfigIndex); |
| } |
| |
| /** |
| * Print a message from the resource bundle. |
| * @param key a key. |
| * @param messageData message data. |
| * @param defaultMessage a default message. |
| */ |
| public void printMessage( |
| String key, |
| String messageData, |
| String defaultMessage) |
| { |
| messageList.printMessage(key, messageData, defaultMessage); |
| } |
| |
| /** |
| * Print message. |
| * @param key a key. |
| * @param messageData message data. |
| * @param defaultMessage a default message. |
| */ |
| public static void staticPrintMessage( |
| String key, |
| String messageData, |
| String defaultMessage) |
| { |
| MessageList.printMessage( |
| RESOURCE_BUNDLE_NAME, |
| key, |
| messageData, |
| defaultMessage); |
| } |
| |
| /** |
| * Return XML string representation of this object. |
| * @param namespaceName a namespace prefix. |
| * @return XML string representation of this object. |
| */ |
| public String toXMLString(String namespaceName) |
| { |
| StringWriter sw = new StringWriter(); |
| PrintWriter pw = new PrintWriter(sw); |
| |
| // Start |
| pw.print(toolInfo.getStartXMLString(namespaceName)); |
| |
| // Config |
| pw.print( |
| getAnalyzerConfig().toXMLString( |
| WSIConstants.NS_NAME_WSI_ANALYZER_CONFIG)); |
| |
| // End |
| pw.println(toolInfo.getEndXMLString(namespaceName)); |
| |
| return sw.toString(); |
| } |
| |
| /** |
| * Print a message. |
| * @param message a message. |
| */ |
| public void printMessage(String message) |
| { |
| if (getAnalyzerConfig().getVerboseOption()) |
| { |
| System.err.println(message); |
| } |
| } |
| } |