1 19 package org.netbeans.modules.xml.retriever.catalog.model.impl; 20 21 import java.util.List ; 22 import org.netbeans.modules.xml.retriever.catalog.model.CatalogQNames; 23 import org.netbeans.modules.xml.retriever.catalog.model.NextCatalog; 24 import org.netbeans.modules.xml.xam.dom.AbstractDocumentComponent; 25 import org.netbeans.modules.xml.retriever.catalog.model.Catalog; 26 import org.netbeans.modules.xml.retriever.catalog.model.CatalogComponent; 27 import org.netbeans.modules.xml.retriever.catalog.model.CatalogComponentFactory; 28 import org.netbeans.modules.xml.retriever.catalog.model.CatalogVisitor; 29 import org.netbeans.modules.xml.retriever.catalog.model.Catalog; 30 import org.w3c.dom.Element ; 31 32 public class CatalogComponentFactoryImpl implements CatalogComponentFactory { 33 private CatalogModelImpl model; 34 35 public CatalogComponentFactoryImpl(CatalogModelImpl model) { 36 this.model = model; 37 } 38 39 public CatalogComponent create(Element element, CatalogComponent context) { 40 if (context == null) { 41 if (areSameQName(CatalogQNames.CATALOG, element)) { 42 return new CatalogImpl(model, element); 43 } else { 44 return null; 45 } 46 } else { 47 return new CreateVisitor().create(element, context); 48 } 49 } 50 51 52 public NextCatalog createNextCatalog() { 53 return new NextCatalogImpl(model); 54 } 55 56 public org.netbeans.modules.xml.retriever.catalog.model.System createSystem() { 57 return new SystemImpl(model); 58 } 59 60 public Catalog createCatalog() { 61 return new CatalogImpl(model); 62 } 63 64 public static boolean areSameQName(CatalogQNames q, Element e) { 65 return q.getQName().equals(AbstractDocumentComponent.getQName(e)); 66 } 67 68 public static class CreateVisitor extends CatalogVisitor.Default { 69 Element element; 70 CatalogComponent created; 71 72 CatalogComponent create(Element element, CatalogComponent context) { 73 this.element = element; 74 context.accept(this); 75 return created; 76 } 77 78 private boolean isElementQName(CatalogQNames q) { 79 return areSameQName(q, element); 80 } 81 82 public void visit(Catalog context) { 83 if (isElementQName(CatalogQNames.SYSTEM)) { 84 created = new SystemImpl((CatalogModelImpl)context.getModel(), element); 85 } 86 if (isElementQName(CatalogQNames.NEXTCATALOG)) { 87 created = new NextCatalogImpl((CatalogModelImpl)context.getModel(), element); 88 } 89 } 90 91 public void visit(org.netbeans.modules.xml.retriever.catalog.model.System context) { 92 93 } 94 95 public void visit(NextCatalog context) { 96 97 } 98 99 } 100 } 101 | Popular Tags |