001package gudusoft.gsqlparser.nodes;
002
003import gudusoft.gsqlparser.EDbObjectType;
004
005/**
006 * List of TObjectName
007*/
008public class TObjectNameList extends TParseTreeNodeList <TObjectName>{
009
010    public void setObjectType(int objectType) {
011        this.objectType = objectType;
012    }
013
014    /**
015     *
016     * @return type of all objects in this list. if more than one types
017     * saved in this list, then object type is set to ttobjMixed.
018     */
019    public int getObjectType() {
020
021        return objectType;
022    }
023
024    private int objectType = TObjectName.ttobjUnknown;
025
026    public TObjectNameList()
027    {
028    }
029
030    public void addObjectName(TObjectName objectReference)
031    {
032        if ((this.objectType != TObjectName.ttobjUnknown)
033               // && (this.objectType != TObjectName.ttobjMixed)
034                &&(objectReference.getObjectType() == TObjectName.ttobjUnknown)
035                &&(objectReference.getDbObjectType() == EDbObjectType.unknown)
036                ){
037            objectReference.setObjectType(this.objectType);
038        }
039        addElement(objectReference);
040    }
041
042    public TObjectName getObjectName(int position)
043    {
044        if (position < size())
045        {
046            return (TObjectName)elementAt(position);
047        }else{
048        return null;
049        }
050    }
051
052    void addParseTreeNode(Object arg1){
053        addObjectName((TObjectName)arg1);
054    }
055
056    public int searchColumnReference(TObjectName cr){
057        int ret = -1;
058        for (int i=0;i<size();i++){
059            if (getObjectName(i).toString().compareToIgnoreCase(cr.toString()) == 0){
060                ret = i;
061                break;
062            }
063        }
064        return ret;
065    }
066
067    public void accept(TParseTreeVisitor v){
068        v.preVisit(this);
069        v.postVisit(this);
070    }
071//
072//    public void acceptChildren(TParseTreeVisitor v){
073//        v.preVisit(this);
074//        for(int i=0;i<size();i++){
075//            this.getObjectName(i).acceptChildren(v);
076//        }
077//        v.postVisit(this);
078//    }
079
080    /**
081     * Returns a string representation of all TObjectName elements in this list
082     * separated by commas.
083     * @return a comma-separated string of all elements
084     */
085//    @Override
086//    public String toString() {
087//        if (size() == 0) {
088//            return "";
089//        }
090//
091//        StringBuilder sb = new StringBuilder();
092//        for (int i = 0; i < size(); i++) {
093//            if (i > 0) {
094//                sb.append(", ");
095//            }
096//            sb.append(getObjectName(i).toString());
097//        }
098//        return sb.toString();
099//    }
100}