package de.unikiel.inf.comsys.neo4j.inference.debug;
/*
* #%L
* neo4j-sparql-extension
* %%
* Copyright (C) 2014 Niclas Hoyer
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
import org.openrdf.query.algebra.QueryModelNode;
/**
* A utility class that has static methods for traversing in a tree of
* query nodes.
*/
public class QueryModelNodeTree {
private QueryModelNodeTree() {
}
/**
* Returns the root of a node in a query model tree.
*
* @param node the node to traverse up from
* @return the root of the tree
*/
public static QueryModelNode getRoot(QueryModelNode node) {
QueryModelNode parent;
parent = node;
while(parent.getParentNode() != null) {
parent = parent.getParentNode();
}
return parent;
}
/**
* Returns the distance to the root for a node in a query model tree.
*
* @param node the node to traverse up from
* @return the distance to the root node
*/
public static int getRootDistance(QueryModelNode node) {
int i = 0;
QueryModelNode parent;
parent = node;
while(parent.getParentNode() != null) {
parent = parent.getParentNode();
i++;
}
return i;
}
}