1 /*******************************************************************************
2 * Copyright (c) 2014 École Polytechnique de Montréal
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Geneviève Bastien - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.readonly
;
15 import java
.util
.List
;
17 import org
.eclipse
.jdt
.annotation
.NonNull
;
18 import org
.eclipse
.jdt
.annotation
.Nullable
;
19 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.ITmfXmlModelFactory
;
20 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.ITmfXmlStateAttribute
;
21 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.ITmfXmlStateValue
;
22 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.TmfXmlAction
;
23 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.TmfXmlCondition
;
24 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.TmfXmlEventHandler
;
25 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.TmfXmlFsm
;
26 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.TmfXmlLocation
;
27 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.TmfXmlPatternEventHandler
;
28 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.TmfXmlPatternSegmentBuilder
;
29 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.TmfXmlState
;
30 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.TmfXmlStateChange
;
31 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.TmfXmlStateTransition
;
32 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.TmfXmlTransitionValidator
;
33 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.model
.TmfXmlTimestampCondition
;
34 import org
.eclipse
.tracecompass
.tmf
.analysis
.xml
.core
.module
.IXmlStateSystemContainer
;
35 import org
.w3c
.dom
.Element
;
38 * Concrete factory for XML model elements in read only mode
40 * @author Geneviève Bastien
42 public class TmfXmlReadOnlyModelFactory
implements ITmfXmlModelFactory
{
44 private static @Nullable ITmfXmlModelFactory fInstance
= null;
47 * Get the instance of this model creator
49 * @return The {@link TmfXmlReadOnlyModelFactory} instance
51 public static synchronized ITmfXmlModelFactory
getInstance() {
52 ITmfXmlModelFactory instance
= fInstance
;
53 if (instance
== null) {
54 instance
= new TmfXmlReadOnlyModelFactory();
61 public ITmfXmlStateAttribute
createStateAttribute(Element attribute
, IXmlStateSystemContainer container
) {
62 return new TmfXmlReadOnlyStateAttribute(this, attribute
, container
);
66 public ITmfXmlStateValue
createStateValue(Element node
, IXmlStateSystemContainer container
, List
<ITmfXmlStateAttribute
> attributes
) {
67 return new TmfXmlReadOnlyStateValue(this, node
, container
, attributes
);
71 public ITmfXmlStateValue
createStateValue(Element node
, IXmlStateSystemContainer container
, String eventField
) {
72 return new TmfXmlReadOnlyStateValue(this, node
, container
, eventField
);
76 public TmfXmlCondition
createCondition(Element node
, IXmlStateSystemContainer container
) {
77 return TmfXmlCondition
.create(this, node
, container
);
81 public TmfXmlEventHandler
createEventHandler(Element node
, IXmlStateSystemContainer container
) {
82 return new TmfXmlEventHandler(this, node
, container
);
86 public TmfXmlStateChange
createStateChange(Element node
, IXmlStateSystemContainer container
) {
87 return new TmfXmlStateChange(this, node
, container
);
91 public TmfXmlLocation
createLocation(Element node
, IXmlStateSystemContainer container
) {
92 return new TmfXmlLocation(this, node
, container
);
99 public TmfXmlPatternEventHandler
createPatternEventHandler(Element node
, IXmlStateSystemContainer container
) {
100 return new TmfXmlPatternEventHandler(this, node
, container
);
107 public TmfXmlTransitionValidator
createTransitionValidator(Element node
, IXmlStateSystemContainer container
) {
108 return new TmfXmlTransitionValidator(this, node
, container
);
115 public TmfXmlAction
createAction(Element node
, IXmlStateSystemContainer container
) {
116 return new TmfXmlAction(this, node
, container
);
123 public TmfXmlFsm
createFsm(Element node
, IXmlStateSystemContainer container
) {
124 return TmfXmlFsm
.create(this, node
, container
);
131 public @NonNull TmfXmlState
createState(Element node
, IXmlStateSystemContainer container
, @Nullable TmfXmlState parent
) {
132 return TmfXmlState
.create(this, node
, container
, parent
);
139 public TmfXmlStateTransition
createStateTransition(Element node
, IXmlStateSystemContainer container
) {
140 return new TmfXmlStateTransition(this, node
, container
);
147 public TmfXmlTimestampCondition
createTimestampsCondition(Element node
, IXmlStateSystemContainer container
) {
148 return new TmfXmlTimestampCondition(this, node
, container
);
155 public TmfXmlPatternSegmentBuilder
createPatternSegmentBuilder(Element node
, IXmlStateSystemContainer container
) {
156 return new TmfXmlPatternSegmentBuilder(this, node
, container
);