001: package spoon.jdiet.rt;
002:
003: import java.util.Enumeration;
004: import java.util.Hashtable;
005: import java.util.Vector;
006:
007: /**
008: * This class contains helper methods used by classes tansformed by the
009: * J2MEConverter processor. This class implements features of J2SE unavailable
010: * with J2ME.
011: *
012: * @author Lionel Seinturier <Lionel.Seinturier@lifl.fr>
013: */
014: public class Helper {
015:
016: /* ========================================================
017: * Dealing with Arrays
018: * ========================================================
019: */
020:
021: public static Vector asList(Object[] elements) {
022: Vector v = new Vector();
023: for (int i = 0; i < elements.length; i++) {
024: v.addElement(elements[i]);
025: }
026: return v;
027: }
028:
029: /* ========================================================
030: * Dealing with Enumeration
031: * ========================================================
032: */
033:
034: public static Vector toVector(Enumeration e) {
035: Vector v = new Vector();
036: while (e.hasMoreElements()) {
037: v.addElement(e.nextElement());
038: }
039: return v;
040: }
041:
042: /* ========================================================
043: * Dealing with Hashtable
044: * ========================================================
045: */
046:
047: /**
048: * Given a Hashtable, return a vector of MapEntryImpl corresponding to pairs
049: * of keys and values contained in the Hashtable.
050: */
051: public static Vector entrySet(Hashtable h) {
052: Vector v = new Vector();
053: for (Enumeration e = h.keys(); e.hasMoreElements();) {
054: Object key = e.nextElement();
055: Object value = h.get(key);
056: MapEntryImpl mei = new MapEntryImpl(key, value);
057: v.addElement(mei);
058: }
059: return v;
060: }
061:
062: public static Vector keys(Hashtable h) {
063: return toVector(h.keys());
064: }
065:
066: public static Vector keySet(Hashtable h) {
067: Vector v = new Vector();
068: for (Enumeration e = h.keys(); e.hasMoreElements();) {
069: Object key = e.nextElement();
070: v.addElement(key);
071: }
072: return v;
073: }
074:
075: public static Vector values(Hashtable h) {
076: return toVector(h.elements());
077: }
078:
079: /* ========================================================
080: * Dealing with Vector
081: * ========================================================
082: */
083:
084: public static boolean addList(Vector v, Object element) {
085: v.addElement(element);
086: return true;
087: }
088:
089: public static boolean addAllList(Vector v, Vector elements) {
090: for (Enumeration e = elements.elements(); e.hasMoreElements();) {
091: Object element = e.nextElement();
092: addList(v, element);
093: }
094: return (elements.size() != 0);
095: }
096:
097: /**
098: * Add an element in a vector with a set semantics.
099: * If the element already exists in the vector, do not add it.
100: *
101: * @return true if the vector has changed after the adding
102: */
103: public static boolean addSet(Vector v, Object element) {
104: if (v.contains(element)) {
105: return false;
106: }
107: v.addElement(element);
108: return true;
109: }
110:
111: public static boolean addAllSet(Vector v, Vector elements) {
112: boolean hasChanged = false;
113: for (Enumeration e = elements.elements(); e.hasMoreElements();) {
114: Object element = e.nextElement();
115: if (addSet(v, element)) {
116: hasChanged = true;
117: }
118: }
119: return hasChanged;
120: }
121:
122: public static Vector newList(Vector src) {
123: Vector v = new Vector();
124: addAllList(v, src);
125: return v;
126: }
127:
128: public static Vector newSet(Vector src) {
129: Vector v = new Vector();
130: addAllSet(v, src);
131: return v;
132: }
133:
134: public static Object[] toArray(Vector v) {
135: Object[] container = new Object[v.size()];
136: v.copyInto(container);
137: return container;
138: }
139:
140: public static Object[] toArray(Vector v, Object[] container) {
141: if (container.length != v.size()) {
142: container = new Object[v.size()];
143: }
144: v.copyInto(container);
145: return container;
146: }
147:
148: }
|