KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > google > gwt > core > ext > typeinfo > MetaData


1 /*
2  * Copyright 2006 Google Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */

16 package com.google.gwt.core.ext.typeinfo;
17
18 import java.util.ArrayList JavaDoc;
19 import java.util.Arrays JavaDoc;
20 import java.util.HashMap JavaDoc;
21 import java.util.Iterator JavaDoc;
22 import java.util.List JavaDoc;
23 import java.util.Map JavaDoc;
24 import java.util.Set JavaDoc;
25
26 class MetaData implements HasMetaData {
27
28   private final Map JavaDoc tagNameToStringArrayList = new HashMap JavaDoc();
29
30   public void addMetaData(String JavaDoc tagName, String JavaDoc[] values) {
31     List JavaDoc list = (List JavaDoc) tagNameToStringArrayList.get(tagName);
32     if (list == null) {
33       list = new ArrayList JavaDoc();
34       tagNameToStringArrayList.put(tagName, list);
35     }
36     // Yes, we're adding the string array as an object into the list.
37
//
38
list.add(values);
39   }
40
41   public String JavaDoc[][] getMetaData(String JavaDoc tagName) {
42     List JavaDoc list = (List JavaDoc) tagNameToStringArrayList.get(tagName);
43     if (list != null) {
44       return (String JavaDoc[][]) list.toArray(TypeOracle.NO_STRING_ARR_ARR);
45     } else {
46       return TypeOracle.NO_STRING_ARR_ARR;
47     }
48   }
49
50   public String JavaDoc[] getMetaDataTags() {
51     return (String JavaDoc[]) tagNameToStringArrayList.keySet().toArray(
52       TypeOracle.NO_STRINGS);
53   }
54
55   public String JavaDoc toString() {
56     StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
57     final Set JavaDoc keys = tagNameToStringArrayList.keySet();
58     String JavaDoc[] tags = (String JavaDoc[]) keys.toArray(TypeOracle.NO_STRINGS);
59     Arrays.sort(tags);
60     for (int i = 0; i < tags.length; i++) {
61       sb.append(tags[i]);
62       sb.append(" => ");
63
64       boolean isFirstList = true;
65       List JavaDoc stringArrayList = (List JavaDoc) tagNameToStringArrayList.get(tags[i]);
66       for (Iterator JavaDoc iter = stringArrayList.iterator(); iter.hasNext();) {
67         if (isFirstList) {
68           isFirstList = false;
69         } else {
70           sb.append(", ");
71         }
72         sb.append('[');
73         String JavaDoc[] values = (String JavaDoc[]) iter.next();
74         boolean needComma = false;
75         for (int j = 0; j < values.length; j++) {
76           if (needComma) {
77             sb.append(", ");
78           } else {
79             needComma = true;
80           }
81           sb.append(values[j]);
82         }
83         sb.append(']');
84       }
85     }
86     return sb.toString();
87   }
88 }
89
Popular Tags