diff options
Diffstat (limited to 'basebuilder-3.6.2/org.eclipse.releng.basebuilder/builderTemplate/tests/tools/TestVersionTracker.java')
-rw-r--r-- | basebuilder-3.6.2/org.eclipse.releng.basebuilder/builderTemplate/tests/tools/TestVersionTracker.java | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/basebuilder-3.6.2/org.eclipse.releng.basebuilder/builderTemplate/tests/tools/TestVersionTracker.java b/basebuilder-3.6.2/org.eclipse.releng.basebuilder/builderTemplate/tests/tools/TestVersionTracker.java new file mode 100644 index 0000000..9401f34 --- /dev/null +++ b/basebuilder-3.6.2/org.eclipse.releng.basebuilder/builderTemplate/tests/tools/TestVersionTracker.java @@ -0,0 +1,113 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 IBM Corporation and others. + * 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +/** + * This class finds the version of a feature, plugin, or fragment in a given + * build source tree. + */ + +import org.xml.sax.Attributes; +import org.xml.sax.helpers.DefaultHandler; +import org.apache.xerces.parsers.SAXParser; +import org.xml.sax.SAXException; +import java.io.*; +import java.util.Hashtable; +import java.util.Enumeration; + +public class TestVersionTracker extends DefaultHandler { + + private String installDirectory; + private Hashtable elements; + private SAXParser parser; + private String xmlFile; + + //test + public static void main(String[] args) { + TestVersionTracker Tracker = + new TestVersionTracker(args[1]); + Tracker.parse(args[0]); + Tracker.writeProperties(args[2], true); + } + + public TestVersionTracker(String install, Hashtable elements) { + // Create a Xerces SAX Parser + parser = new SAXParser(); + + // Set Content Handler + parser.setContentHandler (this); + + // directory containing the source for a given build + installDirectory = install; + + // instantiate hashtable that will hold directory names with versions for elements + this.elements = elements; + } + + public TestVersionTracker(String install) { + this(install, new Hashtable()); + } + + public void parse(String xmlFile){ + this.xmlFile = xmlFile; + // Parse the Document + try { + parser.parse(this.xmlFile); + } catch (SAXException e) { + System.err.println (e); + } catch (IOException e) { + System.err.println (e); + + } + } + + // Start Element Event Handler + public void startElement( + String uri, + String local, + String qName, + Attributes atts) { + + String element = atts.getValue("id"); + String version = atts.getValue("version"); + + if (local.equals("plugin") || local.equals("fragment")) { + elements.put(element,element+"_"+version); + } else if (local.equals("feature")) + elements.put(element+"-feature",element+"_"+version); + else if (local.equals("includes")) { + File thisFile = new File(xmlFile); + String includeFile = thisFile.getParentFile().getParent() + '/' + element+"_"+version + "/feature.xml"; + TestVersionTracker recurseTracker = new TestVersionTracker(installDirectory, elements); + recurseTracker.parse(includeFile); + } + } + + public void writeProperties(String propertiesFile,boolean append){ + try{ + + PrintWriter writer = new PrintWriter(new FileWriter(propertiesFile,append)); + + Enumeration keys = elements.keys(); + + while (keys.hasMoreElements()){ + Object key = keys.nextElement(); + writer.println(key.toString()+"="+elements.get(key).toString()); + writer.flush(); + } + writer.close(); + + } catch (IOException e){ + System.out.println("Unable to write to file "+propertiesFile); + } + + + } + +} |