/*
Copyright (c) 2008 Health Market Science, Inc.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
You can contact Health Market Science at info@healthmarketscience.com
or at the following address:
Health Market Science
2700 Horizon Drive
Suite 200
King of Prussia, PA 19406
*/
package com.healthmarketscience.sqlbuilder.dbspec.basic;
import java.util.ArrayList;
import java.util.List;
/**
* Representation of a group of functions in a database schema (similar to a
* schema for functions). For databases which do not support function
* packages or for builtin functions, the default function package can be used
* as it is largely transparent.
*
* @author James Ahlborn
*/
public class DbFunctionPackage extends DbObject<DbSchema> {
/** functions currently created for this db spec */
private final List<DbFunction> _functions = new ArrayList<DbFunction>();
public DbFunctionPackage(DbSchema parent, String name) {
super(parent, name);
}
public DbSchema getSchema() {
return getParent();
}
/**
* @param name name of the function to find
* @return the function previously added to this package with the given
* name, or {@code null} if none.
*/
public DbFunction findFunction(String name) {
return findObject(_functions, name);
}
/**
* Creates and adds a function with the given name to this package.
* <p>
* Note, no effort is made to make sure the given name is unique.
* @param name the name of the new function
* @return the freshly created function
*/
public DbFunction addFunction(String name) {
DbFunction function = getSpec().createFunction(this, name);
return addFunction(function);
}
/**
* Adds the given function to this package.
* <p>
* Note, no effort is made to make sure the given function is unique.
* @param function the function to be added
* @return the given function
*/
public <T extends DbFunction> T addFunction(T function) {
_functions.add(checkOwnership(function));
return function;
}
}