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.complex;
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 ComplexTypeReference
34     extends Node
35     implements INodeReference
36 {
ComplexTypeReference( final Node aParent, final QualifiedName aReferencedTypeName, final Location aLocation)37     ComplexTypeReference (
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 
GetReferencedComplexType(final SchemaBase aSchema)49     public ComplexType GetReferencedComplexType (final SchemaBase aSchema)
50     {
51         final Node aType = aSchema.GetTypeForName(maReferencedTypeName);
52         if (aType == null)
53             throw new RuntimeException();
54         else if (aType.GetNodeType() != NodeType.ComplexType)
55             throw new RuntimeException();
56         else
57             return (ComplexType)aType;
58     }
59 
60 
61 
62 
63 
GetReferencedTypeName()64     public QualifiedName GetReferencedTypeName ()
65     {
66         return maReferencedTypeName;
67     }
68 
69 
70 
71 
72     @Override
GetReferencedNode(final SchemaBase aSchema)73     public INode GetReferencedNode (final SchemaBase aSchema)
74     {
75         return GetReferencedComplexType(aSchema);
76     }
77 
78 
79 
80 
81     @Override
AcceptVisitor(final INodeVisitor aVisitor)82     public void AcceptVisitor (final INodeVisitor aVisitor)
83     {
84         aVisitor.Visit(this);
85     }
86 
87 
88 
89 
90     @Override
GetNodeType()91     public NodeType GetNodeType ()
92     {
93         return NodeType.SimpleTypeReference;
94     }
95 
96 
97 
98 
99     private final QualifiedName maReferencedTypeName;
100 }
101