package sound;

import java.util.StringTokenizer;
import java.util.Vector;

public class PetriNode {

  private String identifier;
  private Vector nextNodes = new Vector();

  public void addNext(int i) {
    nextNodes.addElement(new Integer(i));
  }

  public static String[]
      getTokens(String s) {

    StringTokenizer
        st = new StringTokenizer(
            s, ",: \t\n\r\f\\");
    int n = st.countTokens();
    String t[] = new String[n];
    for (int i = 0; i < n; i++)
      t[i] = st.nextToken();
    return t;
  }

  public static int[] getNotes(String s[]) {
    int ia[] = new int[s.length];
    for (int i = 0; i < ia.length; i++)
      ia[i] = Integer.parseInt(s[i]);
    return ia;
  }

  public void play() {
    int ia[] = getNotes(getTokens(identifier));
    Utils.playThread(ia, 127, 1000);
  }

  public int getNext() {
    if (nextNodes.size() == 0) return 0;
    int r = (int) (nextNodes.size() * Math.random());
    Object o = nextNodes.elementAt(r);
    return ((Integer) o).intValue();
  }


  public PetriNode(String _identifier) {
    identifier = _identifier;
  }

  public String getIdentifier() {
    return identifier;
  }

  public boolean equals(PetriNode p2) {
    return this.getIdentifier().equals(p2.getIdentifier());
  }

  public String toString() {
    return
        "id=" + identifier
        + "\nNextNodes:" + nextNodes.toString();
  }


}