1
|
|
/*
|
2
|
|
* JBind
|
3
|
|
*
|
4
|
|
* Copyright (c) by Stefan Wachter. All rights reserved.
|
5
|
|
*
|
6
|
|
* Usage, modification, and redistribution is subject to license terms that are
|
7
|
|
* available at 'http://www.jbind.org'. The JBind license is like the
|
8
|
|
* 'Apache Software License V 1.1'.
|
9
|
|
*/
|
10
|
|
package org.jbind.xml.schema.compiler;
|
11
|
|
|
12
|
|
import org.jbind.xml.base.IBindingAttributes;
|
13
|
|
import org.jbind.xml.base.ISymbolspace;
|
14
|
|
import org.jbind.xml.base.ISymbolspaces;
|
15
|
|
import org.jbind.xml.base.StringUtil;
|
16
|
|
import org.jbind.xml.core.cmp.IComponent;
|
17
|
|
|
18
|
|
public abstract class TopLevelBinding extends Binding {
|
19
|
|
|
20
|
|
private String myPackage;
|
21
|
|
|
22
|
1820
|
public TopLevelBinding(String aPackage, ICartridge aCartridge, IComponent aComponent) {
|
23
|
|
// the schema package
|
24
|
1820
|
myPackage = aPackage;
|
25
|
|
|
26
|
|
// the sub package coming from the cartridge
|
27
|
1820
|
addSubPackage(aCartridge.getSubPackage());
|
28
|
|
|
29
|
|
// the subpackage coming from the symbolspace
|
30
|
1820
|
ISymbolspace symbolspace = aComponent.getSymbolspace();
|
31
|
1820
|
String symbolspaceSubPackage = null;
|
32
|
1820
|
if (symbolspace == ISymbolspaces.TYPE) {
|
33
|
964
|
symbolspaceSubPackage = aComponent.getStringBindingAttribute(IBindingAttributes.TYPE_SUB_PACKAGE);
|
34
|
856
|
} else if (symbolspace == ISymbolspaces.ATTRIBUTE) {
|
35
|
118
|
symbolspaceSubPackage = aComponent.getStringBindingAttribute(IBindingAttributes.ATTRIBUTE_SUB_PACKAGE);
|
36
|
118
|
if (null == symbolspaceSubPackage) {
|
37
|
118
|
symbolspaceSubPackage = "attribute";
|
38
|
|
}
|
39
|
738
|
} else if (symbolspace == ISymbolspaces.ELEMENT) {
|
40
|
580
|
symbolspaceSubPackage = aComponent.getStringBindingAttribute(IBindingAttributes.ELEMENT_SUB_PACKAGE);
|
41
|
580
|
if (null == symbolspaceSubPackage) {
|
42
|
580
|
symbolspaceSubPackage = "element";
|
43
|
|
}
|
44
|
158
|
} else if (symbolspace == ISymbolspaces.ATTRIBUTE_GROUP) {
|
45
|
88
|
symbolspaceSubPackage = aComponent.getStringBindingAttribute(IBindingAttributes.ATTR_GROUP_SUB_PACKAGE);
|
46
|
88
|
if (null == symbolspaceSubPackage) {
|
47
|
88
|
symbolspaceSubPackage = "attrGroup";
|
48
|
|
}
|
49
|
70
|
} else if (symbolspace == ISymbolspaces.ELEMENT_GROUP) {
|
50
|
70
|
symbolspaceSubPackage = aComponent.getStringBindingAttribute(IBindingAttributes.ELEM_GROUP_SUB_PACKAGE);
|
51
|
70
|
if (null == symbolspaceSubPackage) {
|
52
|
70
|
symbolspaceSubPackage = "elemGroup";
|
53
|
|
}
|
54
|
|
} else {
|
55
|
|
assert false : "unexpected symbolspace: " + symbolspace;
|
56
|
|
}
|
57
|
1820
|
addSubPackage(symbolspaceSubPackage);
|
58
|
|
|
59
|
1820
|
String bindingName = aComponent.getLocalStringBindingAttribute(IBindingAttributes.NAME);
|
60
|
1820
|
if (null == bindingName) {
|
61
|
1820
|
bindingName = aComponent.getName();
|
62
|
|
}
|
63
|
1820
|
int idx = bindingName.lastIndexOf('.');
|
64
|
1820
|
if (idx >= 0) {
|
65
|
|
// the sub package coming from the component name
|
66
|
30
|
addSubPackage(bindingName.substring(0, idx));
|
67
|
|
}
|
68
|
|
|
69
|
|
}
|
70
|
|
|
71
|
3670
|
protected void addSubPackage(String aSubPackage) {
|
72
|
3670
|
if ((null != aSubPackage) && !"".equals(aSubPackage)) {
|
73
|
886
|
myPackage = (null != myPackage) ? myPackage + "." + aSubPackage : aSubPackage;
|
74
|
|
}
|
75
|
3670
|
myPackage = StringUtil.toJavaPackage(myPackage);
|
76
|
|
}
|
77
|
|
|
78
|
21635
|
public String getPackage() {
|
79
|
21635
|
return myPackage;
|
80
|
|
}
|
81
|
|
|
82
|
|
}
|
83
|
|
|