1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements.  See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership.  The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License.  You may obtain a copy of the License at
10 *
11 *   http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied.  See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21 
22 package org.apache.openoffice.ooxml.schema.model.simple;
23 
24 import org.apache.openoffice.ooxml.schema.model.base.INode;
25 import org.apache.openoffice.ooxml.schema.model.base.INodeReference;
26 import org.apache.openoffice.ooxml.schema.model.base.INodeVisitor;
27 import org.apache.openoffice.ooxml.schema.model.base.Location;
28 import org.apache.openoffice.ooxml.schema.model.base.Node;
29 import org.apache.openoffice.ooxml.schema.model.base.NodeType;
30 import org.apache.openoffice.ooxml.schema.model.base.QualifiedName;
31 import org.apache.openoffice.ooxml.schema.model.schema.SchemaBase;
32 
33 public class SimpleTypeReference
34     extends Node
35     implements INodeReference
36 {
SimpleTypeReference( final Node aParent, final QualifiedName aReferencedTypeName, final Location aLocation)37     public SimpleTypeReference (
38         final Node aParent,
39         final QualifiedName aReferencedTypeName,
40         final Location aLocation)
41     {
42         super(aParent, null, aLocation);
43         maReferencedTypeName = aReferencedTypeName;
44     }
45 
46 
47 
48 
GetReferencedSimpleType(final SchemaBase aSchemaBase)49     public SimpleType GetReferencedSimpleType (final SchemaBase aSchemaBase)
50     {
51         final Node aType = aSchemaBase.GetTypeForName(maReferencedTypeName);
52         if (aType == null)
53             throw new RuntimeException("there is no type named '"+maReferencedTypeName+"' in the schema");
54         else if (aType.GetNodeType()!=NodeType.SimpleType && aType.GetNodeType()!=NodeType.BuiltIn)
55             throw new RuntimeException("name '"+maReferencedTypeName+"' references a "+aType.GetNodeType()+" not a simple type or builtin");
56         else
57             return (SimpleType)aType;
58     }
59 
60 
61 
62 
63     @Override
GetReferencedNode(final SchemaBase aSchemaBase)64     public INode GetReferencedNode (final SchemaBase aSchemaBase)
65     {
66         return GetReferencedSimpleType(aSchemaBase);
67     }
68 
69 
70 
71 
GetReferencedTypeName()72     public QualifiedName GetReferencedTypeName()
73     {
74         return maReferencedTypeName;
75     }
76 
77 
78 
79 
80     @Override
AcceptVisitor(final INodeVisitor aVisitor)81     public void AcceptVisitor (final INodeVisitor aVisitor)
82     {
83         aVisitor.Visit(this);
84     }
85 
86 
87 
88 
89     @Override
GetNodeType()90     public NodeType GetNodeType ()
91     {
92         return NodeType.SimpleTypeReference;
93     }
94 
95 
96 
97     @Override
toString()98     public String toString ()
99     {
100         return "reference to simple type "+maReferencedTypeName;
101     }
102 
103 
104 
105 
106     private final QualifiedName maReferencedTypeName;
107 }
108