Example usage for org.apache.commons.collections15.bidimap TreeBidiMap TreeBidiMap

List of usage examples for org.apache.commons.collections15.bidimap TreeBidiMap TreeBidiMap

Introduction

In this page you can find the example usage for org.apache.commons.collections15.bidimap TreeBidiMap TreeBidiMap.

Prototype

public TreeBidiMap() 

Source Link

Document

Constructs a new empty TreeBidiMap.

Usage

From source file:org.openanzo.glitter.query.QueryController.java

/**
 * Pretty print query string//w ww. ja v  a  2s  .  c  o  m
 * 
 * @param printFlags
 *            print flags
 * @param startIndentLevel
 * @return pretty print version of query
 */
@SuppressWarnings("all")
public String prettyPrintQueryString(EnumSet<QueryStringPrintOptions> printFlags, int startIndentLevel) {
    QueryResultForm queryResultForm = this.getQueryResultForm();

    StringBuilder s = new StringBuilder();

    // output the base, if any
    if (this.baseUri != null) {
        s.append("BASE <");
        s.append(this.baseUri);
        s.append(">");
        printSeparator(printFlags, 0, s);
    }
    // add prefixes for all URIs mentioned in the query

    final BidiMap<String, String> prefix2uri = new TreeBidiMap<String, String>();
    Map<String, String> uri2prefix = prefix2uri.inverseBidiMap();
    for (Entry<String, URI> e : this.prefixMap.entrySet())
        prefix2uri.put(e.getKey(), e.getValue().toString());
    for (Entry<String, URI> e : this.queryOptions.entrySet())
        prefix2uri.put(e.getKey(), e.getValue().toString());
    if (printFlags.contains(QueryStringPrintOptions.GENERATE_NEW_PREFIXES)) {
        visitURIs(new URIVisitor() {
            private int p = 0;

            public boolean visitURI(URI u) {
                if (!prefix2uri.containsValue(u.getNamespace())) {
                    // TODO - could use next-to-last URI component to name prefix
                    while (prefix2uri.containsKey("p" + ++p))
                        ;
                    prefix2uri.put("p" + p, u.getNamespace());
                }
                return true;
            }
        }, false, true);
    }
    // output prefixes
    MapIterator<String, String> it = prefix2uri.mapIterator();
    while (it.hasNext()) {
        String key = it.next();
        String value = it.getValue();
        s.append("PREFIX ");
        s.append(key);
        s.append(": <");
        s.append(value);
        s.append(">");
        printSeparator(printFlags, 0, s);
    }
    this.resultForm.prettyPrintQueryPart(printFlags, startIndentLevel, uri2prefix, s);
    printSeparator(printFlags, startIndentLevel, s);
    if (isDatasetFromQuery()) {
        for (URI u : getQueryDataset().getDefaultGraphURIs()) {
            s.append("FROM ");
            printURI(u, printFlags, uri2prefix, s);
            printSeparator(printFlags, startIndentLevel, s);
        }
        for (URI u : getQueryDataset().getNamedGraphURIs()) {
            s.append("FROM NAMED ");
            printURI(u, printFlags, uri2prefix, s);
            printSeparator(printFlags, startIndentLevel, s);
        }
        for (URI u : getQueryDataset().getNamedDatasetURIs()) {
            s.append("FROM DATASET ");
            printURI(u, printFlags, uri2prefix, s);
            printSeparator(printFlags, startIndentLevel, s);
        }
    }
    s.append("WHERE {");
    printSeparator(printFlags, startIndentLevel + 1, s);
    this.queryPattern.prettyPrintQueryPart(printFlags, startIndentLevel + 1, uri2prefix, s);
    printSeparator(printFlags, startIndentLevel, s);
    s.append("}");

    if (queryResultForm instanceof Projection) {
        Projection projection = (Projection) queryResultForm;
        if (!projection.getGroupByVariables().isEmpty()) {
            printSeparator(printFlags, startIndentLevel, s);
            projection.prettyPrintGroupByQueryPart(printFlags, startIndentLevel, uri2prefix, s);
        }
    }

    if (this.ordering.size() > 0) {
        printSeparator(printFlags, startIndentLevel, s);
        s.append("ORDER BY ");
        for (int i = 0; i < this.ordering.size(); i++) {
            OrderingCondition c = this.ordering.get(i);
            if (i != 0)
                s.append(' ');
            c.prettyPrintQueryPart(printFlags, startIndentLevel, uri2prefix, s);
        }
        printSeparator(printFlags, startIndentLevel, s);
    }

    if (this.limit > -1) {
        printSeparator(printFlags, startIndentLevel, s);
        s.append("LIMIT ");
        s.append(this.limit);
    }
    if (this.offset > -1) {
        printSeparator(printFlags, startIndentLevel, s);
        s.append("OFFSET ");
        s.append(this.offset);
    }
    if (printFlags.contains(QueryStringPrintOptions.REMOVE_UNUSED_PREFIXES)) {
        String q = s.toString();
        s = new StringBuilder();
        String[] lines = q.split("\n");
        Pattern p = Pattern.compile("^PREFIX\\s*(\\w+:)", Pattern.CASE_INSENSITIVE);
        boolean first = true;
        for (String line : lines) {
            Matcher m = p.matcher(line);
            if (m.find()) {
                Pattern prefix = Pattern.compile("\\W" + m.group(1));
                if (prefix.split(q).length <= 2)
                    continue;
            }
            if (!first)
                s.append('\n');
            s.append(line);
            first = false;
        }
    }
    return s.toString();
}

From source file:org.openanzo.glitter.query.SubqueryController.java

/**
 * Pretty print query string//from www .  ja  va  2s.c  o m
 * 
 * @param printFlags
 *            print flags
 * @param startIndentLevel
 * @return pretty print version of query
 */
@SuppressWarnings("all")
public void prettyPrintQueryStringPart(EnumSet<QueryStringPrintOptions> printFlags, int startIndentLevel,
        StringBuilder s) {
    QueryResultForm queryResultForm = this.getQueryResultForm();

    final BidiMap<String, String> prefix2uri = new TreeBidiMap<String, String>();
    Map<String, String> uri2prefix = prefix2uri.inverseBidiMap();
    for (Entry<String, URI> e : this.parent.prefixMap.entrySet())
        prefix2uri.put(e.getKey(), e.getValue().toString());
    this.resultForm.prettyPrintQueryPart(printFlags, startIndentLevel, uri2prefix, s);
    printSeparator(printFlags, startIndentLevel, s);
    s.append("WHERE {");
    printSeparator(printFlags, startIndentLevel + 1, s);
    this.queryPattern.prettyPrintQueryPart(printFlags, startIndentLevel + 1, uri2prefix, s);
    printSeparator(printFlags, startIndentLevel, s);
    s.append("}");

    if (queryResultForm instanceof Projection) {
        Projection projection = (Projection) queryResultForm;
        if (!projection.getGroupByVariables().isEmpty()) {
            printSeparator(printFlags, startIndentLevel, s);
            projection.prettyPrintGroupByQueryPart(printFlags, startIndentLevel, uri2prefix, s);
        }
    }

    if (this.ordering.size() > 0) {
        printSeparator(printFlags, 0, s);
        s.append("ORDER BY ");
        for (int i = 0; i < this.ordering.size(); i++) {
            OrderingCondition c = this.ordering.get(i);
            if (i != 0)
                s.append(' ');
            c.prettyPrintQueryPart(printFlags, startIndentLevel, uri2prefix, s);
        }
        printSeparator(printFlags, startIndentLevel, s);
    }

    if (this.limit > -1) {
        printSeparator(printFlags, startIndentLevel, s);
        s.append("LIMIT ");
        s.append(this.limit);
    }
    if (this.offset > -1) {
        printSeparator(printFlags, startIndentLevel, s);
        s.append("OFFSET ");
        s.append(this.offset);
    }
}