All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cb.petal.PetalNodeList Maven / Gradle / Ivy

/**
 * Copyright (c) 2001 Markus Dahm
 * Copyright (C) 2015-2018 BITPlan GmbH http://www.bitplan.com
 *
 * This source is part of
 * https://github.com/BITPlan/CrazyBeans
 * and the license as outlined there applies
 */
package cb.petal;

import java.util.*;

/**
 * Lists (list foo ...) containing other petal nodes.
 *
 * @version $Id: List.java,v 1.11 2001/07/09 07:48:52 dahm Exp $
 * @author  M. Dahm
 */
public class PetalNodeList implements PetalNode {
  static final long serialVersionUID = -9142706599368764080L;

  private ArrayList list = new ArrayList();
  private String name;

  /**
   * create a list with the given name
   * @param name
   */
  public PetalNodeList(String name) {
    setName(name);
  }

  @SuppressWarnings("unchecked")
  public java.lang.Object clone() {
    PetalNodeList list = new PetalNodeList(name);

    list.list = (ArrayList)this.list.clone();
    return list;
  }

  public boolean equals(java.lang.Object o) {
    return (o instanceof PetalNodeList) && ((PetalNodeList)o).name.equals(this.name) &&
      ((PetalNodeList)o).list.equals(this.list);
  }

  public void setName(String n) {
    if(n != null)
      n = n.intern();

    name = n;
  }

  public final String getName()         { return name; }
  public final String getKind()         { return "list"; }
  public final int    getChildCount()   { return list.size(); }

  public final PetalNode get(int i) {
    return (PetalNode)list.get(i);
  }
  
  public final ArrayList get() {
    return this.list;
  }

  public final void set(int i, PetalNode node) {
    list.set(i, node);
  }
  
  public final void add(PetalNode value) {
    list.add(value);
  }

  public final void remove(PetalNode value) {
    list.remove(value);
  }

  public final int size() {
    return list.size();
  }

  public final java.util.List getElements() {
    return (ArrayList)list.clone();
  }

  public final String toString() { 
    StringBuffer  buf  = new StringBuffer("(list " + name + "\n");

    for(Iterator i = list.iterator(); i.hasNext(); ) {
      buf.append(i.next());

      if(i.hasNext())
        buf.append("\n");
    }

    buf.append(")\n");
    
    return buf.toString();
  }
  
  public void accept(Visitor v) {
    v.visit(this);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy