EMMA Coverage Report (generated Fri Feb 14 08:28:31 UTC 2014)
[all classes][org.qedeq.kernel.xml.tracker]

COVERAGE SUMMARY FOR SOURCE FILE [XPathLocationFinder.java]

nameclass, %method, %block, %line, %
XPathLocationFinder.java100% (1/1)67%  (2/3)94%  (254/269)91%  (71/78)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class XPathLocationFinder100% (1/1)67%  (2/3)94%  (254/269)91%  (71/78)
XPathLocationFinder (): void 0%   (0/1)0%   (0/3)0%   (0/2)
main (String []): void 100% (1/1)95%  (141/148)87%  (34/39)
printProgramInformation (): void 100% (1/1)96%  (113/118)100% (37/37)

1/* This file is part of the project "Hilbert II" - http://www.qedeq.org
2 *
3 * Copyright 2000-2014,  Michael Meyling <mime@qedeq.org>.
4 *
5 * "Hilbert II" is free software; you can redistribute
6 * it and/or modify it under the terms of the GNU General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15package org.qedeq.kernel.xml.tracker;
16 
17import java.io.File;
18import java.io.IOException;
19import java.util.Locale;
20 
21import javax.xml.parsers.ParserConfigurationException;
22 
23import org.qedeq.base.io.SourceArea;
24import org.qedeq.base.utility.StringUtility;
25import org.qedeq.kernel.bo.KernelContext;
26import org.xml.sax.SAXException;
27 
28 
29/**
30 * Find position of simple XPath expressions within an XML file.
31 *
32 * @author  Michael Meyling
33 */
34public final class XPathLocationFinder {
35 
36    /**
37     * Constructor.
38     */
39    private XPathLocationFinder() {
40        // nothing to do
41    }
42 
43    /**
44     * Main method.
45     *
46     * @param   args    Various parameters. See implementation of
47     *                  {@link #printProgramInformation()}.
48     * @throws  ParserConfigurationException    Severe parser configuration problem.
49     * @throws  SAXException                    XML problem.
50     * @throws  IOException                     IO problem.
51     */
52    public static final void main(final String[] args) throws ParserConfigurationException,
53            SAXException, IOException {
54        String from = null;
55        String xpath = null;
56 
57        if (args.length == 0) {
58            printProgramInformation();
59            return;
60        }
61 
62        for (int i = 0; i < args.length; i++) {
63            if (args[i].startsWith("-")) {  // option
64                final String option = args[i].substring(1).toLowerCase(Locale.US);
65                if (option.equals("help") || option.equals("h")
66                        || option.equals("?")) {
67                    printProgramInformation();
68                    return;
69                }
70                if (option.equals("xpath") || option.equals("xp")) {
71                    if (i + 1 >= args.length) {
72                        printProgramInformation();
73                        System.err.println("\"-xpath\" must be followed by a xpath.");
74                        return;
75                    }
76                    xpath = args[i + 1];
77                    i++;
78                } else {                    // unknown option
79                    printProgramInformation();
80                    System.err.println("Unknown option: " + option);
81                    return;
82                }
83            } else {                        // no option, must be file name
84                from = args[i];
85            }
86        }
87        if (from == null) {
88            printProgramInformation();
89            System.err.println("XML file must be specified.");
90            return;
91        }
92        if (xpath == null) {
93            printProgramInformation();
94            System.err.println("XPath must be specified.");
95            return;
96        }
97        System.out.println(StringUtility.getClassName(XPathLocationFinder.class) + ", running on: "
98            + KernelContext.getInstance().getDescriptiveKernelVersion());
99        try {
100            final SimpleXPath sXPath = new SimpleXPath(xpath);
101            SourceArea result = XPathLocationParser.findSourceArea(new File(from), new SimpleXPath(xpath));
102            System.out.println(result);
103        } catch (RuntimeException e) {
104            System.err.println(e);
105        }
106    }
107 
108    /**
109     * Writes calling convention to <code>System.err</code>.
110     */
111    public static final void printProgramInformation() {
112        System.err.println("Name");
113        System.err.println("----");
114        System.err.println(StringUtility.getClassName(XPathLocationFinder.class)
115            + " - find simple XML paths");
116        System.err.println();
117        System.err.println("Synopsis");
118        System.err.println("-------------------");
119        System.err.println("[-h] -xp[ath] <simpleXPath> <xmlFile>");
120        System.err.println();
121        System.err.println("Description");
122        System.err.println("-----------");
123        System.err.println(
124            "This program finds the location of a given simple XPath in an XML file.");
125        System.err.println();
126        System.err.println("Options and Parameters");
127        System.err.println("---------------------");
128        System.err.println("-h             writes this text and returns");
129        System.err.println("-xpath         set the language filter (default: \"en\")");
130        System.err.println(
131            "<simpleXPath>  simple XML XPath, a subset of the abbreviation XPath notation");
132        System.err.println(
133            "                \"/element1/element2[3]@attribute\" is an example for such a");
134        System.err.println(
135            "                notation. This selects from the first occurrence of \"element1\"");
136        System.err.println(
137            "                and from the third occurrence of subnode \"element2\" the attribute");
138        System.err.println(
139            "                \"attribute\". The attribute is optional. It is always exactly one");
140        System.err.println("                node or the attribute of one node specified.");
141        System.err.println("                General syntax:");
142        System.err.println("                {<element>\"[\"<index>\"]}+[\"@\"<attribute>]");
143        System.err.println("<xmlFile>      XML file");
144        System.err.println();
145        System.err.println("Parameter Examples");
146        System.err.println("------------------");
147        System.err.println(
148            "-xp QEDEQ/CHAPTER/SECTION/NODE[2]/PRECEDING/AXIOM/FORMULA/FORALL/VAR@id");
149        System.err.println("sample/qedeq_basic_concept.xml");
150        System.err.println();
151        System.err.println("Further information");
152        System.err.println("-------------------");
153        System.err.println("For more information about *Hilbert II* look at:");
154        System.err.println("\thttp://www.qedeq.org/");
155        System.err.println();
156    }
157 
158}

[all classes][org.qedeq.kernel.xml.tracker]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov