/* * Copyright Aduna (http://www.aduna-software.com/) (c) 1997-2006. * * Licensed under the Aduna BSD-style license. */ package org.openrdf.query.algebra.helpers; import java.util.ArrayList; import java.util.List; import org.openrdf.query.algebra.Filter; import org.openrdf.query.algebra.QueryModelNode; import org.openrdf.query.algebra.StatementPattern; import org.openrdf.query.algebra.helpers.QueryModelVisitorBase; /** * A QueryModelVisitor that collects StatementPattern's from a query model. * StatementPatterns thet are part of filters/constraints are not included in * the result. */ public class StatementPatternCollector extends QueryModelVisitorBase<RuntimeException> { public static List<StatementPattern> process(QueryModelNode node) { StatementPatternCollector collector = new StatementPatternCollector(); node.visit(collector); return collector.getStatementPatterns(); } private List<StatementPattern> stPatterns = new ArrayList<StatementPattern>(); public List<StatementPattern> getStatementPatterns() { return stPatterns; } @Override public void meet(Filter node) { // Skip boolean constraints node.getArg().visit(this); } @Override public void meet(StatementPattern node) { stPatterns.add(node); } }