| /* |
| * 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.pig.scripting.groovy; |
| |
| import java.math.BigDecimal; |
| import java.math.BigInteger; |
| import java.io.IOException; |
| import java.lang.reflect.InvocationTargetException; |
| import java.util.Map; |
| |
| import org.apache.pig.AlgebraicEvalFunc; |
| import org.apache.pig.data.DataBag; |
| import org.apache.pig.data.DataByteArray; |
| import org.apache.pig.data.Tuple; |
| |
| public abstract class GroovyAlgebraicEvalFunc<T> extends AlgebraicEvalFunc<T> { |
| |
| public GroovyAlgebraicEvalFunc() { |
| } |
| |
| public GroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public abstract String getFinal(); |
| |
| @Override |
| public String getInitial() { |
| return Initial.class.getName(); |
| } |
| |
| @Override |
| public String getIntermed() { |
| return Intermed.class.getName(); |
| } |
| |
| public static abstract class AlgebraicFunctionWrapper<T> extends GroovyEvalFunc<T> { |
| public AlgebraicFunctionWrapper() { |
| } |
| |
| public AlgebraicFunctionWrapper(String path, String namespace, String methodName) throws IOException { |
| super(path, namespace, methodName); |
| } |
| } |
| |
| public static class Initial extends AlgebraicFunctionWrapper<Tuple> { |
| public Initial() { |
| } |
| |
| public Initial(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, initialMethod); |
| } |
| } |
| |
| public static class Intermed extends AlgebraicFunctionWrapper<Tuple> { |
| public Intermed() { |
| } |
| |
| public Intermed(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, intermedMethod); |
| } |
| } |
| |
| public static class Final<T> extends AlgebraicFunctionWrapper<T> { |
| public Final() { |
| } |
| |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, finalMethod); |
| } |
| } |
| |
| /** |
| * Unlike EvalFuncs and Accumulators, the type must be known at compile time |
| * (ie it |
| * can't return Object), as Pig inspects the type and ensures that it is |
| * valid. This |
| * is why class specific shells are provided here. |
| */ |
| public static class DataBagGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<DataBag> { |
| public DataBagGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<DataBag> { |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| |
| public static class TupleGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<Tuple> { |
| public TupleGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<Tuple> { |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| |
| public static class ChararrayGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<String> { |
| public ChararrayGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<String> { |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| |
| public static class DataByteArrayGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<DataByteArray> { |
| public DataByteArrayGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<DataByteArray> { |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| |
| public static class DateTimeGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<org.joda.time.DateTime> { |
| public DateTimeGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<org.joda.time.DateTime> { |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| |
| public static class DoubleGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<Double> { |
| public DoubleGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<Double> { |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| |
| public static class FloatGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<Float> { |
| public FloatGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<Float> { |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| |
| public static class IntegerGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<Integer> { |
| public IntegerGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<Integer> { |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| |
| public static class LongGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<Long> { |
| public LongGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<Long> { |
| public Final() { |
| } |
| |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| |
| public static class MapGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<Map<String, ?>> { |
| public MapGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<Map<String, ?>> { |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| |
| public static class BooleanGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<Boolean> { |
| public BooleanGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<Boolean> { |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| |
| public static class BigIntegerGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<BigInteger> { |
| public BigIntegerGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<BigInteger> { |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| |
| public static class BigDecimalGroovyAlgebraicEvalFunc extends GroovyAlgebraicEvalFunc<BigDecimal> { |
| public BigDecimalGroovyAlgebraicEvalFunc(String path, String namespace, String methodName, String initialMethod, |
| String intermedMethod, String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| |
| @Override |
| public String getFinal() { |
| return Final.class.getName(); |
| } |
| |
| public static class Final extends GroovyAlgebraicEvalFunc.Final<BigDecimal> { |
| public Final(String path, String namespace, String methodName, String initialMethod, String intermedMethod, |
| String finalMethod) throws IOException { |
| super(path, namespace, methodName, initialMethod, intermedMethod, finalMethod); |
| } |
| } |
| } |
| } |