KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > wsdl > ui > property > model > SchemaComponentBundleKeyGenerator


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.xml.wsdl.ui.property.model;
21
22 import java.util.ArrayList JavaDoc;
23 import java.util.Collection JavaDoc;
24 import java.util.HashMap JavaDoc;
25 import java.util.Iterator JavaDoc;
26 import java.util.List JavaDoc;
27 import java.util.Map JavaDoc;
28
29 import org.netbeans.modules.xml.schema.model.All;
30 import org.netbeans.modules.xml.schema.model.AnyAttribute;
31 import org.netbeans.modules.xml.schema.model.AnyElement;
32 import org.netbeans.modules.xml.schema.model.AttributeGroupReference;
33 import org.netbeans.modules.xml.schema.model.AttributeReference;
34 import org.netbeans.modules.xml.schema.model.Choice;
35 import org.netbeans.modules.xml.schema.model.ComplexContent;
36 import org.netbeans.modules.xml.schema.model.ComplexContentDefinition;
37 import org.netbeans.modules.xml.schema.model.ComplexContentRestriction;
38 import org.netbeans.modules.xml.schema.model.ComplexExtension;
39 import org.netbeans.modules.xml.schema.model.ComplexExtensionDefinition;
40 import org.netbeans.modules.xml.schema.model.ComplexType;
41 import org.netbeans.modules.xml.schema.model.ComplexTypeDefinition;
42 import org.netbeans.modules.xml.schema.model.ElementReference;
43 import org.netbeans.modules.xml.schema.model.GlobalAttribute;
44 import org.netbeans.modules.xml.schema.model.GlobalAttributeGroup;
45 import org.netbeans.modules.xml.schema.model.GlobalComplexType;
46 import org.netbeans.modules.xml.schema.model.GlobalElement;
47 import org.netbeans.modules.xml.schema.model.GlobalGroup;
48 import org.netbeans.modules.xml.schema.model.GlobalSimpleType;
49 import org.netbeans.modules.xml.schema.model.GlobalType;
50 import org.netbeans.modules.xml.schema.model.GroupReference;
51 import org.netbeans.modules.xml.schema.model.LocalAttribute;
52 import org.netbeans.modules.xml.schema.model.LocalComplexType;
53 import org.netbeans.modules.xml.schema.model.LocalElement;
54 import org.netbeans.modules.xml.schema.model.LocalGroupDefinition;
55 import org.netbeans.modules.xml.schema.model.LocalSimpleType;
56 import org.netbeans.modules.xml.schema.model.LocalType;
57 import org.netbeans.modules.xml.schema.model.NameableSchemaComponent;
58 import org.netbeans.modules.xml.schema.model.Schema;
59 import org.netbeans.modules.xml.schema.model.SchemaComponent;
60 import org.netbeans.modules.xml.schema.model.Sequence;
61 import org.netbeans.modules.xml.schema.model.SequenceDefinition;
62 import org.netbeans.modules.xml.schema.model.SimpleContent;
63 import org.netbeans.modules.xml.schema.model.SimpleContentRestriction;
64 import org.netbeans.modules.xml.schema.model.SimpleExtension;
65 import org.netbeans.modules.xml.schema.model.SimpleType;
66 import org.netbeans.modules.xml.schema.model.SimpleTypeRestriction;
67 import org.netbeans.modules.xml.schema.model.TypeContainer;
68 import org.netbeans.modules.xml.xam.dom.NamedComponentReference;
69
70 /**
71  *
72  * @author radval
73  */

74 public class SchemaComponentBundleKeyGenerator extends AbstractXSDVisitor {
75
76     private List JavaDoc mChildren = new ArrayList JavaDoc();
77
78     private StringBuffer JavaDoc mBuffer = new StringBuffer JavaDoc(200);
79
80     private NameableSchemaComponent mCurrentElement;
81
82     private Map JavaDoc<NameableSchemaComponent, ElementToKeyName> elementToKeyNameMap = new HashMap JavaDoc<NameableSchemaComponent, ElementToKeyName>();
83
84     private Schema mSchema;
85
86     /** Creates a new instance of SchemaComponentBundleKeyGenerator */
87     public SchemaComponentBundleKeyGenerator() {
88     }
89
90
91
92     public String JavaDoc getKey() {
93         return mBuffer.toString();
94     }
95
96     @Override JavaDoc
97     public void visit(LocalAttribute la) {
98         visitAttribute(la);
99     }
100
101     @Override JavaDoc
102     public void visit(AttributeReference reference) {
103         NamedComponentReference<GlobalAttribute> ga = reference.getRef();
104         if(ga != null) {
105             visit(ga.get());
106         }
107     }
108
109     @Override JavaDoc
110     public void visit(GlobalAttribute ga) {
111         visitAttribute(ga);
112     }
113
114     @Override JavaDoc
115     public void visit(AttributeGroupReference agr) {
116         NamedComponentReference<GlobalAttributeGroup> aGroup = agr.getGroup();
117         if(aGroup != null) {
118             visit(aGroup.get());
119         }
120     }
121
122
123     @Override JavaDoc
124     public void visit(GlobalAttributeGroup gag) {
125         List JavaDoc<SchemaComponent> children = gag.getChildren();
126         Iterator JavaDoc<SchemaComponent> it = children.iterator();
127
128         while(it.hasNext()) {
129             SchemaComponent sc = it.next();
130             if(sc instanceof LocalAttribute) {
131                 visit((LocalAttribute) sc);
132             } else if(sc instanceof AttributeReference) {
133                 visit((AttributeReference) sc );
134             } else if(sc instanceof AttributeGroupReference) {
135                 visit((AttributeGroupReference) sc);
136             }
137         }
138
139     }
140
141     @Override JavaDoc
142     public void visit(ElementReference er) {
143         NamedComponentReference<GlobalElement> ge = er.getRef();
144         if(ge != null && ge.get() != null) {
145             visit(ge.get());
146         }
147     }
148
149     @Override JavaDoc
150     public void visit(GlobalElement ge) {
151         visitElement(ge);
152
153     }
154
155     @Override JavaDoc
156     public void visit(All all) {
157         Collection JavaDoc<LocalElement> allElements = all.getElements();
158         Iterator JavaDoc<LocalElement> it = allElements.iterator();
159         while(it.hasNext()) {
160             LocalElement element = it.next();
161             visit(element);
162         }
163     }
164
165     @Override JavaDoc
166     public void visit(AnyAttribute anyAttr) {
167
168     }
169
170     @Override JavaDoc
171     public void visit(AnyElement any) {
172
173     }
174
175
176     @Override JavaDoc
177     public void visit(Choice choice) {
178         List JavaDoc<SchemaComponent> children = choice.getChildren();
179         Iterator JavaDoc<SchemaComponent> it = children.iterator();
180
181         while(it.hasNext()) {
182             SchemaComponent comp = it.next();
183             if(comp instanceof AnyElement) {
184                 visit((AnyElement) comp);
185             } else if(comp instanceof Choice) {
186                 visit((Choice) comp);
187             } else if(comp instanceof ElementReference) {
188                 visit((ElementReference) comp);
189             } else if(comp instanceof GroupReference) {
190                 visit((GroupReference) comp);
191             } else if(comp instanceof LocalElement) {
192                 visit((LocalElement) comp);
193             } else if(comp instanceof Sequence) {
194                 visit((Sequence) comp);
195             }
196         }
197     }
198     
199     @Override JavaDoc
200     public void visit(ComplexContent cc) {
201
202         ComplexContentDefinition ccd = cc.getLocalDefinition();
203         if(ccd != null) {
204             visit(ccd);
205         }
206     }
207
208
209
210
211     @Override JavaDoc
212     public void visit(GlobalComplexType gct) {
213         visit((GlobalType) gct);
214     }
215
216     @Override JavaDoc
217     public void visit(GlobalGroup gd) {
218         LocalGroupDefinition lgd = gd.getDefinition();
219         if(lgd != null) {
220             if(lgd instanceof Choice) {
221                 visit((Choice) lgd);
222             } else if(lgd instanceof All) {
223                 visit((All) lgd );
224             } else if(lgd instanceof Sequence) {
225                 visit((Sequence)lgd);
226             }
227         }
228     }
229
230     @Override JavaDoc
231     public void visit(GlobalSimpleType gst) {
232         visit((GlobalType) gst);
233     }
234
235     @Override JavaDoc
236     public void visit(GroupReference gr) {
237         NamedComponentReference<GlobalGroup> gg = gr.getRef();
238         if(gg != null) {
239             visit(gg.get());
240         }
241     }
242
243     @Override JavaDoc
244     public void visit(LocalComplexType type) {
245         visit((LocalType) type);
246     }
247
248     @Override JavaDoc
249     public void visit(LocalElement le) {
250         visitElement(le);
251     }
252
253     @Override JavaDoc
254     public void visit(LocalSimpleType type) {
255         visit((LocalType) type);
256     }
257
258     @Override JavaDoc
259     public void visit(Sequence s) {
260         visit(s.getContent());
261     }
262
263     @Override JavaDoc
264     public void visit(SimpleContent sc) {
265
266     }
267
268     @Override JavaDoc
269     public void visit(SimpleContentRestriction scr) {
270
271     }
272
273     @Override JavaDoc
274     public void visit(SimpleExtension se) {
275
276     }
277
278     @Override JavaDoc
279     public void visit(SimpleTypeRestriction str) {
280
281     }
282
283     public void visit(GlobalType gt) {
284         if(gt instanceof ComplexType) {
285             visit((ComplexType) gt);
286         } else if(gt instanceof SimpleType) {
287             visit((SimpleType) gt);
288         }
289     }
290
291     public void visit(LocalType lt) {
292         if(lt instanceof ComplexType) {
293             visit((ComplexType) lt);
294         } else if(lt instanceof SimpleType) {
295             visit((SimpleType) lt);
296         }
297     }
298
299     
300     private void visit(SimpleType st) {
301     }
302
303     private void visit(ComplexType ct) {
304         List JavaDoc<SchemaComponent> children = ct.getChildren();
305         Iterator JavaDoc<SchemaComponent> it = children.iterator();
306         while(it.hasNext()) {
307             SchemaComponent sc = it.next();
308             if(sc instanceof AnyAttribute) {
309                 visit((AnyAttribute) sc );
310             } else if(sc instanceof AttributeGroupReference) {
311                 visit((AttributeGroupReference) sc);
312             }else if(sc instanceof AttributeReference) {
313                 visit((AttributeReference) sc);
314             }else if(sc instanceof LocalAttribute) {
315                 visit((LocalAttribute) sc);
316             }else if(sc instanceof ComplexTypeDefinition) {
317                 visit((ComplexTypeDefinition) sc);
318             }
319         }
320
321         //search TypeContainer
322
//getAttributeGroupReferences
323

324     }
325
326     private void visit(ComplexTypeDefinition ctd) {
327         if (ctd instanceof All) {
328             visit((All) ctd);
329         } else if (ctd instanceof Choice) {
330             visit((Choice) ctd);
331         } else if (ctd instanceof Sequence) {
332             visit((Sequence) ctd);
333         } else if(ctd instanceof ComplexContent) {
334             visit((ComplexContent) ctd);
335         } else if(ctd instanceof GroupReference) {
336             visit((GroupReference) ctd);
337         } else if (ctd instanceof SimpleContent) {
338             visit((SimpleContent) ctd);
339         }
340     }
341
342     private void visit(ComplexContentDefinition ccd) {
343
344         if(ccd instanceof ComplexContentRestriction) {
345             visit((ComplexContentRestriction) ccd);
346         } else if(ccd instanceof ComplexExtension) {
347             visit((ComplexExtension) ccd);
348         }
349
350     }
351
352     @Override JavaDoc
353     public void visit(ComplexContentRestriction ccr) {
354         NamedComponentReference<GlobalComplexType> baseRef = ccr.getBase();
355         if(baseRef != null) {
356             GlobalComplexType gType = baseRef.get();
357             if(gType != null) {
358                 visit(gType);
359             }
360         }
361
362         List JavaDoc children = ccr.getChildren();
363         Iterator JavaDoc it = children.iterator();
364         while(it.hasNext()) {
365             Object JavaDoc child = it.next();
366
367             if(child instanceof AnyAttribute) {
368                 visit((AnyAttribute) child);
369             } else if(child instanceof AttributeGroupReference) {
370                 visit((AttributeGroupReference) child);
371             } else if(child instanceof AttributeReference) {
372                 visit((AttributeReference) child);
373             } else if (child instanceof ComplexTypeDefinition) {
374                 visit((ComplexTypeDefinition) child);
375             }
376         }
377     }
378     
379     @Override JavaDoc
380     public void visit(ComplexExtension ce) {
381         NamedComponentReference<GlobalType> baseRef = ce.getBase();
382         if(baseRef != null) {
383             GlobalType gType = baseRef.get();
384             if(gType != null) {
385                 visit(gType);
386             }
387         }
388
389         List JavaDoc children = ce.getChildren();
390         Iterator JavaDoc it = children.iterator();
391         while(it.hasNext()) {
392             Object JavaDoc child = it.next();
393
394             if(child instanceof LocalAttribute) {
395                 visit((LocalAttribute) child);
396             }else if(child instanceof AnyAttribute) {
397                 visit((AnyAttribute) child);
398             } else if(child instanceof AttributeGroupReference) {
399                 visit((AttributeGroupReference) child);
400             } else if(child instanceof AttributeReference) {
401                 visit((AttributeReference) child);
402             } else if (child instanceof ComplexExtensionDefinition) {
403                 visit((ComplexExtensionDefinition) child);
404             }
405         }
406     }
407
408
409     private void visit(ComplexExtensionDefinition ced) {
410         if (ced instanceof All) {
411             visit((All) ced);
412         } else if (ced instanceof Choice) {
413             visit((Choice) ced);
414         } else if (ced instanceof Sequence) {
415             visit((Sequence) ced);
416         } else if(ced instanceof GroupReference) {
417             visit((GroupReference) ced);
418         }
419     }
420
421     private void visit(List JavaDoc<SequenceDefinition> sdList) {
422         Iterator JavaDoc<SequenceDefinition> it = sdList.iterator();
423         while(it.hasNext()) {
424             SequenceDefinition sd = it.next();
425             if(sd instanceof Sequence) {
426                 visit((Sequence) sd);
427             } else if(sd instanceof AnyElement) {
428                 visit((AnyElement) sd);
429             } else if(sd instanceof Choice) {
430                 visit((Choice) sd);
431             } else if(sd instanceof ElementReference) {
432                 visit((ElementReference) sd);
433             } else if(sd instanceof GroupReference) {
434                 visit((GroupReference) sd);
435             } else if(sd instanceof LocalElement) {
436                 visit((LocalElement) sd);
437             }
438
439         }
440     }
441
442     void visitAttribute(NameableSchemaComponent la) {
443         StringBuffer JavaDoc key = new StringBuffer JavaDoc(20);
444         String JavaDoc elementPrefix = getElementPrefix();
445         if(elementPrefix != null) {
446             key.append(elementPrefix);
447             key.append("_");
448         }
449
450         key.append(la.getName());
451         storeKeyValue(key.toString(), la.getName());
452     }
453
454     private void visitElement(NameableSchemaComponent ge) {
455         StringBuffer JavaDoc key = new StringBuffer JavaDoc(20);
456
457         ElementToKeyName ekn = elementToKeyNameMap.get(mCurrentElement);
458         if(ekn != null) {
459             String JavaDoc prefix = ekn.getKeyPrefix();
460             key.append(prefix);
461             key.append("_");
462         }
463         key.append(ge.getName());
464         storeKeyValue(key.toString(), ge.getName());
465
466         ElementToKeyName newEkn = new ElementToKeyName(ge, key.toString());
467         elementToKeyNameMap.put(ge, newEkn);
468
469         if(ge instanceof TypeContainer) {
470             TypeContainer tc = (TypeContainer) ge;
471             LocalType lt = tc.getInlineType();
472             NamedComponentReference gtRef = tc.getType();
473             if(lt != null) {
474                 visit(lt);
475             } else if(gtRef != null && gtRef.getType() != null) {
476                 visit((GlobalType) gtRef.get());
477             }
478         }
479     }
480
481     private String JavaDoc getElementPrefix() {
482         String JavaDoc elementPrefix = null;
483         if(mCurrentElement != null) {
484             ElementToKeyName ekn = elementToKeyNameMap.get(mCurrentElement);
485             if(ekn != null) {
486                 elementPrefix = ekn.getKeyPrefix();
487             }
488
489         }
490
491         return elementPrefix;
492     }
493     private void storeKeyValue(String JavaDoc key, String JavaDoc value) {
494         mBuffer.append(key);
495         mBuffer.append("=");
496         mBuffer.append(value);
497         mBuffer.append("\n");
498     }
499
500
501     class ElementToKeyName {
502
503         private NameableSchemaComponent mElement;
504
505         private String JavaDoc mKeyPrefix;
506
507
508         ElementToKeyName(NameableSchemaComponent element, String JavaDoc keyPrefix) {
509             this.mElement = element;
510             this.mKeyPrefix = keyPrefix;
511
512         }
513
514
515         public NameableSchemaComponent getElement() {
516             return this.mElement;
517         }
518
519         public String JavaDoc getKeyPrefix() {
520             return this.mKeyPrefix;
521         }
522
523     }
524
525 }
526
Popular Tags