import java.util.*;

/**
 * SgfOrder クラスは、SGF形式の手順データツリーから、実戦手順のみ抽出してString配列で返します。
 * @author Jiro Suzuki
 */
public class SgfOrder{

    private String[] order; 

    /**
     * SGF形式の手順が空のインスタンスを生成します。
     */
    SgfOrder(){
    }

    /**
     * SGF形式の手順データツリーから、実戦の手順のみ抽出してString配列で返す。
     * @param sgfVectorTree SGF形式の手順データツリー(参考図含む)
     * @return SGF形式による実戦手順データ(参考図は含まない)。String配列
     */
    public String[] includeOrder(Vector sgfVectorTree){

        //実戦手順作成
        Vector wkTree=sgfVectorTree;
        int repeatMax=wkTree.size();
        int ix=0;
        Vector<String> orderArray=new Vector<String>();

        while(ix<repeatMax){
            //実戦手順は配列に追加
            if(wkTree.get(ix) instanceof String){
                orderArray.add((String)wkTree.get(ix));
                ix++;
            //参考図にぶら下がるデータは配列に追加しない。
            //参考図以降はVector形式になっているので、それを頼りに判別している。
            }else if(wkTree.get(ix) instanceof Vector){
                wkTree=(Vector)wkTree.get(ix);
                repeatMax=wkTree.size();
                ix=0;
            }
        }
        order=new String[orderArray.size()];
        for(int i=0;i<orderArray.size();i++){
            order[i]=(String)orderArray.get(i);
        }

        return order;
    }
}