001package gudusoft.gsqlparser.sqlenv;
002
003import gudusoft.gsqlparser.nodes.TTypeName;
004import gudusoft.gsqlparser.util.SQLUtil;
005
006import java.util.*;
007
008/**
009 * SQL function
010 */
011public class TSQLFunction extends TSQLProcedure {
012
013    public TSQLFunction(TSQLSchema sqlSchema, String functionName){
014        super(sqlSchema,functionName,ESQLDataObjectType.dotFunction);
015    }
016
017    public TSQLFunction(TSQLOraclePackage oraclePackage, String functionName) {
018        super(oraclePackage, functionName, ESQLDataObjectType.dotFunction);
019    }
020
021
022    private TTypeName returnType;
023
024    public void setReturnType(TTypeName returnType) {
025        this.returnType = returnType;
026    }
027
028    public TTypeName getReturnType() {
029        return returnType;
030    }
031
032    /**
033     * column list
034     * @return a column list
035     */
036    public List<TFunctoinColumn> getColumnsInReturnTable() {
037        return columnsInReturnTable;
038    }
039
040    private List<TFunctoinColumn> columnsInReturnTable = new ArrayList<TFunctoinColumn>( );
041
042    /**
043     * add a new column to the table
044     *
045     * @param columnName column name
046     */
047    public void addReturnColumn(String columnName){
048        if (!searchColumnInReturnTable(columnName)){
049                columnsInReturnTable.add(new TFunctoinColumn(this,columnName));
050        }
051    }
052
053    public boolean searchColumnInReturnTable(String columnName){
054        boolean isFound = false;
055
056        for(TFunctoinColumn s : columnsInReturnTable){
057            if (s.compareTo(columnName) == 0){
058                isFound = true;
059                break;
060            }
061        }
062
063        return isFound;
064    }
065
066    @Override
067    public String toString(){
068        StringBuilder sb = new StringBuilder();
069        sb.append(getName().toString());
070        sb.append("\n\t\t\tparameters:");
071        for(TSQLParameter p: getParameterList()){
072            sb.append("\n\t\t\t\t"+p.getName()+",\t"+p.getParameterType().toString());
073        }
074        if (getReturnType() != null){
075            sb.append("\n\t\t\t return type:"+getReturnType().toString());
076        }
077
078
079        return sb.toString();
080    }
081
082}