blob: 7e6c8dea854f0add7bcd26fce20ea881f70d84f4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ote.define.parser;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.ote.define.parser.handlers.ConfigHandler;
import org.eclipse.osee.ote.define.parser.handlers.CurrentProcessorHandler;
import org.eclipse.osee.ote.define.parser.handlers.DemoInfoHandler;
import org.eclipse.osee.ote.define.parser.handlers.ElapsedTimeHandler;
import org.eclipse.osee.ote.define.parser.handlers.ExecutionStatusHandler;
import org.eclipse.osee.ote.define.parser.handlers.RuntimeVersionsHandler;
import org.eclipse.osee.ote.define.parser.handlers.SystemInfoHandler;
import org.eclipse.osee.ote.define.parser.handlers.TestPointResultsHandler;
import org.eclipse.osee.ote.define.parser.handlers.VersionInformationHandler;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
/**
* @author Roberto E. Escobar
*/
public class OteOutfileParser extends BaseOutfileParser {
private final ArrayList<SaxChunkCollector> collectors;
public OteOutfileParser() {
super();
collectors = new ArrayList<>();
collectors.add(new SaxChunkCollector(new ConfigHandler(), "Config"));
collectors.add(new SaxChunkCollector(new RuntimeVersionsHandler(), "RuntimeVersions"));
collectors.add(new SaxChunkCollector(new SystemInfoHandler(), "SystemInfo"));
collectors.add(new SaxChunkCollector(new CurrentProcessorHandler(), "CurrentProcessor"));
collectors.add(new SaxChunkCollector(new ExecutionStatusHandler(), "ExecutionStatus"));
collectors.add(new SaxChunkCollector(new ElapsedTimeHandler(), "TimeSummary"));
collectors.add(new SaxChunkCollector(new VersionInformationHandler(), "Version"));
collectors.add(new SaxChunkCollector(new TestPointResultsHandler(), "TestPointResults"));
collectors.add(new SaxChunkCollector(new DemoInfoHandler(), "Qualification"));
}
@Override
public void registerListener(IDataListener listener) {
super.registerListener(listener);
for (SaxChunkCollector collector : collectors) {
collector.getHandler().addListener(listener);
}
}
@Override
public void deregisterListener(IDataListener listener) {
super.deregisterListener(listener);
for (SaxChunkCollector collector : collectors) {
collector.getHandler().removeListener(listener);
}
}
@Override
protected void doParse(IProgressMonitor monitor, String fileName, InputStream inputStream) throws Exception {
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
CollectionParser handler = new CollectionParser(collectors);
xmlReader.setContentHandler(handler);
xmlReader.parse(new InputSource(inputStream));
}
@Override
public boolean isValidParser(URL fileToParse) {
boolean result = false;
if (fileToParse != null) {
String extension = Lib.getExtension(fileToParse.getFile());
result = extension != null && extension.contains("tmo");
}
return result;
}
}