/******************************************************************************* * Copyright (c) 2010 Fraunhofer IWU 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: * Fraunhofer IWU - initial API and implementation *******************************************************************************/ package net.enilink.komma.parser.sparql.tree; import java.util.Arrays; public abstract class QueryWithSolutionModifier extends Query { protected LimitModifier limitModifier; protected OffsetModifier offsetModifier; protected OrderModifier orderModifier; protected SolutionModifier[] modifiers; public QueryWithSolutionModifier(Dataset dataset, Graph graph, SolutionModifier... modifiers) { super(dataset, graph); this.modifiers = modifiers; for (SolutionModifier modifier : modifiers) { if (modifier instanceof LimitModifier) { assertNull(LimitModifier.class, limitModifier); limitModifier = (LimitModifier) modifier; } else if (modifier instanceof OffsetModifier) { assertNull(OffsetModifier.class, offsetModifier); offsetModifier = (OffsetModifier) modifier; } else if (modifier instanceof OrderModifier) { assertNull(OrderModifier.class, orderModifier); orderModifier = (OrderModifier) modifier; } } } public LimitModifier getLimitModifier() { return limitModifier; } public OffsetModifier getOffsetModifier() { return offsetModifier; } public OrderModifier getOrderModifier() { return orderModifier; } public java.util.Collection<? extends SolutionModifier> getModifiers() { return Arrays.asList(modifiers); } protected <T> void assertNull(Class<T> type, T value) { if (value != null) { throw new IllegalArgumentException("Modifier of type " + type + " may only be assigned once."); } } }