1 /* 2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.xml.internal.xsom.util; 27 28 import com.sun.xml.internal.xsom.XSAnnotation; 29 import com.sun.xml.internal.xsom.XSAttGroupDecl; 30 import com.sun.xml.internal.xsom.XSAttributeDecl; 31 import com.sun.xml.internal.xsom.XSAttributeUse; 32 import com.sun.xml.internal.xsom.XSComplexType; 33 import com.sun.xml.internal.xsom.XSContentType; 34 import com.sun.xml.internal.xsom.XSElementDecl; 35 import com.sun.xml.internal.xsom.XSFacet; 36 import com.sun.xml.internal.xsom.XSModelGroup; 37 import com.sun.xml.internal.xsom.XSModelGroupDecl; 38 import com.sun.xml.internal.xsom.XSNotation; 39 import com.sun.xml.internal.xsom.XSParticle; 40 import com.sun.xml.internal.xsom.XSSchema; 41 import com.sun.xml.internal.xsom.XSSimpleType; 42 import com.sun.xml.internal.xsom.XSWildcard; 43 import com.sun.xml.internal.xsom.XSIdentityConstraint; 44 import com.sun.xml.internal.xsom.XSXPath; 45 import com.sun.xml.internal.xsom.visitor.XSFunction; 46 47 /** 48 * Extract the name of the components. 49 * 50 * @author <ul><li>Ryan Shoemaker, Sun Microsystems, Inc.</li></ul> 51 */ 52 public class ComponentNameFunction implements XSFunction<String> { 53 54 // delegate to this object to get the localized name of the component type 55 private NameGetter nameGetter = new NameGetter(null); 56 57 /** 58 * @see com.sun.xml.internal.xsom.visitor.XSFunction#annotation(XSAnnotation) 59 */ annotation(XSAnnotation ann)60 public String annotation(XSAnnotation ann) { 61 // unnamed component 62 return nameGetter.annotation( ann ); 63 } 64 65 /** 66 * @see com.sun.xml.internal.xsom.visitor.XSFunction#attGroupDecl(XSAttGroupDecl) 67 */ attGroupDecl(XSAttGroupDecl decl)68 public String attGroupDecl(XSAttGroupDecl decl) { 69 String name = decl.getName(); 70 if( name == null ) name = ""; 71 return name + " " + nameGetter.attGroupDecl( decl ); 72 } 73 74 /** 75 * @see com.sun.xml.internal.xsom.visitor.XSFunction#attributeDecl(XSAttributeDecl) 76 */ attributeDecl(XSAttributeDecl decl)77 public String attributeDecl(XSAttributeDecl decl) { 78 String name = decl.getName(); 79 if( name == null ) name = ""; 80 return name + " " + nameGetter.attributeDecl( decl ); 81 } 82 83 /** 84 * @see com.sun.xml.internal.xsom.visitor.XSFunction#attributeUse(XSAttributeUse) 85 */ attributeUse(XSAttributeUse use)86 public String attributeUse(XSAttributeUse use) { 87 // unnamed component 88 return nameGetter.attributeUse( use ); 89 } 90 91 /** 92 * @see com.sun.xml.internal.xsom.visitor.XSFunction#complexType(XSComplexType) 93 */ complexType(XSComplexType type)94 public String complexType(XSComplexType type) { 95 String name = type.getName(); 96 if( name == null ) name = "anonymous"; 97 return name + " " + nameGetter.complexType( type ); 98 } 99 100 /** 101 * @see com.sun.xml.internal.xsom.visitor.XSFunction#schema(XSSchema) 102 */ schema(XSSchema schema)103 public String schema(XSSchema schema) { 104 return nameGetter.schema( schema ) + " \"" + schema.getTargetNamespace()+"\""; 105 } 106 107 /** 108 * @see com.sun.xml.internal.xsom.visitor.XSFunction#facet(XSFacet) 109 */ facet(XSFacet facet)110 public String facet(XSFacet facet) { 111 String name = facet.getName(); 112 if( name == null ) name = ""; 113 return name + " " + nameGetter.facet( facet ); 114 } 115 116 /** 117 * @see com.sun.xml.internal.xsom.visitor.XSFunction#notation(XSNotation) 118 */ notation(XSNotation notation)119 public String notation(XSNotation notation) { 120 String name = notation.getName(); 121 if( name == null ) name = ""; 122 return name + " " + nameGetter.notation( notation ); 123 } 124 125 /** 126 * @see com.sun.xml.internal.xsom.visitor.XSContentTypeFunction#simpleType(XSSimpleType) 127 */ simpleType(XSSimpleType simpleType)128 public String simpleType(XSSimpleType simpleType) { 129 String name = simpleType.getName(); 130 if( name == null ) name = "anonymous"; 131 return name + " " + nameGetter.simpleType( simpleType ); 132 } 133 134 /** 135 * @see com.sun.xml.internal.xsom.visitor.XSContentTypeFunction#particle(XSParticle) 136 */ particle(XSParticle particle)137 public String particle(XSParticle particle) { 138 // unnamed component 139 return nameGetter.particle( particle ); 140 } 141 142 /** 143 * @see com.sun.xml.internal.xsom.visitor.XSContentTypeFunction#empty(XSContentType) 144 */ empty(XSContentType empty)145 public String empty(XSContentType empty) { 146 // unnamed component 147 return nameGetter.empty( empty ); 148 } 149 150 /** 151 * @see com.sun.xml.internal.xsom.visitor.XSTermFunction#wildcard(XSWildcard) 152 */ wildcard(XSWildcard wc)153 public String wildcard(XSWildcard wc) { 154 // unnamed component 155 return nameGetter.wildcard( wc ); 156 } 157 158 /** 159 * @see com.sun.xml.internal.xsom.visitor.XSTermFunction#modelGroupDecl(XSModelGroupDecl) 160 */ modelGroupDecl(XSModelGroupDecl decl)161 public String modelGroupDecl(XSModelGroupDecl decl) { 162 String name = decl.getName(); 163 if( name == null ) name = ""; 164 return name + " " + nameGetter.modelGroupDecl( decl ); 165 } 166 167 /** 168 * @see com.sun.xml.internal.xsom.visitor.XSTermFunction#modelGroup(XSModelGroup) 169 */ modelGroup(XSModelGroup group)170 public String modelGroup(XSModelGroup group) { 171 // unnamed component 172 return nameGetter.modelGroup( group ); 173 } 174 175 /** 176 * @see com.sun.xml.internal.xsom.visitor.XSTermFunction#elementDecl(XSElementDecl) 177 */ elementDecl(XSElementDecl decl)178 public String elementDecl(XSElementDecl decl) { 179 String name = decl.getName(); 180 if( name == null ) name = ""; 181 return name + " " + nameGetter.elementDecl( decl ); 182 } 183 identityConstraint(XSIdentityConstraint decl)184 public String identityConstraint(XSIdentityConstraint decl) { 185 return decl.getName()+" "+nameGetter.identityConstraint(decl); 186 } 187 xpath(XSXPath xpath)188 public String xpath(XSXPath xpath) { 189 return nameGetter.xpath(xpath); 190 } 191 } 192