01: // PropertiesAttribute.java
02: // $Id: PropertiesAttribute.java,v 1.4 2002/06/09 11:23:34 ylafon Exp $
03: // (c) COPYRIGHT MIT and INRIA, 1996.
04: // Please first read the full copyright statement in file COPYRIGHT.html
05:
06: package org.w3c.tools.resources;
07:
08: import java.util.Enumeration;
09:
10: import org.w3c.util.ArrayDictionary;
11:
12: /**
13: * The generic description of an PropertiesAttribute.
14: * A PropertiesAttribute instance holds a String to String mapping, it
15: * should be used only with care, since people may act on a reference to
16: * it.
17: */
18:
19: public class PropertiesAttribute extends ArrayAttribute {
20:
21: /**
22: * Is the given object a valid PropertiesAttribute value ?
23: * @param obj The object to test.
24: * @return A boolean <strong>true</strong> if value is valid.
25: */
26:
27: public boolean checkValue(Object obj) {
28: return (obj == null) || (obj instanceof ArrayDictionary);
29: }
30:
31: /**
32: * Unpickle an attribute array from a string array.
33: * @param array the String array
34: * @return a Object array
35: */
36: public Object unpickle(String array[]) {
37: if (array.length < 1)
38: return null;
39: ArrayDictionary a = new ArrayDictionary(array.length, 5);
40: for (int i = 0; i < array.length; i++) {
41: String encoded = array[i];
42: int idx = encoded.indexOf('=');
43: if (idx != -1) {
44: String key = encoded.substring(0, idx);
45: String value = encoded.substring(idx + 1);
46: a.put(key, value);
47: }
48: }
49: return a;
50: }
51:
52: /**
53: * Pickle an attribute array into a String array.
54: * @param array the attribute array
55: * @return a String array
56: */
57: public String[] pickle(Object o) {
58: ArrayDictionary a = (ArrayDictionary) o;
59: Enumeration e = a.keys();
60: int len = a.size();
61: String array[] = new String[len];
62:
63: for (int i = 0; i < len; i++) {
64: String key = (String) e.nextElement();
65: array[i] = key + "=" + (String) a.get(key);
66: }
67: return array;
68: }
69:
70: /**
71: * Create a description for a generic property list attribute.
72: * @param name The attribute name.
73: * @param def The default value for these attributes.
74: * @param flags The associated flags.
75: */
76:
77: public PropertiesAttribute(String name, String def, int flags) {
78: super (name, def, flags);
79: this .type = "java.lang.String".intern();
80: }
81:
82: public PropertiesAttribute() {
83: super ();
84: this .type = "java.lang.String".intern();
85: }
86:
87: }
|