KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > web > jsf > impl > facesmodel > JSFConfigComponentFactoryImpl


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.web.jsf.impl.facesmodel;
21
22 import java.util.logging.Logger JavaDoc;
23 import javax.xml.namespace.QName JavaDoc;
24 import org.netbeans.modules.web.jsf.api.facesmodel.Converter;
25 import org.netbeans.modules.web.jsf.api.facesmodel.FacesConfig;
26 import org.netbeans.modules.web.jsf.api.facesmodel.JSFConfigComponent;
27 import org.netbeans.modules.web.jsf.api.facesmodel.JSFConfigComponentFactory;
28 import org.netbeans.modules.web.jsf.api.facesmodel.JSFConfigVisitor;
29 import org.netbeans.modules.web.jsf.api.facesmodel.JSFVersion;
30 import org.netbeans.modules.web.jsf.api.facesmodel.ManagedBean;
31 import org.netbeans.modules.web.jsf.api.facesmodel.NavigationCase;
32 import org.netbeans.modules.web.jsf.api.facesmodel.NavigationRule;
33 import org.netbeans.modules.web.jsf.impl.facesmodel.ConverterImpl;
34 import org.netbeans.modules.xml.xam.dom.AbstractDocumentComponent;
35 import org.w3c.dom.Element JavaDoc;
36
37 /**
38  *
39  * @author Petr Pisl
40  */

41 public class JSFConfigComponentFactoryImpl implements JSFConfigComponentFactory {
42     
43     private static final Logger JavaDoc LOGGER = Logger.getLogger(JSFConfigComponentFactoryImpl.class.getName());
44     
45     private final JSFConfigModelImpl model;
46     
47     /** Creates a new instance of JSFConfigComponentFactoruImpl */
48     public JSFConfigComponentFactoryImpl(JSFConfigModelImpl model) {
49         this.model = model;
50     }
51     
52     public JSFConfigComponent create(Element JavaDoc element, JSFConfigComponent context) {
53         LOGGER.fine( "Element: " + element.getLocalName() +", JSFConfigComponent: " + context);
54         JSFConfigComponent configComponent = null;
55         if (context == null){
56             if (areSameQName(JSFConfigQNames.FACES_CONFIG, element)){
57                 configComponent = new FacesConfigImpl(model, element);
58             }
59         } else {
60             configComponent = new CreateVisitor().create(element, context);
61         }
62         return configComponent;
63     }
64     
65     public FacesConfig createFacesConfig() {
66         return new FacesConfigImpl(model);
67     }
68     
69     public ManagedBean createManagedBean() {
70         return new ManagedBeanImpl(model);
71     }
72     
73     public NavigationRule createNavigationRule(){
74         return new NavigationRuleImpl(model);
75     }
76     
77     public NavigationCase createNavigationCase() {
78         return new NavigationCaseImpl(model);
79     }
80     
81     public Converter createConverter() {
82         return new ConverterImpl(model);
83     }
84     
85     public static boolean areSameQName(JSFConfigQNames jsfqname,Element JavaDoc element) {
86         QName JavaDoc qname = AbstractDocumentComponent.getQName(element);
87         boolean aresame = false;
88         JSFVersion version = JSFVersion.JSF_1_1;
89         if (element.getNamespaceURI() != null && element.getNamespaceURI().length()>0)
90             version = JSFVersion.JSF_1_2;
91         if (element.getNamespaceURI() != null){
92             aresame = jsfqname.getQName(version).equals(qname);
93         } else {
94             aresame = jsfqname.getLocalName().equals(qname.getLocalPart());
95         }
96         return aresame;
97     }
98     
99     public static class CreateVisitor extends JSFConfigVisitor.Default {
100         Element JavaDoc element;
101         JSFConfigComponent created;
102         
103         JSFConfigComponent create(Element JavaDoc element, JSFConfigComponent context) {
104             this.element = element;
105             context.accept(this);
106             return created;
107         }
108         
109         private boolean isElementQName(JSFConfigQNames jsfqname) {
110             return areSameQName(jsfqname, element);
111         }
112         
113         public void visit(FacesConfig context) {
114             
115             if (isElementQName(JSFConfigQNames.MANAGED_BEAN)) {
116                 created = new ManagedBeanImpl((JSFConfigModelImpl) context.getModel(), element);
117             } else if (isElementQName(JSFConfigQNames.NAVIGATION_RULE)){
118                 created = new NavigationRuleImpl((JSFConfigModelImpl) context.getModel(), element);
119             } else if (isElementQName(JSFConfigQNames.CONVERTER)){
120                 created = new ConverterImpl((JSFConfigModelImpl) context.getModel(), element);
121             }
122         }
123         
124         public void visit(ManagedBean context) {
125             if (isElementQName(JSFConfigQNames.MANAGED_BEAN)) {
126                 created = new ManagedBeanImpl((JSFConfigModelImpl)context.getModel(), element);
127             }
128         }
129         
130         public void visit(NavigationRule context) {
131             if (isElementQName(JSFConfigQNames.NAVIGATION_CASE)) {
132                 created = new NavigationCaseImpl((JSFConfigModelImpl)context.getModel(), element);
133             }
134         }
135         
136         public void visit(Converter context){
137             if (isElementQName(JSFConfigQNames.NAVIGATION_CASE)) {
138                 created = new ConverterImpl((JSFConfigModelImpl)context.getModel(), element);
139             }
140         }
141     }
142 }
143
Popular Tags