blob: 863452a37f65476a553fa08c2c318d96ccc692d3 [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2004, 2007 Boeing
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Boeing - initial API and implementation
**********************************************************************/
package org.eclipse.osee.ote.core.framework.saxparse;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.osee.framework.jdk.core.util.io.xml.AbstractSaxHandler;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Actual;
import org.eclipse.osee.ote.core.framework.saxparse.elements.AdditionalInfo;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Argument;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Attention;
import org.eclipse.osee.ote.core.framework.saxparse.elements.CheckGroup;
import org.eclipse.osee.ote.core.framework.saxparse.elements.CheckPoint;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Config;
import org.eclipse.osee.ote.core.framework.saxparse.elements.CurrentProcessor;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Debug;
import org.eclipse.osee.ote.core.framework.saxparse.elements.ElapsedTime;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Environment;
import org.eclipse.osee.ote.core.framework.saxparse.elements.ExecutedBy;
import org.eclipse.osee.ote.core.framework.saxparse.elements.ExecutionDate;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Expected;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Global;
import org.eclipse.osee.ote.core.framework.saxparse.elements.GroupName;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Info;
import org.eclipse.osee.ote.core.framework.saxparse.elements.InfoGroup;
import org.eclipse.osee.ote.core.framework.saxparse.elements.IsInteractive;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Location;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Message;
import org.eclipse.osee.ote.core.framework.saxparse.elements.MethodArguments;
import org.eclipse.osee.ote.core.framework.saxparse.elements.MethodName;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Name;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Notes;
import org.eclipse.osee.ote.core.framework.saxparse.elements.NumberOfTransmissions;
import org.eclipse.osee.ote.core.framework.saxparse.elements.ObjectName;
import org.eclipse.osee.ote.core.framework.saxparse.elements.OteLog;
import org.eclipse.osee.ote.core.framework.saxparse.elements.PropertyElementHandler;
import org.eclipse.osee.ote.core.framework.saxparse.elements.PropertyStoreElementHandler;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Qualification;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Requirement;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Result;
import org.eclipse.osee.ote.core.framework.saxparse.elements.RetryGroup;
import org.eclipse.osee.ote.core.framework.saxparse.elements.ReturnValue;
import org.eclipse.osee.ote.core.framework.saxparse.elements.RuntimeVersions;
import org.eclipse.osee.ote.core.framework.saxparse.elements.ScriptInit;
import org.eclipse.osee.ote.core.framework.saxparse.elements.ScriptName;
import org.eclipse.osee.ote.core.framework.saxparse.elements.ScriptResult;
import org.eclipse.osee.ote.core.framework.saxparse.elements.ScriptVersion;
import org.eclipse.osee.ote.core.framework.saxparse.elements.SoftKeyInfoGroup;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Stacktrace;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Summary;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Support;
import org.eclipse.osee.ote.core.framework.saxparse.elements.SystemInfo;
import org.eclipse.osee.ote.core.framework.saxparse.elements.TestCase;
import org.eclipse.osee.ote.core.framework.saxparse.elements.TestEventElement;
import org.eclipse.osee.ote.core.framework.saxparse.elements.TestPoint;
import org.eclipse.osee.ote.core.framework.saxparse.elements.TestPointName;
import org.eclipse.osee.ote.core.framework.saxparse.elements.TestPointResults;
import org.eclipse.osee.ote.core.framework.saxparse.elements.TestScript;
import org.eclipse.osee.ote.core.framework.saxparse.elements.ThrowableElement;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Time;
import org.eclipse.osee.ote.core.framework.saxparse.elements.TimeSummary;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Tracability;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Trace;
import org.eclipse.osee.ote.core.framework.saxparse.elements.TraceEnd;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Type;
import org.eclipse.osee.ote.core.framework.saxparse.elements.User;
import org.eclipse.osee.ote.core.framework.saxparse.elements.UutErrorEntry;
import org.eclipse.osee.ote.core.framework.saxparse.elements.UutLoggingInfo;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Value;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Version;
import org.eclipse.osee.ote.core.framework.saxparse.elements.VersionInformation;
import org.eclipse.osee.ote.core.framework.saxparse.elements.Witnesses;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
/**
* XMLReader xmlReader = XMLReaderFactory.createXMLReader(); CollectionParser handler = new
* CollectionParser(collectors); xmlReader.setContentHandler(handler); xmlReader.parse(new InputSource(inputStream));
*
* @author Andrew M. Finkbeiner
*/
public class OteSaxHandler extends AbstractSaxHandler {
Map<String, ElementHandlers> handlers;
public OteSaxHandler() throws Exception {
handlers = new HashMap<>();
addHandlers(new Global());
addHandlers(new AdditionalInfo());
addHandlers(new Actual());
addHandlers(new Argument());
addHandlers(new Attention());
addHandlers(new CheckGroup());
addHandlers(new CheckPoint());
addHandlers(new Config());
addHandlers(new CurrentProcessor());
addHandlers(new Debug());
addHandlers(new ElapsedTime());
addHandlers(new Environment());
addHandlers(new ExecutedBy());
addHandlers(new ExecutionDate());
addHandlers(new Expected());
addHandlers(new GroupName());
addHandlers(new Info());
addHandlers(new InfoGroup());
addHandlers(new IsInteractive());
addHandlers(new Location());
addHandlers(new Message());
addHandlers(new MethodArguments());
addHandlers(new MethodName());
addHandlers(new Name());
addHandlers(new Notes());
addHandlers(new org.eclipse.osee.ote.core.framework.saxparse.elements.Number());
addHandlers(new NumberOfTransmissions());
addHandlers(new ObjectName());
addHandlers(new UutErrorEntry());
addHandlers(new UutLoggingInfo());
addHandlers(new OteLog());
addHandlers(new PropertyStoreElementHandler());
addHandlers(new PropertyElementHandler());
addHandlers(new Qualification());
addHandlers(new Requirement());
addHandlers(new Result());
addHandlers(new RetryGroup());
addHandlers(new ReturnValue());
addHandlers(new RuntimeVersions());
addHandlers(new ScriptInit());
addHandlers(new ScriptName());
addHandlers(new ScriptResult());
addHandlers(new ScriptVersion());
addHandlers(new SoftKeyInfoGroup());
addHandlers(new Stacktrace());
addHandlers(new Summary());
addHandlers(new Support());
addHandlers(new SystemInfo());
addHandlers(new TestCase());
addHandlers(new TestPoint());
addHandlers(new ThrowableElement());
addHandlers(new TestEventElement());
addHandlers(new TestPointName());
addHandlers(new TestPointResults());
addHandlers(new TestScript());
addHandlers(new Time());
addHandlers(new TimeSummary());
addHandlers(new Tracability());
addHandlers(new Trace());
addHandlers(new TraceEnd());
addHandlers(new Type());
addHandlers(new User());
addHandlers(new Value());
addHandlers(new Version());
addHandlers(new VersionInformation());
addHandlers(new Witnesses());
}
@Override
public void endElementFound(String uri, String localName, String name) throws SAXException {
ElementHandlers handler;
handler = handlers.get("*");
if (handler != null) {
handler.endElementFound(uri, localName, name, stripCData(getContents().trim()));
}
handler = handlers.get(name);
if (handler != null) {
handler.endElementFound(uri, localName, name, stripCData(getContents().trim()));
}
}
private String stripCData(String content) {
if (content.startsWith("<![CDATA[")) {
return content.subSequence(9, content.length() - 3).toString();
} else {
return content;
}
}
@Override
public void startElementFound(String uri, String localName, String name, Attributes attributes) throws SAXException {
ElementHandlers handler;
handler = handlers.get("*");
if (handler != null) {
handler.startElementFound(uri, localName, name, attributes);
}
handler = handlers.get(name);
if (handler != null) {
handler.startElementFound(uri, localName, name, attributes);
} else {
System.out.println("No Handler for ELEMENT type " + name);
}
}
public void addHandlers(ElementHandlers handler) throws Exception {
Object obj = handlers.put(handler.getElementName(), handler);
if (obj != null) {
throw new Exception("Duplicate handler.");
}
}
public ElementHandlers getHandler(String elementName) {
return handlers.get(elementName);
}
}