All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.samskivert.depot.impl.expression.AggregateFun Maven / Gradle / Ivy

There is a newer version: 1.7.5
Show newest version
//
// Depot library - a Java relational persistence library
// https://github.com/threerings/depot/blob/master/LICENSE

package com.samskivert.depot.impl.expression;

import com.samskivert.depot.expression.SQLExpression;
import com.samskivert.depot.impl.FragmentVisitor;
import com.samskivert.depot.impl.expression.Function.OneArgFun;

public abstract class AggregateFun extends OneArgFun
{
    public static class Average extends AggregateFun {
        public Average (SQLExpression argument) {
            this(argument, false);
        }
        public Average (SQLExpression argument, boolean distinct) {
            super(argument, distinct);
        }
        public Object accept (FragmentVisitor visitor) {
            return visitor.visit(this);
        }
        public String getCanonicalFunctionName () {
            return "average";
        }
    }

    public static class Count extends AggregateFun {
        public Count (SQLExpression argument) {
            this(argument, false);
        }
        public Count (SQLExpression argument, boolean distinct) {
            super(argument, distinct);
        }
        public Object accept (FragmentVisitor visitor) {
            return visitor.visit(this);
        }
        public String getCanonicalFunctionName () {
            return "count";
        }
    }

    public static class Every extends AggregateFun {
        public Every (SQLExpression argument) {
            this(argument, false);
        }
        public Every (SQLExpression argument, boolean distinct) {
            super(argument, distinct);
        }
        public Object accept (FragmentVisitor visitor) {
            return visitor.visit(this);
        }
        public String getCanonicalFunctionName () {
            return "every";
        }
    }

    public static class Max extends AggregateFun {
        public Max (SQLExpression argument) {
            this(argument, false);
        }
        public Max (SQLExpression argument, boolean distinct) {
            super(argument, distinct);
        }
        public Object accept (FragmentVisitor visitor) {
            return visitor.visit(this);
        }
        public String getCanonicalFunctionName () {
            return "max";
        }
    }

    public static class Min extends AggregateFun {
        public Min (SQLExpression argument) {
            this(argument, false);
        }
        public Min (SQLExpression argument, boolean distinct) {
            super(argument, distinct);
        }
        public Object accept (FragmentVisitor visitor) {
            return visitor.visit(this);
        }
        public String getCanonicalFunctionName () {
            return "min";
        }
    }

    public static class Sum extends AggregateFun {
        public Sum (SQLExpression argument) {
            this(argument, false);
        }
        public Sum (SQLExpression argument, boolean distinct) {
            super(argument, distinct);
        }
        public Object accept (FragmentVisitor visitor) {
            return visitor.visit(this);
        }
        public String getCanonicalFunctionName () {
            return "sum";
        }
    }

    public AggregateFun (SQLExpression argument, boolean distinct)
    {
        super(argument);
        _distinct = distinct;
    }

    public boolean isDistinct ()
    {
        return _distinct;
    }

    @Override
    public String toString ()
    {
        return getCanonicalFunctionName() + "(" + (_distinct ? "distinct " : "") + _arg + ")";
    }

    protected boolean _distinct;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy