Skip to main content
summaryrefslogtreecommitdiffstats
blob: 2a682f9706c2971533ade2bae1ed7ca555f2393c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*******************************************************************************
 * Copyright (c) 2004, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.wst.html.core.internal.contentmodel.chtml;



/**
 * Factory of ComplexTypeDefinition.
 */
final class ComplexTypeDefinitionFactory {

	private static ComplexTypeDefinitionFactory instance = null;
	private java.util.Hashtable definitions = null;
	// constants for complex type name
	/** for ADDRESS. */
	public final static String CTYPE_ADDRESS = "CTYPE_ADDRESS";//$NON-NLS-1$
	/** CDATA content. No ComplexTypeDefinition instance shuld be created. */
	public final static String CTYPE_CDATA = "CTYPE_CDATA";//$NON-NLS-1$
	/** col group content. COL* */
	public final static String CTYPE_COLUMN_GROUP = "CTYPE_COLUMN_GROUP";//$NON-NLS-1$
	/** for DL. */
	public final static String CTYPE_DEFINITION_LIST = "CTYPE_DEFINITION_LIST";//$NON-NLS-1$
	/** for EMBED. */
	public final static String CTYPE_EMBED = "CTYPE_EMBED";//$NON-NLS-1$
	/** empty content. No ComplexTypeDefinition instance should be created. */
	public final static String CTYPE_EMPTY = "CTYPE_EMPTY";//$NON-NLS-1$
	/** for FIELDSET. */
	public final static String CTYPE_FIELDSET = "CTYPE_FIELDSET";//$NON-NLS-1$
	/** for FRAMESET. */
	public final static String CTYPE_FRAMESET = "CTYPE_FRAMESET";//$NON-NLS-1$
	/** flow content. (%flow;)* */
	public final static String CTYPE_FLOW_CONTAINER = "CTYPE_FLOW_CONTAINER";//$NON-NLS-1$
	/** html content. HEAD, (FRAMESET|BODY) */
	public final static String CTYPE_HTML = "CTYPE_HTML";//$NON-NLS-1$
	/** head content. TITLE & ISINDEX? & BASE? */
	public final static String CTYPE_HEAD = "CTYPE_HEAD";//$NON-NLS-1$
	/** inline content. (%inline;)* */
	public final static String CTYPE_INLINE_CONTAINER = "CTYPE_INLINE_CONTAINER";//$NON-NLS-1$
	/** list item container. (LI)+ */
	public final static String CTYPE_LI_CONTAINER = "CTYPE_LI_CONTAINER";//$NON-NLS-1$
	/** for MAP. */
	public final static String CTYPE_MAP = "CTYPE_MAP";//$NON-NLS-1$
	/** noframes content. */
	public final static String CTYPE_NOFRAMES_CONTENT = "CTYPE_NOFRAMES_CONTENT";//$NON-NLS-1$
	/** for OPTGROUP. */
	public final static String CTYPE_OPTION_CONTAINER = "CTYPE_OPTION_CONTAINER";//$NON-NLS-1$
	/** param container. For OBJECT/APPLET. */
	public final static String CTYPE_PARAM_CONTAINER = "CTYPE_PARAM_CONTAINER";//$NON-NLS-1$
	/** PCDATA content. No ComplexTypeDefinition instance shuld be created. */
	public final static String CTYPE_PCDATA = "CTYPE_PCDATA";//$NON-NLS-1$
	/** for SELECT. */
	public final static String CTYPE_SELECT = "CTYPE_SELECT";//$NON-NLS-1$
	/** table content. CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+ */
	public final static String CTYPE_TABLE = "CTYPE_TABLE";//$NON-NLS-1$
	/** table cell contaier. (TH|TD)+ */
	public final static String CTYPE_TCELL_CONTAINER = "CTYPE_TCELL_CONTAINER";//$NON-NLS-1$
	/** table record container. (TR)+ */
	public final static String CTYPE_TR_CONTAINER = "CTYPE_TR_CONTAINER";//$NON-NLS-1$

	/**
	 * ComplexTypeDefinitionFactory constructor comment.
	 */
	private ComplexTypeDefinitionFactory() {
		super();
		definitions = new java.util.Hashtable();
	}

	/**
	 * Factory method for ComplexTypeDefinition.
	 * Each instance created in this method must be registered into
	 * the map with its name.
	 * @param definitionName java.lang.String
	 * @param elementCollection ElementCollection
	 */
	public ComplexTypeDefinition createTypeDefinition(String definitionName, ElementCollection elementCollection) {
		if (definitions.containsKey(definitionName)) {
			return (ComplexTypeDefinition) definitions.get(definitionName);
		}

		ComplexTypeDefinition def = null;
		if (definitionName == CTYPE_ADDRESS) {
			def = new CtdAddress(elementCollection);

		}
		else if (definitionName == CTYPE_DEFINITION_LIST) {
			def = new CtdDl(elementCollection);

		}
		else if (definitionName == CTYPE_FLOW_CONTAINER) {
			def = new CtdFlowContainer(elementCollection);

		}
		else if (definitionName == CTYPE_HEAD) {
			def = new CtdHead(elementCollection);

		}
		else if (definitionName == CTYPE_HTML) {
			def = new CtdHtml(elementCollection);

		}
		else if (definitionName == CTYPE_INLINE_CONTAINER) {
			def = new CtdInlineContainer(elementCollection);

		}
		else if (definitionName == CTYPE_LI_CONTAINER) {
			def = new CtdLiContainer(elementCollection);


		}
		else if (definitionName == CTYPE_OPTION_CONTAINER) {
			def = new CtdOptionContainer(elementCollection);

		}
		else if (definitionName == CTYPE_SELECT) {
			def = new CtdSelect(elementCollection);

		}
		else {
			def = null;
		}
		if (def == null)
			return null; // fail to create.
		definitions.put(definitionName, def);
		return def;
	}

	/**
	 * For singleton.<br>
	 */
	public synchronized static ComplexTypeDefinitionFactory getInstance() {
		if (instance != null)
			return instance;
		instance = new ComplexTypeDefinitionFactory();
		return instance;
	}
}

Back to the top