Github user meiercaleb commented on a diff in the pull request: https://github.com/apache/incubator-rya/pull/257#discussion_r160009857 --- Diff: common/rya.api.function/src/main/java/org/apache/rya/api/function/aggregation/SumFunction.java --- @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.rya.api.function.aggregation; + +import static com.google.common.base.Preconditions.checkArgument; + +import java.math.BigInteger; + +import org.apache.rya.api.model.VisibilityBindingSet; +import org.openrdf.model.Literal; +import org.openrdf.model.Value; +import org.openrdf.model.datatypes.XMLDatatypeUtil; +import org.openrdf.model.impl.IntegerLiteralImpl; +import org.openrdf.query.algebra.MathExpr.MathOp; +import org.openrdf.query.algebra.evaluation.ValueExprEvaluationException; +import org.openrdf.query.algebra.evaluation.util.MathUtil; +import org.openrdf.query.impl.MapBindingSet; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import edu.umd.cs.findbugs.annotations.DefaultAnnotation; +import edu.umd.cs.findbugs.annotations.NonNull; + +/** + * Add to the {@link AggregationState}'s sum if the child Binding Set contains the binding name + * that is being summed by the {@link AggregationElement}. + */ +@DefaultAnnotation(NonNull.class) +public final class SumFunction implements AggregationFunction { + private static final Logger log = LoggerFactory.getLogger(SumFunction.class); + + @Override + public void update(final AggregationElement aggregation, final AggregationState state, final VisibilityBindingSet childBindingSet) { + checkArgument(aggregation.getAggregationType() == AggregationType.SUM, "The SumFunction only accepts SUM AggregationElements."); --- End diff -- Preconditions
---