Annotation of FM2SQL/com/exploringxml/xml/JSArray.java, revision 1.1
1.1 ! rogo 1: /* Copyright (c) 2000 Michael Claßen <mclassen@internet.com>
! 2: *
! 3: * This program is free software; you can redistribute it and/or
! 4: * modify it under the terms of the GNU General Public License
! 5: * as published by the Free Software Foundation; either version 2
! 6: * of the License, or (at your option) any later version.
! 7: *
! 8: * This program is distributed in the hope that it will be useful,
! 9: * but WITHOUT ANY WARRANTY; without even the implied warranty of
! 10: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 11: * GNU General Public License for more details.
! 12: *
! 13: * You should have received a copy of the GNU General Public License
! 14: * along with this program; if not, write to the Free Software
! 15: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
! 16: *
! 17: * $Id: JSArray.java,v 1.1 2000/04/03 07:43:37 classen Exp $
! 18: */
! 19:
! 20: package com.exploringxml.xml;
! 21:
! 22: import java.util.Hashtable;
! 23: import java.util.Vector;
! 24:
! 25: /**
! 26: * Mimics a Javascript array;
! 27: * not completely generic because only specific properties are allowed
! 28: * <p>would need Reflection to make it completely generic
! 29: *
! 30: * @author Michael Claßen
! 31: * @version $Revision: 1.1 $
! 32: */
! 33: public class JSArray {
! 34:
! 35: // underlying element holder
! 36: public Vector v = new Vector();
! 37:
! 38: // constants for the currently supported object properties
! 39: static final String Name = "name";
! 40: static final String Attributes = "attributes";
! 41: static final String Contents = "contents";
! 42: static final String Value = "value";
! 43:
! 44: /**
! 45: * gets the object with a certain index
! 46: *
! 47: * @param idx the object's index in the array
! 48: * @return Object at the respective index
! 49: */
! 50: Object elementAt(int idx) {
! 51: return v.elementAt(idx);
! 52: }
! 53:
! 54: /**
! 55: * sets the object with a certain index
! 56: *
! 57: * @param val the object to be set in the array
! 58: * @param idx the object's index in the array
! 59: */
! 60: void setElementAt(Object val, int idx) {
! 61: v.insertElementAt(val, idx);
! 62: }
! 63:
! 64: /**
! 65: * sets the object with a certain index
! 66: *
! 67: * @param val the object' property to be set
! 68: * @param idx the object's index in the array
! 69: * @param prop the name of the object's property to be set;
! 70: * currently can only be: name, attributes, contents, value
! 71: */
! 72: void setElementAt(Object val, int idx, String prop) {
! 73: Node n = (Node) v.elementAt(idx);
! 74: if (prop == Name) {
! 75: n.name = (String) val;
! 76: }
! 77: else if (prop == Attributes) {
! 78: n.attributes = (Hashtable) val;
! 79: }
! 80: else if (prop == Contents) {
! 81: n.contents = (JSArray) val;
! 82: }
! 83: else if (prop == Value) {
! 84: n.value = (String) val;
! 85: }
! 86: }
! 87:
! 88: /**
! 89: * returns the length / size of the array
! 90: *
! 91: * @return the array length
! 92: */
! 93: public int length() {
! 94: return v.size();
! 95: }
! 96:
! 97: /**
! 98: * splits a string into an array of strings, broken at a distinct separator
! 99: *
! 100: * @param str the String to be split
! 101: * @param sep the seperator at which to split
! 102: */
! 103: void split(String str, String sep) {
! 104: v.removeAllElements();
! 105: int oldidx = 0, newidx, skip = sep.length();
! 106: while((newidx = str.indexOf(sep, oldidx)) != -1) {
! 107: v.addElement(str.substring(oldidx, newidx));
! 108: oldidx = newidx + skip;
! 109: }
! 110: v.addElement(str.substring(oldidx));
! 111: }
! 112:
! 113: /**
! 114: * join this array into one string delimited by a separator
! 115: *
! 116: * @param sep the seperator to put in between the array elements
! 117: * @return the joined String
! 118: */
! 119: String join(String sep) {
! 120: int no = 0;
! 121: StringBuffer sb = new StringBuffer();
! 122: while (no < v.size()) {
! 123: sb.append(v.elementAt(no));
! 124: if (++no < v.size()) sb.append(sep);
! 125: }
! 126: return sb.toString();
! 127: }
! 128:
! 129: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>